diff --git a/public/assets/css/app.css b/public/assets/css/app.css index 847e38c..d3a5630 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -228,6 +228,6 @@ section { } .CodeMirror-scroll, .preview-wrapper { - overflow: unset!important; - overflow-y: scroll!important; + overflow: unset; + overflow-y: scroll; } \ No newline at end of file diff --git a/src/assets/images/favicon.png b/src/assets/images/favicon.png new file mode 100644 index 0000000..e151dec Binary files /dev/null and b/src/assets/images/favicon.png differ diff --git a/src/assets/less/theme.less b/src/assets/less/theme.less index 3815277..3f61906 100644 --- a/src/assets/less/theme.less +++ b/src/assets/less/theme.less @@ -20,13 +20,18 @@ background-color: @nightCodeMirrorColor; box-shadow: inset 0 0 0 1px rgba(100, 37, 37, 0.102); } - .preview { - background-color: @nightPreviewColor; - box-shadow: 0 0 70px rgba(0, 0, 0, 0.3); - } - .preview-wrapper { - background-color: @nightCodeMirrorColor; - box-shadow: inset 0 0 0 1px rgba(233, 231, 231, 0.102); + .output_night { + .preview { + background-color: @nightPreviewColor; + box-shadow: 0 0 70px rgba(0, 0, 0, 0.3); + } + .preview-wrapper { + background-color: @nightCodeMirrorColor; + box-shadow: inset 0 0 0 1px rgba(233, 231, 231, 0.102); + } + .code-snippet__fix { + background-color: rgb(238,238,238); + } } .cm-s-style-mirror .CodeMirror-matchingbracket { color: @nightWhiteColor!important; @@ -60,7 +65,7 @@ color: @nightWhiteColor; } } - .insert__dialog, .about__dialog { + .insert__dialog, .about__dialog, .reset__dialog { .el-dialog { background-color: @nightBgColor; } diff --git a/src/components/codeMirror/header.vue b/src/components/codeMirror/header.vue index c0bff92..d565853 100644 --- a/src/components/codeMirror/header.vue +++ b/src/components/codeMirror/header.vue @@ -64,6 +64,7 @@
+ @@ -81,6 +82,7 @@ import { } from '../../scripts/converter' import config from '../../scripts/config' import DEFAULT_CSS_CONTENT from '../../scripts/themes/default-theme-css' +import resetDialog from '../codeMirror/resetDialog' import {mapState, mapMutations} from 'vuex' export default { name: 'editor-header', @@ -88,11 +90,15 @@ export default { return { config: config, citeStatus: false, + showResetConfirm: false, selectFont: '', selectSize: '', selectColor: '' }; }, + components: { + resetDialog + }, computed: { effect() { return this.nightMode ? 'dark' : 'light' @@ -165,28 +171,32 @@ export default { }, // 复制到微信公众号 copy() { - let clipboardDiv = document.getElementById('output') - solveWeChatImage() - this.setHtml(solveHtml()) + this.$emit('startCopy'); + setTimeout(() => { + let clipboardDiv = document.getElementById('output') + solveWeChatImage() + this.setHtml(solveHtml(this.nightMode)) - clipboardDiv.focus() - window.getSelection().removeAllRanges() - let range = document.createRange() + clipboardDiv.focus() + window.getSelection().removeAllRanges() + let range = document.createRange() - range.setStartBefore(clipboardDiv.firstChild) - range.setEndAfter(clipboardDiv.lastChild) - window.getSelection().addRange(range) - document.execCommand('copy') - // 输出提示 - this.$notify({ - showClose: true, - message: '已复制渲染后的文章到剪贴板,可直接到公众号后台粘贴', - offset: 80, - duration: 1600, - type: 'success' - }) - clipboardDiv.innerHTML = this.output; // 恢复现场 - this.$emit('refresh') + range.setStartBefore(clipboardDiv.firstChild) + range.setEndAfter(clipboardDiv.lastChild) + window.getSelection().addRange(range) + document.execCommand('copy') + // 输出提示 + this.$notify({ + showClose: true, + message: '已复制渲染后的文章到剪贴板,可直接到公众号后台粘贴', + offset: 80, + duration: 1600, + type: 'success' + }) + clipboardDiv.innerHTML = this.output; // 恢复现场 + this.$emit('refresh') + this.$emit('endCopy'); + }, 1000); }, // 自定义CSS样式 async customStyle () { @@ -207,26 +217,22 @@ export default { }, // 重置页面 reset() { - this.$confirm('此操作将丢失本地缓存的文本和自定义样式,是否继续?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - confirmButtonClass: 'el-button--success', - cancelButtonClass: 'el-button--success is-plain', - type: 'warning', - center: true - }).then(() => { - localStorage.clear() - this.clearEditorToDefault(); - this.editor.focus() - this.citeStatus = false; - this.statusChanged(false); - this.fontChanged(this.config.builtinFonts[0].value) - this.colorChanged(this.config.colorOption[1].value) - this.sizeChanged(this.config.sizeOption[2].value) - this.$emit('cssChanged') - }).catch(() => { - this.editor.focus() - }) + this.showResetConfirm = true; + }, + confirmReset() { + localStorage.clear() + this.clearEditorToDefault(); + this.editor.focus() + this.citeStatus = false; + this.statusChanged(false); + this.fontChanged(this.config.builtinFonts[0].value) + this.colorChanged(this.config.colorOption[1].value) + this.sizeChanged(this.config.sizeOption[2].value) + this.$emit('cssChanged') + }, + cancelReset() { + this.showResetConfirm = false; + this.editor.focus() }, // 下载编辑器内容到本地 downloadEditorContent () { diff --git a/src/components/codeMirror/resetDialog.vue b/src/components/codeMirror/resetDialog.vue new file mode 100644 index 0000000..90be414 --- /dev/null +++ b/src/components/codeMirror/resetDialog.vue @@ -0,0 +1,43 @@ + + + + + \ No newline at end of file diff --git a/src/scripts/converter.js b/src/scripts/converter.js index 0f52083..a9f7524 100644 --- a/src/scripts/converter.js +++ b/src/scripts/converter.js @@ -13,9 +13,9 @@ export function solveWeChatImage() { image.style.height = height; } } -export function solveHtml() { +export function solveHtml(nightMode = false) { const element = document.getElementById("output-wrapper"); - let html = element.innerHTML; + let html = element.innerHTML let res = ""; res = juice.inlineContent( html, @@ -25,4 +25,4 @@ export function solveHtml() { } ); return res; -} +} \ No newline at end of file diff --git a/src/view/CodemirrorEditor.vue b/src/view/CodemirrorEditor.vue index 279a9ed..9d83dac 100644 --- a/src/view/CodemirrorEditor.vue +++ b/src/view/CodemirrorEditor.vue @@ -1,7 +1,7 @@