primeng
Version:
PrimeNG is a premium UI library for Angular featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock,
1 lines • 25.7 kB
Source Map (JSON)
{"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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"}