@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.
Files changed (244) hide show
  1. package/package.json +3 -2
  2. package/src/index.d.ts +1 -0
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +1 -0
  5. package/src/index.js.map +1 -1
  6. package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
  7. package/src/lib/feedback/empty/tng-empty.js +0 -5
  8. package/src/lib/feedback/empty/tng-empty.js.map +1 -1
  9. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
  10. package/src/lib/feedback/progress-bar/tng-progress-bar.js +0 -2
  11. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
  12. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
  13. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +0 -1
  14. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
  15. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
  16. package/src/lib/feedback/skeleton/tng-skeleton.js +0 -1
  17. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
  18. package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
  19. package/src/lib/feedback/toast/tng-toast.js +0 -2
  20. package/src/lib/feedback/toast/tng-toast.js.map +1 -1
  21. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
  22. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +0 -1
  23. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
  24. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -1
  25. package/src/lib/form/_shared/select/tng-select.parts.shared.js +0 -4
  26. package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
  27. package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
  28. package/src/lib/form/autocomplete/tng-autocomplete.js +0 -1
  29. package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
  30. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
  31. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +0 -2
  32. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
  33. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
  34. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +0 -1
  35. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
  36. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
  37. package/src/lib/form/autocomplete/tng-autocomplete.parts.js +0 -4
  38. package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
  39. package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
  40. package/src/lib/form/button-toggle/tng-button-toggle.js +0 -2
  41. package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
  42. package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
  43. package/src/lib/form/checkbox/tng-checkbox.js +0 -1
  44. package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
  45. package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
  46. package/src/lib/form/chips/tng-chips.js +0 -3
  47. package/src/lib/form/chips/tng-chips.js.map +1 -1
  48. package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
  49. package/src/lib/form/combobox/tng-combobox.js +0 -1
  50. package/src/lib/form/combobox/tng-combobox.js.map +1 -1
  51. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts +25 -0
  52. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts.map +1 -0
  53. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js +105 -0
  54. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js.map +1 -0
  55. package/src/lib/form/datepicker/datepicker.adapters.d.ts +5 -0
  56. package/src/lib/form/datepicker/datepicker.adapters.d.ts.map +1 -0
  57. package/src/lib/form/datepicker/datepicker.adapters.js +194 -0
  58. package/src/lib/form/datepicker/datepicker.adapters.js.map +1 -0
  59. package/src/lib/form/datepicker/datepicker.state.d.ts +10 -0
  60. package/src/lib/form/datepicker/datepicker.state.d.ts.map +1 -0
  61. package/src/lib/form/datepicker/datepicker.state.js +97 -0
  62. package/src/lib/form/datepicker/datepicker.state.js.map +1 -0
  63. package/src/lib/form/datepicker/datepicker.types.d.ts +269 -0
  64. package/src/lib/form/datepicker/datepicker.types.d.ts.map +1 -0
  65. package/src/lib/form/datepicker/datepicker.types.js +1 -0
  66. package/src/lib/form/datepicker/datepicker.types.js.map +1 -0
  67. package/src/lib/form/datepicker/datepicker.utils.d.ts +75 -0
  68. package/src/lib/form/datepicker/datepicker.utils.d.ts.map +1 -0
  69. package/src/lib/form/datepicker/datepicker.utils.js +238 -0
  70. package/src/lib/form/datepicker/datepicker.utils.js.map +1 -0
  71. package/src/lib/form/datepicker/index.d.ts +3 -0
  72. package/src/lib/form/datepicker/index.d.ts.map +1 -0
  73. package/src/lib/form/datepicker/index.js +3 -0
  74. package/src/lib/form/datepicker/index.js.map +1 -0
  75. package/src/lib/form/datepicker/tng-datepicker.d.ts +5 -0
  76. package/src/lib/form/datepicker/tng-datepicker.d.ts.map +1 -0
  77. package/src/lib/form/datepicker/tng-datepicker.js +1948 -0
  78. package/src/lib/form/datepicker/tng-datepicker.js.map +1 -0
  79. package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts +60 -0
  80. package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts.map +1 -0
  81. package/src/lib/form/datepicker/tng-datepicker.overlay.js +275 -0
  82. package/src/lib/form/datepicker/tng-datepicker.overlay.js.map +1 -0
  83. package/src/lib/form/input/tng-input.d.ts.map +1 -1
  84. package/src/lib/form/input/tng-input.js +0 -4
  85. package/src/lib/form/input/tng-input.js.map +1 -1
  86. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
  87. package/src/lib/form/input-otp/tng-input-otp.js +0 -1
  88. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
  89. package/src/lib/form/label/tng-label.d.ts.map +1 -1
  90. package/src/lib/form/label/tng-label.js +0 -1
  91. package/src/lib/form/label/tng-label.js.map +1 -1
  92. package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
  93. package/src/lib/form/listbox/listbox.directive.js +0 -1
  94. package/src/lib/form/listbox/listbox.directive.js.map +1 -1
  95. package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
  96. package/src/lib/form/listbox/option.directive.js +0 -1
  97. package/src/lib/form/listbox/option.directive.js.map +1 -1
  98. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -1
  99. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +0 -1
  100. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -1
  101. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -1
  102. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +0 -1
  103. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -1
  104. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -1
  105. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +0 -1
  106. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -1
  107. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -1
  108. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +0 -2
  109. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -1
  110. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
  111. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +0 -1
  112. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
  113. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
  114. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +0 -1
  115. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
  116. package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -1
  117. package/src/lib/form/multi-select/tng-multi-select.js +0 -1
  118. package/src/lib/form/multi-select/tng-multi-select.js.map +1 -1
  119. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -1
  120. package/src/lib/form/multi-select/tng-multi-select.listbox.js +0 -2
  121. package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
  122. package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
  123. package/src/lib/form/multiselect/tng-multiselect.js +0 -1
  124. package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
  125. package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
  126. package/src/lib/form/radio/tng-radio.js +0 -1
  127. package/src/lib/form/radio/tng-radio.js.map +1 -1
  128. package/src/lib/form/select/tng-select.d.ts.map +1 -1
  129. package/src/lib/form/select/tng-select.js +0 -1
  130. package/src/lib/form/select/tng-select.js.map +1 -1
  131. package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
  132. package/src/lib/form/select/tng-select.listbox.js +0 -2
  133. package/src/lib/form/select/tng-select.listbox.js.map +1 -1
  134. package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
  135. package/src/lib/form/slider/tng-slider.js +0 -1
  136. package/src/lib/form/slider/tng-slider.js.map +1 -1
  137. package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
  138. package/src/lib/form/switch/tng-switch.js +0 -1
  139. package/src/lib/form/switch/tng-switch.js.map +1 -1
  140. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
  141. package/src/lib/form/textarea/tng-textarea.js +0 -1
  142. package/src/lib/form/textarea/tng-textarea.js.map +1 -1
  143. package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
  144. package/src/lib/form/toggle/tng-toggle.js +0 -1
  145. package/src/lib/form/toggle/tng-toggle.js.map +1 -1
  146. package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
  147. package/src/lib/form/toggle-group/tng-toggle-group.js +0 -1
  148. package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
  149. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
  150. package/src/lib/layout/accordion/tng-accordion.js +0 -4
  151. package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
  152. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
  153. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +0 -1
  154. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
  155. package/src/lib/layout/card/tng-card.d.ts.map +1 -1
  156. package/src/lib/layout/card/tng-card.js +0 -10
  157. package/src/lib/layout/card/tng-card.js.map +1 -1
  158. package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
  159. package/src/lib/layout/collapsible/tng-collapsible.js +0 -3
  160. package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
  161. package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
  162. package/src/lib/layout/drawer/tng-drawer.js +0 -6
  163. package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
  164. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts +32 -0
  165. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts.map +1 -0
  166. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js +312 -0
  167. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js.map +1 -0
  168. package/src/lib/layout/grid/tng-grid.d.ts +144 -2
  169. package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
  170. package/src/lib/layout/grid/tng-grid.js +669 -3
  171. package/src/lib/layout/grid/tng-grid.js.map +1 -1
  172. package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
  173. package/src/lib/layout/separator/tng-separator.js +0 -1
  174. package/src/lib/layout/separator/tng-separator.js.map +1 -1
  175. package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
  176. package/src/lib/layout/stepper/tng-stepper.js +0 -1
  177. package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
  178. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -1
  179. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +0 -1
  180. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
  181. package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
  182. package/src/lib/layout/tree/tng-tree-group.js +0 -1
  183. package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
  184. package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
  185. package/src/lib/layout/tree/tng-tree-indicator.js +0 -1
  186. package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
  187. package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
  188. package/src/lib/layout/tree/tng-tree-item.js +0 -1
  189. package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
  190. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
  191. package/src/lib/layout/tree/tng-tree.js +0 -1
  192. package/src/lib/layout/tree/tng-tree.js.map +1 -1
  193. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
  194. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +0 -5
  195. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
  196. package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
  197. package/src/lib/navigation/context-menu/tng-context-menu.js +0 -2
  198. package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
  199. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
  200. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +0 -1
  201. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
  202. package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
  203. package/src/lib/navigation/menu/tng-menu.js +0 -6
  204. package/src/lib/navigation/menu/tng-menu.js.map +1 -1
  205. package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
  206. package/src/lib/navigation/menubar/tng-menubar.js +0 -2
  207. package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
  208. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
  209. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +0 -1
  210. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
  211. package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -6
  212. package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
  213. package/src/lib/navigation/tabs/tng-tabs.js +77 -41
  214. package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
  215. package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
  216. package/src/lib/navigation/toolbar/tng-toolbar.js +0 -1
  217. package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
  218. package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
  219. package/src/lib/overlay/dialog/tng-dialog.js +0 -9
  220. package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
  221. package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
  222. package/src/lib/overlay/popover/tng-popover.js +0 -4
  223. package/src/lib/overlay/popover/tng-popover.js.map +1 -1
  224. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
  225. package/src/lib/overlay/tooltip/tng-tooltip.js +0 -3
  226. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
  227. package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
  228. package/src/lib/utility/avatar/tng-avatar.js +0 -3
  229. package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
  230. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
  231. package/src/lib/utility/badge/tng-badge.js +0 -1
  232. package/src/lib/utility/badge/tng-badge.js.map +1 -1
  233. package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
  234. package/src/lib/utility/code-block/tng-code-block.js +0 -5
  235. package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
  236. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
  237. package/src/lib/utility/copy/tng-copy.js +0 -1
  238. package/src/lib/utility/copy/tng-copy.js.map +1 -1
  239. package/src/lib/utility/press/tng-press.d.ts.map +1 -1
  240. package/src/lib/utility/press/tng-press.js +0 -1
  241. package/src/lib/utility/press/tng-press.js.map +1 -1
  242. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
  243. package/src/lib/utility/tag/tng-tag.js +0 -3
  244. 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,qBAKa,iBAAiB;IAE5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,iBAAiB,CAAU;yCAF9C,iBAAiB;2CAAjB,iBAAiB;CAG7B"}
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"}
@@ -10,7 +10,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
10
10
  args: [{
11
11
  selector: '[tngNavigationMenu]',
12
12
  exportAs: 'tngNavigationMenu',
13
- standalone: true,
14
13
  }]
15
14
  }], propDecorators: { dataSlot: [{
16
15
  type: HostBinding,
@@ -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;;AAOvD,MAAM,OAAO,iBAAiB;IAET,QAAQ,GAAG,iBAA0B,CAAC;uGAF9C,iBAAiB;2FAAjB,iBAAiB;;2FAAjB,iBAAiB;kBAL7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,mBAAmB;oBAC7B,UAAU,EAAE,IAAI;iBACjB;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngNavigationMenu]',\n exportAs: 'tngNavigationMenu',\n standalone: true,\n})\nexport class TngNavigationMenu {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'navigation-menu' as const;\n}\n"]}
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":"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"}
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, } from '@angular/core';
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 String(value);
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
- return String(value);
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(aElement, bElement, aOrder, bOrder) {
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
- notifyTabMutated(tab) {
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
- const tabStop = this.resolveCurrentTabStopValue();
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
- handleTabKeydown(tab, event) {
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
- if (!this.isControlled()) {
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 if (this.uncontrolledValue === null) {
597
- this.uncontrolledValue = enabledTabs[0]?.getValue() ?? null;
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(a.getHostElement(), b.getHostElement(), a.getRegistrationOrder(), b.getRegistrationOrder()));
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(a.getHostElement(), b.getHostElement(), a.getRegistrationOrder(), b.getRegistrationOrder()));
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" } : {}), alias: 'ariaLabel',
776
- transform: normalizeOptionalStringInput });
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" } : {}), alias: '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" } : {}), alias: 'labelledById',
1146
- transform: normalizeOptionalStringInput });
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,