{"version":3,"file":"primeng-commandmenu.mjs","sources":["../../src/commandmenu/style/commandmenustyle.ts","../../src/commandmenu/commandmenu.ts","../../src/commandmenu/primeng-commandmenu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/commandmenu';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n    root: 'p-commandmenu p-component',\n    header: 'p-commandmenu-header',\n    input: 'p-commandmenu-input',\n    list: 'p-commandmenu-list',\n    emptyMessage: 'p-commandmenu-empty-message',\n    footer: 'p-commandmenu-footer'\n};\n\n@Injectable()\nexport class CommandMenuStyle extends BaseStyle {\n    name = 'commandmenu';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * CommandMenu is a search-driven command palette component.\n *\n * [Live Demo](https://www.primeng.org/commandmenu/)\n *\n * @module commandmenustyle\n *\n */\nexport enum CommandMenuClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-commandmenu',\n    /**\n     * Class name of the header element\n     */\n    header = 'p-commandmenu-header',\n    /**\n     * Class name of the input element\n     */\n    input = 'p-commandmenu-input',\n    /**\n     * Class name of the empty message element\n     */\n    emptyMessage = 'p-commandmenu-empty-message',\n    /**\n     * Class name of the footer element\n     */\n    footer = 'p-commandmenu-footer'\n}\n\nexport interface CommandMenuStyleType extends BaseStyle {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, ElementRef, inject, input, model, NgModule, output, TemplateRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { findSingle, uuid } from '@primeuix/utils';\nimport { MenuItem, SharedModule } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { Menu, MenuModule } from 'primeng/menu';\nimport type {\n    CommandMenuPassThrough,\n    CommandMenuSearchChangeEvent,\n    CommandMenuItemSelectEvent,\n    CommandMenuItemTemplateContext,\n    CommandMenuHeaderTemplateContext,\n    CommandMenuFooterTemplateContext,\n    CommandMenuEmptyMessageTemplateContext\n} from 'primeng/types/commandmenu';\nimport { CommandMenuStyle } from './style/commandmenustyle';\n\n/**\n * CommandMenu is a search-driven command palette component.\n * @group Components\n */\n@Component({\n    selector: 'p-commandmenu, p-command-menu',\n    standalone: true,\n    imports: [NgTemplateOutlet, MenuModule, SharedModule, BindModule],\n    template: `\n        <div [class]=\"cx('header')\" [pBind]=\"ptm('header')\">\n            @if (headerTemplate()) {\n                <ng-container *ngTemplateOutlet=\"headerTemplate(); context: { $implicit: search() }\"></ng-container>\n            }\n            <input\n                #searchInput\n                type=\"text\"\n                role=\"combobox\"\n                [class]=\"cx('input')\"\n                [value]=\"search()\"\n                [placeholder]=\"placeholder()\"\n                [attr.aria-label]=\"ariaLabel()\"\n                [attr.aria-labelledby]=\"ariaLabelledBy()\"\n                [attr.aria-expanded]=\"true\"\n                [attr.aria-controls]=\"listId()\"\n                [attr.aria-activedescendant]=\"focusedOptionId()\"\n                autocomplete=\"off\"\n                autocorrect=\"off\"\n                spellcheck=\"false\"\n                (input)=\"onSearchInput($event)\"\n                (keydown)=\"onSearchKeyDown($event)\"\n                [pBind]=\"ptm('input')\"\n            />\n        </div>\n\n        <div [class]=\"cx('list')\" [pBind]=\"ptm('list')\">\n            @if (hasVisibleItems()) {\n                <p-menu #menu [model]=\"menuModel()\" [tabindex]=\"-1\" [style]=\"menuStyle()\" [styleClass]=\"menuStyleClass()\" [pt]=\"ptm('pcMenu')\" [unstyled]=\"unstyled()\">\n                    @if (itemTemplate()) {\n                        <ng-template #item let-item>\n                            <ng-container *ngTemplateOutlet=\"itemTemplate()!; context: { $implicit: item }\"></ng-container>\n                        </ng-template>\n                    }\n                </p-menu>\n            } @else {\n                <div [class]=\"cx('emptyMessage')\" [pBind]=\"ptm('emptyMessage')\">\n                    @if (emptyMessageTemplate()) {\n                        <ng-container *ngTemplateOutlet=\"emptyMessageTemplate(); context: { $implicit: search() }\"></ng-container>\n                    } @else {\n                        {{ emptyMessageText() }}\n                    }\n                </div>\n            }\n        </div>\n\n        @if (footerTemplate()) {\n            <div [class]=\"cx('footer')\" [pBind]=\"ptm('footer')\">\n                <ng-container *ngTemplateOutlet=\"footerTemplate(); context: { $implicit: search() }\"></ng-container>\n            </div>\n        }\n    `,\n    providers: [CommandMenuStyle, { provide: PARENT_INSTANCE, useExisting: CommandMenu }],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[attr.id]': '$id()',\n        '[class]': \"cx('root')\"\n    },\n    hostDirectives: [Bind]\n})\nexport class CommandMenu extends BaseComponent<CommandMenuPassThrough> {\n    componentName = 'CommandMenu';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    onAfterViewChecked() {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    /**\n     * An array of menu items to display.\n     * @group Props\n     */\n    model = input<MenuItem[]>();\n\n    /**\n     * Two-way bound search value.\n     * @group Props\n     */\n    search = model<string>('');\n\n    /**\n     * Custom filter function. Receives (item, search) and returns a number (0 = no match).\n     * @group Props\n     */\n    filter = input<(item: MenuItem, search: string) => number>();\n\n    /**\n     * Text to display when there are no results. Defaults to global value in i18n translation configuration.\n     * @group Props\n     */\n    emptyMessage = input<string>();\n\n    /**\n     * Placeholder text for the search input.\n     * @group Props\n     */\n    placeholder = input<string>();\n\n    /**\n     * Defines a string that labels the input for accessibility.\n     * @group Props\n     */\n    ariaLabel = input<string>();\n\n    /**\n     * Identifies the element that labels the input for accessibility.\n     * @group Props\n     */\n    ariaLabelledBy = input<string>();\n\n    /**\n     * Inline style of the menu.\n     * @group Props\n     */\n    menuStyle = input<{ [klass: string]: any }>();\n\n    /**\n     * Style class of the menu.\n     * @group Props\n     */\n    menuStyleClass = input<string>();\n\n    /**\n     * Callback to invoke when the search value changes.\n     * @param {CommandMenuSearchChangeEvent} event - Custom search change event.\n     * @group Emits\n     */\n    onSearchChange = output<CommandMenuSearchChangeEvent>();\n\n    /**\n     * Callback to invoke when a menu item is selected.\n     * @param {CommandMenuItemSelectEvent} event - Custom item select event.\n     * @group Emits\n     */\n    onSelect = output<CommandMenuItemSelectEvent>();\n\n    /**\n     * Custom item template.\n     * @param {CommandMenuItemTemplateContext} context - item context.\n     * @group Templates\n     */\n    itemTemplate = contentChild<TemplateRef<CommandMenuItemTemplateContext>>('item', { descendants: false });\n\n    /**\n     * Custom header template.\n     * @param {CommandMenuHeaderTemplateContext} context - header context.\n     * @group Templates\n     */\n    headerTemplate = contentChild<TemplateRef<CommandMenuHeaderTemplateContext>>('header', { descendants: false });\n\n    /**\n     * Custom footer template.\n     * @param {CommandMenuFooterTemplateContext} context - footer context.\n     * @group Templates\n     */\n    footerTemplate = contentChild<TemplateRef<CommandMenuFooterTemplateContext>>('footer', { descendants: false });\n\n    /**\n     * Custom empty message template.\n     * @param {CommandMenuEmptyMessageTemplateContext} context - empty message context.\n     * @group Templates\n     */\n    emptyMessageTemplate = contentChild<TemplateRef<CommandMenuEmptyMessageTemplateContext>>('emptyMessage', { descendants: false });\n\n    menuViewChild = viewChild<Menu>('menu');\n\n    searchInputViewChild = viewChild<ElementRef>('searchInput');\n\n    _componentStyle = inject(CommandMenuStyle);\n\n    private _internalId = uuid('pn_id_');\n\n    $id = computed(() => this._internalId);\n\n    listId = computed(() => `${this.$id()}_list`);\n\n    private translation = toSignal(this.config.translationObserver, { initialValue: this.config.translation });\n\n    emptyMessageText = computed(() => {\n        return this.emptyMessage() || this.translation()?.emptyMessage || '';\n    });\n\n    focusedOptionId = computed(() => {\n        const menu = this.menuViewChild();\n        if (menu && menu.focusedOptionIndex() !== -1) {\n            return menu.focusedOptionIndex();\n        }\n        return null;\n    });\n\n    /**\n     * Filtered model: applies score-based filter with sorting by relevance.\n     */\n    filteredModel = computed((): MenuItem[] => {\n        const searchVal = (this.search() ?? '').trim();\n        const items = this.model() || [];\n\n        if (!searchVal) return items;\n\n        const filterFn = this.filter() ?? this.defaultFilter;\n\n        return items\n            .map((item: MenuItem) => {\n                if (item.items?.length) {\n                    const scored = item.items\n                        .map((child: MenuItem) => ({\n                            item: child,\n                            score: filterFn(child, searchVal)\n                        }))\n                        .filter(({ score }) => score > 0)\n                        .sort((a, b) => b.score - a.score);\n\n                    if (scored.length === 0) return null;\n\n                    return {\n                        ...item,\n                        items: scored.map((s) => s.item)\n                    };\n                } else if (!item.separator) {\n                    const score = filterFn(item, searchVal);\n                    return score > 0 ? item : null;\n                }\n                return null;\n            })\n            .filter(Boolean) as MenuItem[];\n    });\n\n    menuModel = computed((): MenuItem[] => {\n        const wrap = (item: MenuItem): MenuItem => {\n            if (item.items?.length) {\n                return { ...item, items: item.items.map(wrap) };\n            }\n            if (item.separator) {\n                return item;\n            }\n            const original = item.command;\n            return {\n                ...item,\n                command: (event: any) => {\n                    original?.(event);\n                    this.onSelect.emit({ originalEvent: event?.originalEvent, item });\n                }\n            };\n        };\n\n        return this.filteredModel().map(wrap);\n    });\n\n    hasVisibleItems = computed(() => {\n        const model = this.filteredModel();\n        if (!model || model.length === 0) return false;\n        return model.some((item) => (item.items?.length ?? 0) > 0 || (!item.separator && item.visible !== false));\n    });\n\n    onSearchKeyDown(event: KeyboardEvent) {\n        const menu = this.menuViewChild();\n        if (menu) {\n            menu.onListKeyDown(event);\n\n            const focusedId = menu.focusedOptionIndex();\n            if (focusedId != null && focusedId !== -1) {\n                requestAnimationFrame(() => {\n                    const el = findSingle(menu.containerViewChild()?.nativeElement, `li[id=\"${focusedId}\"]`) as HTMLElement | null;\n                    el?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n                });\n            }\n        }\n    }\n\n    onSearchInput(event: Event) {\n        const value = (event.target as HTMLInputElement).value;\n        this.search.set(value);\n        this.onSearchChange.emit({ originalEvent: event, query: value });\n    }\n\n    defaultFilter(item: MenuItem, search: string): number {\n        const label = item.label ?? '';\n        const keywords = (item as any).keywords;\n        const extendValue = label + ' ' + (Array.isArray(keywords) ? keywords.join(' ') : '');\n\n        if (extendValue.toLowerCase().includes(search.toLowerCase())) return 1;\n\n        return 0;\n    }\n\n    focusInput() {\n        this.searchInputViewChild()?.nativeElement?.focus();\n    }\n}\n\n@NgModule({\n    imports: [CommandMenu, SharedModule],\n    exports: [CommandMenu, SharedModule]\n})\nexport class CommandMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}