vuestic-ui
Version:
Vue 3 UI Framework
1 lines • 1.58 kB
Source Map (JSON)
{"version":3,"file":"useScroll.mjs","sources":["../../../../../../src/components/va-infinite-scroll/hooks/useScroll.ts"],"sourcesContent":["import { Ref, onMounted, onBeforeUnmount } from 'vue'\n\ninterface ScrollTargetProps {\n scrollTarget: HTMLElement | string | undefined;\n disabled: boolean;\n reverse: boolean;\n}\n\nexport const useScroll = (\n props: ScrollTargetProps,\n element: Ref<HTMLElement | undefined>,\n handler: Ref<any>,\n) => {\n const addScrollListener = () => {\n element.value?.addEventListener(\n 'scroll',\n handler.value,\n { passive: true },\n )\n }\n\n const removeScrollListener = () => {\n element.value?.removeEventListener(\n 'scroll',\n handler.value,\n )\n }\n\n onMounted(() => {\n if (!element.value) { return }\n\n element.value.style.overflowY = 'scroll'\n\n if (props.reverse) {\n element.value.scrollTop = element.value.scrollHeight\n }\n\n addScrollListener()\n })\n\n onBeforeUnmount(removeScrollListener)\n\n return {\n addScrollListener,\n removeScrollListener,\n }\n}\n"],"names":[],"mappings":";AAQO,MAAM,YAAY,CACvB,OACA,SACA,YACG;AACH,QAAM,oBAAoB,MAAM;;AAC9B,kBAAQ,UAAR,mBAAe;AAAA,MACb;AAAA,MACA,QAAQ;AAAA,MACR,EAAE,SAAS,KAAK;AAAA;AAAA,EAClB;AAGF,QAAM,uBAAuB,MAAM;;AACjC,kBAAQ,UAAR,mBAAe;AAAA,MACb;AAAA,MACA,QAAQ;AAAA;AAAA,EACV;AAGF,YAAU,MAAM;AACV,QAAA,CAAC,QAAQ,OAAO;AAAE;AAAA,IAAO;AAErB,YAAA,MAAM,MAAM,YAAY;AAEhC,QAAI,MAAM,SAAS;AACT,cAAA,MAAM,YAAY,QAAQ,MAAM;AAAA,IAC1C;AAEkB;EAAA,CACnB;AAED,kBAAgB,oBAAoB;AAE7B,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;"}