{"version":3,"file":"index.mjs","sources":["../../src/menu/BaseMenu.vue","../../src/menu/Menuitem.vue","../../src/menu/Menuitem.vue?vue&type=template&id=34cda3c6&lang.js","../../src/menu/Menu.vue","../../src/menu/Menu.vue?vue&type=template&id=068ae026&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport MenuStyle from 'primevue/menu/style';\n\nexport default {\n    name: 'BaseMenu',\n    extends: BaseComponent,\n    props: {\n        popup: {\n            type: Boolean,\n            default: false\n        },\n        model: {\n            type: Array,\n            default: null\n        },\n        appendTo: {\n            type: [String, Object],\n            default: 'body'\n        },\n        autoZIndex: {\n            type: Boolean,\n            default: true\n        },\n        baseZIndex: {\n            type: Number,\n            default: 0\n        },\n        tabindex: {\n            type: Number,\n            default: 0\n        },\n        ariaLabel: {\n            type: String,\n            default: null\n        },\n        ariaLabelledby: {\n            type: String,\n            default: null\n        }\n    },\n    style: MenuStyle,\n    provide() {\n        return {\n            $pcMenu: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <li\n        v-if=\"visible()\"\n        :id=\"id\"\n        :class=\"[cx('item'), item.class]\"\n        role=\"menuitem\"\n        :style=\"item.style\"\n        :aria-label=\"label()\"\n        :aria-disabled=\"disabled()\"\n        v-bind=\"getPTOptions('item')\"\n        :data-p-focused=\"isItemFocused()\"\n        :data-p-disabled=\"disabled() || false\"\n    >\n        <div :class=\"cx('itemContent')\" @click=\"onItemClick($event)\" @mousemove=\"onItemMouseMove($event)\" v-bind=\"getPTOptions('itemContent')\">\n            <template v-if=\"!templates.item\">\n                <a v-ripple :href=\"item.url\" :class=\"cx('itemLink')\" :target=\"item.target\" tabindex=\"-1\" v-bind=\"getPTOptions('itemLink')\">\n                    <component v-if=\"templates.itemicon\" :is=\"templates.itemicon\" :item=\"item\" :class=\"cx('itemIcon')\" />\n                    <span v-else-if=\"item.icon\" :class=\"[cx('itemIcon'), item.icon]\" v-bind=\"getPTOptions('itemIcon')\" />\n                    <span :class=\"cx('itemLabel')\" v-bind=\"getPTOptions('itemLabel')\">{{ label() }}</span>\n                </a>\n            </template>\n            <component v-else-if=\"templates.item\" :is=\"templates.item\" :item=\"item\" :label=\"label()\" :props=\"getMenuItemProps(item)\"></component>\n        </div>\n    </li>\n</template>\n\n<script>\nimport { resolve } from '@primeuix/utils/object';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport Ripple from 'primevue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'Menuitem',\n    hostName: 'Menu',\n    extends: BaseComponent,\n    inheritAttrs: false,\n    emits: ['item-click', 'item-mousemove'],\n    props: {\n        item: null,\n        templates: null,\n        id: null,\n        focusedOptionId: null,\n        index: null\n    },\n    methods: {\n        getItemProp(processedItem, name) {\n            return processedItem && processedItem.item ? resolve(processedItem.item[name]) : undefined;\n        },\n        getPTOptions(key) {\n            return this.ptm(key, {\n                context: {\n                    item: this.item,\n                    index: this.index,\n                    focused: this.isItemFocused(),\n                    disabled: this.disabled()\n                }\n            });\n        },\n        isItemFocused() {\n            return this.focusedOptionId === this.id;\n        },\n        onItemClick(event) {\n            const command = this.getItemProp(this.item, 'command');\n\n            command && command({ originalEvent: event, item: this.item.item });\n            this.$emit('item-click', { originalEvent: event, item: this.item, id: this.id });\n        },\n        onItemMouseMove(event) {\n            this.$emit('item-mousemove', { originalEvent: event, item: this.item, id: this.id });\n        },\n        visible() {\n            return typeof this.item.visible === 'function' ? this.item.visible() : this.item.visible !== false;\n        },\n        disabled() {\n            return typeof this.item.disabled === 'function' ? this.item.disabled() : this.item.disabled;\n        },\n        label() {\n            return typeof this.item.label === 'function' ? this.item.label() : this.item.label;\n        },\n        getMenuItemProps(item) {\n            return {\n                action: mergeProps(\n                    {\n                        class: this.cx('itemLink'),\n                        tabindex: '-1',\n                        'aria-hidden': true\n                    },\n                    this.getPTOptions('itemLink')\n                ),\n                icon: mergeProps(\n                    {\n                        class: [this.cx('itemIcon'), item.icon]\n                    },\n                    this.getPTOptions('itemIcon')\n                ),\n                label: mergeProps(\n                    {\n                        class: this.cx('itemLabel')\n                    },\n                    this.getPTOptions('itemLabel')\n                )\n            };\n        }\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <li\n        v-if=\"visible()\"\n        :id=\"id\"\n        :class=\"[cx('item'), item.class]\"\n        role=\"menuitem\"\n        :style=\"item.style\"\n        :aria-label=\"label()\"\n        :aria-disabled=\"disabled()\"\n        v-bind=\"getPTOptions('item')\"\n        :data-p-focused=\"isItemFocused()\"\n        :data-p-disabled=\"disabled() || false\"\n    >\n        <div :class=\"cx('itemContent')\" @click=\"onItemClick($event)\" @mousemove=\"onItemMouseMove($event)\" v-bind=\"getPTOptions('itemContent')\">\n            <template v-if=\"!templates.item\">\n                <a v-ripple :href=\"item.url\" :class=\"cx('itemLink')\" :target=\"item.target\" tabindex=\"-1\" v-bind=\"getPTOptions('itemLink')\">\n                    <component v-if=\"templates.itemicon\" :is=\"templates.itemicon\" :item=\"item\" :class=\"cx('itemIcon')\" />\n                    <span v-else-if=\"item.icon\" :class=\"[cx('itemIcon'), item.icon]\" v-bind=\"getPTOptions('itemIcon')\" />\n                    <span :class=\"cx('itemLabel')\" v-bind=\"getPTOptions('itemLabel')\">{{ label() }}</span>\n                </a>\n            </template>\n            <component v-else-if=\"templates.item\" :is=\"templates.item\" :item=\"item\" :label=\"label()\" :props=\"getMenuItemProps(item)\"></component>\n        </div>\n    </li>\n</template>\n\n<script>\nimport { resolve } from '@primeuix/utils/object';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport Ripple from 'primevue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'Menuitem',\n    hostName: 'Menu',\n    extends: BaseComponent,\n    inheritAttrs: false,\n    emits: ['item-click', 'item-mousemove'],\n    props: {\n        item: null,\n        templates: null,\n        id: null,\n        focusedOptionId: null,\n        index: null\n    },\n    methods: {\n        getItemProp(processedItem, name) {\n            return processedItem && processedItem.item ? resolve(processedItem.item[name]) : undefined;\n        },\n        getPTOptions(key) {\n            return this.ptm(key, {\n                context: {\n                    item: this.item,\n                    index: this.index,\n                    focused: this.isItemFocused(),\n                    disabled: this.disabled()\n                }\n            });\n        },\n        isItemFocused() {\n            return this.focusedOptionId === this.id;\n        },\n        onItemClick(event) {\n            const command = this.getItemProp(this.item, 'command');\n\n            command && command({ originalEvent: event, item: this.item.item });\n            this.$emit('item-click', { originalEvent: event, item: this.item, id: this.id });\n        },\n        onItemMouseMove(event) {\n            this.$emit('item-mousemove', { originalEvent: event, item: this.item, id: this.id });\n        },\n        visible() {\n            return typeof this.item.visible === 'function' ? this.item.visible() : this.item.visible !== false;\n        },\n        disabled() {\n            return typeof this.item.disabled === 'function' ? this.item.disabled() : this.item.disabled;\n        },\n        label() {\n            return typeof this.item.label === 'function' ? this.item.label() : this.item.label;\n        },\n        getMenuItemProps(item) {\n            return {\n                action: mergeProps(\n                    {\n                        class: this.cx('itemLink'),\n                        tabindex: '-1',\n                        'aria-hidden': true\n                    },\n                    this.getPTOptions('itemLink')\n                ),\n                icon: mergeProps(\n                    {\n                        class: [this.cx('itemIcon'), item.icon]\n                    },\n                    this.getPTOptions('itemIcon')\n                ),\n                label: mergeProps(\n                    {\n                        class: this.cx('itemLabel')\n                    },\n                    this.getPTOptions('itemLabel')\n                )\n            };\n        }\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <Portal :appendTo=\"appendTo\" :disabled=\"!popup\">\n        <transition name=\"p-connected-overlay\" @enter=\"onEnter\" @leave=\"onLeave\" @after-leave=\"onAfterLeave\" v-bind=\"ptm('transition')\">\n            <div v-if=\"popup ? overlayVisible : true\" :ref=\"containerRef\" :id=\"id\" :class=\"cx('root')\" @click=\"onOverlayClick\" v-bind=\"ptmi('root')\">\n                <div v-if=\"$slots.start\" :class=\"cx('start')\" v-bind=\"ptm('start')\">\n                    <slot name=\"start\"></slot>\n                </div>\n                <ul\n                    :ref=\"listRef\"\n                    :id=\"id + '_list'\"\n                    :class=\"cx('list')\"\n                    role=\"menu\"\n                    :tabindex=\"tabindex\"\n                    :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n                    :aria-label=\"ariaLabel\"\n                    :aria-labelledby=\"ariaLabelledby\"\n                    @focus=\"onListFocus\"\n                    @blur=\"onListBlur\"\n                    @keydown=\"onListKeyDown\"\n                    v-bind=\"ptm('list')\"\n                >\n                    <template v-for=\"(item, i) of model\" :key=\"label(item) + i.toString()\">\n                        <template v-if=\"item.items && visible(item) && !item.separator\">\n                            <li v-if=\"item.items\" :id=\"id + '_' + i\" :class=\"[cx('submenuLabel'), item.class]\" role=\"none\" v-bind=\"ptm('submenuLabel')\">\n                                <!--TODO: submenuheader deprecated since v4.0. Use submenulabel-->\n                                <slot :name=\"$slots.submenulabel ? 'submenulabel' : 'submenuheader'\" :item=\"item\">{{ label(item) }}</slot>\n                            </li>\n                            <template v-for=\"(child, j) of item.items\" :key=\"child.label + i + '_' + j\">\n                                <PVMenuitem\n                                    v-if=\"visible(child) && !child.separator\"\n                                    :id=\"id + '_' + i + '_' + j\"\n                                    :item=\"child\"\n                                    :templates=\"$slots\"\n                                    :focusedOptionId=\"focusedOptionId\"\n                                    :unstyled=\"unstyled\"\n                                    @item-click=\"itemClick\"\n                                    @item-mousemove=\"itemMouseMove\"\n                                    :pt=\"pt\"\n                                />\n                                <li v-else-if=\"visible(child) && child.separator\" :key=\"'separator' + i + j\" :class=\"[cx('separator'), item.class]\" :style=\"child.style\" role=\"separator\" v-bind=\"ptm('separator')\"></li>\n                            </template>\n                        </template>\n                        <li v-else-if=\"visible(item) && item.separator\" :key=\"'separator' + i.toString()\" :class=\"[cx('separator'), item.class]\" :style=\"item.style\" role=\"separator\" v-bind=\"ptm('separator')\"></li>\n                        <PVMenuitem\n                            v-else\n                            :key=\"label(item) + i.toString()\"\n                            :id=\"id + '_' + i\"\n                            :item=\"item\"\n                            :index=\"i\"\n                            :templates=\"$slots\"\n                            :focusedOptionId=\"focusedOptionId\"\n                            :unstyled=\"unstyled\"\n                            @item-click=\"itemClick\"\n                            @item-mousemove=\"itemMouseMove\"\n                            :pt=\"pt\"\n                        />\n                    </template>\n                </ul>\n                <div v-if=\"$slots.end\" :class=\"cx('end')\" v-bind=\"ptm('end')\">\n                    <slot name=\"end\"></slot>\n                </div>\n            </div>\n        </transition>\n    </Portal>\n</template>\n\n<script>\nimport { ConnectedOverlayScrollHandler, UniqueComponentId } from '@primevue/core/utils';\nimport { focus, find, findSingle, addStyle, absolutePosition, getOuterWidth, isTouchDevice } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport BaseMenu from './BaseMenu.vue';\nimport Menuitem from './Menuitem.vue';\n\nexport default {\n    name: 'Menu',\n    extends: BaseMenu,\n    inheritAttrs: false,\n    emits: ['show', 'hide', 'focus', 'blur'],\n    data() {\n        return {\n            id: this.$attrs.id,\n            overlayVisible: false,\n            focused: false,\n            focusedOptionIndex: -1,\n            selectedOptionIndex: -1\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        }\n    },\n    target: null,\n    outsideClickListener: null,\n    scrollHandler: null,\n    resizeListener: null,\n    container: null,\n    list: null,\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n\n        if (!this.popup) {\n            this.bindResizeListener();\n            this.bindOutsideClickListener();\n        }\n    },\n    beforeUnmount() {\n        this.unbindResizeListener();\n        this.unbindOutsideClickListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        this.target = null;\n\n        if (this.container && this.autoZIndex) {\n            ZIndex.clear(this.container);\n        }\n\n        this.container = null;\n    },\n    methods: {\n        itemClick(event) {\n            const item = event.item;\n\n            if (this.disabled(item)) {\n                return;\n            }\n\n            if (item.command) {\n                item.command(event);\n            }\n\n            if (this.overlayVisible) this.hide();\n\n            if (!this.popup && this.focusedOptionIndex !== event.id) {\n                this.focusedOptionIndex = event.id;\n            }\n        },\n        itemMouseMove(event) {\n            if (this.focused) {\n                this.focusedOptionIndex = event.id;\n            }\n        },\n        onListFocus(event) {\n            this.focused = true;\n            !this.popup && this.changeFocusedOptionIndex(0);\n\n            this.$emit('focus', event);\n        },\n        onListBlur(event) {\n            this.focused = false;\n            this.focusedOptionIndex = -1;\n            this.$emit('blur', event);\n        },\n        onListKeyDown(event) {\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onArrowUpKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Space':\n                    this.onSpaceKey(event);\n                    break;\n\n                case 'Escape':\n                    if (this.popup) {\n                        focus(this.target);\n                        this.hide();\n                    }\n\n                case 'Tab':\n                    this.overlayVisible && this.hide();\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            const optionIndex = this.findNextOptionIndex(this.focusedOptionIndex);\n\n            this.changeFocusedOptionIndex(optionIndex);\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            if (event.altKey && this.popup) {\n                focus(this.target);\n                this.hide();\n                event.preventDefault();\n            } else {\n                const optionIndex = this.findPrevOptionIndex(this.focusedOptionIndex);\n\n                this.changeFocusedOptionIndex(optionIndex);\n                event.preventDefault();\n            }\n        },\n        onHomeKey(event) {\n            this.changeFocusedOptionIndex(0);\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            this.changeFocusedOptionIndex(find(this.container, 'li[data-pc-section=\"item\"][data-p-disabled=\"false\"]').length - 1);\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            const element = findSingle(this.list, `li[id=\"${`${this.focusedOptionIndex}`}\"]`);\n            const anchorElement = element && findSingle(element, 'a[data-pc-section=\"itemlink\"]');\n\n            this.popup && focus(this.target);\n            anchorElement ? anchorElement.click() : element && element.click();\n\n            event.preventDefault();\n        },\n        onSpaceKey(event) {\n            this.onEnterKey(event);\n        },\n        findNextOptionIndex(index) {\n            const links = find(this.container, 'li[data-pc-section=\"item\"][data-p-disabled=\"false\"]');\n            const matchedOptionIndex = [...links].findIndex((link) => link.id === index);\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + 1 : 0;\n        },\n        findPrevOptionIndex(index) {\n            const links = find(this.container, 'li[data-pc-section=\"item\"][data-p-disabled=\"false\"]');\n            const matchedOptionIndex = [...links].findIndex((link) => link.id === index);\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex - 1 : 0;\n        },\n        changeFocusedOptionIndex(index) {\n            const links = find(this.container, 'li[data-pc-section=\"item\"][data-p-disabled=\"false\"]');\n            let order = index >= links.length ? links.length - 1 : index < 0 ? 0 : index;\n\n            order > -1 && (this.focusedOptionIndex = links[order].getAttribute('id'));\n        },\n        toggle(event) {\n            if (this.overlayVisible) this.hide();\n            else this.show(event);\n        },\n        show(event) {\n            this.overlayVisible = true;\n            this.target = event.currentTarget;\n        },\n        hide() {\n            this.overlayVisible = false;\n            this.target = null;\n        },\n        onEnter(el) {\n            addStyle(el, { position: 'absolute', top: '0', left: '0' });\n            this.alignOverlay();\n            this.bindOutsideClickListener();\n            this.bindResizeListener();\n            this.bindScrollListener();\n\n            if (this.autoZIndex) {\n                ZIndex.set('menu', el, this.baseZIndex + this.$primevue.config.zIndex.menu);\n            }\n\n            if (this.popup) {\n                focus(this.list);\n            }\n\n            this.$emit('show');\n        },\n        onLeave() {\n            this.unbindOutsideClickListener();\n            this.unbindResizeListener();\n            this.unbindScrollListener();\n            this.$emit('hide');\n        },\n        onAfterLeave(el) {\n            if (this.autoZIndex) {\n                ZIndex.clear(el);\n            }\n        },\n        alignOverlay() {\n            absolutePosition(this.container, this.target);\n            const targetWidth = getOuterWidth(this.target);\n\n            if (targetWidth > getOuterWidth(this.container)) {\n                this.container.style.minWidth = getOuterWidth(this.target) + 'px';\n            }\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    const isOutsideContainer = this.container && !this.container.contains(event.target);\n                    const isOutsideTarget = !(this.target && (this.target === event.target || this.target.contains(event.target)));\n\n                    if (this.overlayVisible && isOutsideContainer && isOutsideTarget) {\n                        this.hide();\n                    } else if (!this.popup && isOutsideContainer && isOutsideTarget) {\n                        this.focusedOptionIndex = -1;\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener);\n                this.outsideClickListener = null;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        visible(item) {\n            return typeof item.visible === 'function' ? item.visible() : item.visible !== false;\n        },\n        disabled(item) {\n            return typeof item.disabled === 'function' ? item.disabled() : item.disabled;\n        },\n        label(item) {\n            return typeof item.label === 'function' ? item.label() : item.label;\n        },\n        onOverlayClick(event) {\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.target\n            });\n        },\n        containerRef(el) {\n            this.container = el;\n        },\n        listRef(el) {\n            this.list = el;\n        }\n    },\n    computed: {\n        focusedOptionId() {\n            return this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : null;\n        }\n    },\n    components: {\n        PVMenuitem: Menuitem,\n        Portal: Portal\n    }\n};\n</script>\n","<template>\n    <Portal :appendTo=\"appendTo\" :disabled=\"!popup\">\n        <transition name=\"p-connected-overlay\" @enter=\"onEnter\" @leave=\"onLeave\" @after-leave=\"onAfterLeave\" v-bind=\"ptm('transition')\">\n            <div v-if=\"popup ? overlayVisible : true\" :ref=\"containerRef\" :id=\"id\" :class=\"cx('root')\" @click=\"onOverlayClick\" v-bind=\"ptmi('root')\">\n                <div v-if=\"$slots.start\" :class=\"cx('start')\" v-bind=\"ptm('start')\">\n                    <slot name=\"start\"></slot>\n                </div>\n                <ul\n                    :ref=\"listRef\"\n                    :id=\"id + '_list'\"\n                    :class=\"cx('list')\"\n                    role=\"menu\"\n                    :tabindex=\"tabindex\"\n                    :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n                    :aria-label=\"ariaLabel\"\n                    :aria-labelledby=\"ariaLabelledby\"\n                    @focus=\"onListFocus\"\n                    @blur=\"onListBlur\"\n                    @keydown=\"onListKeyDown\"\n                    v-bind=\"ptm('list')\"\n                >\n                    <template v-for=\"(item, i) of model\" :key=\"label(item) + i.toString()\">\n                        <template v-if=\"item.items && visible(item) && !item.separator\">\n                            <li v-if=\"item.items\" :id=\"id + '_' + i\" :class=\"[cx('submenuLabel'), item.class]\" role=\"none\" v-bind=\"ptm('submenuLabel')\">\n                                <!--TODO: submenuheader deprecated since v4.0. Use submenulabel-->\n                                <slot :name=\"$slots.submenulabel ? 'submenulabel' : 'submenuheader'\" :item=\"item\">{{ label(item) }}</slot>\n                            </li>\n                            <template v-for=\"(child, j) of item.items\" :key=\"child.label + i + '_' + j\">\n                                <PVMenuitem\n                                    v-if=\"visible(child) && !child.separator\"\n                                    :id=\"id + '_' + i + '_' + j\"\n                                    :item=\"child\"\n                                    :templates=\"$slots\"\n                                    :focusedOptionId=\"focusedOptionId\"\n                                    :unstyled=\"unstyled\"\n                                    @item-click=\"itemClick\"\n                                    @item-mousemove=\"itemMouseMove\"\n                                    :pt=\"pt\"\n                                />\n                                <li v-else-if=\"visible(child) && child.separator\" :key=\"'separator' + i + j\" :class=\"[cx('separator'), item.class]\" :style=\"child.style\" role=\"separator\" v-bind=\"ptm('separator')\"></li>\n                            </template>\n                        </template>\n                        <li v-else-if=\"visible(item) && item.separator\" :key=\"'separator' + i.toString()\" :class=\"[cx('separator'), item.class]\" :style=\"item.style\" role=\"separator\" v-bind=\"ptm('separator')\"></li>\n                        <PVMenuitem\n                            v-else\n                            :key=\"label(item) + i.toString()\"\n                            :id=\"id + '_' + i\"\n                            :item=\"item\"\n                            :index=\"i\"\n                            :templates=\"$slots\"\n                            :focusedOptionId=\"focusedOptionId\"\n                            :unstyled=\"unstyled\"\n                            @item-click=\"itemClick\"\n                            @item-mousemove=\"itemMouseMove\"\n                            :pt=\"pt\"\n                        />\n                    </template>\n                </ul>\n                <div v-if=\"$slots.end\" :class=\"cx('end')\" v-bind=\"ptm('end')\">\n                    <slot name=\"end\"></slot>\n                </div>\n            </div>\n        </transition>\n    </Portal>\n</template>\n\n<script>\nimport { ConnectedOverlayScrollHandler, UniqueComponentId } from '@primevue/core/utils';\nimport { focus, find, findSingle, addStyle, absolutePosition, getOuterWidth, isTouchDevice } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport BaseMenu from './BaseMenu.vue';\nimport Menuitem from './Menuitem.vue';\n\nexport default {\n    name: 'Menu',\n    extends: BaseMenu,\n    inheritAttrs: false,\n    emits: ['show', 'hide', 'focus', 'blur'],\n    data() {\n        return {\n            id: this.$attrs.id,\n            overlayVisible: false,\n            focused: false,\n            focusedOptionIndex: -1,\n            selectedOptionIndex: -1\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        }\n    },\n    target: null,\n    outsideClickListener: null,\n    scrollHandler: null,\n    resizeListener: null,\n    container: null,\n    list: null,\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n\n        if (!this.popup) {\n            this.bindResizeListener();\n            this.bindOutsideClickListener();\n        }\n    },\n    beforeUnmount() {\n        this.unbindResizeListener();\n        this.unbindOutsideClickListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        this.target = null;\n\n        if (this.container && this.autoZIndex) {\n            ZIndex.clear(this.container);\n        }\n\n        this.container = null;\n    },\n    methods: {\n        itemClick(event) {\n            const item = event.item;\n\n            if (this.disabled(item)) {\n                return;\n            }\n\n            if (item.command) {\n                item.command(event);\n            }\n\n            if (this.overlayVisible) this.hide();\n\n            if (!this.popup && this.focusedOptionIndex !== event.id) {\n                this.focusedOptionIndex = event.id;\n            }\n        },\n        itemMouseMove(event) {\n            if (this.focused) {\n                this.focusedOptionIndex = event.id;\n            }\n        },\n        onListFocus(event) {\n            this.focused = true;\n            !this.popup && this.changeFocusedOptionIndex(0);\n\n            this.$emit('focus', event);\n        },\n        onListBlur(event) {\n            this.focused = false;\n            this.focusedOptionIndex = -1;\n            this.$emit('blur', event);\n        },\n        onListKeyDown(event) {\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onArrowUpKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Space':\n                    this.onSpaceKey(event);\n                    break;\n\n                case 'Escape':\n                    if (this.popup) {\n                        focus(this.target);\n                        this.hide();\n                    }\n\n                case 'Tab':\n                    this.overlayVisible && this.hide();\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            const optionIndex = this.findNextOptionIndex(this.focusedOptionIndex);\n\n            this.changeFocusedOptionIndex(optionIndex);\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            if (event.altKey && this.popup) {\n                focus(this.target);\n                this.hide();\n                event.preventDefault();\n            } else {\n                const optionIndex = this.findPrevOptionIndex(this.focusedOptionIndex);\n\n                this.changeFocusedOptionIndex(optionIndex);\n                event.preventDefault();\n            }\n        },\n        onHomeKey(event) {\n            this.changeFocusedOptionIndex(0);\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            this.changeFocusedOptionIndex(find(this.container, 'li[data-pc-section=\"item\"][data-p-disabled=\"false\"]').length - 1);\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            const element = findSingle(this.list, `li[id=\"${`${this.focusedOptionIndex}`}\"]`);\n            const anchorElement = element && findSingle(element, 'a[data-pc-section=\"itemlink\"]');\n\n            this.popup && focus(this.target);\n            anchorElement ? anchorElement.click() : element && element.click();\n\n            event.preventDefault();\n        },\n        onSpaceKey(event) {\n            this.onEnterKey(event);\n        },\n        findNextOptionIndex(index) {\n            const links = find(this.container, 'li[data-pc-section=\"item\"][data-p-disabled=\"false\"]');\n            const matchedOptionIndex = [...links].findIndex((link) => link.id === index);\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + 1 : 0;\n        },\n        findPrevOptionIndex(index) {\n            const links = find(this.container, 'li[data-pc-section=\"item\"][data-p-disabled=\"false\"]');\n            const matchedOptionIndex = [...links].findIndex((link) => link.id === index);\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex - 1 : 0;\n        },\n        changeFocusedOptionIndex(index) {\n            const links = find(this.container, 'li[data-pc-section=\"item\"][data-p-disabled=\"false\"]');\n            let order = index >= links.length ? links.length - 1 : index < 0 ? 0 : index;\n\n            order > -1 && (this.focusedOptionIndex = links[order].getAttribute('id'));\n        },\n        toggle(event) {\n            if (this.overlayVisible) this.hide();\n            else this.show(event);\n        },\n        show(event) {\n            this.overlayVisible = true;\n            this.target = event.currentTarget;\n        },\n        hide() {\n            this.overlayVisible = false;\n            this.target = null;\n        },\n        onEnter(el) {\n            addStyle(el, { position: 'absolute', top: '0', left: '0' });\n            this.alignOverlay();\n            this.bindOutsideClickListener();\n            this.bindResizeListener();\n            this.bindScrollListener();\n\n            if (this.autoZIndex) {\n                ZIndex.set('menu', el, this.baseZIndex + this.$primevue.config.zIndex.menu);\n            }\n\n            if (this.popup) {\n                focus(this.list);\n            }\n\n            this.$emit('show');\n        },\n        onLeave() {\n            this.unbindOutsideClickListener();\n            this.unbindResizeListener();\n            this.unbindScrollListener();\n            this.$emit('hide');\n        },\n        onAfterLeave(el) {\n            if (this.autoZIndex) {\n                ZIndex.clear(el);\n            }\n        },\n        alignOverlay() {\n            absolutePosition(this.container, this.target);\n            const targetWidth = getOuterWidth(this.target);\n\n            if (targetWidth > getOuterWidth(this.container)) {\n                this.container.style.minWidth = getOuterWidth(this.target) + 'px';\n            }\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    const isOutsideContainer = this.container && !this.container.contains(event.target);\n                    const isOutsideTarget = !(this.target && (this.target === event.target || this.target.contains(event.target)));\n\n                    if (this.overlayVisible && isOutsideContainer && isOutsideTarget) {\n                        this.hide();\n                    } else if (!this.popup && isOutsideContainer && isOutsideTarget) {\n                        this.focusedOptionIndex = -1;\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener);\n                this.outsideClickListener = null;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        visible(item) {\n            return typeof item.visible === 'function' ? item.visible() : item.visible !== false;\n        },\n        disabled(item) {\n            return typeof item.disabled === 'function' ? item.disabled() : item.disabled;\n        },\n        label(item) {\n            return typeof item.label === 'function' ? item.label() : item.label;\n        },\n        onOverlayClick(event) {\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.target\n            });\n        },\n        containerRef(el) {\n            this.container = el;\n        },\n        listRef(el) {\n            this.list = el;\n        }\n    },\n    computed: {\n        focusedOptionId() {\n            return this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : null;\n        }\n    },\n    components: {\n        PVMenuitem: Menuitem,\n        Portal: Portal\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","popup","type","Boolean","model","Array","appendTo","String","Object","autoZIndex","baseZIndex","Number","tabindex","ariaLabel","ariaLabelledby","style","MenuStyle","provide","$pcMenu","$parentInstance","hostName","inheritAttrs","emits","item","templates","id","focusedOptionId","index","methods","getItemProp","processedItem","resolve","undefined","getPTOptions","key","ptm","context","focused","isItemFocused","disabled","onItemClick","event","command","originalEvent","$emit","onItemMouseMove","visible","label","getMenuItemProps","action","mergeProps","cx","icon","directives","ripple","Ripple","$options","_openBlock","_createElementBlock","_mergeProps","$props","_ctx","role","_createElementVNode","onClick","_cache","$event","onMousemove","_withDirectives","href","url","target","itemicon","_createBlock","_resolveDynamicComponent","BaseMenu","data","$attrs","overlayVisible","focusedOptionIndex","selectedOptionIndex","watch","$attrsId","newValue","UniqueComponentId","outsideClickListener","scrollHandler","resizeListener","container","list","mounted","bindResizeListener","bindOutsideClickListener","beforeUnmount","unbindResizeListener","unbindOutsideClickListener","destroy","ZIndex","clear","itemClick","hide","itemMouseMove","onListFocus","changeFocusedOptionIndex","onListBlur","onListKeyDown","code","onArrowDownKey","onArrowUpKey","onHomeKey","onEndKey","onEnterKey","onSpaceKey","focus","optionIndex","findNextOptionIndex","preventDefault","altKey","findPrevOptionIndex","find","length","element","findSingle","concat","anchorElement","click","links","matchedOptionIndex","_toConsumableArray","findIndex","link","order","getAttribute","toggle","show","currentTarget","onEnter","el","addStyle","position","top","left","alignOverlay","bindScrollListener","set","$primevue","config","zIndex","menu","onLeave","unbindScrollListener","onAfterLeave","absolutePosition","targetWidth","getOuterWidth","minWidth","_this","isOutsideContainer","contains","isOutsideTarget","document","addEventListener","removeEventListener","_this2","ConnectedOverlayScrollHandler","_this3","isTouchDevice","window","onOverlayClick","OverlayEventBus","emit","containerRef","listRef","computed","components","PVMenuitem","Menuitem","Portal","_component_Portal","_createVNode","_Transition","$data","ref","apply","arguments","ptmi","$slots","start","_renderSlot","onFocus","onBlur","onKeydown","_Fragment","_renderList","i","toString","items","separator","submenulabel","_createTextVNode","_toDisplayString","child","j","_component_PVMenuitem","unstyled","onItemMousemove","pt","end"],"mappings":"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"}