diff --git a/public/css/fonts/taskfont/iconfont.ttf b/public/css/fonts/taskfont/iconfont.ttf index fcb0a679f..6c16d6675 100644 Binary files a/public/css/fonts/taskfont/iconfont.ttf and b/public/css/fonts/taskfont/iconfont.ttf differ diff --git a/public/css/fonts/taskfont/iconfont.woff b/public/css/fonts/taskfont/iconfont.woff index 72e87b1a4..e2bf44995 100644 Binary files a/public/css/fonts/taskfont/iconfont.woff and b/public/css/fonts/taskfont/iconfont.woff differ diff --git a/public/css/fonts/taskfont/iconfont.woff2 b/public/css/fonts/taskfont/iconfont.woff2 index 509bba5c3..157dde29b 100644 Binary files a/public/css/fonts/taskfont/iconfont.woff2 and b/public/css/fonts/taskfont/iconfont.woff2 differ diff --git a/resources/assets/js/directives/scroll-active.js b/resources/assets/js/directives/scroll-active.js new file mode 100644 index 000000000..0763c3865 --- /dev/null +++ b/resources/assets/js/directives/scroll-active.js @@ -0,0 +1,81 @@ +// 滚动超出隐藏 +const scrollActive = { + bind: function (el, binding) { + let element = binding.value; + let activeClass = 'active'; + let inactiveClass = 'inactive'; + el.__vueScrollActiveMain__ = null; + if ($A.isJson(binding.value)) { + if (binding.value.main) { + el.__vueScrollActiveMain__ = binding.value.main + } + if (binding.value.element) { + element = binding.value.element; + } + if (binding.value.activeClass) { + activeClass = binding.value.activeClass; + } + if (binding.value.inactiveClass) { + inactiveClass = binding.value.inactiveClass; + } + } + if (!element) { + return; + } + const main = el.__vueScrollActiveMain__ ? el.querySelector(el.__vueScrollActiveMain__) : el; + // + el.__vueScrollActiveListener__ = (e) => { + const containerRect = e.target.getBoundingClientRect() + const items = e.target.querySelectorAll(element) + items.forEach((item, index) => { + const itemRect = item.getBoundingClientRect() + if ( + itemRect.top < containerRect.bottom && itemRect.bottom > containerRect.top && + itemRect.left < containerRect.right && itemRect.right > containerRect.left + ) { + activeClass && item.classList.add(activeClass) + inactiveClass && item.classList.remove(inactiveClass) + } else { + activeClass && item.classList.remove(activeClass) + inactiveClass && item.classList.add(inactiveClass) + } + }) + } + main.addEventListener("scroll", el.__vueScrollActiveListener__); + // + let initialHeight = 0; + let initialWidth = 0; + el.__vueScrollActiveObserver__ = new MutationObserver(function (mutations) { + // 遍历每个发生变化的 mutation + mutations.forEach(function (mutation) { + if (mutation.type === "childList") { + const childElements = main.querySelectorAll(element) + if (childElements.length === 0) { + return; + } + const lastSpecifiedElement = childElements[childElements.length - 1].getBoundingClientRect(); + const lastWidth = lastSpecifiedElement.right; + const lastHeight = lastSpecifiedElement.bottom; + if (lastHeight != initialHeight || lastWidth != initialWidth) { + initialHeight = lastHeight; + initialWidth = lastWidth; + el.__vueScrollActiveListener__({target: el}); + } + } + }); + }); + el.__vueScrollActiveObserver__.observe(main, { childList: true, subtree: true }); + }, + + // 指令与元素解绑的时候,移除事件绑定 + unbind(el) { + const main = el.__vueScrollActiveMain__ ? el.querySelector(el.__vueScrollActiveMain__) : el; + main.removeEventListener('scroll', el.__vueScrollActiveListener__); + delete el.__vueScrollActiveListener__; + // + el.__vueScrollActiveObserver__.disconnect(); + delete el.__vueScrollActiveObserver__; + } +} + +export default scrollActive diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 61597d99d..0818ab528 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -2306,7 +2306,7 @@ export default { if (selectText.length > 0) { this.operateCopys.push({ type: 'selected', - icon: '', + icon: '', label: '复制选择', value: selectText, }) diff --git a/resources/assets/statics/public/css/fonts/taskfont/iconfont.ttf b/resources/assets/statics/public/css/fonts/taskfont/iconfont.ttf index fcb0a679f..6c16d6675 100644 Binary files a/resources/assets/statics/public/css/fonts/taskfont/iconfont.ttf and b/resources/assets/statics/public/css/fonts/taskfont/iconfont.ttf differ diff --git a/resources/assets/statics/public/css/fonts/taskfont/iconfont.woff b/resources/assets/statics/public/css/fonts/taskfont/iconfont.woff index 72e87b1a4..e2bf44995 100644 Binary files a/resources/assets/statics/public/css/fonts/taskfont/iconfont.woff and b/resources/assets/statics/public/css/fonts/taskfont/iconfont.woff differ diff --git a/resources/assets/statics/public/css/fonts/taskfont/iconfont.woff2 b/resources/assets/statics/public/css/fonts/taskfont/iconfont.woff2 index 509bba5c3..157dde29b 100644 Binary files a/resources/assets/statics/public/css/fonts/taskfont/iconfont.woff2 and b/resources/assets/statics/public/css/fonts/taskfont/iconfont.woff2 differ