diff --git a/components/Editor/Editor.vue b/components/Editor/Editor.vue index 8d5fb0e9e..9e25e1daa 100644 --- a/components/Editor/Editor.vue +++ b/components/Editor/Editor.vue @@ -2,30 +2,54 @@
/gim, '
') - // .replace(/
\s*(
\s*)+\s*<\/p>/gim, '')
this.editor.setContent(content)
}
}
},
+ mounted() {
+ const keydownListener = document.addEventListener('keydown', e => {
+ if (this.linkMenuIsActive && e.keyCode === 27) {
+ this.hideLinkMenu()
+ }
+ })
+ this.$once('hook:beforeDestroy', () => {
+ document.removeEventListener('keydown', keydownListener)
+ })
+ },
beforeDestroy() {
this.editor.destroy()
},
@@ -203,6 +235,26 @@ export default {
this.lastValueHash = contentHash
this.$emit('input', content)
}
+ },
+ showLinkMenu(attrs) {
+ this.linkUrl = attrs.href
+ this.linkMenuIsActive = true
+ this.$nextTick(() => {
+ try {
+ const $el = this.$refs.linkInput.$el.getElementsByTagName('input')[0]
+ $el.focus()
+ $el.select()
+ } catch (err) {}
+ })
+ },
+ hideLinkMenu() {
+ this.linkUrl = null
+ this.linkMenuIsActive = false
+ },
+ setLinkUrl(command, url) {
+ command({ href: url })
+ this.hideLinkMenu()
+ this.editor.focus()
}
}
}
@@ -257,9 +309,9 @@ li > p {
// margin-top: -0.5rem;
visibility: hidden;
opacity: 0;
- transition: all 0.2s;
- transition-delay: 150ms;
- transform: translate(-50%, -25%);
+ transition: opacity 200ms, visibility 200ms;
+ // transition-delay: 50ms;
+ transform: translate(-50%, -10%);
background-color: $background-color-inverse-soft;
// color: $text-color-inverse;
@@ -280,6 +332,10 @@ li > p {
opacity: 1;
visibility: visible;
}
+
+ .tooltip-arrow {
+ left: calc(50% - 10px);
+ }
}
// p:not(.is-empty) {