@tailng-ui/primitives 0.13.0 → 0.15.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 +3 -2
- package/src/index.d.ts +1 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
- package/src/lib/feedback/empty/tng-empty.js +0 -5
- package/src/lib/feedback/empty/tng-empty.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.js +0 -2
- package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +0 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js +0 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
- package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.js +0 -2
- package/src/lib/feedback/toast/tng-toast.js.map +1 -1
- 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 +0 -1
- 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.map +1 -1
- package/src/lib/form/_shared/select/tng-select.parts.shared.js +0 -4
- package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.js +0 -1
- package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +0 -2
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +0 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js +0 -4
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.js +0 -2
- package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.js +0 -1
- package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
- package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.js +0 -3
- package/src/lib/form/chips/tng-chips.js.map +1 -1
- package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
- package/src/lib/form/combobox/tng-combobox.js +0 -1
- package/src/lib/form/combobox/tng-combobox.js.map +1 -1
- package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts +25 -0
- package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts.map +1 -0
- package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js +105 -0
- package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js.map +1 -0
- package/src/lib/form/datepicker/datepicker.adapters.d.ts +5 -0
- package/src/lib/form/datepicker/datepicker.adapters.d.ts.map +1 -0
- package/src/lib/form/datepicker/datepicker.adapters.js +194 -0
- package/src/lib/form/datepicker/datepicker.adapters.js.map +1 -0
- package/src/lib/form/datepicker/datepicker.state.d.ts +10 -0
- package/src/lib/form/datepicker/datepicker.state.d.ts.map +1 -0
- package/src/lib/form/datepicker/datepicker.state.js +97 -0
- package/src/lib/form/datepicker/datepicker.state.js.map +1 -0
- package/src/lib/form/datepicker/datepicker.types.d.ts +269 -0
- package/src/lib/form/datepicker/datepicker.types.d.ts.map +1 -0
- package/src/lib/form/datepicker/datepicker.types.js +1 -0
- package/src/lib/form/datepicker/datepicker.types.js.map +1 -0
- package/src/lib/form/datepicker/datepicker.utils.d.ts +75 -0
- package/src/lib/form/datepicker/datepicker.utils.d.ts.map +1 -0
- package/src/lib/form/datepicker/datepicker.utils.js +238 -0
- package/src/lib/form/datepicker/datepicker.utils.js.map +1 -0
- package/src/lib/form/datepicker/index.d.ts +3 -0
- package/src/lib/form/datepicker/index.d.ts.map +1 -0
- package/src/lib/form/datepicker/index.js +3 -0
- package/src/lib/form/datepicker/index.js.map +1 -0
- package/src/lib/form/datepicker/tng-datepicker.d.ts +5 -0
- package/src/lib/form/datepicker/tng-datepicker.d.ts.map +1 -0
- package/src/lib/form/datepicker/tng-datepicker.js +1948 -0
- package/src/lib/form/datepicker/tng-datepicker.js.map +1 -0
- package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts +60 -0
- package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts.map +1 -0
- package/src/lib/form/datepicker/tng-datepicker.overlay.js +275 -0
- package/src/lib/form/datepicker/tng-datepicker.overlay.js.map +1 -0
- package/src/lib/form/input/tng-input.d.ts.map +1 -1
- package/src/lib/form/input/tng-input.js +0 -4
- package/src/lib/form/input/tng-input.js.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.js +0 -1
- package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
- package/src/lib/form/label/tng-label.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.js +0 -1
- package/src/lib/form/label/tng-label.js.map +1 -1
- package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/listbox.directive.js +0 -1
- package/src/lib/form/listbox/listbox.directive.js.map +1 -1
- package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/option.directive.js +0 -1
- package/src/lib/form/listbox/option.directive.js.map +1 -1
- 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 +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +0 -2
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.listbox.js +0 -2
- package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.js +0 -1
- package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
- package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.js +0 -1
- package/src/lib/form/radio/tng-radio.js.map +1 -1
- package/src/lib/form/select/tng-select.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.js +0 -1
- package/src/lib/form/select/tng-select.js.map +1 -1
- package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.listbox.js +0 -2
- package/src/lib/form/select/tng-select.listbox.js.map +1 -1
- package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
- package/src/lib/form/slider/tng-slider.js +0 -1
- package/src/lib/form/slider/tng-slider.js.map +1 -1
- package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
- package/src/lib/form/switch/tng-switch.js +0 -1
- package/src/lib/form/switch/tng-switch.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.js +0 -1
- package/src/lib/form/textarea/tng-textarea.js.map +1 -1
- package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
- package/src/lib/form/toggle/tng-toggle.js +0 -1
- package/src/lib/form/toggle/tng-toggle.js.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.js +0 -1
- package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.js +0 -4
- package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +0 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
- package/src/lib/layout/card/tng-card.d.ts.map +1 -1
- package/src/lib/layout/card/tng-card.js +0 -10
- package/src/lib/layout/card/tng-card.js.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.js +0 -3
- package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.js +0 -6
- package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
- package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts +32 -0
- package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts.map +1 -0
- package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js +312 -0
- package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js.map +1 -0
- package/src/lib/layout/grid/tng-grid.d.ts +144 -2
- package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
- package/src/lib/layout/grid/tng-grid.js +669 -3
- package/src/lib/layout/grid/tng-grid.js.map +1 -1
- package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
- package/src/lib/layout/separator/tng-separator.js +0 -1
- package/src/lib/layout/separator/tng-separator.js.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.js +0 -1
- package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
- 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 +0 -1
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.js +0 -1
- package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.js +0 -1
- package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.js +0 -1
- package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
- package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree.js +0 -1
- package/src/lib/layout/tree/tng-tree.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +0 -5
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.js +0 -2
- package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +0 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
- package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
- package/src/lib/navigation/menu/tng-menu.js +0 -6
- package/src/lib/navigation/menu/tng-menu.js.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.js +0 -2
- package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +0 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -6
- package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.js +77 -41
- package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js +0 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.js +0 -9
- package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
- package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.js +0 -4
- package/src/lib/overlay/popover/tng-popover.js.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.js +0 -3
- package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.js +0 -3
- package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.js +0 -1
- package/src/lib/utility/badge/tng-badge.js.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.js +0 -5
- package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
- package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
- package/src/lib/utility/copy/tng-copy.js +0 -1
- package/src/lib/utility/copy/tng-copy.js.map +1 -1
- package/src/lib/utility/press/tng-press.d.ts.map +1 -1
- package/src/lib/utility/press/tng-press.js +0 -1
- package/src/lib/utility/press/tng-press.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.js +0 -3
- package/src/lib/utility/tag/tng-tag.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menubar.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menubar/tng-menubar.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, HostListener, inject, input } from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\nimport { TngMenu } from '../menu/tng-menu';\n\ntype MenubarItemElement = HTMLElement;\nconst createMenubarItemId = createTngIdFactory('tng-menubar-item');\nconst TYPEAHEAD_RESET_MS = 500;\n\n@Directive({\n selector: '[tngMenubar]',\n exportAs: 'tngMenubar',\n standalone: true,\n})\nexport class TngMenubar {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private openItem: TngMenubarItem | null = null;\n private currentTabStopId: string | null = null;\n private typeaheadBuffer = '';\n private typeaheadResetHandle: ReturnType<typeof setTimeout> | null = null;\n\n readonly loop = input<boolean>(true);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menubar' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menubar' as const;\n\n @HostBinding('attr.aria-orientation')\n protected readonly ariaOrientation = 'horizontal' as const;\n\n getItems(): readonly MenubarItemElement[] {\n return Array.from(\n this.hostRef.nativeElement.querySelectorAll<MenubarItemElement>('[tngMenubarItem]'),\n );\n }\n\n getEnabledItems(): readonly MenubarItemElement[] {\n return this.getItems().filter((item) => item.getAttribute('aria-disabled') !== 'true');\n }\n\n isRtl(): boolean {\n const host = this.hostRef.nativeElement;\n const nearestDir =\n host.closest<HTMLElement>('[dir]')?.getAttribute('dir') ??\n host.ownerDocument?.documentElement.getAttribute('dir');\n\n return nearestDir?.toLowerCase() === 'rtl';\n }\n\n getCurrentTabStopId(): string | null {\n const enabledItems = this.getEnabledItems();\n if (enabledItems.length === 0) {\n this.currentTabStopId = null;\n return null;\n }\n\n if (!enabledItems.some((item) => item.id === this.currentTabStopId)) {\n this.currentTabStopId = enabledItems[0]?.id ?? null;\n }\n\n return this.currentTabStopId;\n }\n\n setCurrentTabStop(item: TngMenubarItem): void {\n if (item.isDisabledItem()) {\n return;\n }\n\n this.currentTabStopId = item.getItemId();\n }\n\n hasOpenItem(): boolean {\n return this.openItem !== null;\n }\n\n isOpenItem(item: TngMenubarItem): boolean {\n return this.openItem === item;\n }\n\n findTypeaheadMatch(currentItem: HTMLElement, key: string): MenubarItemElement | null {\n const items = this.getEnabledItems();\n if (items.length === 0) {\n return null;\n }\n\n const normalizedKey = key.trim().toLowerCase();\n if (normalizedKey.length !== 1) {\n return null;\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.findMatchingItem(items, currentItem, query, repeatingSingleChar);\n\n if (match === null && query !== normalizedKey) {\n query = normalizedKey;\n match = this.findMatchingItem(items, currentItem, query, true);\n }\n\n if (match === null) {\n return null;\n }\n\n this.resetTypeaheadBuffer(query);\n return match;\n }\n\n requestToggleMenu(item: TngMenubarItem): void {\n const ownedMenu = item.getOwnedMenu();\n if (ownedMenu === null || item.isDisabledItem()) {\n return;\n }\n\n if (ownedMenu.isOpen()) {\n item.closeOwnedMenu(false);\n item.focusSelf();\n return;\n }\n\n this.requestOpenMenu(item, 'none');\n }\n\n requestOpenMenu(item: TngMenubarItem, focusAction: 'none' | 'first' | 'last'): void {\n const ownedMenu = item.getOwnedMenu();\n if (ownedMenu === null || item.isDisabledItem()) {\n return;\n }\n\n if (this.openItem !== null && this.openItem !== item) {\n this.openItem.closeOwnedMenu(false);\n }\n\n this.openItem = item;\n item.openOwnedMenu(focusAction);\n }\n\n syncOpenItem(item: TngMenubarItem): void {\n if (item.getOwnedMenu()?.isOpen()) {\n this.openItem = item;\n return;\n }\n\n if (this.openItem === item) {\n this.openItem = null;\n }\n }\n\n ngOnDestroy(): void {\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n this.typeaheadResetHandle = null;\n }\n }\n\n private findMatchingItem(\n items: readonly MenubarItemElement[],\n currentItem: HTMLElement,\n query: string,\n cycleFromCurrentItem: boolean,\n ): MenubarItemElement | null {\n const currentIndex = items.indexOf(currentItem);\n const startIndex = cycleFromCurrentItem && 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\n@Directive({\n selector: '[tngMenubarItem]',\n exportAs: 'tngMenubarItem',\n standalone: true,\n})\nexport class TngMenubarItem {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly menubar = inject(TngMenubar, { host: true });\n private readonly resolvedId =\n this.hostRef.nativeElement.getAttribute('id') ?? createMenubarItemId();\n private lastOwnedMenu: TngMenu | null = null;\n\n readonly ownedMenu = input<TngMenu | null>(null, {\n alias: 'tngMenubarMenu',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menubar-item' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menuitem' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n if (this.isDisabled()) {\n return '-1';\n }\n\n return this.menubar.getCurrentTabStopId() === this.id ? '0' : '-1';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHaspopup(): 'menu' | null {\n return this.ownedMenu() === null ? null : 'menu';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.ownedMenu()?.id ?? null;\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.lastOwnedMenu = this.ownedMenu();\n this.syncOwnedMenuLink();\n this.syncAriaExpanded();\n }\n\n ngDoCheck(): void {\n this.syncHostId();\n const currentOwnedMenu = this.ownedMenu();\n if (currentOwnedMenu === this.lastOwnedMenu) {\n return;\n }\n\n this.lastOwnedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n this.lastOwnedMenu = currentOwnedMenu;\n this.syncOwnedMenuLink();\n this.syncAriaExpanded();\n }\n\n ngOnDestroy(): void {\n this.lastOwnedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.ownedMenu() === null || this.isDisabled()) {\n return;\n }\n\n this.focusSelf();\n this.syncOwnedMenuLink();\n this.menubar.requestToggleMenu(this);\n }\n\n @HostListener('pointerdown')\n protected onPointerdown(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.focusSelf();\n }\n\n @HostListener('mouseenter')\n protected onMouseenter(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.menubar.setCurrentTabStop(this);\n\n if (!this.menubar.hasOpenItem() || this.menubar.isOpenItem(this) || this.ownedMenu() === null) {\n return;\n }\n\n this.syncOwnedMenuLink();\n this.menubar.requestOpenMenu(this, 'none');\n }\n\n @HostListener('focus')\n protected onFocus(): void {\n this.menubar.setCurrentTabStop(this);\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n const ownedMenu = this.ownedMenu();\n if (!this.isDisabled() && ownedMenu?.isOpen() && event.key === 'Escape') {\n event.preventDefault();\n this.closeOwnedMenu(true);\n return;\n }\n\n if (\n !this.isDisabled() &&\n ownedMenu !== null &&\n (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown' || event.key === 'ArrowUp')\n ) {\n event.preventDefault();\n this.syncOwnedMenuLink();\n\n if (ownedMenu.isOpen() && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n ownedMenu.focusPanelAndMoveActiveItem(event.key === 'ArrowDown' ? 'next' : 'prev');\n return;\n }\n\n this.menubar.requestOpenMenu(this, event.key === 'ArrowDown' ? 'first' : event.key === 'ArrowUp' ? 'last' : 'none');\n return;\n }\n\n if (event.key === 'Tab') {\n if (ownedMenu?.isOpen()) {\n if (this.handleTabFromOpenMenu(event.shiftKey)) {\n event.preventDefault();\n }\n return;\n }\n\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n const targetIndex = event.shiftKey ? currentIndex - 1 : currentIndex + 1;\n const target = items[targetIndex];\n\n if (target === undefined) {\n return;\n }\n\n event.preventDefault();\n target.focus();\n return;\n }\n\n if (ownedMenu?.isOpen() && (event.key === 'ArrowRight' || event.key === 'ArrowLeft')) {\n event.preventDefault();\n this.handleArrowFromOpenMenu(event.key);\n return;\n }\n\n if (\n event.key !== 'ArrowRight' &&\n event.key !== 'ArrowLeft' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n if (event.key.length === 1 && !this.isDisabled()) {\n const match = this.menubar.findTypeaheadMatch(this.hostRef.nativeElement, event.key);\n if (match !== null) {\n event.preventDefault();\n match.focus();\n }\n }\n return;\n }\n\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === 'Home') {\n items[0]?.focus();\n return;\n }\n\n if (event.key === 'End') {\n items[items.length - 1]?.focus();\n return;\n }\n\n const loop = this.menubar.loop();\n const moveToNext =\n event.key === (this.menubar.isRtl() ? 'ArrowLeft' : 'ArrowRight');\n const targetIndex =\n moveToNext\n ? currentIndex + 1 >= items.length\n ? loop\n ? 0\n : items.length - 1\n : currentIndex + 1\n : currentIndex - 1 < 0\n ? loop\n ? items.length - 1\n : 0\n : currentIndex - 1;\n\n items[targetIndex]?.focus();\n }\n\n isDisabledItem(): boolean {\n return this.isDisabled();\n }\n\n getOwnedMenu(): TngMenu | null {\n return this.ownedMenu();\n }\n\n openOwnedMenu(focusAction: 'none' | 'first' | 'last'): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n ownedMenu.open(focusAction);\n }\n\n closeOwnedMenu(restoreFocus: boolean): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n ownedMenu.close(restoreFocus);\n }\n\n focusSelf(): void {\n this.menubar.setCurrentTabStop(this);\n this.hostRef.nativeElement.focus();\n }\n\n getItemId(): string {\n return this.id;\n }\n\n handleArrowFromOpenMenu(key: 'ArrowRight' | 'ArrowLeft'): void {\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n const moveToNext =\n key === (this.menubar.isRtl() ? 'ArrowLeft' : 'ArrowRight');\n const loop = this.menubar.loop();\n const targetIndex =\n moveToNext\n ? currentIndex + 1 >= items.length\n ? loop\n ? 0\n : items.length - 1\n : currentIndex + 1\n : currentIndex - 1 < 0\n ? loop\n ? items.length - 1\n : 0\n : currentIndex - 1;\n\n const target = items[targetIndex];\n if (target === undefined || target === current) {\n return;\n }\n\n const targetOwnsMenu = target.getAttribute('aria-haspopup') === 'menu';\n if (!targetOwnsMenu) {\n this.closeOwnedMenu(false);\n target.focus();\n return;\n }\n\n target.focus();\n target.click();\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');\n }\n\n private syncOwnedMenuLink(): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n this.syncHostId();\n ownedMenu.setTriggerElement(this.hostRef.nativeElement, () => this.syncMenuState());\n ownedMenu.setRestoreFocusOnOutsideClick(true);\n ownedMenu.setMenubarArrowHandler((key) => this.handleArrowFromOpenMenu(key));\n ownedMenu.setMenubarTabHandler((shiftKey) => this.handleTabFromOpenMenu(shiftKey));\n }\n\n private syncAriaExpanded(): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', ownedMenu.isOpen() ? 'true' : 'false');\n }\n\n private syncMenuState(): void {\n this.syncAriaExpanded();\n this.menubar.syncOpenItem(this);\n }\n\n private handleTabFromOpenMenu(shiftKey: boolean): boolean {\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return false;\n }\n\n const targetIndex = shiftKey ? currentIndex - 1 : currentIndex + 1;\n const target = items[targetIndex];\n\n if (target === undefined || target === current) {\n this.closeOwnedMenu(false);\n return false;\n }\n\n const targetDirective = (target as HTMLElement & { click(): void });\n const targetOwnsMenu = target.getAttribute('aria-haspopup') === 'menu';\n\n if (targetOwnsMenu) {\n target.focus();\n targetDirective.click();\n return true;\n }\n\n this.closeOwnedMenu(false);\n target.focus();\n return true;\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"]}
|
|
1
|
+
{"version":3,"file":"tng-menubar.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menubar/tng-menubar.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, HostListener, inject, input } from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\nimport { TngMenu } from '../menu/tng-menu';\n\ntype MenubarItemElement = HTMLElement;\nconst createMenubarItemId = createTngIdFactory('tng-menubar-item');\nconst TYPEAHEAD_RESET_MS = 500;\n\n@Directive({\n selector: '[tngMenubar]',\n exportAs: 'tngMenubar',\n})\nexport class TngMenubar {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private openItem: TngMenubarItem | null = null;\n private currentTabStopId: string | null = null;\n private typeaheadBuffer = '';\n private typeaheadResetHandle: ReturnType<typeof setTimeout> | null = null;\n\n readonly loop = input<boolean>(true);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menubar' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menubar' as const;\n\n @HostBinding('attr.aria-orientation')\n protected readonly ariaOrientation = 'horizontal' as const;\n\n getItems(): readonly MenubarItemElement[] {\n return Array.from(\n this.hostRef.nativeElement.querySelectorAll<MenubarItemElement>('[tngMenubarItem]'),\n );\n }\n\n getEnabledItems(): readonly MenubarItemElement[] {\n return this.getItems().filter((item) => item.getAttribute('aria-disabled') !== 'true');\n }\n\n isRtl(): boolean {\n const host = this.hostRef.nativeElement;\n const nearestDir =\n host.closest<HTMLElement>('[dir]')?.getAttribute('dir') ??\n host.ownerDocument?.documentElement.getAttribute('dir');\n\n return nearestDir?.toLowerCase() === 'rtl';\n }\n\n getCurrentTabStopId(): string | null {\n const enabledItems = this.getEnabledItems();\n if (enabledItems.length === 0) {\n this.currentTabStopId = null;\n return null;\n }\n\n if (!enabledItems.some((item) => item.id === this.currentTabStopId)) {\n this.currentTabStopId = enabledItems[0]?.id ?? null;\n }\n\n return this.currentTabStopId;\n }\n\n setCurrentTabStop(item: TngMenubarItem): void {\n if (item.isDisabledItem()) {\n return;\n }\n\n this.currentTabStopId = item.getItemId();\n }\n\n hasOpenItem(): boolean {\n return this.openItem !== null;\n }\n\n isOpenItem(item: TngMenubarItem): boolean {\n return this.openItem === item;\n }\n\n findTypeaheadMatch(currentItem: HTMLElement, key: string): MenubarItemElement | null {\n const items = this.getEnabledItems();\n if (items.length === 0) {\n return null;\n }\n\n const normalizedKey = key.trim().toLowerCase();\n if (normalizedKey.length !== 1) {\n return null;\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.findMatchingItem(items, currentItem, query, repeatingSingleChar);\n\n if (match === null && query !== normalizedKey) {\n query = normalizedKey;\n match = this.findMatchingItem(items, currentItem, query, true);\n }\n\n if (match === null) {\n return null;\n }\n\n this.resetTypeaheadBuffer(query);\n return match;\n }\n\n requestToggleMenu(item: TngMenubarItem): void {\n const ownedMenu = item.getOwnedMenu();\n if (ownedMenu === null || item.isDisabledItem()) {\n return;\n }\n\n if (ownedMenu.isOpen()) {\n item.closeOwnedMenu(false);\n item.focusSelf();\n return;\n }\n\n this.requestOpenMenu(item, 'none');\n }\n\n requestOpenMenu(item: TngMenubarItem, focusAction: 'none' | 'first' | 'last'): void {\n const ownedMenu = item.getOwnedMenu();\n if (ownedMenu === null || item.isDisabledItem()) {\n return;\n }\n\n if (this.openItem !== null && this.openItem !== item) {\n this.openItem.closeOwnedMenu(false);\n }\n\n this.openItem = item;\n item.openOwnedMenu(focusAction);\n }\n\n syncOpenItem(item: TngMenubarItem): void {\n if (item.getOwnedMenu()?.isOpen()) {\n this.openItem = item;\n return;\n }\n\n if (this.openItem === item) {\n this.openItem = null;\n }\n }\n\n ngOnDestroy(): void {\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n this.typeaheadResetHandle = null;\n }\n }\n\n private findMatchingItem(\n items: readonly MenubarItemElement[],\n currentItem: HTMLElement,\n query: string,\n cycleFromCurrentItem: boolean,\n ): MenubarItemElement | null {\n const currentIndex = items.indexOf(currentItem);\n const startIndex = cycleFromCurrentItem && 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\n@Directive({\n selector: '[tngMenubarItem]',\n exportAs: 'tngMenubarItem',\n})\nexport class TngMenubarItem {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly menubar = inject(TngMenubar, { host: true });\n private readonly resolvedId =\n this.hostRef.nativeElement.getAttribute('id') ?? createMenubarItemId();\n private lastOwnedMenu: TngMenu | null = null;\n\n readonly ownedMenu = input<TngMenu | null>(null, {\n alias: 'tngMenubarMenu',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menubar-item' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menuitem' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n if (this.isDisabled()) {\n return '-1';\n }\n\n return this.menubar.getCurrentTabStopId() === this.id ? '0' : '-1';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHaspopup(): 'menu' | null {\n return this.ownedMenu() === null ? null : 'menu';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.ownedMenu()?.id ?? null;\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.lastOwnedMenu = this.ownedMenu();\n this.syncOwnedMenuLink();\n this.syncAriaExpanded();\n }\n\n ngDoCheck(): void {\n this.syncHostId();\n const currentOwnedMenu = this.ownedMenu();\n if (currentOwnedMenu === this.lastOwnedMenu) {\n return;\n }\n\n this.lastOwnedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n this.lastOwnedMenu = currentOwnedMenu;\n this.syncOwnedMenuLink();\n this.syncAriaExpanded();\n }\n\n ngOnDestroy(): void {\n this.lastOwnedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.ownedMenu() === null || this.isDisabled()) {\n return;\n }\n\n this.focusSelf();\n this.syncOwnedMenuLink();\n this.menubar.requestToggleMenu(this);\n }\n\n @HostListener('pointerdown')\n protected onPointerdown(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.focusSelf();\n }\n\n @HostListener('mouseenter')\n protected onMouseenter(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.menubar.setCurrentTabStop(this);\n\n if (!this.menubar.hasOpenItem() || this.menubar.isOpenItem(this) || this.ownedMenu() === null) {\n return;\n }\n\n this.syncOwnedMenuLink();\n this.menubar.requestOpenMenu(this, 'none');\n }\n\n @HostListener('focus')\n protected onFocus(): void {\n this.menubar.setCurrentTabStop(this);\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n const ownedMenu = this.ownedMenu();\n if (!this.isDisabled() && ownedMenu?.isOpen() && event.key === 'Escape') {\n event.preventDefault();\n this.closeOwnedMenu(true);\n return;\n }\n\n if (\n !this.isDisabled() &&\n ownedMenu !== null &&\n (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown' || event.key === 'ArrowUp')\n ) {\n event.preventDefault();\n this.syncOwnedMenuLink();\n\n if (ownedMenu.isOpen() && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n ownedMenu.focusPanelAndMoveActiveItem(event.key === 'ArrowDown' ? 'next' : 'prev');\n return;\n }\n\n this.menubar.requestOpenMenu(this, event.key === 'ArrowDown' ? 'first' : event.key === 'ArrowUp' ? 'last' : 'none');\n return;\n }\n\n if (event.key === 'Tab') {\n if (ownedMenu?.isOpen()) {\n if (this.handleTabFromOpenMenu(event.shiftKey)) {\n event.preventDefault();\n }\n return;\n }\n\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n const targetIndex = event.shiftKey ? currentIndex - 1 : currentIndex + 1;\n const target = items[targetIndex];\n\n if (target === undefined) {\n return;\n }\n\n event.preventDefault();\n target.focus();\n return;\n }\n\n if (ownedMenu?.isOpen() && (event.key === 'ArrowRight' || event.key === 'ArrowLeft')) {\n event.preventDefault();\n this.handleArrowFromOpenMenu(event.key);\n return;\n }\n\n if (\n event.key !== 'ArrowRight' &&\n event.key !== 'ArrowLeft' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n if (event.key.length === 1 && !this.isDisabled()) {\n const match = this.menubar.findTypeaheadMatch(this.hostRef.nativeElement, event.key);\n if (match !== null) {\n event.preventDefault();\n match.focus();\n }\n }\n return;\n }\n\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === 'Home') {\n items[0]?.focus();\n return;\n }\n\n if (event.key === 'End') {\n items[items.length - 1]?.focus();\n return;\n }\n\n const loop = this.menubar.loop();\n const moveToNext =\n event.key === (this.menubar.isRtl() ? 'ArrowLeft' : 'ArrowRight');\n const targetIndex =\n moveToNext\n ? currentIndex + 1 >= items.length\n ? loop\n ? 0\n : items.length - 1\n : currentIndex + 1\n : currentIndex - 1 < 0\n ? loop\n ? items.length - 1\n : 0\n : currentIndex - 1;\n\n items[targetIndex]?.focus();\n }\n\n isDisabledItem(): boolean {\n return this.isDisabled();\n }\n\n getOwnedMenu(): TngMenu | null {\n return this.ownedMenu();\n }\n\n openOwnedMenu(focusAction: 'none' | 'first' | 'last'): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n ownedMenu.open(focusAction);\n }\n\n closeOwnedMenu(restoreFocus: boolean): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n ownedMenu.close(restoreFocus);\n }\n\n focusSelf(): void {\n this.menubar.setCurrentTabStop(this);\n this.hostRef.nativeElement.focus();\n }\n\n getItemId(): string {\n return this.id;\n }\n\n handleArrowFromOpenMenu(key: 'ArrowRight' | 'ArrowLeft'): void {\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n const moveToNext =\n key === (this.menubar.isRtl() ? 'ArrowLeft' : 'ArrowRight');\n const loop = this.menubar.loop();\n const targetIndex =\n moveToNext\n ? currentIndex + 1 >= items.length\n ? loop\n ? 0\n : items.length - 1\n : currentIndex + 1\n : currentIndex - 1 < 0\n ? loop\n ? items.length - 1\n : 0\n : currentIndex - 1;\n\n const target = items[targetIndex];\n if (target === undefined || target === current) {\n return;\n }\n\n const targetOwnsMenu = target.getAttribute('aria-haspopup') === 'menu';\n if (!targetOwnsMenu) {\n this.closeOwnedMenu(false);\n target.focus();\n return;\n }\n\n target.focus();\n target.click();\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');\n }\n\n private syncOwnedMenuLink(): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n this.syncHostId();\n ownedMenu.setTriggerElement(this.hostRef.nativeElement, () => this.syncMenuState());\n ownedMenu.setRestoreFocusOnOutsideClick(true);\n ownedMenu.setMenubarArrowHandler((key) => this.handleArrowFromOpenMenu(key));\n ownedMenu.setMenubarTabHandler((shiftKey) => this.handleTabFromOpenMenu(shiftKey));\n }\n\n private syncAriaExpanded(): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', ownedMenu.isOpen() ? 'true' : 'false');\n }\n\n private syncMenuState(): void {\n this.syncAriaExpanded();\n this.menubar.syncOpenItem(this);\n }\n\n private handleTabFromOpenMenu(shiftKey: boolean): boolean {\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return false;\n }\n\n const targetIndex = shiftKey ? currentIndex - 1 : currentIndex + 1;\n const target = items[targetIndex];\n\n if (target === undefined || target === current) {\n this.closeOwnedMenu(false);\n return false;\n }\n\n const targetDirective = (target as HTMLElement & { click(): void });\n const targetOwnsMenu = target.getAttribute('aria-haspopup') === 'menu';\n\n if (targetOwnsMenu) {\n target.focus();\n targetDirective.click();\n return true;\n }\n\n this.closeOwnedMenu(false);\n target.focus();\n return true;\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-navigation-menu.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/navigation-menu/tng-navigation-menu.ts"],"names":[],"mappings":";AAEA,
|
|
1
|
+
{"version":3,"file":"tng-navigation-menu.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/navigation-menu/tng-navigation-menu.ts"],"names":[],"mappings":";AAEA,qBAIa,iBAAiB;IAE5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,iBAAiB,CAAU;yCAF9C,iBAAiB;2CAAjB,iBAAiB;CAG7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-navigation-menu.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/navigation-menu/tng-navigation-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;
|
|
1
|
+
{"version":3,"file":"tng-navigation-menu.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/navigation-menu/tng-navigation-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAMvD,MAAM,OAAO,iBAAiB;IAET,QAAQ,GAAG,iBAA0B,CAAC;uGAF9C,iBAAiB;2FAAjB,iBAAiB;;2FAAjB,iBAAiB;kBAJ7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,mBAAmB;iBAC9B;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngNavigationMenu]',\n exportAs: 'tngNavigationMenu',\n})\nexport class TngNavigationMenu {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'navigation-menu' as const;\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DoCheck, OnDestroy, OnInit } from '@angular/core';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
3
|
type TngTabsDirection = 'ltr' | 'rtl' | 'auto';
|
|
3
4
|
type TngTabsOrientation = 'horizontal' | 'vertical';
|
|
@@ -16,7 +17,7 @@ export type TngTabsFocusChangeEvent = Readonly<{
|
|
|
16
17
|
previousValue: TngTabsValue | null;
|
|
17
18
|
trigger: TngTabsFocusTrigger;
|
|
18
19
|
}>;
|
|
19
|
-
export declare class TngTabs {
|
|
20
|
+
export declare class TngTabs implements DoCheck {
|
|
20
21
|
private readonly hostRef;
|
|
21
22
|
private readonly tabs;
|
|
22
23
|
private readonly panels;
|
|
@@ -25,6 +26,7 @@ export declare class TngTabs {
|
|
|
25
26
|
private scrollNextControl;
|
|
26
27
|
private uncontrolledValue;
|
|
27
28
|
private focusedValue;
|
|
29
|
+
private domFocusedValue;
|
|
28
30
|
private hasUserSelection;
|
|
29
31
|
private initialized;
|
|
30
32
|
readonly value: import("@angular/core").InputSignalWithTransform<TngTabsValue | null | undefined, unknown>;
|
|
@@ -62,6 +64,7 @@ export declare class TngTabs {
|
|
|
62
64
|
prev(): void;
|
|
63
65
|
registerTab(tab: TngTab): void;
|
|
64
66
|
unregisterTab(tab: TngTab): void;
|
|
67
|
+
private notifySelectedValueChanged;
|
|
65
68
|
notifyTabMutated(tab: TngTab): void;
|
|
66
69
|
registerPanel(panel: TngTabPanel): void;
|
|
67
70
|
unregisterPanel(panel: TngTabPanel): void;
|
|
@@ -86,7 +89,9 @@ export declare class TngTabs {
|
|
|
86
89
|
isPanelActive(panel: TngTabPanel): boolean;
|
|
87
90
|
isPanelMounted(panel: TngTabPanel): boolean;
|
|
88
91
|
onTabFocused(tab: TngTab, trigger: TngTabsFocusTrigger): void;
|
|
92
|
+
onTabListFocusOut(event: FocusEvent): void;
|
|
89
93
|
requestSelection(tab: TngTab, trigger: TngTabsSelectionTrigger): void;
|
|
94
|
+
private hanlsFocusMove;
|
|
90
95
|
handleTabKeydown(tab: TngTab, event: KeyboardEvent): void;
|
|
91
96
|
private resolveFocusMove;
|
|
92
97
|
private moveFocusByAction;
|
|
@@ -99,6 +104,7 @@ export declare class TngTabs {
|
|
|
99
104
|
private getSelectedValue;
|
|
100
105
|
private getEffectiveSelectedValue;
|
|
101
106
|
private resolveCurrentTabStopValue;
|
|
107
|
+
private syncStateHandleUnInitialized;
|
|
102
108
|
private syncStateFromRegistry;
|
|
103
109
|
private resolveNeighborValueOnRemoval;
|
|
104
110
|
private resolveNeighborForDisabledTab;
|
|
@@ -119,7 +125,7 @@ export declare class TngTabs {
|
|
|
119
125
|
static ɵfac: i0.ɵɵFactoryDeclaration<TngTabs, never>;
|
|
120
126
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TngTabs, "[tngTabs]", ["tngTabs"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "activation": { "alias": "activation"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "scrollButtons": { "alias": "scrollButtons"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "keepAlive": { "alias": "keepAlive"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "tabChange": "tabChange"; "focusChange": "focusChange"; }, never, never, true, never>;
|
|
121
127
|
}
|
|
122
|
-
export declare class TngTabList {
|
|
128
|
+
export declare class TngTabList implements OnDestroy {
|
|
123
129
|
private readonly hostRef;
|
|
124
130
|
private readonly tabs;
|
|
125
131
|
readonly ariaLabel: import("@angular/core").InputSignalWithTransform<string | null | undefined, unknown>;
|
|
@@ -134,12 +140,13 @@ export declare class TngTabList {
|
|
|
134
140
|
ngOnDestroy(): void;
|
|
135
141
|
protected onWheel(event: WheelEvent): void;
|
|
136
142
|
protected onScroll(): void;
|
|
143
|
+
protected onFocusout(event: FocusEvent): void;
|
|
137
144
|
protected onFocus(): void;
|
|
138
145
|
getHostElement(): HTMLElement;
|
|
139
146
|
static ɵfac: i0.ɵɵFactoryDeclaration<TngTabList, never>;
|
|
140
147
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TngTabList, "[tngTabList]", ["tngTabList"], { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
141
148
|
}
|
|
142
|
-
export declare class TngTabsScrollButtonPrev {
|
|
149
|
+
export declare class TngTabsScrollButtonPrev implements OnDestroy {
|
|
143
150
|
private readonly tabs;
|
|
144
151
|
protected readonly dataSlot: "tabs-scroll-button-prev";
|
|
145
152
|
protected get hidden(): '' | null;
|
|
@@ -152,7 +159,7 @@ export declare class TngTabsScrollButtonPrev {
|
|
|
152
159
|
static ɵfac: i0.ɵɵFactoryDeclaration<TngTabsScrollButtonPrev, never>;
|
|
153
160
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TngTabsScrollButtonPrev, "[tngTabsScrollButtonPrev]", ["tngTabsScrollButtonPrev"], {}, {}, never, never, true, never>;
|
|
154
161
|
}
|
|
155
|
-
export declare class TngTabsScrollButtonNext {
|
|
162
|
+
export declare class TngTabsScrollButtonNext implements OnDestroy {
|
|
156
163
|
private readonly tabs;
|
|
157
164
|
protected readonly dataSlot: "tabs-scroll-button-next";
|
|
158
165
|
protected get hidden(): '' | null;
|
|
@@ -165,7 +172,7 @@ export declare class TngTabsScrollButtonNext {
|
|
|
165
172
|
static ɵfac: i0.ɵɵFactoryDeclaration<TngTabsScrollButtonNext, never>;
|
|
166
173
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TngTabsScrollButtonNext, "[tngTabsScrollButtonNext]", ["tngTabsScrollButtonNext"], {}, {}, never, never, true, never>;
|
|
167
174
|
}
|
|
168
|
-
export declare class TngTab {
|
|
175
|
+
export declare class TngTab implements DoCheck, OnDestroy, OnInit {
|
|
169
176
|
private readonly hostRef;
|
|
170
177
|
private readonly tabs;
|
|
171
178
|
private resolvedId;
|
|
@@ -204,7 +211,7 @@ export declare class TngTab {
|
|
|
204
211
|
static ɵfac: i0.ɵɵFactoryDeclaration<TngTab, never>;
|
|
205
212
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TngTab, "[tngTab]", ["tngTab"], { "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "panelId": { "alias": "panelId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
206
213
|
}
|
|
207
|
-
export declare class TngTabPanel {
|
|
214
|
+
export declare class TngTabPanel implements DoCheck, OnDestroy, OnInit {
|
|
208
215
|
private readonly hostRef;
|
|
209
216
|
private readonly tabs;
|
|
210
217
|
private resolvedId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tabs.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/tabs/tng-tabs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tng-tabs.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/tabs/tng-tabs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Directive, ElementRef, HostBinding, HostListener, inject, input, output
|
|
1
|
+
import { Directive, ElementRef, HostBinding, HostListener, inject, input, output } from '@angular/core';
|
|
2
2
|
import { createTngIdFactory } from '@tailng-ui/cdk';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
const createTabId = createTngIdFactory('tng-tab');
|
|
@@ -56,7 +56,7 @@ function normalizeOptionalValueInput(value) {
|
|
|
56
56
|
if (typeof value === 'number' || typeof value === 'string') {
|
|
57
57
|
return value;
|
|
58
58
|
}
|
|
59
|
-
return
|
|
59
|
+
return undefined;
|
|
60
60
|
}
|
|
61
61
|
function normalizeOptionalStringInput(value) {
|
|
62
62
|
if (value === undefined) {
|
|
@@ -65,12 +65,20 @@ function normalizeOptionalStringInput(value) {
|
|
|
65
65
|
if (value === null) {
|
|
66
66
|
return null;
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
if (typeof value === 'string') {
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
|
|
72
|
+
return String(value);
|
|
73
|
+
}
|
|
74
|
+
return undefined;
|
|
69
75
|
}
|
|
70
76
|
function valuesEqual(a, b) {
|
|
71
77
|
return a === b;
|
|
72
78
|
}
|
|
73
|
-
function compareByDomPosition(
|
|
79
|
+
function compareByDomPosition(elements, orders) {
|
|
80
|
+
const { aElement, bElement } = elements;
|
|
81
|
+
const { aOrder, bOrder } = orders;
|
|
74
82
|
if (aElement === bElement) {
|
|
75
83
|
return 0;
|
|
76
84
|
}
|
|
@@ -101,6 +109,7 @@ export class TngTabs {
|
|
|
101
109
|
scrollNextControl = null;
|
|
102
110
|
uncontrolledValue = null;
|
|
103
111
|
focusedValue = null;
|
|
112
|
+
domFocusedValue = null;
|
|
104
113
|
hasUserSelection = false;
|
|
105
114
|
initialized = false;
|
|
106
115
|
value = input(undefined, { ...(ngDevMode ? { debugName: "value" } : {}), transform: normalizeOptionalValueInput });
|
|
@@ -179,18 +188,27 @@ export class TngTabs {
|
|
|
179
188
|
const nextFocusedValue = this.resolveNeighborValueOnRemoval(orderedTabs, removedIndex);
|
|
180
189
|
this.focusedValue = nextFocusedValue;
|
|
181
190
|
}
|
|
191
|
+
if (this.domFocusedValue !== null && valuesEqual(this.domFocusedValue, removedValue)) {
|
|
192
|
+
this.domFocusedValue = null;
|
|
193
|
+
}
|
|
182
194
|
this.syncStateFromRegistry();
|
|
183
195
|
}
|
|
184
|
-
|
|
196
|
+
notifySelectedValueChanged(tab) {
|
|
185
197
|
const selectedValue = this.getEffectiveSelectedValue();
|
|
186
198
|
if (selectedValue !== null && valuesEqual(selectedValue, tab.getValue()) && tab.isDisabledInContext()) {
|
|
187
199
|
const replacement = this.resolveNeighborForDisabledTab(tab);
|
|
188
200
|
this.applyLifecycleSelection(replacement);
|
|
189
201
|
}
|
|
202
|
+
}
|
|
203
|
+
notifyTabMutated(tab) {
|
|
204
|
+
this.notifySelectedValueChanged(tab);
|
|
190
205
|
const focusedValue = this.resolveCurrentTabStopValue();
|
|
191
206
|
if (focusedValue !== null && valuesEqual(focusedValue, tab.getValue()) && tab.isDisabledInContext()) {
|
|
192
207
|
this.focusedValue = this.resolveNeighborForDisabledTab(tab);
|
|
193
208
|
}
|
|
209
|
+
if (this.domFocusedValue !== null && valuesEqual(this.domFocusedValue, tab.getValue()) && tab.isDisabledInContext()) {
|
|
210
|
+
this.domFocusedValue = null;
|
|
211
|
+
}
|
|
194
212
|
this.syncStateFromRegistry();
|
|
195
213
|
}
|
|
196
214
|
registerPanel(panel) {
|
|
@@ -304,8 +322,7 @@ export class TngTabs {
|
|
|
304
322
|
return valuesEqual(selectedValue, tab.getValue());
|
|
305
323
|
}
|
|
306
324
|
isTabFocused(tab) {
|
|
307
|
-
|
|
308
|
-
return tabStop !== null && valuesEqual(tabStop, tab.getValue());
|
|
325
|
+
return this.domFocusedValue !== null && valuesEqual(this.domFocusedValue, tab.getValue());
|
|
309
326
|
}
|
|
310
327
|
getPanelIdForTab(tab) {
|
|
311
328
|
const explicitPanelId = tab.getExplicitPanelId();
|
|
@@ -367,8 +384,21 @@ export class TngTabs {
|
|
|
367
384
|
return;
|
|
368
385
|
}
|
|
369
386
|
this.setFocusedValue(tab.getValue(), trigger);
|
|
387
|
+
this.domFocusedValue = tab.getValue();
|
|
370
388
|
this.scrollTabIntoView(tab);
|
|
371
389
|
}
|
|
390
|
+
onTabListFocusOut(event) {
|
|
391
|
+
const nextTarget = event.relatedTarget;
|
|
392
|
+
if (!(nextTarget instanceof Element)) {
|
|
393
|
+
this.domFocusedValue = null;
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
const tabListElement = this.getTabListElement();
|
|
397
|
+
if (tabListElement?.contains(nextTarget)) {
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
this.domFocusedValue = null;
|
|
401
|
+
}
|
|
372
402
|
requestSelection(tab, trigger) {
|
|
373
403
|
if (this.disabled() || tab.isDisabledInContext()) {
|
|
374
404
|
return;
|
|
@@ -392,16 +422,19 @@ export class TngTabs {
|
|
|
392
422
|
this.scrollTabIntoView(tab);
|
|
393
423
|
this.syncStateFromRegistry();
|
|
394
424
|
}
|
|
395
|
-
|
|
396
|
-
if (this.disabled() || tab.isDisabledInContext()) {
|
|
397
|
-
return;
|
|
398
|
-
}
|
|
425
|
+
hanlsFocusMove(tab, event) {
|
|
399
426
|
const focusMove = this.resolveFocusMove(event.key);
|
|
400
427
|
if (focusMove !== null) {
|
|
401
428
|
event.preventDefault();
|
|
402
429
|
this.moveFocusByAction(tab, focusMove, 'keyboard');
|
|
403
430
|
return;
|
|
404
431
|
}
|
|
432
|
+
}
|
|
433
|
+
handleTabKeydown(tab, event) {
|
|
434
|
+
if (this.disabled() || tab.isDisabledInContext()) {
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
this.hanlsFocusMove(tab, event);
|
|
405
438
|
if (event.key !== 'Enter' && event.key !== ' ' && event.key !== 'Spacebar') {
|
|
406
439
|
return;
|
|
407
440
|
}
|
|
@@ -565,25 +598,29 @@ export class TngTabs {
|
|
|
565
598
|
}
|
|
566
599
|
return enabledTabs[0]?.getValue() ?? null;
|
|
567
600
|
}
|
|
601
|
+
syncStateHandleUnInitialized(enabledTabs) {
|
|
602
|
+
if (!this.isControlled()) {
|
|
603
|
+
const defaultValue = this.defaultValue();
|
|
604
|
+
if (defaultValue !== undefined && defaultValue !== null) {
|
|
605
|
+
this.uncontrolledValue = this.findEnabledTabByValue(defaultValue, enabledTabs)?.getValue() ?? null;
|
|
606
|
+
}
|
|
607
|
+
else {
|
|
608
|
+
this.uncontrolledValue = enabledTabs[0]?.getValue() ?? null;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
}
|
|
568
612
|
syncStateFromRegistry() {
|
|
569
613
|
const enabledTabs = this.getEnabledTabs();
|
|
570
614
|
if (!this.initialized) {
|
|
571
615
|
this.initialized = true;
|
|
572
|
-
|
|
573
|
-
const defaultValue = this.defaultValue();
|
|
574
|
-
if (defaultValue !== undefined && defaultValue !== null) {
|
|
575
|
-
this.uncontrolledValue = this.findEnabledTabByValue(defaultValue, enabledTabs)?.getValue() ?? null;
|
|
576
|
-
}
|
|
577
|
-
else {
|
|
578
|
-
this.uncontrolledValue = enabledTabs[0]?.getValue() ?? null;
|
|
579
|
-
}
|
|
580
|
-
}
|
|
616
|
+
this.syncStateHandleUnInitialized(enabledTabs);
|
|
581
617
|
}
|
|
582
618
|
if (enabledTabs.length === 0) {
|
|
583
619
|
if (!this.isControlled()) {
|
|
584
620
|
this.uncontrolledValue = null;
|
|
585
621
|
}
|
|
586
622
|
this.focusedValue = null;
|
|
623
|
+
this.domFocusedValue = null;
|
|
587
624
|
return;
|
|
588
625
|
}
|
|
589
626
|
if (!this.isControlled()) {
|
|
@@ -593,8 +630,8 @@ export class TngTabs {
|
|
|
593
630
|
if (defaultTab !== null) {
|
|
594
631
|
this.uncontrolledValue = defaultTab.getValue();
|
|
595
632
|
}
|
|
596
|
-
else
|
|
597
|
-
this.uncontrolledValue
|
|
633
|
+
else {
|
|
634
|
+
this.uncontrolledValue ??= enabledTabs[0]?.getValue() ?? null;
|
|
598
635
|
}
|
|
599
636
|
}
|
|
600
637
|
else {
|
|
@@ -654,7 +691,9 @@ export class TngTabs {
|
|
|
654
691
|
}
|
|
655
692
|
getOrderedTabs() {
|
|
656
693
|
const tabs = Array.from(this.tabs);
|
|
657
|
-
tabs.sort((a, b) => compareByDomPosition(
|
|
694
|
+
tabs.sort((a, b) => compareByDomPosition({ aElement: a.getHostElement(),
|
|
695
|
+
bElement: b.getHostElement(), }, { aOrder: a.getRegistrationOrder(),
|
|
696
|
+
bOrder: b.getRegistrationOrder(), }));
|
|
658
697
|
return tabs;
|
|
659
698
|
}
|
|
660
699
|
getEnabledTabs() {
|
|
@@ -662,7 +701,9 @@ export class TngTabs {
|
|
|
662
701
|
}
|
|
663
702
|
getOrderedPanels() {
|
|
664
703
|
const panels = Array.from(this.panels);
|
|
665
|
-
panels.sort((a, b) => compareByDomPosition(
|
|
704
|
+
panels.sort((a, b) => compareByDomPosition({ aElement: a.getHostElement(),
|
|
705
|
+
bElement: b.getHostElement(), }, { aOrder: a.getRegistrationOrder(),
|
|
706
|
+
bOrder: b.getRegistrationOrder(), }));
|
|
666
707
|
return panels;
|
|
667
708
|
}
|
|
668
709
|
findTabByValue(value) {
|
|
@@ -754,7 +795,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
754
795
|
args: [{
|
|
755
796
|
selector: '[tngTabs]',
|
|
756
797
|
exportAs: 'tngTabs',
|
|
757
|
-
standalone: true,
|
|
758
798
|
}]
|
|
759
799
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], activation: [{ type: i0.Input, args: [{ isSignal: true, alias: "activation", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], scrollButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollButtons", required: false }] }], loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], keepAlive: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepAlive", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], tabChange: [{ type: i0.Output, args: ["tabChange"] }], focusChange: [{ type: i0.Output, args: ["focusChange"] }], dataSlot: [{
|
|
760
800
|
type: HostBinding,
|
|
@@ -772,10 +812,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
772
812
|
export class TngTabList {
|
|
773
813
|
hostRef = inject(ElementRef);
|
|
774
814
|
tabs = inject(TngTabs, { host: true });
|
|
775
|
-
ariaLabel = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabel" } : {}),
|
|
776
|
-
|
|
777
|
-
ariaLabelledby = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabelledby" } : {}), alias: 'ariaLabelledby',
|
|
778
|
-
transform: normalizeOptionalStringInput });
|
|
815
|
+
ariaLabel = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabel" } : {}), transform: normalizeOptionalStringInput });
|
|
816
|
+
ariaLabelledby = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabelledby" } : {}), transform: normalizeOptionalStringInput });
|
|
779
817
|
dataSlot = 'tab-list';
|
|
780
818
|
role = 'tablist';
|
|
781
819
|
tabIndex = '-1';
|
|
@@ -800,6 +838,9 @@ export class TngTabList {
|
|
|
800
838
|
onScroll() {
|
|
801
839
|
this.tabs.onTabListScrolled();
|
|
802
840
|
}
|
|
841
|
+
onFocusout(event) {
|
|
842
|
+
this.tabs.onTabListFocusOut(event);
|
|
843
|
+
}
|
|
803
844
|
onFocus() {
|
|
804
845
|
this.tabs.onTabListFocused();
|
|
805
846
|
}
|
|
@@ -807,14 +848,13 @@ export class TngTabList {
|
|
|
807
848
|
return this.hostRef.nativeElement;
|
|
808
849
|
}
|
|
809
850
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTabList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
810
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngTabList, isStandalone: true, selector: "[tngTabList]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "ariaLabelledby", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "wheel": "onWheel($event)", "scroll": "onScroll()", "focus": "onFocus()" }, properties: { "attr.data-slot": "this.dataSlot", "attr.role": "this.role", "attr.tabindex": "this.tabIndex", "attr.aria-orientation": "this.ariaOrientation", "attr.aria-label": "this.hostAriaLabel", "attr.aria-labelledby": "this.hostAriaLabelledby" } }, exportAs: ["tngTabList"], ngImport: i0 });
|
|
851
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngTabList, isStandalone: true, selector: "[tngTabList]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "ariaLabelledby", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "wheel": "onWheel($event)", "scroll": "onScroll()", "focusout": "onFocusout($event)", "focus": "onFocus()" }, properties: { "attr.data-slot": "this.dataSlot", "attr.role": "this.role", "attr.tabindex": "this.tabIndex", "attr.aria-orientation": "this.ariaOrientation", "attr.aria-label": "this.hostAriaLabel", "attr.aria-labelledby": "this.hostAriaLabelledby" } }, exportAs: ["tngTabList"], ngImport: i0 });
|
|
811
852
|
}
|
|
812
853
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTabList, decorators: [{
|
|
813
854
|
type: Directive,
|
|
814
855
|
args: [{
|
|
815
856
|
selector: '[tngTabList]',
|
|
816
857
|
exportAs: 'tngTabList',
|
|
817
|
-
standalone: true,
|
|
818
858
|
}]
|
|
819
859
|
}], ctorParameters: () => [], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledby", required: false }] }], dataSlot: [{
|
|
820
860
|
type: HostBinding,
|
|
@@ -840,6 +880,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
840
880
|
}], onScroll: [{
|
|
841
881
|
type: HostListener,
|
|
842
882
|
args: ['scroll']
|
|
883
|
+
}], onFocusout: [{
|
|
884
|
+
type: HostListener,
|
|
885
|
+
args: ['focusout', ['$event']]
|
|
843
886
|
}], onFocus: [{
|
|
844
887
|
type: HostListener,
|
|
845
888
|
args: ['focus']
|
|
@@ -876,7 +919,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
876
919
|
args: [{
|
|
877
920
|
selector: '[tngTabsScrollButtonPrev]',
|
|
878
921
|
exportAs: 'tngTabsScrollButtonPrev',
|
|
879
|
-
standalone: true,
|
|
880
922
|
}]
|
|
881
923
|
}], ctorParameters: () => [], propDecorators: { dataSlot: [{
|
|
882
924
|
type: HostBinding,
|
|
@@ -929,7 +971,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
929
971
|
args: [{
|
|
930
972
|
selector: '[tngTabsScrollButtonNext]',
|
|
931
973
|
exportAs: 'tngTabsScrollButtonNext',
|
|
932
|
-
standalone: true,
|
|
933
974
|
}]
|
|
934
975
|
}], ctorParameters: () => [], propDecorators: { dataSlot: [{
|
|
935
976
|
type: HostBinding,
|
|
@@ -961,8 +1002,7 @@ export class TngTab {
|
|
|
961
1002
|
transform: normalizeOptionalValueInput });
|
|
962
1003
|
disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : {}), alias: 'disabled',
|
|
963
1004
|
transform: normalizeBooleanInput });
|
|
964
|
-
panelId = input(undefined, { ...(ngDevMode ? { debugName: "panelId" } : {}),
|
|
965
|
-
transform: normalizeOptionalStringInput });
|
|
1005
|
+
panelId = input(undefined, { ...(ngDevMode ? { debugName: "panelId" } : {}), transform: normalizeOptionalStringInput });
|
|
966
1006
|
dataSlot = 'tab';
|
|
967
1007
|
role = 'tab';
|
|
968
1008
|
get id() {
|
|
@@ -1086,7 +1126,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
1086
1126
|
args: [{
|
|
1087
1127
|
selector: '[tngTab]',
|
|
1088
1128
|
exportAs: 'tngTab',
|
|
1089
|
-
standalone: true,
|
|
1090
1129
|
}]
|
|
1091
1130
|
}], ctorParameters: () => [], propDecorators: { valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], panelId: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelId", required: false }] }], dataSlot: [{
|
|
1092
1131
|
type: HostBinding,
|
|
@@ -1142,10 +1181,8 @@ export class TngTabPanel {
|
|
|
1142
1181
|
lastKnownValue = null;
|
|
1143
1182
|
valueInput = input(undefined, { ...(ngDevMode ? { debugName: "valueInput" } : {}), alias: 'value',
|
|
1144
1183
|
transform: normalizeOptionalValueInput });
|
|
1145
|
-
labelledById = input(undefined, { ...(ngDevMode ? { debugName: "labelledById" } : {}),
|
|
1146
|
-
|
|
1147
|
-
unmountOnExit = input(false, { ...(ngDevMode ? { debugName: "unmountOnExit" } : {}), alias: 'unmountOnExit',
|
|
1148
|
-
transform: normalizeBooleanInput });
|
|
1184
|
+
labelledById = input(undefined, { ...(ngDevMode ? { debugName: "labelledById" } : {}), transform: normalizeOptionalStringInput });
|
|
1185
|
+
unmountOnExit = input(false, { ...(ngDevMode ? { debugName: "unmountOnExit" } : {}), transform: normalizeBooleanInput });
|
|
1149
1186
|
dataSlot = 'tab-panel';
|
|
1150
1187
|
role = 'tabpanel';
|
|
1151
1188
|
get id() {
|
|
@@ -1302,7 +1339,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
1302
1339
|
args: [{
|
|
1303
1340
|
selector: '[tngTabPanel]',
|
|
1304
1341
|
exportAs: 'tngTabPanel',
|
|
1305
|
-
standalone: true,
|
|
1306
1342
|
}]
|
|
1307
1343
|
}], ctorParameters: () => [], propDecorators: { valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], labelledById: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelledById", required: false }] }], unmountOnExit: [{ type: i0.Input, args: [{ isSignal: true, alias: "unmountOnExit", required: false }] }], dataSlot: [{
|
|
1308
1344
|
type: HostBinding,
|