{"version":3,"file":"index.mjs","sources":["../../src/scrolltop/BaseScrollTop.vue","../../src/scrolltop/ScrollTop.vue","../../src/scrolltop/ScrollTop.vue?vue&type=template&id=127e82b4&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport ScrollTopStyle from 'primevue/scrolltop/style';\n\nexport default {\n    name: 'BaseScrollTop',\n    extends: BaseComponent,\n    props: {\n        target: {\n            type: String,\n            default: 'window'\n        },\n        threshold: {\n            type: Number,\n            default: 400\n        },\n        icon: {\n            type: String,\n            default: undefined\n        },\n        behavior: {\n            type: String,\n            default: 'smooth'\n        },\n        buttonProps: {\n            type: Object,\n            default: () => {\n                return { rounded: true };\n            }\n        }\n    },\n    style: ScrollTopStyle,\n    provide() {\n        return {\n            $pcScrollTop: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <transition name=\"p-scrolltop\" appear @enter=\"onEnter\" @after-leave=\"onAfterLeave\" v-bind=\"ptm('transition')\">\n        <Button v-if=\"visible\" :ref=\"containerRef\" :class=\"cx('root')\" @click=\"onClick\" :aria-label=\"scrollTopAriaLabel\" :unstyled=\"unstyled\" v-bind=\"buttonProps\" :pt=\"rootPTOptions()\">\n            <template #icon=\"slotProps\">\n                <slot name=\"icon\" :class=\"cx('icon')\">\n                    <component :is=\"icon ? 'span' : 'ChevronUpIcon'\" :class=\"[cx('icon'), icon, slotProps.class]\" v-bind=\"iconPTOptions\" />\n                </slot>\n            </template>\n        </Button>\n    </transition>\n</template>\n\n<script>\nimport { getWindowScrollTop } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport ChevronUpIcon from '@primevue/icons/chevronup';\nimport Button from 'primevue/button';\nimport { mergeProps } from 'vue';\nimport BaseScrollTop from './BaseScrollTop.vue';\n\nexport default {\n    name: 'ScrollTop',\n    extends: BaseScrollTop,\n    inheritAttrs: false,\n    scrollListener: null,\n    container: null,\n    data() {\n        return {\n            visible: false\n        };\n    },\n    mounted() {\n        if (this.target === 'window') this.bindDocumentScrollListener();\n        else if (this.target === 'parent') this.bindParentScrollListener();\n    },\n    beforeUnmount() {\n        if (this.target === 'window') this.unbindDocumentScrollListener();\n        else if (this.target === 'parent') this.unbindParentScrollListener();\n\n        if (this.container) {\n            ZIndex.clear(this.container);\n            this.overlay = null;\n        }\n    },\n    methods: {\n        onClick() {\n            let scrollElement = this.target === 'window' ? window : this.$el.parentElement;\n\n            scrollElement.scroll({\n                top: 0,\n                behavior: this.behavior\n            });\n        },\n        checkVisibility(scrollY) {\n            if (scrollY > this.threshold) this.visible = true;\n            else this.visible = false;\n        },\n        bindParentScrollListener() {\n            this.scrollListener = () => {\n                this.checkVisibility(this.$el.parentElement.scrollTop);\n            };\n\n            this.$el.parentElement.addEventListener('scroll', this.scrollListener);\n        },\n        bindDocumentScrollListener() {\n            this.scrollListener = () => {\n                this.checkVisibility(getWindowScrollTop());\n            };\n\n            window.addEventListener('scroll', this.scrollListener);\n        },\n        unbindParentScrollListener() {\n            if (this.scrollListener) {\n                this.$el.parentElement.removeEventListener('scroll', this.scrollListener);\n                this.scrollListener = null;\n            }\n        },\n        unbindDocumentScrollListener() {\n            if (this.scrollListener) {\n                window.removeEventListener('scroll', this.scrollListener);\n                this.scrollListener = null;\n            }\n        },\n        onEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n        },\n        onAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        containerRef(el) {\n            this.container = el ? el.$el : undefined;\n        },\n        rootPTOptions() {\n            return mergeProps(this.ptmi('root'), this.ptm('button'));\n        },\n        iconPTOptions() {\n            return mergeProps(this.ptmi('root')['icon'], this.ptm('button')['icon']);\n        }\n    },\n    computed: {\n        scrollTopAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.scrollTop : undefined;\n        }\n    },\n    components: {\n        ChevronUpIcon,\n        Button\n    }\n};\n</script>\n","<template>\n    <transition name=\"p-scrolltop\" appear @enter=\"onEnter\" @after-leave=\"onAfterLeave\" v-bind=\"ptm('transition')\">\n        <Button v-if=\"visible\" :ref=\"containerRef\" :class=\"cx('root')\" @click=\"onClick\" :aria-label=\"scrollTopAriaLabel\" :unstyled=\"unstyled\" v-bind=\"buttonProps\" :pt=\"rootPTOptions()\">\n            <template #icon=\"slotProps\">\n                <slot name=\"icon\" :class=\"cx('icon')\">\n                    <component :is=\"icon ? 'span' : 'ChevronUpIcon'\" :class=\"[cx('icon'), icon, slotProps.class]\" v-bind=\"iconPTOptions\" />\n                </slot>\n            </template>\n        </Button>\n    </transition>\n</template>\n\n<script>\nimport { getWindowScrollTop } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport ChevronUpIcon from '@primevue/icons/chevronup';\nimport Button from 'primevue/button';\nimport { mergeProps } from 'vue';\nimport BaseScrollTop from './BaseScrollTop.vue';\n\nexport default {\n    name: 'ScrollTop',\n    extends: BaseScrollTop,\n    inheritAttrs: false,\n    scrollListener: null,\n    container: null,\n    data() {\n        return {\n            visible: false\n        };\n    },\n    mounted() {\n        if (this.target === 'window') this.bindDocumentScrollListener();\n        else if (this.target === 'parent') this.bindParentScrollListener();\n    },\n    beforeUnmount() {\n        if (this.target === 'window') this.unbindDocumentScrollListener();\n        else if (this.target === 'parent') this.unbindParentScrollListener();\n\n        if (this.container) {\n            ZIndex.clear(this.container);\n            this.overlay = null;\n        }\n    },\n    methods: {\n        onClick() {\n            let scrollElement = this.target === 'window' ? window : this.$el.parentElement;\n\n            scrollElement.scroll({\n                top: 0,\n                behavior: this.behavior\n            });\n        },\n        checkVisibility(scrollY) {\n            if (scrollY > this.threshold) this.visible = true;\n            else this.visible = false;\n        },\n        bindParentScrollListener() {\n            this.scrollListener = () => {\n                this.checkVisibility(this.$el.parentElement.scrollTop);\n            };\n\n            this.$el.parentElement.addEventListener('scroll', this.scrollListener);\n        },\n        bindDocumentScrollListener() {\n            this.scrollListener = () => {\n                this.checkVisibility(getWindowScrollTop());\n            };\n\n            window.addEventListener('scroll', this.scrollListener);\n        },\n        unbindParentScrollListener() {\n            if (this.scrollListener) {\n                this.$el.parentElement.removeEventListener('scroll', this.scrollListener);\n                this.scrollListener = null;\n            }\n        },\n        unbindDocumentScrollListener() {\n            if (this.scrollListener) {\n                window.removeEventListener('scroll', this.scrollListener);\n                this.scrollListener = null;\n            }\n        },\n        onEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n        },\n        onAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        containerRef(el) {\n            this.container = el ? el.$el : undefined;\n        },\n        rootPTOptions() {\n            return mergeProps(this.ptmi('root'), this.ptm('button'));\n        },\n        iconPTOptions() {\n            return mergeProps(this.ptmi('root')['icon'], this.ptm('button')['icon']);\n        }\n    },\n    computed: {\n        scrollTopAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.scrollTop : undefined;\n        }\n    },\n    components: {\n        ChevronUpIcon,\n        Button\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","target","type","String","threshold","Number","icon","undefined","behavior","buttonProps","Object","default","rounded","style","ScrollTopStyle","provide","$pcScrollTop","$parentInstance","BaseScrollTop","inheritAttrs","scrollListener","container","data","visible","mounted","bindDocumentScrollListener","bindParentScrollListener","beforeUnmount","unbindDocumentScrollListener","unbindParentScrollListener","ZIndex","clear","overlay","methods","onClick","scrollElement","window","$el","parentElement","scroll","top","checkVisibility","scrollY","_this","scrollTop","addEventListener","_this2","getWindowScrollTop","removeEventListener","onEnter","el","set","$primevue","config","zIndex","onAfterLeave","containerRef","rootPTOptions","mergeProps","ptmi","ptm","iconPTOptions","computed","scrollTopAriaLabel","locale","aria","components","ChevronUpIcon","Button","_openBlock","_createBlock","_Transition","_mergeProps","appear","$options","_ctx","$data","_component_Button","ref","cx","unstyled","pt","_withCtx","slotProps","_renderSlot","$slots","_resolveDynamicComponent"],"mappings":"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"}