From 76e09ef34e0eb6cc685c7727d530260d2448272c Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Fri, 29 Oct 2021 15:27:04 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D1=85=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=BD=D0=B0=20Vue=203,=20=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86?= =?UTF-8?q?=D0=B5=D1=81=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/App.vue | 36 +++++++++++-------- .../BookmarkSettings/BookmarkSettings.vue | 6 ++-- .../components/ExternalLibs/ExternalLibs.vue | 4 +-- client/components/Reader/Reader.vue | 2 +- .../RecentBooksPage/RecentBooksPage.vue | 2 +- .../components/Reader/TextPage/TextPage.vue | 2 +- client/components/share/StdDialog.vue | 4 +-- 7 files changed, 31 insertions(+), 25 deletions(-) diff --git a/client/components/App.vue b/client/components/App.vue index ca85b4f6..1c89a8e0 100644 --- a/client/components/App.vue +++ b/client/components/App.vue @@ -85,36 +85,42 @@ class App { //sanitize this.$root.sanitize = sanitizeHtml; - //global keyHooks - this.keyHooks = []; - this.keyHook = (event) => { - for (const hook of this.keyHooks) + //global event hooks + this.eventHooks = {}; + this.eventHook = (hookName, event) => { + if (!this.eventHooks[hookName]) + return; + for (const hook of this.eventHooks[hookName]) hook(event); } - this.$root.addKeyHook = (hook) => { - if (this.keyHooks.indexOf(hook) < 0) - this.keyHooks.push(hook); + this.$root.addEventHook = (hookName, hook) => { + if (!this.eventHooks[hookName]) + this.eventHooks[hookName] = []; + if (this.eventHooks[hookName].indexOf(hook) < 0) + this.eventHooks[hookName].push(hook); } - this.$root.removeKeyHook = (hook) => { - const i = this.keyHooks.indexOf(hook); + this.$root.removeEventHook = (hookName, hook) => { + if (!this.eventHooks[hookName]) + return; + const i = this.eventHooks[hookName].indexOf(hook); if (i >= 0) - this.keyHooks.splice(i, 1); + this.eventHooks[hookName].splice(i, 1); } document.addEventListener('keyup', (event) => { - this.keyHook(event); + this.eventHook('key', event); }); document.addEventListener('keypress', (event) => { - this.keyHook(event); + this.eventHook('key', event); }); document.addEventListener('keydown', (event) => { - this.keyHook(event); + this.eventHook('key', event); }); - window.addEventListener('resize', () => { - this.$root.$emit('resize'); + window.addEventListener('resize', (event) => { + this.eventHook('resize', event); }); } diff --git a/client/components/ExternalLibs/BookmarkSettings/BookmarkSettings.vue b/client/components/ExternalLibs/BookmarkSettings/BookmarkSettings.vue index 9bb904b4..fb24cc86 100644 --- a/client/components/ExternalLibs/BookmarkSettings/BookmarkSettings.vue +++ b/client/components/ExternalLibs/BookmarkSettings/BookmarkSettings.vue @@ -62,9 +62,9 @@ :nodes="nodes" node-key="key" tick-strategy="leaf" - :selected.sync="selected" - :ticked.sync="ticked" - :expanded.sync="expanded" + v-model:selected="selected" + v-model:ticked="ticked" + v-model:expanded="expanded" selected-color="black" :filter="search" no-nodes-label="Закладок пока нет" diff --git a/client/components/ExternalLibs/ExternalLibs.vue b/client/components/ExternalLibs/ExternalLibs.vue index a91b2a68..0c4b207b 100644 --- a/client/components/ExternalLibs/ExternalLibs.vue +++ b/client/components/ExternalLibs/ExternalLibs.vue @@ -270,9 +270,9 @@ class ExternalLibs { created() { this.oldStartLink = ''; this.justOpened = true; - this.$root.addKeyHook(this.keyHook); + this.$root.addEventHook('key', this.keyHook); - this.$root.$on('resize', async() => { + this.$root.addEventHook('resize', async() => { await utils.sleep(200); this.frameResize(); }); diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 89fe3d64..60b80295 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -279,7 +279,7 @@ class Reader { this.reader = this.$store.state.reader; this.config = this.$store.state.config; - this.$root.addKeyHook(this.keyHook); + this.$root.addEventHook('key', this.keyHook); this.lastActivePage = false; diff --git a/client/components/Reader/RecentBooksPage/RecentBooksPage.vue b/client/components/Reader/RecentBooksPage/RecentBooksPage.vue index 10f5ba77..84cc2d0e 100644 --- a/client/components/Reader/RecentBooksPage/RecentBooksPage.vue +++ b/client/components/Reader/RecentBooksPage/RecentBooksPage.vue @@ -14,7 +14,7 @@ :data="tableData" :columns="columns" row-key="key" - :pagination.sync="pagination" + v-model:pagination="pagination" separator="cell" hide-bottom virtual-scroll diff --git a/client/components/Reader/TextPage/TextPage.vue b/client/components/Reader/TextPage/TextPage.vue index f2aee8b1..ba497e3d 100644 --- a/client/components/Reader/TextPage/TextPage.vue +++ b/client/components/Reader/TextPage/TextPage.vue @@ -149,7 +149,7 @@ class TextPage { await this.doPageAnimation(); }, 10); - this.$root.$on('resize', async() => { + this.$root.addEventHook('resize', async() => { this.$nextTick(this.onResize); await utils.sleep(500); this.$nextTick(this.onResize); diff --git a/client/components/share/StdDialog.vue b/client/components/share/StdDialog.vue index 0d00d0fc..384585df 100644 --- a/client/components/share/StdDialog.vue +++ b/client/components/share/StdDialog.vue @@ -148,8 +148,8 @@ class StdDialog { hotKeyCode = ''; created() { - if (this.$root.addKeyHook) { - this.$root.addKeyHook(this.keyHook); + if (this.$root.addEventHook) { + this.$root.addEventHook('key', this.keyHook); } }