From f278ccc9163ed559945f8a0f823bb786f07ac1c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Mon, 18 Jan 2021 15:34:54 +0100 Subject: [PATCH] refactoring --- docs/src/demos/Nodes/Mention/index.vue | 21 ++++++++++----------- packages/vue/src/VueRenderer.ts | 9 +++------ 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/docs/src/demos/Nodes/Mention/index.vue b/docs/src/demos/Nodes/Mention/index.vue index aa9fc9a6..48406678 100644 --- a/docs/src/demos/Nodes/Mention/index.vue +++ b/docs/src/demos/Nodes/Mention/index.vue @@ -32,33 +32,32 @@ export default { Text, Mention.configure({ items: query => { - return ['foo', 'bar'] + return ['foo', 'bar'].filter(item => item.startsWith(query)) }, renderer: () => { let component let popup return { - onStart(props) { - component = new VueRenderer(MentionList, props) + onStart: props => { + component = new VueRenderer(MentionList, { + parent: this, + propsData: props, + }) - popup = tippy('.app', { + popup = tippy('body', { getReferenceClientRect: () => props.virtualNode.getBoundingClientRect(), appendTo: () => document.body, - interactive: true, - sticky: true, - plugins: [sticky], content: component.element, - trigger: 'mouseenter', showOnCreate: true, - theme: 'dark', + interactive: true, + trigger: 'manual', placement: 'top-start', - inertia: true, duration: [400, 200], }) }, onUpdate(props) { - component.update(props) + component.updateProps(props) }, onExit() { popup[0].destroy() diff --git a/packages/vue/src/VueRenderer.ts b/packages/vue/src/VueRenderer.ts index 5ccf3cc5..f7d5c5af 100644 --- a/packages/vue/src/VueRenderer.ts +++ b/packages/vue/src/VueRenderer.ts @@ -7,17 +7,14 @@ export default class VueRenderer { constructor(component: Vue | VueConstructor, props: any) { const Component = Vue.extend(component) - this.vm = new Component({ - // parent, - propsData: props, - }).$mount() + this.vm = new Component(props).$mount() } get element() { return this.vm.$el } - update(data: { [key: string]: any } = {}) { + updateProps(props: { [key: string]: any } = {}) { if (!this.vm.$props) { return } @@ -27,7 +24,7 @@ export default class VueRenderer { Vue.config.silent = true Object - .entries(data) + .entries(props) .forEach(([key, value]) => { this.vm.$props[key] = value })