mirror of
https://github.com/marktext/marktext.git
synced 2025-05-03 04:20:36 +08:00
opti:title bar and task list checkbox style optimization
This commit is contained in:
parent
5004b96770
commit
f30cbfd837
@ -3,3 +3,4 @@ test/unit/*.js
|
|||||||
test/e2e/*.js
|
test/e2e/*.js
|
||||||
src/editor/parser/marked.js
|
src/editor/parser/marked.js
|
||||||
src/editor/assets/symbolIcon/index.js
|
src/editor/assets/symbolIcon/index.js
|
||||||
|
src/renderer/assets/symbolIcon/index.js
|
||||||
|
@ -4,6 +4,14 @@
|
|||||||
|
|
||||||
- fix the bug that click at the edge of code block will caused the code block does not be focused.
|
- fix the bug that click at the edge of code block will caused the code block does not be focused.
|
||||||
|
|
||||||
|
**Optimization**
|
||||||
|
|
||||||
|
- Optimize the display of word count in title bar. we also delete the background color of title bar to make it more concise.
|
||||||
|
|
||||||
|
- Customize the style of checkbox in Task List Item.
|
||||||
|
|
||||||
|
- Change the display of Insert Table dialog.
|
||||||
|
|
||||||
### 0.3.0
|
### 0.3.0
|
||||||
|
|
||||||
**Features**
|
**Features**
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
# MarkText
|
# MarkText
|
||||||
|
|
||||||
|
[](https://badge.fury.io/gh/jocs%2Fmarktext)
|
||||||
|
|
||||||
**MarkText** is an **open source** Markdown editor for OS X, released under the **MIT license**. It is inspired by outstanding markdown editor **Typora**.
|
**MarkText** is an **open source** Markdown editor for OS X, released under the **MIT license**. It is inspired by outstanding markdown editor **Typora**.
|
||||||
|
|
||||||

|

|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
#### TODO LIST
|
#### TODO LIST
|
||||||
|
|
||||||
- [ ] Support Raw HTML in editor.
|
|
||||||
|
|
||||||
- [ ] Support Search and Replacement.
|
- [ ] Support Search and Replacement.
|
||||||
|
|
||||||
|
- [ ] add Dark, Light and GitHub theme.
|
||||||
|
|
||||||
|
- [ ] source code edit mode.
|
||||||
|
|
||||||
|
- [ ] Support Raw HTML in editor.
|
||||||
|
|
||||||
- [ ] Support auto accompliment.
|
- [ ] Support auto accompliment.
|
||||||
|
|
||||||
- [ ] Left click menu.
|
- [ ] Left click menu.
|
||||||
|
|
||||||
- [ ] Rename and moveTo in **File Menu**
|
- [ ] Rename and moveTo in **File Menu**
|
||||||
|
|
||||||
|
@ -79,6 +79,7 @@ export const CLASS_OR_ID = genUpper2LowerKeyHash([
|
|||||||
'AG_TASK_LIST',
|
'AG_TASK_LIST',
|
||||||
'AG_TASK_LIST_ITEM',
|
'AG_TASK_LIST_ITEM',
|
||||||
'AG_TASK_LIST_ITEM_CHECKBOX',
|
'AG_TASK_LIST_ITEM_CHECKBOX',
|
||||||
|
'AG_CHECKBOX_CHECKED',
|
||||||
'AG_TABLE_TOOL_BAR'
|
'AG_TABLE_TOOL_BAR'
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -138,9 +138,9 @@ const updateCtrl = ContentState => {
|
|||||||
// handle task list item checkbox click
|
// handle task list item checkbox click
|
||||||
ContentState.prototype.listItemCheckBoxClick = function (checkbox) {
|
ContentState.prototype.listItemCheckBoxClick = function (checkbox) {
|
||||||
const { checked, id } = checkbox
|
const { checked, id } = checkbox
|
||||||
console.log(checked)
|
|
||||||
const block = this.getBlock(id)
|
const block = this.getBlock(id)
|
||||||
block.checked = checked
|
block.checked = checked
|
||||||
|
this.render()
|
||||||
}
|
}
|
||||||
|
|
||||||
ContentState.prototype.updateList = function (block, type, marker = '') {
|
ContentState.prototype.updateList = function (block, type, marker = '') {
|
||||||
|
@ -103,6 +103,7 @@ class FloatBox {
|
|||||||
this.index = 0
|
this.index = 0
|
||||||
if (this.show) {
|
if (this.show) {
|
||||||
this.box.classList.remove(CLASS_OR_ID['AG_SHOW_FLOAT_BOX'])
|
this.box.classList.remove(CLASS_OR_ID['AG_SHOW_FLOAT_BOX'])
|
||||||
|
this.box.removeAttribute('style')
|
||||||
}
|
}
|
||||||
this.show = false
|
this.show = false
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,10 @@ h6.ag-active::before {
|
|||||||
font-weight: 100;
|
font-weight: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*::selection {
|
||||||
|
background: #efefef;
|
||||||
|
}
|
||||||
|
|
||||||
figure {
|
figure {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@ -28,6 +32,7 @@ figure {
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
.ag-table-tool-bar {
|
.ag-table-tool-bar {
|
||||||
|
width: 100%;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -20px;
|
top: -20px;
|
||||||
@ -40,6 +45,7 @@ figure {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
.ag-table-tool-bar ul li {
|
.ag-table-tool-bar ul li {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
@ -55,6 +61,9 @@ figure {
|
|||||||
|
|
||||||
.ag-table-tool-bar ul li[data-label=delete] {
|
.ag-table-tool-bar ul li[data-label=delete] {
|
||||||
color: #E6A23C;
|
color: #E6A23C;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ag-table-tool-bar ul li.active {
|
.ag-table-tool-bar ul li.active {
|
||||||
@ -110,6 +119,43 @@ li.ag-task-list-item > input[type=checkbox] {
|
|||||||
left: -20px;
|
left: -20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
li.ag-task-list-item > input.ag-checkbox-checked ~ p {
|
||||||
|
color: #909399;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.ag-task-list-item > input[type=checkbox]::before {
|
||||||
|
content: '';
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
border: 2px solid #606266;
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.ag-task-list-item > input.ag-checkbox-checked::before {
|
||||||
|
border: none;
|
||||||
|
background-color: #606266;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.ag-task-list-item > input.ag-checkbox-checked::after {
|
||||||
|
content: '';
|
||||||
|
transform: rotate(-45deg);
|
||||||
|
width: 7px;
|
||||||
|
height: 3px;
|
||||||
|
border: 2px solid #fff;
|
||||||
|
border-top: none;
|
||||||
|
border-right: none;
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
top: 4px;
|
||||||
|
left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
li p .ag-hide:first-child {
|
li p .ag-hide:first-child {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@ -193,7 +239,7 @@ pre.ag-active .ag-language-input {
|
|||||||
|
|
||||||
#ag-editor-id, [contenteditable] {
|
#ag-editor-id, [contenteditable] {
|
||||||
outline: none;
|
outline: none;
|
||||||
caret-color: #333;
|
caret-color: #303133;
|
||||||
}
|
}
|
||||||
.ag-gray {
|
.ag-gray {
|
||||||
color: lavender;
|
color: lavender;
|
||||||
|
@ -156,10 +156,11 @@ class StateRender {
|
|||||||
if (block.type === 'input') {
|
if (block.type === 'input') {
|
||||||
const { checked, type, key } = block
|
const { checked, type, key } = block
|
||||||
Object.assign(data.attrs, { type: 'checkbox' })
|
Object.assign(data.attrs, { type: 'checkbox' })
|
||||||
|
blockSelector = `${type}#${key}.${CLASS_OR_ID['AG_TASK_LIST_ITEM_CHECKBOX']}`
|
||||||
if (checked) {
|
if (checked) {
|
||||||
Object.assign(data.attrs, { checked: true })
|
Object.assign(data.attrs, { checked: true })
|
||||||
|
blockSelector += `.${CLASS_OR_ID['AG_CHECKBOX_CHECKED']}`
|
||||||
}
|
}
|
||||||
blockSelector = `${type}#${key}.${CLASS_OR_ID['AG_TASK_LIST_ITEM_CHECKBOX']}`
|
|
||||||
children = ''
|
children = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
465
src/editor/themes/light.css
Normal file
465
src/editor/themes/light.css
Normal file
@ -0,0 +1,465 @@
|
|||||||
|
:root {
|
||||||
|
--side-bar-bg-color: #fafafa;
|
||||||
|
--control-text-color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include-when-export url(http://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
src: local('Open Sans Regular'), url('./github/400.woff') format('woff')
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: normal;
|
||||||
|
src: local('Open Sans Italic'), url('./github/400i.woff') format('woff')
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: bold;
|
||||||
|
src: local('Open Sans Bold'), url('./github/700.woff') format('woff')
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: bold;
|
||||||
|
src: local('Open Sans Bold Italic'), url('./github/700i.woff') format('woff')
|
||||||
|
}
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
font-size: 16px;
|
||||||
|
background: rgb(252, 252, 252);
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
|
color: #303133;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ag-editor-id {
|
||||||
|
max-width: 860px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px 30px 40px 30px;
|
||||||
|
padding-top: 20px;
|
||||||
|
padding-bottom: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ag-editor-id>ul:first-child,
|
||||||
|
#ag-editor-id>ol:first-child {
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body>*:first-child {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body>*:last-child {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #4183C4;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
position: relative;
|
||||||
|
margin-top: 1rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 1.4;
|
||||||
|
cursor: text;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1:hover a.anchor,
|
||||||
|
h2:hover a.anchor,
|
||||||
|
h3:hover a.anchor,
|
||||||
|
h4:hover a.anchor,
|
||||||
|
h5:hover a.anchor,
|
||||||
|
h6:hover a.anchor {
|
||||||
|
/*background: url("../../images/modules/styleguide/para.png") no-repeat 10px center;*/
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 tt,
|
||||||
|
h1 code {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 tt,
|
||||||
|
h2 code {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 tt,
|
||||||
|
h3 code {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 tt,
|
||||||
|
h4 code {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 tt,
|
||||||
|
h5 code {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 tt,
|
||||||
|
h6 code {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
padding-bottom: .3em;
|
||||||
|
font-size: 2.25em;
|
||||||
|
line-height: 1.2;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
padding-bottom: .3em;
|
||||||
|
font-size: 1.75em;
|
||||||
|
line-height: 1.225;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 1.43;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
font-size: 1em;
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
p,
|
||||||
|
blockquote,
|
||||||
|
ul,
|
||||||
|
ol,
|
||||||
|
dl,
|
||||||
|
table {
|
||||||
|
margin: 0.8em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
li>ol,
|
||||||
|
li>ul {
|
||||||
|
margin: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
height: 4px;
|
||||||
|
padding: 0;
|
||||||
|
margin: 16px 0;
|
||||||
|
background-color: #e7e7e7;
|
||||||
|
border: 0 none;
|
||||||
|
overflow: hidden;
|
||||||
|
box-sizing: content-box;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
body>h2:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body>h1:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body>h1:first-child+h2 {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body>h3:first-child,
|
||||||
|
body>h4:first-child,
|
||||||
|
body>h5:first-child,
|
||||||
|
body>h6:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:first-child h1,
|
||||||
|
a:first-child h2,
|
||||||
|
a:first-child h3,
|
||||||
|
a:first-child h4,
|
||||||
|
a:first-child h5,
|
||||||
|
a:first-child h6 {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 p,
|
||||||
|
h2 p,
|
||||||
|
h3 p,
|
||||||
|
h4 p,
|
||||||
|
h5 p,
|
||||||
|
h6 p {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
li p.first {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol {
|
||||||
|
padding-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul:first-child,
|
||||||
|
ol:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul:last-child,
|
||||||
|
ol:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
border-left: 4px solid #dddddd;
|
||||||
|
padding: 0 15px;
|
||||||
|
color: #777777;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote blockquote {
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
padding: 0;
|
||||||
|
word-break: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
table tr {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table thead tr,
|
||||||
|
table tr:nth-child(2n) {
|
||||||
|
background-color: #fafafa;
|
||||||
|
}
|
||||||
|
|
||||||
|
table tr th {
|
||||||
|
font-weight: bold;
|
||||||
|
border: 1px solid #ebeef5;
|
||||||
|
text-align: left;
|
||||||
|
margin: 0;
|
||||||
|
padding: 6px 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table tr td {
|
||||||
|
border: 1px solid #ebeef5;
|
||||||
|
text-align: left;
|
||||||
|
margin: 0;
|
||||||
|
padding: 6px 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table tr th:first-child,
|
||||||
|
table tr td:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table tr th:last-child,
|
||||||
|
table tr td:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror-gutters {
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-fences,
|
||||||
|
code,
|
||||||
|
tt {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 0;
|
||||||
|
font-family: Consolas, "Liberation Mono", Courier, monospace;
|
||||||
|
padding: 2px 4px 0px 4px;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* custom add */
|
||||||
|
|
||||||
|
.md-fences,
|
||||||
|
code {
|
||||||
|
border: none;
|
||||||
|
padding: 2px 4px;
|
||||||
|
font-size: 90%;
|
||||||
|
color: #c7254e;
|
||||||
|
background-color: #f9f2f4;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-fences {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
margin-top: 15px;
|
||||||
|
padding: 0.2em 1em;
|
||||||
|
padding-top: 8px;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-list {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-list-item {
|
||||||
|
padding-left: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-list-item input {
|
||||||
|
top: 3px;
|
||||||
|
left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 914px) {
|
||||||
|
/*body {
|
||||||
|
width: 854px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
html {
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
table,
|
||||||
|
pre {
|
||||||
|
page-break-inside: avoid;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-fences {
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ag-editor-id pre.ag-code-block {
|
||||||
|
padding: .4rem 1rem;
|
||||||
|
font-size: 90%;
|
||||||
|
line-height: 1.6;
|
||||||
|
background-color: #f6f8fa;
|
||||||
|
border: 0;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #777777;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mathjax-block>.code-tooltip {
|
||||||
|
bottom: .375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ag-editor-id>h3.md-focus:before {
|
||||||
|
left: -1.5625rem;
|
||||||
|
top: .375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ag-editor-id>h4.md-focus:before {
|
||||||
|
left: -1.5625rem;
|
||||||
|
top: .285714286rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ag-editor-id>h5.md-focus:before {
|
||||||
|
left: -1.5625rem;
|
||||||
|
top: .285714286rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ag-editor-id>h6.md-focus:before {
|
||||||
|
left: -1.5625rem;
|
||||||
|
top: .285714286rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-image>.md-meta {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 3px;
|
||||||
|
font-family: Consolas, "Liberation Mono", Courier, monospace;
|
||||||
|
padding: 2px 4px 0px 4px;
|
||||||
|
font-size: 0.9em;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-tag {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-toc {
|
||||||
|
margin-top: 20px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-tabs {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#typora-quick-open {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#typora-quick-open-item {
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#md-notification:before {
|
||||||
|
top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** focus mode */
|
||||||
|
|
||||||
|
.on-focus-mode blockquote {
|
||||||
|
border-left-color: rgba(85, 85, 85, 0.12);
|
||||||
|
}
|
||||||
|
|
||||||
|
header,
|
||||||
|
.context-menu,
|
||||||
|
.megamenu-content,
|
||||||
|
footer {
|
||||||
|
font-family: "Segoe UI", "Arial", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-node-content:hover .file-node-icon,
|
||||||
|
.file-node-content:hover .file-node-open-state {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mac-seamless-mode #typora-sidebar {
|
||||||
|
background-color: #fafafa;
|
||||||
|
background-color: var(--side-bar-bg-color);
|
||||||
|
}
|
Binary file not shown.
Before Width: | Height: | Size: 60 KiB |
1
src/renderer/assets/symbolIcon/index.js
Normal file
1
src/renderer/assets/symbolIcon/index.js
Normal file
File diff suppressed because one or more lines are too long
@ -2,18 +2,24 @@
|
|||||||
<div>
|
<div>
|
||||||
<div ref="editor" class="editor-component"></div>
|
<div ref="editor" class="editor-component"></div>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="Insert Table"
|
|
||||||
:visible.sync="dialogTableVisible"
|
:visible.sync="dialogTableVisible"
|
||||||
:show-close="isShowClose"
|
:show-close="isShowClose"
|
||||||
:modal="false"
|
:modal="true"
|
||||||
custom-class="ag-dialog-table"
|
custom-class="ag-dialog-table"
|
||||||
width="450px"
|
width="450px"
|
||||||
|
center
|
||||||
>
|
>
|
||||||
|
<div slot="title" class="dialog-title">
|
||||||
|
<svg class="icon" aria-hidden="true">
|
||||||
|
<use xlink:href="#icon-table"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
<el-form :model="tableChecker" :inline="true">
|
<el-form :model="tableChecker" :inline="true">
|
||||||
<el-form-item label="Rows">
|
<el-form-item label="Rows">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
ref="rowInput"
|
ref="rowInput"
|
||||||
size="mini" v-model="tableChecker.rows"
|
size="mini"
|
||||||
|
v-model="tableChecker.rows"
|
||||||
controls-position="right"
|
controls-position="right"
|
||||||
:min="2"
|
:min="2"
|
||||||
:max="20"
|
:max="20"
|
||||||
@ -21,7 +27,8 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Columns">
|
<el-form-item label="Columns">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
size="mini" v-model="tableChecker.columns"
|
size="mini"
|
||||||
|
v-model="tableChecker.columns"
|
||||||
controls-position="right"
|
controls-position="right"
|
||||||
:min="2"
|
:min="2"
|
||||||
:max="20"
|
:max="20"
|
||||||
@ -29,8 +36,16 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button @click="dialogTableVisible = false" size="mini">Cancel</el-button>
|
<el-button @click="dialogTableVisible = false" size="mini">
|
||||||
<el-button type="primary" @click="handleDialogTableConfirm" size="mini">Ok</el-button>
|
<svg class="icon" aria-hidden="true">
|
||||||
|
<use xlink:href="#icon-close"></use>
|
||||||
|
</svg>
|
||||||
|
</el-button>
|
||||||
|
<el-button type="primary" @click="handleDialogTableConfirm" size="mini">
|
||||||
|
<svg class="icon" aria-hidden="true">
|
||||||
|
<use xlink:href="#icon-gou"></use>
|
||||||
|
</svg>
|
||||||
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
@ -48,8 +63,8 @@
|
|||||||
isShowClose: false,
|
isShowClose: false,
|
||||||
dialogTableVisible: false,
|
dialogTableVisible: false,
|
||||||
tableChecker: {
|
tableChecker: {
|
||||||
rows: 2,
|
rows: 4,
|
||||||
columns: 2
|
columns: 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -146,13 +161,21 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@import '../../editor/themes/github.css';
|
@import '../../editor/themes/light.css';
|
||||||
@import '../../editor/index.css';
|
@import '../../editor/index.css';
|
||||||
.editor-component {
|
.editor-component {
|
||||||
height: calc(100vh - 22px);
|
height: calc(100vh - 22px);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
.v-modal {
|
||||||
|
background: #fff;
|
||||||
|
opacity: .8;
|
||||||
|
}
|
||||||
.ag-dialog-table {
|
.ag-dialog-table {
|
||||||
background: rgb(239, 239, 239);
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.ag-dialog-table .dialog-title svg {
|
||||||
|
width: 1.5em;
|
||||||
|
height: 1.5em;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
13
src/renderer/components/search.vue
Normal file
13
src/renderer/components/search.vue
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<template>
|
||||||
|
<div class="search-bar">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
@ -10,29 +10,7 @@
|
|||||||
<div
|
<div
|
||||||
class="word-count"
|
class="word-count"
|
||||||
@click.stop="handleWordClick"
|
@click.stop="handleWordClick"
|
||||||
>{{wordCount.word >= 2 ? `${wordCount.word} Words` : `${wordCount.word} Word`}}</div>
|
>{{ `${HASH[show]} ${wordCount[show]}` }}</div>
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="popup"
|
|
||||||
:class="{ 'show-popup': show }"
|
|
||||||
@click.stop="noop"
|
|
||||||
>
|
|
||||||
<div class="pop-item">
|
|
||||||
<div class="label">Words</div>
|
|
||||||
<div class="value">{{wordCount.word}}</div>
|
|
||||||
</div>
|
|
||||||
<div class="pop-item">
|
|
||||||
<div class="label">Paragraphs</div>
|
|
||||||
<div class="value">{{wordCount.paragraph}}</div>
|
|
||||||
</div>
|
|
||||||
<div class="pop-item">
|
|
||||||
<div class="label">Characters</div>
|
|
||||||
<div class="value">{{wordCount.character}}</div>
|
|
||||||
</div>
|
|
||||||
<div class="pop-item">
|
|
||||||
<div class="label">All</div>
|
|
||||||
<div class="value">{{wordCount.all}}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -40,8 +18,14 @@
|
|||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
|
this.HASH = {
|
||||||
|
'word': 'W',
|
||||||
|
'character': 'C',
|
||||||
|
'paragraph': 'P',
|
||||||
|
'all': 'A'
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
show: false
|
show: 'word'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
@ -49,16 +33,15 @@
|
|||||||
active: Boolean,
|
active: Boolean,
|
||||||
wordCount: Object
|
wordCount: Object
|
||||||
},
|
},
|
||||||
created () {
|
|
||||||
document.addEventListener('click', event => {
|
|
||||||
this.show = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
handleWordClick () {
|
handleWordClick () {
|
||||||
this.show = !this.show
|
const ITEMS = ['word', 'paragraph', 'character', 'all']
|
||||||
},
|
const len = ITEMS.length
|
||||||
noop () {}
|
let index = ITEMS.indexOf(this.show)
|
||||||
|
index += 1
|
||||||
|
if (index >= len) index = 0
|
||||||
|
this.show = ITEMS[index]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@ -69,19 +52,17 @@
|
|||||||
user-select: none;
|
user-select: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 22px;
|
height: 22px;
|
||||||
border-bottom: 1px solid #ccc;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
color: #999;
|
color: #C0C4CC;
|
||||||
background: linear-gradient(180deg, #ffffff, #efefef);
|
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
transition: color .4s ease-in;
|
||||||
}
|
}
|
||||||
.active {
|
.active {
|
||||||
background: linear-gradient(180deg, #efefef, #ccc);
|
color: #909399;
|
||||||
color: #333;
|
|
||||||
}
|
}
|
||||||
img {
|
img {
|
||||||
height: 90%;
|
height: 90%;
|
||||||
@ -104,68 +85,21 @@
|
|||||||
right: 0;
|
right: 0;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: row-reverse;
|
||||||
}
|
}
|
||||||
.word-count {
|
.word-count {
|
||||||
|
cursor: pointer;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: #666;
|
color: #C0C4CC;
|
||||||
height: 15px;
|
height: 15px;
|
||||||
line-height: 15px;
|
line-height: 15px;
|
||||||
margin-top: 3px;
|
margin-top: 4px;
|
||||||
padding: 0 3px;
|
padding: 1px 5px;
|
||||||
border-radius: 2px;
|
border-radius: 1px;
|
||||||
cursor: pointer;
|
|
||||||
transition: all .3s ease-in;
|
transition: all .3s ease-in;
|
||||||
}
|
}
|
||||||
.word-count:hover {
|
.word-count:hover {
|
||||||
background: #bbb;
|
background: #F2F6FC;
|
||||||
color: #000;
|
color: #606266;
|
||||||
}
|
|
||||||
.popup {
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 500;
|
|
||||||
width: 150px;
|
|
||||||
height: auto;
|
|
||||||
padding: 10px;
|
|
||||||
background: rgb(239, 239, 239);
|
|
||||||
position: absolute;
|
|
||||||
top: 35px;
|
|
||||||
right: 10px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 4px;
|
|
||||||
box-shadow: 0 2px 6px 0 rgba(0,0,0,.1);
|
|
||||||
transition: all .2s ease-out;
|
|
||||||
transform-origin: top;
|
|
||||||
transform: scale(0);
|
|
||||||
opacity: .3;
|
|
||||||
}
|
|
||||||
.show-popup {
|
|
||||||
transform: scale(1);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
.popup::before {
|
|
||||||
content: '';
|
|
||||||
width: 15px;
|
|
||||||
height: 15px;
|
|
||||||
background: rgb(239, 239, 239);
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
display: inline-block;
|
|
||||||
position: absolute;
|
|
||||||
top: -9px;
|
|
||||||
right: 60px;
|
|
||||||
border-right: none;
|
|
||||||
border-bottom: none;
|
|
||||||
transform: rotate(45deg);
|
|
||||||
}
|
|
||||||
.pop-item {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
.label {
|
|
||||||
width: 75px;
|
|
||||||
flex-shrink: 1;
|
|
||||||
text-align: right;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
.value {
|
|
||||||
padding-left: 25px;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
.icon {
|
||||||
|
width: 1em; height: 1em;
|
||||||
|
vertical-align: -0.15em;
|
||||||
|
fill: currentColor;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
@media print {
|
@media print {
|
||||||
body .editor-component {
|
body .editor-component {
|
||||||
height: auto !important;
|
height: auto !important;
|
||||||
|
@ -4,6 +4,7 @@ import axios from 'axios'
|
|||||||
import App from './App'
|
import App from './App'
|
||||||
import store from './store'
|
import store from './store'
|
||||||
|
|
||||||
|
import './assets/symbolIcon'
|
||||||
import './index.css'
|
import './index.css'
|
||||||
|
|
||||||
import { Dialog, Form, FormItem, InputNumber, Button } from 'element-ui'
|
import { Dialog, Form, FormItem, InputNumber, Button } from 'element-ui'
|
||||||
|
Loading…
Reference in New Issue
Block a user