@tailng-ui/primitives 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +12 -6
- package/src/lib/feedback/empty/tng-empty.d.ts +11 -0
- package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
- package/src/lib/feedback/empty/tng-empty.js +71 -66
- package/src/lib/feedback/empty/tng-empty.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts +5 -0
- package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.js +48 -54
- package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts +3 -0
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +34 -41
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts +3 -0
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js +29 -32
- package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
- package/src/lib/feedback/toast/tng-toast.d.ts +5 -0
- package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.js +49 -49
- package/src/lib/feedback/toast/tng-toast.js.map +1 -1
- package/src/lib/form/_shared/id/tng-unique-id.service.d.ts +3 -0
- package/src/lib/form/_shared/id/tng-unique-id.service.d.ts.map +1 -1
- package/src/lib/form/_shared/id/tng-unique-id.service.js +9 -7
- package/src/lib/form/_shared/id/tng-unique-id.service.js.map +1 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts +3 -0
- package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js +21 -20
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
- package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts +9 -0
- package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -1
- package/src/lib/form/_shared/select/tng-select.parts.shared.js +102 -98
- package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.d.ts +3 -0
- package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.js +39 -38
- package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts +6 -0
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +52 -46
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts +3 -0
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +21 -20
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts +9 -0
- package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js +105 -101
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.d.ts +5 -0
- package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.js +119 -155
- package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.d.ts +3 -0
- package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.js +94 -107
- package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
- package/src/lib/form/chips/tng-chips.d.ts +7 -0
- package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.js +104 -115
- package/src/lib/form/chips/tng-chips.js.map +1 -1
- package/src/lib/form/combobox/tng-combobox.d.ts +3 -0
- package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
- package/src/lib/form/combobox/tng-combobox.js +15 -14
- package/src/lib/form/combobox/tng-combobox.js.map +1 -1
- package/src/lib/form/input/tng-input.d.ts +9 -0
- package/src/lib/form/input/tng-input.d.ts.map +1 -1
- package/src/lib/form/input/tng-input.js +157 -141
- package/src/lib/form/input/tng-input.js.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.d.ts +3 -0
- package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.js +57 -70
- package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
- package/src/lib/form/label/tng-label.d.ts +3 -0
- package/src/lib/form/label/tng-label.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.js +23 -26
- package/src/lib/form/label/tng-label.js.map +1 -1
- package/src/lib/form/listbox/listbox.directive.d.ts +3 -0
- package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/listbox.directive.js +44 -43
- package/src/lib/form/listbox/listbox.directive.js.map +1 -1
- package/src/lib/form/listbox/option.directive.d.ts +3 -0
- package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/option.directive.js +39 -38
- package/src/lib/form/listbox/option.directive.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +22 -21
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +24 -23
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +34 -33
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts +6 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +55 -46
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +15 -14
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +51 -50
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.d.ts +3 -0
- package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.js +40 -36
- package/src/lib/form/multi-select/tng-multi-select.js.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts +6 -0
- package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.listbox.js +48 -45
- package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.d.ts +3 -0
- package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.js +15 -14
- package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
- package/src/lib/form/radio/tng-radio.d.ts +3 -0
- package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.js +90 -101
- package/src/lib/form/radio/tng-radio.js.map +1 -1
- package/src/lib/form/select/tng-select.d.ts +3 -0
- package/src/lib/form/select/tng-select.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.js +40 -36
- package/src/lib/form/select/tng-select.js.map +1 -1
- package/src/lib/form/select/tng-select.listbox.d.ts +6 -0
- package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.listbox.js +48 -45
- package/src/lib/form/select/tng-select.listbox.js.map +1 -1
- package/src/lib/form/slider/tng-slider.d.ts +3 -0
- package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
- package/src/lib/form/slider/tng-slider.js +41 -50
- package/src/lib/form/slider/tng-slider.js.map +1 -1
- package/src/lib/form/switch/tng-switch.d.ts +3 -0
- package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
- package/src/lib/form/switch/tng-switch.js +43 -48
- package/src/lib/form/switch/tng-switch.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.d.ts +4 -0
- package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.js +39 -41
- package/src/lib/form/textarea/tng-textarea.js.map +1 -1
- package/src/lib/form/toggle/tng-toggle.d.ts +3 -0
- package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
- package/src/lib/form/toggle/tng-toggle.js +70 -75
- package/src/lib/form/toggle/tng-toggle.js.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.d.ts +3 -0
- package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.js +47 -50
- package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.d.ts +9 -0
- package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.js +139 -155
- package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts +3 -0
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +15 -14
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
- package/src/lib/layout/card/tng-card.d.ts +21 -0
- package/src/lib/layout/card/tng-card.d.ts.map +1 -1
- package/src/lib/layout/card/tng-card.js +141 -131
- package/src/lib/layout/card/tng-card.js.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.d.ts +7 -0
- package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.js +79 -86
- package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.d.ts +13 -0
- package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.js +211 -226
- package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
- package/src/lib/layout/grid/tng-grid.d.ts +3 -0
- package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
- package/src/lib/layout/grid/tng-grid.js +15 -14
- package/src/lib/layout/grid/tng-grid.js.map +1 -1
- package/src/lib/layout/separator/tng-separator.d.ts +3 -0
- package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
- package/src/lib/layout/separator/tng-separator.js +29 -30
- package/src/lib/layout/separator/tng-separator.js.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.d.ts +3 -0
- package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.js +15 -14
- package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts +3 -0
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -1
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +54 -11
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.d.ts +3 -0
- package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.js +18 -17
- package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.d.ts +3 -0
- package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.js +21 -20
- package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.d.ts +3 -0
- package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.js +46 -53
- package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
- package/src/lib/layout/tree/tng-tree.d.ts +3 -0
- package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree.js +38 -43
- package/src/lib/layout/tree/tng-tree.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts +11 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +74 -69
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.d.ts +5 -0
- package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.js +42 -42
- package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts +3 -0
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +15 -14
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
- package/src/lib/navigation/menu/tng-menu.d.ts +13 -0
- package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
- package/src/lib/navigation/menu/tng-menu.js +178 -186
- package/src/lib/navigation/menu/tng-menu.js.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.d.ts +5 -0
- package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.js +70 -70
- package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts +3 -0
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +15 -14
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -0
- package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.js +228 -258
- package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts +3 -0
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js +15 -14
- package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.d.ts +19 -0
- package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.js +240 -255
- package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
- package/src/lib/overlay/popover/tng-popover.d.ts +9 -0
- package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.js +148 -170
- package/src/lib/overlay/popover/tng-popover.js.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts +7 -0
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.js +121 -130
- package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.d.ts +7 -0
- package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.js +43 -40
- package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.d.ts +3 -0
- package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.js +25 -40
- package/src/lib/utility/badge/tng-badge.js.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.d.ts +11 -0
- package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.js +71 -66
- package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
- package/src/lib/utility/copy/tng-copy.d.ts +3 -0
- package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
- package/src/lib/utility/copy/tng-copy.js +43 -52
- package/src/lib/utility/copy/tng-copy.js.map +1 -1
- package/src/lib/utility/press/tng-press.d.ts +3 -0
- package/src/lib/utility/press/tng-press.d.ts.map +1 -1
- package/src/lib/utility/press/tng-press.js +54 -61
- package/src/lib/utility/press/tng-press.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.d.ts +7 -0
- package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.js +91 -96
- package/src/lib/utility/tag/tng-tag.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menu.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menu/tng-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n NgZone,\n output,\n} from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\ntype MenuItemElement = HTMLElement;\ntype ReadonlyMenuItemElement = Readonly<MenuItemElement>;\ntype TngMenuFocusAction = 'first' | 'last' | 'next' | 'prev';\ntype TngMenuOpenFocusAction = 'first' | 'last' | 'none';\ntype TngMenuSelectTrigger = 'keyboard' | 'pointer';\ntype TngMenuItemRole = 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';\ntype TngMenuKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key' | 'shiftKey' | 'target'>> &\n Readonly<{ preventDefault: () => void }>;\ntype TngMenuPointerEvent = Readonly<Pick<PointerEvent, 'target'>>;\ntype TngMenubarArrowHandler = (key: 'ArrowRight' | 'ArrowLeft') => void;\ntype TngMenubarTabHandler = (shiftKey: boolean) => boolean;\n\nexport type TngMenuSelectEvent = Readonly<{\n value: unknown;\n itemId: string;\n trigger: TngMenuSelectTrigger;\n}>;\n\nfunction getNextIndex(currentIndex: number, total: number): number {\n if (currentIndex < 0) {\n return 0;\n }\n\n return currentIndex + 1 >= total ? 0 : currentIndex + 1;\n}\n\nfunction getPrevIndex(currentIndex: number, total: number): number {\n if (currentIndex < 0) {\n return total - 1;\n }\n\n return currentIndex - 1 < 0 ? total - 1 : currentIndex - 1;\n}\n\nfunction resolveMenuFocusAction(key: string): TngMenuFocusAction | null {\n switch (key) {\n case 'ArrowDown':\n return 'next';\n case 'ArrowUp':\n return 'prev';\n case 'Home':\n return 'first';\n case 'End':\n return 'last';\n default:\n return null;\n }\n}\n\nfunction resolveFocusIndex(\n action: TngMenuFocusAction,\n currentIndex: number,\n total: number,\n loop: boolean,\n): number {\n switch (action) {\n case 'next':\n if (!loop && currentIndex >= total - 1) {\n return total - 1;\n }\n return getNextIndex(currentIndex, total);\n case 'prev':\n if (!loop) {\n if (currentIndex < 0) {\n return 0;\n }\n if (currentIndex <= 0) {\n return 0;\n }\n }\n return getPrevIndex(currentIndex, total);\n case 'first':\n return 0;\n case 'last':\n return total - 1;\n }\n}\n\nconst createMenuId = createTngIdFactory('tng-menu');\nconst createMenuItemId = createTngIdFactory('tng-menu-item');\nconst createMenuTriggerId = createTngIdFactory('tng-menu-trigger');\nconst TYPEAHEAD_RESET_MS = 500;\n\n@Directive({\n selector: '[tngMenu]',\n exportAs: 'tngMenu',\n standalone: true,\n})\nexport class TngMenu {\n private static openRootMenu: TngMenu | null = null;\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuId();\n private readonly itemsById = new Map<string, TngMenuItem>();\n private outsidePointerdownCleanup: (() => void) | null = null;\n private typeaheadResetHandle: ReturnType<typeof setTimeout> | null = null;\n private menubarArrowHandler: TngMenubarArrowHandler | null = null;\n private menubarTabHandler: TngMenubarTabHandler | null = null;\n private restoreFocusOnOutsideClick = false;\n private triggerStateSync: (() => void) | null = null;\n private triggerElement: HTMLElement | null = null;\n private activeItemId: string | null = null;\n private parentMenu: TngMenu | null = null;\n private parentMenuItem: TngMenuItem | null = null;\n private openSubmenu: TngMenu | null = null;\n private openState = false;\n private typeaheadBuffer = '';\n\n readonly loop = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly closeOnSelect = input<boolean>(true);\n readonly dismissOnOutsideClick = input<boolean>(true);\n readonly dismissOnFocusout = input<boolean>(false);\n readonly tngMenuOpened = output<void>();\n readonly tngMenuClosed = output<void>();\n readonly tngMenuSelect = output<TngMenuSelectEvent>();\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menu' as const;\n\n @HostBinding('attr.id')\n readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n return this.hostRef.nativeElement.getAttribute('tabindex') ?? '-1';\n }\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.openState ? 'open' : 'closed';\n }\n\n @HostBinding('attr.hidden')\n protected get hidden(): '' | null {\n return this.openState ? null : '';\n }\n\n @HostBinding('attr.aria-activedescendant')\n protected get ariaActiveDescendant(): string | null {\n return this.activeItemId;\n }\n\n setTriggerElement(triggerElement: HTMLElement, triggerStateSync?: () => void): void {\n this.triggerElement = triggerElement;\n this.triggerStateSync = triggerStateSync ?? this.triggerStateSync;\n this.syncAriaLabelledby();\n }\n\n clearTriggerLink(triggerElement?: HTMLElement): void {\n if (triggerElement !== undefined && this.triggerElement !== triggerElement) {\n return;\n }\n\n this.triggerElement = null;\n this.triggerStateSync = null;\n this.menubarArrowHandler = null;\n this.menubarTabHandler = null;\n this.syncAriaLabelledby();\n }\n\n setRestoreFocusOnOutsideClick(restoreFocusOnOutsideClick: boolean): void {\n this.restoreFocusOnOutsideClick = restoreFocusOnOutsideClick;\n }\n\n setMenubarArrowHandler(menubarArrowHandler: TngMenubarArrowHandler | null): void {\n this.menubarArrowHandler = menubarArrowHandler;\n }\n\n setMenubarTabHandler(menubarTabHandler: TngMenubarTabHandler | null): void {\n this.menubarTabHandler = menubarTabHandler;\n }\n\n setParentMenu(parentMenu: TngMenu, parentMenuItem: TngMenuItem): void {\n this.parentMenu = parentMenu;\n this.parentMenuItem = parentMenuItem;\n }\n\n focusPanel(): void {\n this.hostRef.nativeElement.focus();\n }\n\n focusPanelAndMoveActiveItem(action: 'next' | 'prev'): void {\n if (!this.openState) {\n return;\n }\n\n this.moveActiveItem(action);\n this.hostRef.nativeElement.focus();\n this.changeDetectorRef.detectChanges();\n }\n\n isOpen(): boolean {\n return this.openState;\n }\n\n isDisabled(): boolean {\n return this.disabled();\n }\n\n isItemActive(itemId: string): boolean {\n return this.activeItemId === itemId;\n }\n\n registerItem(item: TngMenuItem): void {\n this.itemsById.set(item.getItemId(), item);\n }\n\n unregisterItem(item: TngMenuItem): void {\n const orderedItems = Array.from(this.itemsById.values());\n const itemIndex = orderedItems.findIndex((registeredItem) => registeredItem === item);\n\n if (this.itemsById.get(item.getItemId()) === item) {\n this.itemsById.delete(item.getItemId());\n }\n\n if (this.activeItemId === item.getItemId()) {\n this.activeItemId =\n itemIndex < 0\n ? this.resolveAdjacentEnabledItemId(item.getItemId())\n : this.resolveAdjacentEnabledItemIdFromRegisteredItems(orderedItems, itemIndex);\n }\n }\n\n onItemDisabledStateChange(item: TngMenuItem): void {\n if (!item.isDisabled() || this.activeItemId !== item.getItemId()) {\n return;\n }\n\n this.activeItemId = this.resolveAdjacentEnabledItemId(item.getItemId());\n }\n\n onItemNavigabilityStateChange(item: TngMenuItem): void {\n if (item.isNavigable() || this.activeItemId !== item.getItemId()) {\n return;\n }\n\n this.activeItemId = this.resolveAdjacentEnabledItemId(item.getItemId());\n }\n\n open(focusAction: TngMenuOpenFocusAction = 'none'): void {\n if (this.openState || this.disabled()) {\n return;\n }\n\n if (this.parentMenu === null) {\n if (TngMenu.openRootMenu !== null && TngMenu.openRootMenu !== this) {\n TngMenu.openRootMenu.close(false);\n }\n } else {\n this.parentMenu.openChildSubmenu(this);\n }\n\n this.openState = true;\n if (this.parentMenu === null) {\n TngMenu.openRootMenu = this;\n }\n\n if (focusAction === 'first') {\n this.moveActiveItem('next');\n } else if (focusAction === 'last') {\n this.moveActiveItem('prev');\n } else {\n this.activeItemId = null;\n }\n\n this.tngMenuOpened.emit();\n this.triggerStateSync?.();\n this.attachOutsidePointerdownListener();\n this.changeDetectorRef.detectChanges();\n this.hostRef.nativeElement.focus();\n }\n\n close(restoreFocus: boolean): void {\n if (!this.openState) {\n return;\n }\n\n if (this.openSubmenu !== null) {\n this.openSubmenu.close(false);\n this.openSubmenu = null;\n }\n\n this.openState = false;\n this.activeItemId = null;\n this.clearTypeaheadBuffer();\n this.detachOutsidePointerdownListener();\n this.triggerStateSync?.();\n\n if (this.parentMenu !== null) {\n this.parentMenu.notifySubmenuClosed(this);\n } else if (TngMenu.openRootMenu === this) {\n TngMenu.openRootMenu = null;\n }\n\n this.tngMenuClosed.emit();\n if (restoreFocus) {\n this.triggerElement?.focus();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n const wasOpen = this.openState;\n this.openState = false;\n this.activeItemId = null;\n this.clearTypeaheadBuffer();\n this.detachOutsidePointerdownListener();\n this.openSubmenu = null;\n\n if (wasOpen) {\n if (this.parentMenu !== null) {\n this.parentMenu.notifySubmenuClosed(this);\n } else if (TngMenu.openRootMenu === this) {\n TngMenu.openRootMenu = null;\n }\n this.triggerStateSync?.();\n }\n\n this.clearTriggerLink();\n }\n\n requestSelect(item: TngMenuItem, trigger: TngMenuSelectTrigger): void {\n if (!this.openState || !item.isNavigable()) {\n return;\n }\n\n item.applySelectionState();\n this.activeItemId = item.getItemId();\n this.tngMenuSelect.emit({\n value: item.getValue(),\n itemId: item.getItemId(),\n trigger,\n });\n\n if (this.closeOnSelect()) {\n this.closeSelfAndAncestorMenus(false);\n }\n }\n\n setActiveItem(item: TngMenuItem): void {\n if (!this.openState || !item.isNavigable()) {\n return;\n }\n\n this.activeItemId = item.getItemId();\n this.syncOpenSubmenuWithActiveItem();\n this.changeDetectorRef.detectChanges();\n }\n\n setSelectedRadioItem(selectedItem: TngMenuItem): void {\n for (const item of this.itemsById.values()) {\n if (item.getRole() !== 'menuitemradio') {\n continue;\n }\n\n item.setCheckedState(item === selectedItem);\n }\n }\n\n openChildSubmenu(submenu: TngMenu): void {\n if (this.openSubmenu !== null && this.openSubmenu !== submenu) {\n this.openSubmenu.close(false);\n }\n\n this.openSubmenu = submenu;\n }\n\n notifySubmenuClosed(submenu: TngMenu): void {\n if (this.openSubmenu === submenu) {\n this.openSubmenu = null;\n }\n }\n\n private closeSelfAndAncestorMenus(restoreFocusAtRoot: boolean): void {\n let menuToClose: TngMenu | null = this;\n\n while (menuToClose !== null) {\n const nextAncestorMenu: TngMenu | null = menuToClose.parentMenu;\n const shouldRestoreFocus = nextAncestorMenu === null && restoreFocusAtRoot;\n menuToClose.close(shouldRestoreFocus);\n menuToClose = nextAncestorMenu;\n }\n }\n\n private getEnabledMenuItems(): readonly ReadonlyMenuItemElement[] {\n const items = Array.from(this.hostRef.nativeElement.querySelectorAll<MenuItemElement>('[tngMenuItem]'));\n const enabledItems: ReadonlyMenuItemElement[] = [];\n\n for (const item of items) {\n if (this.isNavigableItemElement(item)) {\n enabledItems.push(item);\n }\n }\n\n return enabledItems;\n }\n\n private resolveAdjacentEnabledItemId(referenceItemId: string): string | null {\n const items = Array.from(this.hostRef.nativeElement.querySelectorAll<MenuItemElement>('[tngMenuItem]'));\n if (items.length === 0) {\n return null;\n }\n\n const referenceIndex = items.findIndex((item) => item.id === referenceItemId);\n if (referenceIndex < 0) {\n return this.getEnabledMenuItems()[0]?.id ?? null;\n }\n\n for (let index = referenceIndex + 1; index < items.length; index += 1) {\n const candidate = items[index];\n if (this.isNavigableItemElement(candidate)) {\n return candidate.id;\n }\n }\n\n for (let index = referenceIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (this.isNavigableItemElement(candidate)) {\n return candidate.id;\n }\n }\n\n return null;\n }\n\n private resolveAdjacentEnabledItemIdFromRegisteredItems(\n items: readonly TngMenuItem[],\n referenceIndex: number,\n ): string | null {\n for (let index = referenceIndex + 1; index < items.length; index += 1) {\n const candidate = items[index];\n if (candidate.isNavigable() && this.itemsById.get(candidate.getItemId()) === candidate) {\n return candidate.getItemId();\n }\n }\n\n for (let index = referenceIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (candidate.isNavigable() && this.itemsById.get(candidate.getItemId()) === candidate) {\n return candidate.getItemId();\n }\n }\n\n return null;\n }\n\n private isNavigableItemElement(item: MenuItemElement): boolean {\n const registeredItem = this.itemsById.get(item.id);\n return registeredItem !== undefined && registeredItem.isNavigable();\n }\n\n private onDocumentPointerdown(event: TngMenuPointerEvent): void {\n if (!this.openState || !this.dismissOnOutsideClick()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (this.isTargetInsideOpenMenuTree(target)) {\n return;\n }\n\n this.close(this.restoreFocusOnOutsideClick);\n }\n\n private isTargetInsideOpenMenuTree(target: Node): boolean {\n if (this.hostRef.nativeElement.contains(target)) {\n return true;\n }\n\n if (this.triggerElement?.contains(target) === true) {\n return true;\n }\n\n return this.openSubmenu?.isTargetInsideOpenMenuTree(target) ?? false;\n }\n\n @HostListener('focusout', ['$event'])\n protected onFocusout(event: FocusEvent): void {\n if (!this.openState || !this.dismissOnFocusout()) {\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n if (relatedTarget instanceof Node && this.hostRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n this.close(false);\n }\n\n private attachOutsidePointerdownListener(): void {\n this.detachOutsidePointerdownListener();\n\n if (!this.dismissOnOutsideClick()) {\n return;\n }\n\n const handler = (event: PointerEvent): void => {\n this.onDocumentPointerdown(event);\n };\n\n this.ngZone.runOutsideAngular(() => {\n document.addEventListener('pointerdown', handler);\n this.outsidePointerdownCleanup = () => {\n document.removeEventListener('pointerdown', handler);\n };\n });\n }\n\n private syncAriaLabelledby(): void {\n const triggerId = this.triggerElement?.id;\n\n if (triggerId === undefined || triggerId.length === 0) {\n this.hostRef.nativeElement.removeAttribute('aria-labelledby');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-labelledby', triggerId);\n }\n\n private detachOutsidePointerdownListener(): void {\n this.outsidePointerdownCleanup?.();\n this.outsidePointerdownCleanup = null;\n }\n\n private moveActiveItem(action: TngMenuFocusAction): void {\n const items = this.getEnabledMenuItems();\n if (items.length === 0) {\n this.activeItemId = null;\n return;\n }\n\n let currentIndex = -1;\n for (let index = 0; index < items.length; index += 1) {\n if (items[index].id === this.activeItemId) {\n currentIndex = index;\n break;\n }\n }\n\n const targetIndex = resolveFocusIndex(action, currentIndex, items.length, this.loop());\n this.activeItemId = items[targetIndex]?.id ?? null;\n this.syncOpenSubmenuWithActiveItem();\n }\n\n private syncOpenSubmenuWithActiveItem(): void {\n if (this.openSubmenu !== null && this.parentMenuItem?.getOwnedSubmenu() !== this.openSubmenu) {\n // no-op safeguard for submenu instances\n }\n\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (this.openSubmenu !== null && activeItem !== this.openSubmenu.parentMenuItem) {\n this.openSubmenu.close(false);\n }\n }\n\n private moveActiveItemByTypeahead(key: string): boolean {\n const items = this.getEnabledMenuItems();\n if (items.length === 0) {\n return false;\n }\n\n const normalizedKey = key.trim().toLowerCase();\n if (normalizedKey.length !== 1) {\n return false;\n }\n\n const repeatingSingleChar =\n this.typeaheadBuffer.length > 0 &&\n this.typeaheadBuffer.split('').every((char) => char === normalizedKey);\n\n let query = repeatingSingleChar ? normalizedKey : `${this.typeaheadBuffer}${normalizedKey}`;\n let match = this.findTypeaheadMatch(items, query, repeatingSingleChar);\n\n if (match === null && query !== normalizedKey) {\n query = normalizedKey;\n match = this.findTypeaheadMatch(items, query, true);\n }\n\n if (match === null) {\n return false;\n }\n\n this.activeItemId = match.id;\n this.resetTypeaheadBuffer(query);\n return true;\n }\n\n private findTypeaheadMatch(\n items: readonly ReadonlyMenuItemElement[],\n query: string,\n cycleFromActiveItem: boolean,\n ): ReadonlyMenuItemElement | null {\n const currentIndex = items.findIndex((item) => item.id === this.activeItemId);\n const startIndex = cycleFromActiveItem && currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\n for (let offset = 0; offset < items.length; offset += 1) {\n const index = (startIndex + offset) % items.length;\n const item = items[index];\n const label = item.textContent?.trim().toLowerCase() ?? '';\n\n if (label.startsWith(query)) {\n return item;\n }\n }\n\n return null;\n }\n\n private resetTypeaheadBuffer(nextBuffer: string): void {\n this.typeaheadBuffer = nextBuffer;\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n }\n\n this.typeaheadResetHandle = setTimeout(() => {\n this.typeaheadBuffer = '';\n this.typeaheadResetHandle = null;\n }, TYPEAHEAD_RESET_MS);\n }\n\n private clearTypeaheadBuffer(): void {\n this.typeaheadBuffer = '';\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n this.typeaheadResetHandle = null;\n }\n }\n\n private isEventFromNestedMenu(event: TngMenuKeyboardEvent): boolean {\n const target = event.target;\n if (!(target instanceof Element)) {\n return false;\n }\n\n const closestMenu = target.closest<HTMLElement>('[data-slot=\"menu\"]');\n return closestMenu !== null && closestMenu !== this.hostRef.nativeElement;\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuKeyboardEvent): void {\n if (this.isEventFromNestedMenu(event)) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n if (this.parentMenu !== null) {\n this.close(false);\n this.parentMenu.focusPanel();\n return;\n }\n this.close(true);\n return;\n }\n\n if (event.key === 'Tab') {\n if (this.parentMenu === null && this.menubarTabHandler !== null && this.menubarTabHandler(event.shiftKey)) {\n event.preventDefault();\n return;\n }\n\n this.close(false);\n return;\n }\n\n if (event.key === 'ArrowRight') {\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (activeItem !== null && activeItem.getOwnedSubmenu() !== null) {\n event.preventDefault();\n activeItem.openOwnedSubmenu('first');\n } else if (this.parentMenu === null && this.menubarArrowHandler !== null) {\n event.preventDefault();\n this.menubarArrowHandler('ArrowRight');\n }\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n if (this.parentMenu !== null) {\n event.preventDefault();\n this.close(false);\n this.parentMenu.focusPanel();\n } else if (this.menubarArrowHandler !== null) {\n event.preventDefault();\n this.menubarArrowHandler('ArrowLeft');\n }\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (activeItem !== null) {\n event.preventDefault();\n this.requestSelect(activeItem, 'keyboard');\n }\n return;\n }\n\n const action = resolveMenuFocusAction(event.key);\n if (action === null) {\n if (event.key.length === 1 && this.moveActiveItemByTypeahead(event.key)) {\n event.preventDefault();\n }\n return;\n }\n event.preventDefault();\n this.moveActiveItem(action);\n }\n}\n\n@Directive({\n selector: '[tngMenuItem]',\n exportAs: 'tngMenuItem',\n standalone: true,\n})\nexport class TngMenuItem {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly menu = inject(TngMenu, { optional: true, skipSelf: true });\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuItemId();\n private lastDisabledState = false;\n private lastNavigableState = true;\n private lastCheckedInput = false;\n private checkedOverride: boolean | null = null;\n\n readonly value = input<unknown>(undefined, {\n alias: 'tngMenuItemValue',\n });\n readonly itemRole = input<TngMenuItemRole>('menuitem', {\n alias: 'tngMenuItemRole',\n });\n readonly checked = input<boolean>(false, {\n alias: 'tngMenuItemChecked',\n });\n readonly submenu = input<TngMenu | null>(null, {\n alias: 'tngMenuItemSubmenu',\n });\n\n constructor() {\n this.lastDisabledState = this.isDisabled();\n this.lastNavigableState = this.isNavigable();\n this.menu?.registerItem(this);\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.lastCheckedInput = this.checked();\n this.syncOwnedSubmenuLink();\n this.syncSubmenuState();\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-item' as const;\n\n @HostBinding('attr.role')\n protected get role(): TngMenuItemRole {\n return this.itemRole();\n }\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected readonly tabIndex = -1;\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaChecked(): 'true' | 'false' | null {\n if (this.itemRole() === 'menuitem') {\n return null;\n }\n\n return this.isChecked() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-active')\n protected get dataActive(): '' | null {\n return this.menu?.isItemActive(this.id) ? '' : null;\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHaspopup(): 'menu' | null {\n return this.submenu() === null ? null : 'menu';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.submenu()?.id ?? null;\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n if (this.shouldIgnoreNestedInteractiveClick(event)) {\n return;\n }\n\n if (this.submenu() !== null) {\n this.menu?.setActiveItem(this);\n this.openOwnedSubmenu('first');\n return;\n }\n\n this.select('pointer');\n }\n\n ngOnDestroy(): void {\n this.menu?.unregisterItem(this);\n }\n\n ngDoCheck(): void {\n const currentDisabledState = this.isDisabled();\n if (currentDisabledState !== this.lastDisabledState) {\n this.lastDisabledState = currentDisabledState;\n this.menu?.onItemDisabledStateChange(this);\n }\n\n const currentNavigableState = this.isNavigable();\n if (currentNavigableState !== this.lastNavigableState) {\n this.lastNavigableState = currentNavigableState;\n this.menu?.onItemNavigabilityStateChange(this);\n }\n\n const currentCheckedInput = this.checked();\n if (currentCheckedInput !== this.lastCheckedInput) {\n this.lastCheckedInput = currentCheckedInput;\n this.checkedOverride = null;\n }\n }\n\n getItemId(): string {\n return this.id;\n }\n\n getValue(): unknown {\n return this.value();\n }\n\n getOwnedSubmenu(): TngMenu | null {\n return this.submenu();\n }\n\n getRole(): TngMenuItemRole {\n return this.itemRole();\n }\n\n isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled');\n }\n\n isNavigable(): boolean {\n return !this.isDisabled() && !this.isHiddenOrInert();\n }\n\n select(trigger: TngMenuSelectTrigger): void {\n this.menu?.requestSelect(this, trigger);\n }\n\n isChecked(): boolean {\n return this.checkedOverride ?? this.checked();\n }\n\n setCheckedState(checked: boolean): void {\n this.checkedOverride = checked;\n }\n\n applySelectionState(): void {\n if (this.itemRole() === 'menuitemcheckbox') {\n this.checkedOverride = !this.isChecked();\n return;\n }\n\n if (this.itemRole() === 'menuitemradio') {\n this.menu?.setSelectedRadioItem(this);\n }\n }\n\n openOwnedSubmenu(focusAction: TngMenuOpenFocusAction): void {\n const submenu = this.submenu();\n if (submenu === null) {\n return;\n }\n\n this.syncOwnedSubmenuLink();\n submenu.open(focusAction);\n }\n\n private syncOwnedSubmenuLink(): void {\n const submenu = this.submenu();\n if (submenu === null || this.menu === null) {\n return;\n }\n\n this.syncHostId();\n submenu.setTriggerElement(this.hostRef.nativeElement, () => this.syncSubmenuState());\n submenu.setRestoreFocusOnOutsideClick(false);\n submenu.setParentMenu(this.menu, this);\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n\n private syncSubmenuState(): void {\n const submenu = this.submenu();\n if (submenu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', submenu.isOpen() ? 'true' : 'false');\n }\n\n private shouldIgnoreNestedInteractiveClick(event: MouseEvent): boolean {\n const target = event.target;\n if (!(target instanceof Element)) {\n return false;\n }\n\n const host = this.hostRef.nativeElement;\n const interactiveTarget = target.closest(\n 'button, input, select, textarea, a[href], [role=\"button\"], [role=\"link\"], [role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]',\n );\n\n return interactiveTarget !== null && interactiveTarget !== host;\n }\n\n private isHiddenOrInert(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n inert?: boolean;\n };\n\n return element.hidden || Boolean(element.inert) || element.hasAttribute('hidden') || element.hasAttribute('inert');\n }\n}\n\n@Directive({\n selector: '[tngMenuSeparator]',\n exportAs: 'tngMenuSeparator',\n standalone: true,\n})\nexport class TngMenuSeparator {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-separator' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'separator' as const;\n}\n\n@Directive({\n selector: '[tngMenuGroupLabel]',\n exportAs: 'tngMenuGroupLabel',\n standalone: true,\n})\nexport class TngMenuGroupLabel {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-group-label' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'presentation' as const;\n}\n\n@Directive({\n selector: '[tngMenuBackdrop]',\n exportAs: 'tngMenuBackdrop',\n standalone: true,\n})\nexport class TngMenuBackdrop {\n readonly menu = input<TngMenu | null>(null, {\n alias: 'tngMenuBackdrop',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-backdrop' as const;\n\n @HostListener('click')\n protected onClick(): void {\n const menu = this.menu();\n if (menu?.isOpen()) {\n menu.close(false);\n }\n }\n}\n\n@Directive({\n selector: '[tngMenuTrigger]',\n exportAs: 'tngMenuTrigger',\n standalone: true,\n})\nexport class TngMenuTrigger {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuTriggerId();\n private linkedMenu: TngMenu | null = null;\n\n readonly menu = input<TngMenu | null>(null, {\n alias: 'tngMenuTrigger',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-trigger' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.aria-haspopup')\n protected readonly ariaHaspopup = 'menu' as const;\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.menu()?.id ?? null;\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.syncMenuLink();\n this.syncAriaExpanded();\n }\n\n ngDoCheck(): void {\n this.syncHostId();\n this.syncMenuLink();\n this.syncAriaExpanded();\n }\n\n ngOnDestroy(): void {\n if (this.linkedMenu === null) {\n return;\n }\n\n const linkedMenu = this.linkedMenu;\n linkedMenu.clearTriggerLink(this.hostRef.nativeElement);\n\n if (linkedMenu.isOpen()) {\n linkedMenu.close(false);\n }\n\n this.linkedMenu = null;\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const menu = this.syncMenuLink();\n if (menu === null || menu.isDisabled()) {\n return;\n }\n\n if (menu.isOpen()) {\n menu.close(true);\n return;\n }\n\n this.openMenu('none');\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuKeyboardEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n const menu = this.syncMenuLink();\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('none');\n return;\n case 'ArrowDown':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('first');\n return;\n case 'ArrowUp':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('last');\n return;\n case 'Escape':\n if (menu?.isOpen()) {\n event.preventDefault();\n menu.close(true);\n }\n return;\n default:\n return;\n }\n }\n\n private openMenu(focusAction: TngMenuOpenFocusAction): void {\n const menu = this.syncMenuLink();\n if (menu === null) {\n return;\n }\n\n menu.open(focusAction);\n }\n\n private syncAriaExpanded(): void {\n const menu = this.menu();\n if (menu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', menu.isOpen() ? 'true' : 'false');\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n\n private isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n }\n\n private syncMenuLink(): TngMenu | null {\n const menu = this.menu();\n if (menu === null) {\n this.linkedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n this.linkedMenu = null;\n return null;\n }\n\n if (this.linkedMenu === menu) {\n return menu;\n }\n\n this.linkedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n\n this.linkedMenu = menu;\n menu.setTriggerElement(this.hostRef.nativeElement, () => this.syncAriaExpanded());\n menu.setRestoreFocusOnOutsideClick(false);\n this.syncAriaExpanded();\n return menu;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-menu.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menu/tng-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n NgZone,\n output,\n} from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\ntype MenuItemElement = HTMLElement;\ntype ReadonlyMenuItemElement = Readonly<MenuItemElement>;\ntype TngMenuFocusAction = 'first' | 'last' | 'next' | 'prev';\ntype TngMenuOpenFocusAction = 'first' | 'last' | 'none';\ntype TngMenuSelectTrigger = 'keyboard' | 'pointer';\ntype TngMenuItemRole = 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';\ntype TngMenuKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key' | 'shiftKey' | 'target'>> &\n Readonly<{ preventDefault: () => void }>;\ntype TngMenuPointerEvent = Readonly<Pick<PointerEvent, 'target'>>;\ntype TngMenubarArrowHandler = (key: 'ArrowRight' | 'ArrowLeft') => void;\ntype TngMenubarTabHandler = (shiftKey: boolean) => boolean;\n\nexport type TngMenuSelectEvent = Readonly<{\n value: unknown;\n itemId: string;\n trigger: TngMenuSelectTrigger;\n}>;\n\nfunction getNextIndex(currentIndex: number, total: number): number {\n if (currentIndex < 0) {\n return 0;\n }\n\n return currentIndex + 1 >= total ? 0 : currentIndex + 1;\n}\n\nfunction getPrevIndex(currentIndex: number, total: number): number {\n if (currentIndex < 0) {\n return total - 1;\n }\n\n return currentIndex - 1 < 0 ? total - 1 : currentIndex - 1;\n}\n\nfunction resolveMenuFocusAction(key: string): TngMenuFocusAction | null {\n switch (key) {\n case 'ArrowDown':\n return 'next';\n case 'ArrowUp':\n return 'prev';\n case 'Home':\n return 'first';\n case 'End':\n return 'last';\n default:\n return null;\n }\n}\n\nfunction resolveFocusIndex(\n action: TngMenuFocusAction,\n currentIndex: number,\n total: number,\n loop: boolean,\n): number {\n switch (action) {\n case 'next':\n if (!loop && currentIndex >= total - 1) {\n return total - 1;\n }\n return getNextIndex(currentIndex, total);\n case 'prev':\n if (!loop) {\n if (currentIndex < 0) {\n return 0;\n }\n if (currentIndex <= 0) {\n return 0;\n }\n }\n return getPrevIndex(currentIndex, total);\n case 'first':\n return 0;\n case 'last':\n return total - 1;\n }\n}\n\nconst createMenuId = createTngIdFactory('tng-menu');\nconst createMenuItemId = createTngIdFactory('tng-menu-item');\nconst createMenuTriggerId = createTngIdFactory('tng-menu-trigger');\nconst TYPEAHEAD_RESET_MS = 500;\n\n@Directive({\n selector: '[tngMenu]',\n exportAs: 'tngMenu',\n})\nexport class TngMenu {\n private static openRootMenu: TngMenu | null = null;\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuId();\n private readonly itemsById = new Map<string, TngMenuItem>();\n private outsidePointerdownCleanup: (() => void) | null = null;\n private typeaheadResetHandle: ReturnType<typeof setTimeout> | null = null;\n private menubarArrowHandler: TngMenubarArrowHandler | null = null;\n private menubarTabHandler: TngMenubarTabHandler | null = null;\n private restoreFocusOnOutsideClick = false;\n private triggerStateSync: (() => void) | null = null;\n private triggerElement: HTMLElement | null = null;\n private activeItemId: string | null = null;\n private parentMenu: TngMenu | null = null;\n private parentMenuItem: TngMenuItem | null = null;\n private openSubmenu: TngMenu | null = null;\n private openState = false;\n private typeaheadBuffer = '';\n\n readonly loop = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly closeOnSelect = input<boolean>(true);\n readonly dismissOnOutsideClick = input<boolean>(true);\n readonly dismissOnFocusout = input<boolean>(false);\n readonly tngMenuOpened = output<void>();\n readonly tngMenuClosed = output<void>();\n readonly tngMenuSelect = output<TngMenuSelectEvent>();\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menu' as const;\n\n @HostBinding('attr.id')\n readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n return this.hostRef.nativeElement.getAttribute('tabindex') ?? '-1';\n }\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.openState ? 'open' : 'closed';\n }\n\n @HostBinding('attr.hidden')\n protected get hidden(): '' | null {\n return this.openState ? null : '';\n }\n\n @HostBinding('attr.aria-activedescendant')\n protected get ariaActiveDescendant(): string | null {\n return this.activeItemId;\n }\n\n setTriggerElement(triggerElement: HTMLElement, triggerStateSync?: () => void): void {\n this.triggerElement = triggerElement;\n this.triggerStateSync = triggerStateSync ?? this.triggerStateSync;\n this.syncAriaLabelledby();\n }\n\n clearTriggerLink(triggerElement?: HTMLElement): void {\n if (triggerElement !== undefined && this.triggerElement !== triggerElement) {\n return;\n }\n\n this.triggerElement = null;\n this.triggerStateSync = null;\n this.menubarArrowHandler = null;\n this.menubarTabHandler = null;\n this.syncAriaLabelledby();\n }\n\n setRestoreFocusOnOutsideClick(restoreFocusOnOutsideClick: boolean): void {\n this.restoreFocusOnOutsideClick = restoreFocusOnOutsideClick;\n }\n\n setMenubarArrowHandler(menubarArrowHandler: TngMenubarArrowHandler | null): void {\n this.menubarArrowHandler = menubarArrowHandler;\n }\n\n setMenubarTabHandler(menubarTabHandler: TngMenubarTabHandler | null): void {\n this.menubarTabHandler = menubarTabHandler;\n }\n\n setParentMenu(parentMenu: TngMenu, parentMenuItem: TngMenuItem): void {\n this.parentMenu = parentMenu;\n this.parentMenuItem = parentMenuItem;\n }\n\n focusPanel(): void {\n this.hostRef.nativeElement.focus();\n }\n\n focusPanelAndMoveActiveItem(action: 'next' | 'prev'): void {\n if (!this.openState) {\n return;\n }\n\n this.moveActiveItem(action);\n this.hostRef.nativeElement.focus();\n this.changeDetectorRef.detectChanges();\n }\n\n isOpen(): boolean {\n return this.openState;\n }\n\n isDisabled(): boolean {\n return this.disabled();\n }\n\n isItemActive(itemId: string): boolean {\n return this.activeItemId === itemId;\n }\n\n registerItem(item: TngMenuItem): void {\n this.itemsById.set(item.getItemId(), item);\n }\n\n unregisterItem(item: TngMenuItem): void {\n const orderedItems = Array.from(this.itemsById.values());\n const itemIndex = orderedItems.findIndex((registeredItem) => registeredItem === item);\n\n if (this.itemsById.get(item.getItemId()) === item) {\n this.itemsById.delete(item.getItemId());\n }\n\n if (this.activeItemId === item.getItemId()) {\n this.activeItemId =\n itemIndex < 0\n ? this.resolveAdjacentEnabledItemId(item.getItemId())\n : this.resolveAdjacentEnabledItemIdFromRegisteredItems(orderedItems, itemIndex);\n }\n }\n\n onItemDisabledStateChange(item: TngMenuItem): void {\n if (!item.isDisabled() || this.activeItemId !== item.getItemId()) {\n return;\n }\n\n this.activeItemId = this.resolveAdjacentEnabledItemId(item.getItemId());\n }\n\n onItemNavigabilityStateChange(item: TngMenuItem): void {\n if (item.isNavigable() || this.activeItemId !== item.getItemId()) {\n return;\n }\n\n this.activeItemId = this.resolveAdjacentEnabledItemId(item.getItemId());\n }\n\n open(focusAction: TngMenuOpenFocusAction = 'none'): void {\n if (this.openState || this.disabled()) {\n return;\n }\n\n if (this.parentMenu === null) {\n if (TngMenu.openRootMenu !== null && TngMenu.openRootMenu !== this) {\n TngMenu.openRootMenu.close(false);\n }\n } else {\n this.parentMenu.openChildSubmenu(this);\n }\n\n this.openState = true;\n if (this.parentMenu === null) {\n TngMenu.openRootMenu = this;\n }\n\n if (focusAction === 'first') {\n this.moveActiveItem('next');\n } else if (focusAction === 'last') {\n this.moveActiveItem('prev');\n } else {\n this.activeItemId = null;\n }\n\n this.tngMenuOpened.emit();\n this.triggerStateSync?.();\n this.attachOutsidePointerdownListener();\n this.changeDetectorRef.detectChanges();\n this.hostRef.nativeElement.focus();\n }\n\n close(restoreFocus: boolean): void {\n if (!this.openState) {\n return;\n }\n\n if (this.openSubmenu !== null) {\n this.openSubmenu.close(false);\n this.openSubmenu = null;\n }\n\n this.openState = false;\n this.activeItemId = null;\n this.clearTypeaheadBuffer();\n this.detachOutsidePointerdownListener();\n this.triggerStateSync?.();\n\n if (this.parentMenu !== null) {\n this.parentMenu.notifySubmenuClosed(this);\n } else if (TngMenu.openRootMenu === this) {\n TngMenu.openRootMenu = null;\n }\n\n this.tngMenuClosed.emit();\n if (restoreFocus) {\n this.triggerElement?.focus();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n const wasOpen = this.openState;\n this.openState = false;\n this.activeItemId = null;\n this.clearTypeaheadBuffer();\n this.detachOutsidePointerdownListener();\n this.openSubmenu = null;\n\n if (wasOpen) {\n if (this.parentMenu !== null) {\n this.parentMenu.notifySubmenuClosed(this);\n } else if (TngMenu.openRootMenu === this) {\n TngMenu.openRootMenu = null;\n }\n this.triggerStateSync?.();\n }\n\n this.clearTriggerLink();\n }\n\n requestSelect(item: TngMenuItem, trigger: TngMenuSelectTrigger): void {\n if (!this.openState || !item.isNavigable()) {\n return;\n }\n\n item.applySelectionState();\n this.activeItemId = item.getItemId();\n this.tngMenuSelect.emit({\n value: item.getValue(),\n itemId: item.getItemId(),\n trigger,\n });\n\n if (this.closeOnSelect()) {\n this.closeSelfAndAncestorMenus(false);\n }\n }\n\n setActiveItem(item: TngMenuItem): void {\n if (!this.openState || !item.isNavigable()) {\n return;\n }\n\n this.activeItemId = item.getItemId();\n this.syncOpenSubmenuWithActiveItem();\n this.changeDetectorRef.detectChanges();\n }\n\n setSelectedRadioItem(selectedItem: TngMenuItem): void {\n for (const item of this.itemsById.values()) {\n if (item.getRole() !== 'menuitemradio') {\n continue;\n }\n\n item.setCheckedState(item === selectedItem);\n }\n }\n\n openChildSubmenu(submenu: TngMenu): void {\n if (this.openSubmenu !== null && this.openSubmenu !== submenu) {\n this.openSubmenu.close(false);\n }\n\n this.openSubmenu = submenu;\n }\n\n notifySubmenuClosed(submenu: TngMenu): void {\n if (this.openSubmenu === submenu) {\n this.openSubmenu = null;\n }\n }\n\n private closeSelfAndAncestorMenus(restoreFocusAtRoot: boolean): void {\n let menuToClose: TngMenu | null = this;\n\n while (menuToClose !== null) {\n const nextAncestorMenu: TngMenu | null = menuToClose.parentMenu;\n const shouldRestoreFocus = nextAncestorMenu === null && restoreFocusAtRoot;\n menuToClose.close(shouldRestoreFocus);\n menuToClose = nextAncestorMenu;\n }\n }\n\n private getEnabledMenuItems(): readonly ReadonlyMenuItemElement[] {\n const items = Array.from(this.hostRef.nativeElement.querySelectorAll<MenuItemElement>('[tngMenuItem]'));\n const enabledItems: ReadonlyMenuItemElement[] = [];\n\n for (const item of items) {\n if (this.isNavigableItemElement(item)) {\n enabledItems.push(item);\n }\n }\n\n return enabledItems;\n }\n\n private resolveAdjacentEnabledItemId(referenceItemId: string): string | null {\n const items = Array.from(this.hostRef.nativeElement.querySelectorAll<MenuItemElement>('[tngMenuItem]'));\n if (items.length === 0) {\n return null;\n }\n\n const referenceIndex = items.findIndex((item) => item.id === referenceItemId);\n if (referenceIndex < 0) {\n return this.getEnabledMenuItems()[0]?.id ?? null;\n }\n\n for (let index = referenceIndex + 1; index < items.length; index += 1) {\n const candidate = items[index];\n if (this.isNavigableItemElement(candidate)) {\n return candidate.id;\n }\n }\n\n for (let index = referenceIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (this.isNavigableItemElement(candidate)) {\n return candidate.id;\n }\n }\n\n return null;\n }\n\n private resolveAdjacentEnabledItemIdFromRegisteredItems(\n items: readonly TngMenuItem[],\n referenceIndex: number,\n ): string | null {\n for (let index = referenceIndex + 1; index < items.length; index += 1) {\n const candidate = items[index];\n if (candidate.isNavigable() && this.itemsById.get(candidate.getItemId()) === candidate) {\n return candidate.getItemId();\n }\n }\n\n for (let index = referenceIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (candidate.isNavigable() && this.itemsById.get(candidate.getItemId()) === candidate) {\n return candidate.getItemId();\n }\n }\n\n return null;\n }\n\n private isNavigableItemElement(item: MenuItemElement): boolean {\n const registeredItem = this.itemsById.get(item.id);\n return registeredItem !== undefined && registeredItem.isNavigable();\n }\n\n private onDocumentPointerdown(event: TngMenuPointerEvent): void {\n if (!this.openState || !this.dismissOnOutsideClick()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (this.isTargetInsideOpenMenuTree(target)) {\n return;\n }\n\n this.close(this.restoreFocusOnOutsideClick);\n }\n\n private isTargetInsideOpenMenuTree(target: Node): boolean {\n if (this.hostRef.nativeElement.contains(target)) {\n return true;\n }\n\n if (this.triggerElement?.contains(target) === true) {\n return true;\n }\n\n return this.openSubmenu?.isTargetInsideOpenMenuTree(target) ?? false;\n }\n\n @HostListener('focusout', ['$event'])\n protected onFocusout(event: FocusEvent): void {\n if (!this.openState || !this.dismissOnFocusout()) {\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n if (relatedTarget instanceof Node && this.hostRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n this.close(false);\n }\n\n private attachOutsidePointerdownListener(): void {\n this.detachOutsidePointerdownListener();\n\n if (!this.dismissOnOutsideClick()) {\n return;\n }\n\n const handler = (event: PointerEvent): void => {\n this.onDocumentPointerdown(event);\n };\n\n this.ngZone.runOutsideAngular(() => {\n document.addEventListener('pointerdown', handler);\n this.outsidePointerdownCleanup = () => {\n document.removeEventListener('pointerdown', handler);\n };\n });\n }\n\n private syncAriaLabelledby(): void {\n const triggerId = this.triggerElement?.id;\n\n if (triggerId === undefined || triggerId.length === 0) {\n this.hostRef.nativeElement.removeAttribute('aria-labelledby');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-labelledby', triggerId);\n }\n\n private detachOutsidePointerdownListener(): void {\n this.outsidePointerdownCleanup?.();\n this.outsidePointerdownCleanup = null;\n }\n\n private moveActiveItem(action: TngMenuFocusAction): void {\n const items = this.getEnabledMenuItems();\n if (items.length === 0) {\n this.activeItemId = null;\n return;\n }\n\n let currentIndex = -1;\n for (let index = 0; index < items.length; index += 1) {\n if (items[index].id === this.activeItemId) {\n currentIndex = index;\n break;\n }\n }\n\n const targetIndex = resolveFocusIndex(action, currentIndex, items.length, this.loop());\n this.activeItemId = items[targetIndex]?.id ?? null;\n this.syncOpenSubmenuWithActiveItem();\n }\n\n private syncOpenSubmenuWithActiveItem(): void {\n if (this.openSubmenu !== null && this.parentMenuItem?.getOwnedSubmenu() !== this.openSubmenu) {\n // no-op safeguard for submenu instances\n }\n\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (this.openSubmenu !== null && activeItem !== this.openSubmenu.parentMenuItem) {\n this.openSubmenu.close(false);\n }\n }\n\n private moveActiveItemByTypeahead(key: string): boolean {\n const items = this.getEnabledMenuItems();\n if (items.length === 0) {\n return false;\n }\n\n const normalizedKey = key.trim().toLowerCase();\n if (normalizedKey.length !== 1) {\n return false;\n }\n\n const repeatingSingleChar =\n this.typeaheadBuffer.length > 0 &&\n this.typeaheadBuffer.split('').every((char) => char === normalizedKey);\n\n let query = repeatingSingleChar ? normalizedKey : `${this.typeaheadBuffer}${normalizedKey}`;\n let match = this.findTypeaheadMatch(items, query, repeatingSingleChar);\n\n if (match === null && query !== normalizedKey) {\n query = normalizedKey;\n match = this.findTypeaheadMatch(items, query, true);\n }\n\n if (match === null) {\n return false;\n }\n\n this.activeItemId = match.id;\n this.resetTypeaheadBuffer(query);\n return true;\n }\n\n private findTypeaheadMatch(\n items: readonly ReadonlyMenuItemElement[],\n query: string,\n cycleFromActiveItem: boolean,\n ): ReadonlyMenuItemElement | null {\n const currentIndex = items.findIndex((item) => item.id === this.activeItemId);\n const startIndex = cycleFromActiveItem && currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\n for (let offset = 0; offset < items.length; offset += 1) {\n const index = (startIndex + offset) % items.length;\n const item = items[index];\n const label = item.textContent?.trim().toLowerCase() ?? '';\n\n if (label.startsWith(query)) {\n return item;\n }\n }\n\n return null;\n }\n\n private resetTypeaheadBuffer(nextBuffer: string): void {\n this.typeaheadBuffer = nextBuffer;\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n }\n\n this.typeaheadResetHandle = setTimeout(() => {\n this.typeaheadBuffer = '';\n this.typeaheadResetHandle = null;\n }, TYPEAHEAD_RESET_MS);\n }\n\n private clearTypeaheadBuffer(): void {\n this.typeaheadBuffer = '';\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n this.typeaheadResetHandle = null;\n }\n }\n\n private isEventFromNestedMenu(event: TngMenuKeyboardEvent): boolean {\n const target = event.target;\n if (!(target instanceof Element)) {\n return false;\n }\n\n const closestMenu = target.closest<HTMLElement>('[data-slot=\"menu\"]');\n return closestMenu !== null && closestMenu !== this.hostRef.nativeElement;\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuKeyboardEvent): void {\n if (this.isEventFromNestedMenu(event)) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n if (this.parentMenu !== null) {\n this.close(false);\n this.parentMenu.focusPanel();\n return;\n }\n this.close(true);\n return;\n }\n\n if (event.key === 'Tab') {\n if (this.parentMenu === null && this.menubarTabHandler !== null && this.menubarTabHandler(event.shiftKey)) {\n event.preventDefault();\n return;\n }\n\n this.close(false);\n return;\n }\n\n if (event.key === 'ArrowRight') {\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (activeItem !== null && activeItem.getOwnedSubmenu() !== null) {\n event.preventDefault();\n activeItem.openOwnedSubmenu('first');\n } else if (this.parentMenu === null && this.menubarArrowHandler !== null) {\n event.preventDefault();\n this.menubarArrowHandler('ArrowRight');\n }\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n if (this.parentMenu !== null) {\n event.preventDefault();\n this.close(false);\n this.parentMenu.focusPanel();\n } else if (this.menubarArrowHandler !== null) {\n event.preventDefault();\n this.menubarArrowHandler('ArrowLeft');\n }\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (activeItem !== null) {\n event.preventDefault();\n this.requestSelect(activeItem, 'keyboard');\n }\n return;\n }\n\n const action = resolveMenuFocusAction(event.key);\n if (action === null) {\n if (event.key.length === 1 && this.moveActiveItemByTypeahead(event.key)) {\n event.preventDefault();\n }\n return;\n }\n event.preventDefault();\n this.moveActiveItem(action);\n }\n}\n\n@Directive({\n selector: '[tngMenuItem]',\n exportAs: 'tngMenuItem',\n})\nexport class TngMenuItem {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly menu = inject(TngMenu, { optional: true, skipSelf: true });\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuItemId();\n private lastDisabledState = false;\n private lastNavigableState = true;\n private lastCheckedInput = false;\n private checkedOverride: boolean | null = null;\n\n readonly value = input<unknown>(undefined, {\n alias: 'tngMenuItemValue',\n });\n readonly itemRole = input<TngMenuItemRole>('menuitem', {\n alias: 'tngMenuItemRole',\n });\n readonly checked = input<boolean>(false, {\n alias: 'tngMenuItemChecked',\n });\n readonly submenu = input<TngMenu | null>(null, {\n alias: 'tngMenuItemSubmenu',\n });\n\n constructor() {\n this.lastDisabledState = this.isDisabled();\n this.lastNavigableState = this.isNavigable();\n this.menu?.registerItem(this);\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.lastCheckedInput = this.checked();\n this.syncOwnedSubmenuLink();\n this.syncSubmenuState();\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-item' as const;\n\n @HostBinding('attr.role')\n protected get role(): TngMenuItemRole {\n return this.itemRole();\n }\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected readonly tabIndex = -1;\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaChecked(): 'true' | 'false' | null {\n if (this.itemRole() === 'menuitem') {\n return null;\n }\n\n return this.isChecked() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-active')\n protected get dataActive(): '' | null {\n return this.menu?.isItemActive(this.id) ? '' : null;\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHaspopup(): 'menu' | null {\n return this.submenu() === null ? null : 'menu';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.submenu()?.id ?? null;\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n if (this.shouldIgnoreNestedInteractiveClick(event)) {\n return;\n }\n\n if (this.submenu() !== null) {\n this.menu?.setActiveItem(this);\n this.openOwnedSubmenu('first');\n return;\n }\n\n this.select('pointer');\n }\n\n ngOnDestroy(): void {\n this.menu?.unregisterItem(this);\n }\n\n ngDoCheck(): void {\n const currentDisabledState = this.isDisabled();\n if (currentDisabledState !== this.lastDisabledState) {\n this.lastDisabledState = currentDisabledState;\n this.menu?.onItemDisabledStateChange(this);\n }\n\n const currentNavigableState = this.isNavigable();\n if (currentNavigableState !== this.lastNavigableState) {\n this.lastNavigableState = currentNavigableState;\n this.menu?.onItemNavigabilityStateChange(this);\n }\n\n const currentCheckedInput = this.checked();\n if (currentCheckedInput !== this.lastCheckedInput) {\n this.lastCheckedInput = currentCheckedInput;\n this.checkedOverride = null;\n }\n }\n\n getItemId(): string {\n return this.id;\n }\n\n getValue(): unknown {\n return this.value();\n }\n\n getOwnedSubmenu(): TngMenu | null {\n return this.submenu();\n }\n\n getRole(): TngMenuItemRole {\n return this.itemRole();\n }\n\n isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled');\n }\n\n isNavigable(): boolean {\n return !this.isDisabled() && !this.isHiddenOrInert();\n }\n\n select(trigger: TngMenuSelectTrigger): void {\n this.menu?.requestSelect(this, trigger);\n }\n\n isChecked(): boolean {\n return this.checkedOverride ?? this.checked();\n }\n\n setCheckedState(checked: boolean): void {\n this.checkedOverride = checked;\n }\n\n applySelectionState(): void {\n if (this.itemRole() === 'menuitemcheckbox') {\n this.checkedOverride = !this.isChecked();\n return;\n }\n\n if (this.itemRole() === 'menuitemradio') {\n this.menu?.setSelectedRadioItem(this);\n }\n }\n\n openOwnedSubmenu(focusAction: TngMenuOpenFocusAction): void {\n const submenu = this.submenu();\n if (submenu === null) {\n return;\n }\n\n this.syncOwnedSubmenuLink();\n submenu.open(focusAction);\n }\n\n private syncOwnedSubmenuLink(): void {\n const submenu = this.submenu();\n if (submenu === null || this.menu === null) {\n return;\n }\n\n this.syncHostId();\n submenu.setTriggerElement(this.hostRef.nativeElement, () => this.syncSubmenuState());\n submenu.setRestoreFocusOnOutsideClick(false);\n submenu.setParentMenu(this.menu, this);\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n\n private syncSubmenuState(): void {\n const submenu = this.submenu();\n if (submenu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', submenu.isOpen() ? 'true' : 'false');\n }\n\n private shouldIgnoreNestedInteractiveClick(event: MouseEvent): boolean {\n const target = event.target;\n if (!(target instanceof Element)) {\n return false;\n }\n\n const host = this.hostRef.nativeElement;\n const interactiveTarget = target.closest(\n 'button, input, select, textarea, a[href], [role=\"button\"], [role=\"link\"], [role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]',\n );\n\n return interactiveTarget !== null && interactiveTarget !== host;\n }\n\n private isHiddenOrInert(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n inert?: boolean;\n };\n\n return element.hidden || Boolean(element.inert) || element.hasAttribute('hidden') || element.hasAttribute('inert');\n }\n}\n\n@Directive({\n selector: '[tngMenuSeparator]',\n exportAs: 'tngMenuSeparator',\n})\nexport class TngMenuSeparator {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-separator' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'separator' as const;\n}\n\n@Directive({\n selector: '[tngMenuGroupLabel]',\n exportAs: 'tngMenuGroupLabel',\n})\nexport class TngMenuGroupLabel {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-group-label' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'presentation' as const;\n}\n\n@Directive({\n selector: '[tngMenuBackdrop]',\n exportAs: 'tngMenuBackdrop',\n})\nexport class TngMenuBackdrop {\n readonly menu = input<TngMenu | null>(null, {\n alias: 'tngMenuBackdrop',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-backdrop' as const;\n\n @HostListener('click')\n protected onClick(): void {\n const menu = this.menu();\n if (menu?.isOpen()) {\n menu.close(false);\n }\n }\n}\n\n@Directive({\n selector: '[tngMenuTrigger]',\n exportAs: 'tngMenuTrigger',\n})\nexport class TngMenuTrigger {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuTriggerId();\n private linkedMenu: TngMenu | null = null;\n\n readonly menu = input<TngMenu | null>(null, {\n alias: 'tngMenuTrigger',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-trigger' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.aria-haspopup')\n protected readonly ariaHaspopup = 'menu' as const;\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.menu()?.id ?? null;\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.syncMenuLink();\n this.syncAriaExpanded();\n }\n\n ngDoCheck(): void {\n this.syncHostId();\n this.syncMenuLink();\n this.syncAriaExpanded();\n }\n\n ngOnDestroy(): void {\n if (this.linkedMenu === null) {\n return;\n }\n\n const linkedMenu = this.linkedMenu;\n linkedMenu.clearTriggerLink(this.hostRef.nativeElement);\n\n if (linkedMenu.isOpen()) {\n linkedMenu.close(false);\n }\n\n this.linkedMenu = null;\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const menu = this.syncMenuLink();\n if (menu === null || menu.isDisabled()) {\n return;\n }\n\n if (menu.isOpen()) {\n menu.close(true);\n return;\n }\n\n this.openMenu('none');\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuKeyboardEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n const menu = this.syncMenuLink();\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('none');\n return;\n case 'ArrowDown':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('first');\n return;\n case 'ArrowUp':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('last');\n return;\n case 'Escape':\n if (menu?.isOpen()) {\n event.preventDefault();\n menu.close(true);\n }\n return;\n default:\n return;\n }\n }\n\n private openMenu(focusAction: TngMenuOpenFocusAction): void {\n const menu = this.syncMenuLink();\n if (menu === null) {\n return;\n }\n\n menu.open(focusAction);\n }\n\n private syncAriaExpanded(): void {\n const menu = this.menu();\n if (menu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', menu.isOpen() ? 'true' : 'false');\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n\n private isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n }\n\n private syncMenuLink(): TngMenu | null {\n const menu = this.menu();\n if (menu === null) {\n this.linkedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n this.linkedMenu = null;\n return null;\n }\n\n if (this.linkedMenu === menu) {\n return menu;\n }\n\n this.linkedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n\n this.linkedMenu = menu;\n menu.setTriggerElement(this.hostRef.nativeElement, () => this.syncAriaExpanded());\n menu.setRestoreFocusOnOutsideClick(false);\n this.syncAriaExpanded();\n return menu;\n }\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TngMenu } from '../menu/tng-menu';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
2
3
|
type MenubarItemElement = HTMLElement;
|
|
3
4
|
export declare class TngMenubar {
|
|
4
5
|
private readonly hostRef;
|
|
@@ -24,6 +25,8 @@ export declare class TngMenubar {
|
|
|
24
25
|
ngOnDestroy(): void;
|
|
25
26
|
private findMatchingItem;
|
|
26
27
|
private resetTypeaheadBuffer;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngMenubar, never>;
|
|
29
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngMenubar, "[tngMenubar]", ["tngMenubar"], { "loop": { "alias": "loop"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
27
30
|
}
|
|
28
31
|
export declare class TngMenubarItem {
|
|
29
32
|
private readonly hostRef;
|
|
@@ -59,6 +62,8 @@ export declare class TngMenubarItem {
|
|
|
59
62
|
private syncMenuState;
|
|
60
63
|
private handleTabFromOpenMenu;
|
|
61
64
|
private syncHostId;
|
|
65
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngMenubarItem, never>;
|
|
66
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngMenubarItem, "[tngMenubarItem]", ["tngMenubarItem"], { "ownedMenu": { "alias": "tngMenubarMenu"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
62
67
|
}
|
|
63
68
|
export {};
|
|
64
69
|
//# sourceMappingURL=tng-menubar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menubar.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menubar/tng-menubar.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC
|
|
1
|
+
{"version":3,"file":"tng-menubar.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menubar/tng-menubar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
1
|
import { Directive, ElementRef, HostBinding, HostListener, inject, input } from '@angular/core';
|
|
3
2
|
import { createTngIdFactory } from '@tailng-ui/cdk';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
4
|
const createMenubarItemId = createTngIdFactory('tng-menubar-item');
|
|
5
5
|
const TYPEAHEAD_RESET_MS = 500;
|
|
6
|
-
|
|
6
|
+
export class TngMenubar {
|
|
7
7
|
hostRef = inject(ElementRef);
|
|
8
8
|
openItem = null;
|
|
9
9
|
currentTabStopId = null;
|
|
10
10
|
typeaheadBuffer = '';
|
|
11
11
|
typeaheadResetHandle = null;
|
|
12
|
-
loop = input(true);
|
|
12
|
+
loop = input(true, ...(ngDevMode ? [{ debugName: "loop" }] : []));
|
|
13
13
|
dataSlot = 'menubar';
|
|
14
14
|
role = 'menubar';
|
|
15
15
|
ariaOrientation = 'horizontal';
|
|
@@ -132,32 +132,31 @@ let TngMenubar = class TngMenubar {
|
|
|
132
132
|
this.typeaheadResetHandle = null;
|
|
133
133
|
}, TYPEAHEAD_RESET_MS);
|
|
134
134
|
}
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
],
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
],
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMenubar, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
136
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngMenubar, isStandalone: true, selector: "[tngMenubar]", inputs: { loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-slot": "this.dataSlot", "attr.role": "this.role", "attr.aria-orientation": "this.ariaOrientation" } }, exportAs: ["tngMenubar"], ngImport: i0 });
|
|
137
|
+
}
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMenubar, decorators: [{
|
|
139
|
+
type: Directive,
|
|
140
|
+
args: [{
|
|
141
|
+
selector: '[tngMenubar]',
|
|
142
|
+
exportAs: 'tngMenubar',
|
|
143
|
+
}]
|
|
144
|
+
}], propDecorators: { loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], dataSlot: [{
|
|
145
|
+
type: HostBinding,
|
|
146
|
+
args: ['attr.data-slot']
|
|
147
|
+
}], role: [{
|
|
148
|
+
type: HostBinding,
|
|
149
|
+
args: ['attr.role']
|
|
150
|
+
}], ariaOrientation: [{
|
|
151
|
+
type: HostBinding,
|
|
152
|
+
args: ['attr.aria-orientation']
|
|
153
|
+
}] } });
|
|
154
|
+
export class TngMenubarItem {
|
|
154
155
|
hostRef = inject(ElementRef);
|
|
155
156
|
menubar = inject(TngMenubar, { host: true });
|
|
156
157
|
resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenubarItemId();
|
|
157
158
|
lastOwnedMenu = null;
|
|
158
|
-
ownedMenu = input(null, {
|
|
159
|
-
alias: 'tngMenubarMenu',
|
|
160
|
-
});
|
|
159
|
+
ownedMenu = input(null, { ...(ngDevMode ? { debugName: "ownedMenu" } : {}), alias: 'tngMenubarMenu' });
|
|
161
160
|
dataSlot = 'menubar-item';
|
|
162
161
|
role = 'menuitem';
|
|
163
162
|
id = this.resolvedId;
|
|
@@ -430,49 +429,50 @@ let TngMenubarItem = class TngMenubarItem {
|
|
|
430
429
|
}
|
|
431
430
|
this.hostRef.nativeElement.id = this.id;
|
|
432
431
|
}
|
|
433
|
-
};
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
],
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
],
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
],
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
],
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
],
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
],
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
],
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
],
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
],
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
],
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
],
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
432
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMenubarItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
433
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngMenubarItem, isStandalone: true, selector: "[tngMenubarItem]", inputs: { ownedMenu: { classPropertyName: "ownedMenu", publicName: "tngMenubarMenu", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()", "pointerdown": "onPointerdown()", "mouseenter": "onMouseenter()", "focus": "onFocus()", "keydown": "onKeydown($event)" }, properties: { "attr.data-slot": "this.dataSlot", "attr.role": "this.role", "attr.id": "this.id", "attr.tabindex": "this.tabIndex", "attr.aria-disabled": "this.ariaDisabled", "attr.aria-haspopup": "this.ariaHaspopup", "attr.aria-controls": "this.ariaControls" } }, exportAs: ["tngMenubarItem"], ngImport: i0 });
|
|
434
|
+
}
|
|
435
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMenubarItem, decorators: [{
|
|
436
|
+
type: Directive,
|
|
437
|
+
args: [{
|
|
438
|
+
selector: '[tngMenubarItem]',
|
|
439
|
+
exportAs: 'tngMenubarItem',
|
|
440
|
+
}]
|
|
441
|
+
}], propDecorators: { ownedMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngMenubarMenu", required: false }] }], dataSlot: [{
|
|
442
|
+
type: HostBinding,
|
|
443
|
+
args: ['attr.data-slot']
|
|
444
|
+
}], role: [{
|
|
445
|
+
type: HostBinding,
|
|
446
|
+
args: ['attr.role']
|
|
447
|
+
}], id: [{
|
|
448
|
+
type: HostBinding,
|
|
449
|
+
args: ['attr.id']
|
|
450
|
+
}], tabIndex: [{
|
|
451
|
+
type: HostBinding,
|
|
452
|
+
args: ['attr.tabindex']
|
|
453
|
+
}], ariaDisabled: [{
|
|
454
|
+
type: HostBinding,
|
|
455
|
+
args: ['attr.aria-disabled']
|
|
456
|
+
}], ariaHaspopup: [{
|
|
457
|
+
type: HostBinding,
|
|
458
|
+
args: ['attr.aria-haspopup']
|
|
459
|
+
}], ariaControls: [{
|
|
460
|
+
type: HostBinding,
|
|
461
|
+
args: ['attr.aria-controls']
|
|
462
|
+
}], onClick: [{
|
|
463
|
+
type: HostListener,
|
|
464
|
+
args: ['click']
|
|
465
|
+
}], onPointerdown: [{
|
|
466
|
+
type: HostListener,
|
|
467
|
+
args: ['pointerdown']
|
|
468
|
+
}], onMouseenter: [{
|
|
469
|
+
type: HostListener,
|
|
470
|
+
args: ['mouseenter']
|
|
471
|
+
}], onFocus: [{
|
|
472
|
+
type: HostListener,
|
|
473
|
+
args: ['focus']
|
|
474
|
+
}], onKeydown: [{
|
|
475
|
+
type: HostListener,
|
|
476
|
+
args: ['keydown', ['$event']]
|
|
477
|
+
}] } });
|
|
478
478
|
//# sourceMappingURL=tng-menubar.js.map
|