From fc5ce7c5dbf4db4b4ef7e30153ffd782f3ba7e7a Mon Sep 17 00:00:00 2001 From: kuaifan Date: Wed, 25 May 2022 09:20:47 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/assets/js/directives/touchmouse.js | 35 ++++++++ .../manage/components/ChatInput/index.vue | 42 +++++++--- .../assets/js/pages/manage/messenger.vue | 1 + .../sass/pages/components/chat-input.scss | 79 ++++++++++++++++--- .../assets/sass/pages/page-messenger.scss | 9 ++- 5 files changed, 140 insertions(+), 26 deletions(-) create mode 100755 resources/assets/js/directives/touchmouse.js diff --git a/resources/assets/js/directives/touchmouse.js b/resources/assets/js/directives/touchmouse.js new file mode 100755 index 000000000..1bac59f2c --- /dev/null +++ b/resources/assets/js/directives/touchmouse.js @@ -0,0 +1,35 @@ +const isSupportTouch = "ontouchend" in document; +export default { + bind (el, binding) { + let isMove = false; + el.__touchMouseDown__ = e => { + isMove = false; + e.preventDefault(); + }; + el.__touchMouseMove__ = _ => { + isMove = true; + }; + el.__touchMouseUp__ = e => { + if (isMove) { + return; + } + if (binding.expression) { + binding.value(e); + } + }; + el.addEventListener(isSupportTouch ? 'touchstart' : 'mousedown', el.__touchMouseDown__); + el.addEventListener(isSupportTouch ? 'touchmove' : 'mousemove', el.__touchMouseMove__); + el.addEventListener(isSupportTouch ? 'touchend' : 'mouseup', el.__touchMouseUp__); + }, + update () { + + }, + unbind (el) { + el.removeEventListener(isSupportTouch ? 'touchstart' : 'mousedown', el.__touchMouseDown__); + el.removeEventListener(isSupportTouch ? 'touchmove' : 'mousemove', el.__touchMouseMove__); + el.removeEventListener(isSupportTouch ? 'touchend' : 'mouseup', el.__touchMouseUp__); + delete el.__touchMouseDown__; + delete el.__touchMouseMove__; + delete el.__touchMouseUp__; + } +}; diff --git a/resources/assets/js/pages/manage/components/ChatInput/index.vue b/resources/assets/js/pages/manage/components/ChatInput/index.vue index 8472ec114..6baf38d8b 100755 --- a/resources/assets/js/pages/manage/components/ChatInput/index.vue +++ b/resources/assets/js/pages/manage/components/ChatInput/index.vue @@ -40,10 +40,12 @@ -
- - - + +
+ + +
+
@@ -51,15 +53,16 @@