UNPKG

tav-ui

Version:
1 lines 9.2 kB
{"version":3,"file":"scrollbar2.mjs","sources":["../../../../../../../packages/components/scrollbar/src/scrollbar.vue"],"sourcesContent":["<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n ref,\n unref,\n} from 'vue'\nimport { addResizeListener, removeResizeListener } from '@tav-ui/utils/event/index'\nimport Button from '@tav-ui/components/button'\nimport Bar from './bar'\nimport { scrollbarProps } from './types'\nimport { toObject } from './util'\nimport type { Emitter } from '@tav-ui/utils'\n\nexport default defineComponent({\n name: 'TaScrollbar',\n components: { Bar, Button },\n inheritAttrs: false,\n props: scrollbarProps,\n setup(props) {\n const sizeWidth = ref('0')\n const sizeHeight = ref('0')\n const moveX = ref(0)\n const moveY = ref(0)\n const wrap = ref<HTMLElement>()\n const resize = ref()\n const isBackTopShow = ref<boolean>(false)\n\n provide('scroll-bar-wrap', wrap)\n\n const style = computed(() => {\n if (Array.isArray(props.wrapStyle)) return toObject(props.wrapStyle)\n\n return props.wrapStyle\n })\n\n const handleScroll = () => {\n if (!props.native && wrap.value) {\n moveY.value = (wrap.value.scrollTop * 100) / wrap.value.clientHeight\n moveX.value = (wrap.value.scrollLeft * 100) / wrap.value.clientWidth\n\n if (props.backTopVisibilityHeight && moveY.value > props.backTopVisibilityHeight) {\n isBackTopShow.value = true\n } else {\n isBackTopShow.value = false\n }\n }\n }\n\n const update = () => {\n if (!wrap.value) return\n const heightPercentage = (wrap.value.clientHeight * 100) / wrap.value.scrollHeight\n const widthPercentage = (wrap.value.clientWidth * 100) / wrap.value.scrollWidth\n\n sizeHeight.value = heightPercentage < 100 ? `${heightPercentage}%` : ''\n sizeWidth.value = widthPercentage < 100 ? `${widthPercentage}%` : ''\n }\n\n const handleBackTopClick = () => {\n if (wrap.value) wrap.value.scrollTop = 0\n }\n\n onMounted(() => {\n if (props.native) return\n nextTick(update)\n inject<Emitter>('modalEmitter')?.on('redoThumbHeight', () => {\n nextTick(update)\n })\n\n if (!props.noresize) {\n addResizeListener(unref(resize), update)\n wrap.value && addResizeListener(wrap.value, update)\n addEventListener('resize', update)\n }\n })\n\n onBeforeUnmount(() => {\n if (props.native) return\n if (!props.noresize) {\n removeResizeListener(unref(resize), update)\n wrap.value && removeResizeListener(wrap.value, update)\n removeEventListener('resize', update)\n }\n })\n\n return {\n moveX,\n moveY,\n sizeWidth,\n sizeHeight,\n style,\n wrap,\n resize,\n update,\n handleScroll,\n isBackTopShow,\n handleBackTopClick,\n }\n },\n})\n</script>\n<template>\n <div :class=\"['scrollbar', containerClass]\">\n <div\n ref=\"wrap\"\n :class=\"[wrapClass, 'scrollbar__wrap', native ? '' : 'scrollbar__wrap--hidden-default']\"\n :style=\"style\"\n @scroll=\"handleScroll\"\n >\n <component :is=\"tag\" ref=\"resize\" :class=\"['scrollbar__view', viewClass]\" :style=\"viewStyle\">\n <slot />\n <Button\n v-if=\"isBackTopShow\"\n type=\"text\"\n pre-icon=\"ant-design:vertical-align-top-outlined\"\n :icon-size=\"18\"\n style=\"\n min-width: auto;\n position: absolute;\n right: 15px;\n bottom: 7px;\n width: 30px;\n height: 30px !important;\n overflow: hidden;\n color: #fff;\n background-color: #00000073;\n border-radius: 50%;\n transition: all 0.3s;\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n \"\n @click=\"handleBackTopClick\"\n />\n </component>\n </div>\n <template v-if=\"!native\">\n <bar :move=\"moveX\" :size=\"sizeWidth\" />\n <bar vertical :move=\"moveY\" :size=\"sizeHeight\" />\n </template>\n </div>\n</template>\n"],"names":["Button","_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_openBlock","_createBlock","_resolveDynamicComponent","_renderSlot","_createCommentVNode","_Fragment","_createVNode"],"mappings":"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"}