@tailng-ui/components 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 (184) hide show
  1. package/package.json +3 -2
  2. package/src/lib/feedback/empty/tng-empty.component.d.ts.map +1 -1
  3. package/src/lib/feedback/empty/tng-empty.component.js +0 -5
  4. package/src/lib/feedback/empty/tng-empty.component.js.map +1 -1
  5. package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts.map +1 -1
  6. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js +0 -1
  7. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js.map +1 -1
  8. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts.map +1 -1
  9. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js +0 -1
  10. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js.map +1 -1
  11. package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts.map +1 -1
  12. package/src/lib/feedback/skeleton/tng-skeleton.component.js +0 -1
  13. package/src/lib/feedback/skeleton/tng-skeleton.component.js.map +1 -1
  14. package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -1
  15. package/src/lib/feedback/toast/tng-toast.component.js +0 -1
  16. package/src/lib/feedback/toast/tng-toast.component.js.map +1 -1
  17. package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts.map +1 -1
  18. package/src/lib/form/autocomplete/tng-autocomplete.component.js +0 -1
  19. package/src/lib/form/autocomplete/tng-autocomplete.component.js.map +1 -1
  20. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts +2 -2
  21. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts.map +1 -1
  22. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js +0 -1
  23. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js.map +1 -1
  24. package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts.map +1 -1
  25. package/src/lib/form/button-toggle/tng-button-toggle.component.js +0 -1
  26. package/src/lib/form/button-toggle/tng-button-toggle.component.js.map +1 -1
  27. package/src/lib/form/checkbox/tng-checkbox.component.d.ts.map +1 -1
  28. package/src/lib/form/checkbox/tng-checkbox.component.js +0 -1
  29. package/src/lib/form/checkbox/tng-checkbox.component.js.map +1 -1
  30. package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -1
  31. package/src/lib/form/chips/tng-chips.component.js +0 -1
  32. package/src/lib/form/chips/tng-chips.component.js.map +1 -1
  33. package/src/lib/form/combobox/tng-combobox.component.d.ts.map +1 -1
  34. package/src/lib/form/combobox/tng-combobox.component.js +0 -1
  35. package/src/lib/form/combobox/tng-combobox.component.js.map +1 -1
  36. package/src/lib/form/datepicker/tng-datepicker.component.d.ts +236 -0
  37. package/src/lib/form/datepicker/tng-datepicker.component.d.ts.map +1 -0
  38. package/src/lib/form/datepicker/tng-datepicker.component.js +684 -0
  39. package/src/lib/form/datepicker/tng-datepicker.component.js.map +1 -0
  40. package/src/lib/form/index.d.ts +2 -0
  41. package/src/lib/form/index.d.ts.map +1 -1
  42. package/src/lib/form/index.js +2 -0
  43. package/src/lib/form/index.js.map +1 -1
  44. package/src/lib/form/input/tng-input.component.d.ts.map +1 -1
  45. package/src/lib/form/input/tng-input.component.js +0 -1
  46. package/src/lib/form/input/tng-input.component.js.map +1 -1
  47. package/src/lib/form/input-otp/tng-input-otp.component.d.ts.map +1 -1
  48. package/src/lib/form/input-otp/tng-input-otp.component.js +0 -1
  49. package/src/lib/form/input-otp/tng-input-otp.component.js.map +1 -1
  50. package/src/lib/form/label/tng-label.component.d.ts.map +1 -1
  51. package/src/lib/form/label/tng-label.component.js +0 -1
  52. package/src/lib/form/label/tng-label.component.js.map +1 -1
  53. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts.map +1 -1
  54. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js +0 -1
  55. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js.map +1 -1
  56. package/src/lib/form/multiselect/tng-multiselect.component.d.ts.map +1 -1
  57. package/src/lib/form/multiselect/tng-multiselect.component.js +0 -1
  58. package/src/lib/form/multiselect/tng-multiselect.component.js.map +1 -1
  59. package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -1
  60. package/src/lib/form/radio/tng-radio.component.js +0 -1
  61. package/src/lib/form/radio/tng-radio.component.js.map +1 -1
  62. package/src/lib/form/select/tng-select.component.d.ts.map +1 -1
  63. package/src/lib/form/select/tng-select.component.js +0 -1
  64. package/src/lib/form/select/tng-select.component.js.map +1 -1
  65. package/src/lib/form/select/tng-select.slots.d.ts.map +1 -1
  66. package/src/lib/form/select/tng-select.slots.js +0 -2
  67. package/src/lib/form/select/tng-select.slots.js.map +1 -1
  68. package/src/lib/form/slider/tng-slider.component.d.ts.map +1 -1
  69. package/src/lib/form/slider/tng-slider.component.js +0 -1
  70. package/src/lib/form/slider/tng-slider.component.js.map +1 -1
  71. package/src/lib/form/switch/tng-switch.component.d.ts.map +1 -1
  72. package/src/lib/form/switch/tng-switch.component.js +0 -1
  73. package/src/lib/form/switch/tng-switch.component.js.map +1 -1
  74. package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -1
  75. package/src/lib/form/textarea/tng-textarea.component.js +0 -1
  76. package/src/lib/form/textarea/tng-textarea.component.js.map +1 -1
  77. package/src/lib/form/toggle/tng-toggle.component.d.ts.map +1 -1
  78. package/src/lib/form/toggle/tng-toggle.component.js +0 -1
  79. package/src/lib/form/toggle/tng-toggle.component.js.map +1 -1
  80. package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts.map +1 -1
  81. package/src/lib/form/toggle-group/tng-toggle-group.component.js +0 -1
  82. package/src/lib/form/toggle-group/tng-toggle-group.component.js.map +1 -1
  83. package/src/lib/layout/accordion/tng-accordion.component.d.ts.map +1 -1
  84. package/src/lib/layout/accordion/tng-accordion.component.js +0 -4
  85. package/src/lib/layout/accordion/tng-accordion.component.js.map +1 -1
  86. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts.map +1 -1
  87. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js +0 -1
  88. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js.map +1 -1
  89. package/src/lib/layout/card/tng-card.component.d.ts +1 -1
  90. package/src/lib/layout/card/tng-card.component.d.ts.map +1 -1
  91. package/src/lib/layout/card/tng-card.component.js +0 -10
  92. package/src/lib/layout/card/tng-card.component.js.map +1 -1
  93. package/src/lib/layout/collapsible/tng-collapsible.component.d.ts.map +1 -1
  94. package/src/lib/layout/collapsible/tng-collapsible.component.js +0 -1
  95. package/src/lib/layout/collapsible/tng-collapsible.component.js.map +1 -1
  96. package/src/lib/layout/drawer/tng-drawer.component.d.ts.map +1 -1
  97. package/src/lib/layout/drawer/tng-drawer.component.js +0 -1
  98. package/src/lib/layout/drawer/tng-drawer.component.js.map +1 -1
  99. package/src/lib/layout/grid/tng-grid.component.d.ts +4 -1
  100. package/src/lib/layout/grid/tng-grid.component.d.ts.map +1 -1
  101. package/src/lib/layout/grid/tng-grid.component.js +101 -5
  102. package/src/lib/layout/grid/tng-grid.component.js.map +1 -1
  103. package/src/lib/layout/index.d.ts +1 -1
  104. package/src/lib/layout/index.d.ts.map +1 -1
  105. package/src/lib/layout/index.js +1 -1
  106. package/src/lib/layout/index.js.map +1 -1
  107. package/src/lib/layout/separator/tng-separator.component.d.ts.map +1 -1
  108. package/src/lib/layout/separator/tng-separator.component.js +0 -1
  109. package/src/lib/layout/separator/tng-separator.component.js.map +1 -1
  110. package/src/lib/layout/stepper/tng-stepper.component.d.ts.map +1 -1
  111. package/src/lib/layout/stepper/tng-stepper.component.js +0 -1
  112. package/src/lib/layout/stepper/tng-stepper.component.js.map +1 -1
  113. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -1
  114. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +0 -1
  115. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -1
  116. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts.map +1 -1
  117. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js +0 -1
  118. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js.map +1 -1
  119. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts.map +1 -1
  120. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js +0 -1
  121. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js.map +1 -1
  122. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts.map +1 -1
  123. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js +0 -1
  124. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js.map +1 -1
  125. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts.map +1 -1
  126. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js +0 -1
  127. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js.map +1 -1
  128. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts.map +1 -1
  129. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js +0 -1
  130. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js.map +1 -1
  131. package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts.map +1 -1
  132. package/src/lib/navigation/context-menu/tng-context-menu.component.js +0 -1
  133. package/src/lib/navigation/context-menu/tng-context-menu.component.js.map +1 -1
  134. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts.map +1 -1
  135. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js +0 -1
  136. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js.map +1 -1
  137. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts.map +1 -1
  138. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js +0 -1
  139. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js.map +1 -1
  140. package/src/lib/navigation/menu/tng-menu.component.d.ts.map +1 -1
  141. package/src/lib/navigation/menu/tng-menu.component.js +0 -1
  142. package/src/lib/navigation/menu/tng-menu.component.js.map +1 -1
  143. package/src/lib/navigation/menubar/tng-menubar.component.d.ts.map +1 -1
  144. package/src/lib/navigation/menubar/tng-menubar.component.js +0 -1
  145. package/src/lib/navigation/menubar/tng-menubar.component.js.map +1 -1
  146. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts.map +1 -1
  147. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js +0 -1
  148. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js.map +1 -1
  149. package/src/lib/navigation/tabs/tng-tabs.component.d.ts.map +1 -1
  150. package/src/lib/navigation/tabs/tng-tabs.component.js +0 -1
  151. package/src/lib/navigation/tabs/tng-tabs.component.js.map +1 -1
  152. package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts.map +1 -1
  153. package/src/lib/navigation/toolbar/tng-toolbar.component.js +0 -1
  154. package/src/lib/navigation/toolbar/tng-toolbar.component.js.map +1 -1
  155. package/src/lib/overlay/dialog/tng-dialog.component.d.ts.map +1 -1
  156. package/src/lib/overlay/dialog/tng-dialog.component.js +0 -1
  157. package/src/lib/overlay/dialog/tng-dialog.component.js.map +1 -1
  158. package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -1
  159. package/src/lib/overlay/popover/tng-popover.component.js +0 -1
  160. package/src/lib/overlay/popover/tng-popover.component.js.map +1 -1
  161. package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -1
  162. package/src/lib/overlay/tooltip/tng-tooltip.component.js +0 -1
  163. package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -1
  164. package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -1
  165. package/src/lib/utility/avatar/tng-avatar.component.js +0 -1
  166. package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -1
  167. package/src/lib/utility/badge/tng-badge.component.d.ts.map +1 -1
  168. package/src/lib/utility/badge/tng-badge.component.js +0 -1
  169. package/src/lib/utility/badge/tng-badge.component.js.map +1 -1
  170. package/src/lib/utility/button/tng-button.component.d.ts.map +1 -1
  171. package/src/lib/utility/button/tng-button.component.js +0 -1
  172. package/src/lib/utility/button/tng-button.component.js.map +1 -1
  173. package/src/lib/utility/code-block/tng-code-block.component.d.ts.map +1 -1
  174. package/src/lib/utility/code-block/tng-code-block.component.js +0 -1
  175. package/src/lib/utility/code-block/tng-code-block.component.js.map +1 -1
  176. package/src/lib/utility/copy-button/tng-copy-button.component.d.ts.map +1 -1
  177. package/src/lib/utility/copy-button/tng-copy-button.component.js +0 -1
  178. package/src/lib/utility/copy-button/tng-copy-button.component.js.map +1 -1
  179. package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -1
  180. package/src/lib/utility/tag/tng-tag.component.js +0 -1
  181. package/src/lib/utility/tag/tng-tag.component.js.map +1 -1
  182. package/src/lib/utility/tree/tng-tree.component.d.ts.map +1 -1
  183. package/src/lib/utility/tree/tng-tree.component.js +0 -1
  184. package/src/lib/utility/tree/tng-tree.component.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tng-breadcrumb.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/breadcrumb/tng-breadcrumb.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ContentChild,\n ContentChildren,\n computed,\n effect,\n input,\n TemplateRef,\n type AfterContentInit,\n type QueryList,\n} from '@angular/core';\nimport { TngBreadcrumb as TngBreadcrumbPrimitive } from '@tailng-ui/primitives';\nimport { merge, Subscription } from 'rxjs';\nimport { TngBreadcrumbItemComponent, type TngBreadcrumbItemDisplayMode } from './tng-breadcrumb-item.component';\nimport { TngBreadcrumbListComponent } from './tng-breadcrumb-list.component';\nimport { TngBreadcrumbSeparatorTemplateDirective } from './tng-breadcrumb-separator-template.directive';\n\n@Component({\n standalone: true,\n selector: 'tng-breadcrumb',\n imports: [TngBreadcrumbPrimitive, TngBreadcrumbListComponent],\n templateUrl: './tng-breadcrumb.component.html',\n styleUrl: './tng-breadcrumb.component.css',\n})\nexport class TngBreadcrumbComponent implements AfterContentInit {\n @ContentChildren(TngBreadcrumbItemComponent, { descendants: true })\n private readonly breadcrumbItems?: QueryList<TngBreadcrumbItemComponent>;\n\n @ContentChild(TngBreadcrumbSeparatorTemplateDirective, { read: TemplateRef })\n private readonly separatorTemplate?: TemplateRef<unknown>;\n\n public readonly ariaLabel = input<string | null>('Breadcrumb');\n public readonly separator = input('/');\n public readonly maxItems = input<number | null>(null);\n public readonly itemsBeforeCollapse = input(1);\n public readonly itemsAfterCollapse = input(2);\n public readonly collapseLabel = input('More');\n\n protected readonly resolvedAriaLabel = computed(() => {\n const ariaLabel = this.ariaLabel();\n if (ariaLabel === null) {\n return 'Breadcrumb';\n }\n\n const trimmedAriaLabel = ariaLabel.trim();\n return trimmedAriaLabel.length > 0 ? trimmedAriaLabel : 'Breadcrumb';\n });\n\n private itemStateSubscriptions = Subscription.EMPTY;\n private readonly queryListSubscriptions = new Subscription();\n\n public constructor() {\n effect(() => {\n this.separator();\n this.maxItems();\n this.itemsBeforeCollapse();\n this.itemsAfterCollapse();\n this.collapseLabel();\n this.syncItems();\n });\n }\n\n public ngAfterContentInit(): void {\n this.rebindItemStateSubscriptions();\n if (this.breadcrumbItems === undefined) {\n return;\n }\n\n this.queryListSubscriptions.add(\n this.breadcrumbItems.changes.subscribe(() => {\n this.rebindItemStateSubscriptions();\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.itemStateSubscriptions.unsubscribe();\n this.queryListSubscriptions.unsubscribe();\n }\n\n private rebindItemStateSubscriptions(): void {\n this.itemStateSubscriptions.unsubscribe();\n\n const items = this.breadcrumbItems?.toArray() ?? [];\n if (items.length === 0) {\n this.syncItems();\n return;\n }\n\n this.itemStateSubscriptions = merge(...items.map((item) => item.stateChanges)).subscribe(() => {\n this.syncItems();\n });\n\n this.syncItems();\n }\n\n private syncItems(): void {\n const items = this.breadcrumbItems?.toArray() ?? [];\n if (items.length === 0) {\n return;\n }\n\n const currentIndex = this.resolveCurrentIndex(items);\n const displayModes = this.resolveDisplayModes(items, currentIndex);\n const visibleIndices = this.resolveVisibleIndices(displayModes);\n\n for (let index = 0; index < items.length; index += 1) {\n const item = items[index];\n const isVisible = displayModes[index] !== 'hidden';\n const isLastVisibleItem = !visibleIndices.some((visibleIndex) => visibleIndex > index);\n\n item.setResolvedCurrent(index === currentIndex);\n item.setDisplayMode(displayModes[index], this.collapseLabel());\n item.setSeparator(this.separator(), isVisible && !isLastVisibleItem, this.separatorTemplate ?? null);\n }\n }\n\n private resolveCurrentIndex(items: readonly TngBreadcrumbItemComponent[]): number {\n const explicitlyCurrentIndices = items.reduce<number[]>((accumulator, item, index) => {\n if (item.current()) {\n accumulator.push(index);\n }\n return accumulator;\n }, []);\n\n if (explicitlyCurrentIndices.length > 0) {\n return explicitlyCurrentIndices[explicitlyCurrentIndices.length - 1];\n }\n\n if (items.length === 1) {\n return 0;\n }\n\n return -1;\n }\n\n // eslint-disable-next-line complexity,max-lines-per-function\n private resolveDisplayModes(\n items: readonly TngBreadcrumbItemComponent[],\n currentIndex: number,\n ): readonly TngBreadcrumbItemDisplayMode[] {\n const itemCount = items.length;\n const maxItems = this.maxItems();\n if (maxItems === null || maxItems < 1 || itemCount <= maxItems) {\n return Array.from({ length: itemCount }, () => 'visible' as const);\n }\n\n const itemsBeforeCollapse = Math.max(1, Math.floor(this.itemsBeforeCollapse()));\n const itemsAfterCollapse = Math.max(1, Math.floor(this.itemsAfterCollapse()));\n const visibleIndices = new Set<number>();\n\n for (let index = 0; index < Math.min(itemsBeforeCollapse, itemCount); index += 1) {\n visibleIndices.add(index);\n }\n\n for (\n let index = Math.max(itemCount - itemsAfterCollapse, 0);\n index < itemCount;\n index += 1\n ) {\n visibleIndices.add(index);\n }\n\n if (currentIndex >= 0) {\n visibleIndices.add(currentIndex);\n }\n\n const hiddenIndices: number[] = [];\n for (let index = 0; index < itemCount; index += 1) {\n if (!visibleIndices.has(index)) {\n hiddenIndices.push(index);\n }\n }\n\n if (hiddenIndices.length === 0) {\n return Array.from({ length: itemCount }, () => 'visible' as const);\n }\n\n const displayModes: TngBreadcrumbItemDisplayMode[] = Array.from(\n { length: itemCount },\n () => 'visible' as const,\n );\n\n for (const hiddenIndex of hiddenIndices) {\n displayModes[hiddenIndex] = 'hidden';\n }\n\n // The first hidden item becomes the collapse marker so we avoid introducing a separate focusable node.\n displayModes[hiddenIndices[0]] = 'ellipsis';\n return displayModes;\n }\n\n private resolveVisibleIndices(displayModes: readonly TngBreadcrumbItemDisplayMode[]): readonly number[] {\n const visibleIndices: number[] = [];\n for (let index = 0; index < displayModes.length; index += 1) {\n if (displayModes[index] !== 'hidden') {\n visibleIndices.push(index);\n }\n }\n return visibleIndices;\n }\n}\n"]}
1
+ {"version":3,"file":"tng-breadcrumb.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/breadcrumb/tng-breadcrumb.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ContentChild,\n ContentChildren,\n computed,\n effect,\n input,\n TemplateRef,\n type AfterContentInit,\n type QueryList,\n} from '@angular/core';\nimport { TngBreadcrumb as TngBreadcrumbPrimitive } from '@tailng-ui/primitives';\nimport { merge, Subscription } from 'rxjs';\nimport { TngBreadcrumbItemComponent, type TngBreadcrumbItemDisplayMode } from './tng-breadcrumb-item.component';\nimport { TngBreadcrumbListComponent } from './tng-breadcrumb-list.component';\nimport { TngBreadcrumbSeparatorTemplateDirective } from './tng-breadcrumb-separator-template.directive';\n\n@Component({\n selector: 'tng-breadcrumb',\n imports: [TngBreadcrumbPrimitive, TngBreadcrumbListComponent],\n templateUrl: './tng-breadcrumb.component.html',\n styleUrl: './tng-breadcrumb.component.css',\n})\nexport class TngBreadcrumbComponent implements AfterContentInit {\n @ContentChildren(TngBreadcrumbItemComponent, { descendants: true })\n private readonly breadcrumbItems?: QueryList<TngBreadcrumbItemComponent>;\n\n @ContentChild(TngBreadcrumbSeparatorTemplateDirective, { read: TemplateRef })\n private readonly separatorTemplate?: TemplateRef<unknown>;\n\n public readonly ariaLabel = input<string | null>('Breadcrumb');\n public readonly separator = input('/');\n public readonly maxItems = input<number | null>(null);\n public readonly itemsBeforeCollapse = input(1);\n public readonly itemsAfterCollapse = input(2);\n public readonly collapseLabel = input('More');\n\n protected readonly resolvedAriaLabel = computed(() => {\n const ariaLabel = this.ariaLabel();\n if (ariaLabel === null) {\n return 'Breadcrumb';\n }\n\n const trimmedAriaLabel = ariaLabel.trim();\n return trimmedAriaLabel.length > 0 ? trimmedAriaLabel : 'Breadcrumb';\n });\n\n private itemStateSubscriptions = Subscription.EMPTY;\n private readonly queryListSubscriptions = new Subscription();\n\n public constructor() {\n effect(() => {\n this.separator();\n this.maxItems();\n this.itemsBeforeCollapse();\n this.itemsAfterCollapse();\n this.collapseLabel();\n this.syncItems();\n });\n }\n\n public ngAfterContentInit(): void {\n this.rebindItemStateSubscriptions();\n if (this.breadcrumbItems === undefined) {\n return;\n }\n\n this.queryListSubscriptions.add(\n this.breadcrumbItems.changes.subscribe(() => {\n this.rebindItemStateSubscriptions();\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.itemStateSubscriptions.unsubscribe();\n this.queryListSubscriptions.unsubscribe();\n }\n\n private rebindItemStateSubscriptions(): void {\n this.itemStateSubscriptions.unsubscribe();\n\n const items = this.breadcrumbItems?.toArray() ?? [];\n if (items.length === 0) {\n this.syncItems();\n return;\n }\n\n this.itemStateSubscriptions = merge(...items.map((item) => item.stateChanges)).subscribe(() => {\n this.syncItems();\n });\n\n this.syncItems();\n }\n\n private syncItems(): void {\n const items = this.breadcrumbItems?.toArray() ?? [];\n if (items.length === 0) {\n return;\n }\n\n const currentIndex = this.resolveCurrentIndex(items);\n const displayModes = this.resolveDisplayModes(items, currentIndex);\n const visibleIndices = this.resolveVisibleIndices(displayModes);\n\n for (let index = 0; index < items.length; index += 1) {\n const item = items[index];\n const isVisible = displayModes[index] !== 'hidden';\n const isLastVisibleItem = !visibleIndices.some((visibleIndex) => visibleIndex > index);\n\n item.setResolvedCurrent(index === currentIndex);\n item.setDisplayMode(displayModes[index], this.collapseLabel());\n item.setSeparator(this.separator(), isVisible && !isLastVisibleItem, this.separatorTemplate ?? null);\n }\n }\n\n private resolveCurrentIndex(items: readonly TngBreadcrumbItemComponent[]): number {\n const explicitlyCurrentIndices = items.reduce<number[]>((accumulator, item, index) => {\n if (item.current()) {\n accumulator.push(index);\n }\n return accumulator;\n }, []);\n\n if (explicitlyCurrentIndices.length > 0) {\n return explicitlyCurrentIndices[explicitlyCurrentIndices.length - 1];\n }\n\n if (items.length === 1) {\n return 0;\n }\n\n return -1;\n }\n\n // eslint-disable-next-line complexity,max-lines-per-function\n private resolveDisplayModes(\n items: readonly TngBreadcrumbItemComponent[],\n currentIndex: number,\n ): readonly TngBreadcrumbItemDisplayMode[] {\n const itemCount = items.length;\n const maxItems = this.maxItems();\n if (maxItems === null || maxItems < 1 || itemCount <= maxItems) {\n return Array.from({ length: itemCount }, () => 'visible' as const);\n }\n\n const itemsBeforeCollapse = Math.max(1, Math.floor(this.itemsBeforeCollapse()));\n const itemsAfterCollapse = Math.max(1, Math.floor(this.itemsAfterCollapse()));\n const visibleIndices = new Set<number>();\n\n for (let index = 0; index < Math.min(itemsBeforeCollapse, itemCount); index += 1) {\n visibleIndices.add(index);\n }\n\n for (\n let index = Math.max(itemCount - itemsAfterCollapse, 0);\n index < itemCount;\n index += 1\n ) {\n visibleIndices.add(index);\n }\n\n if (currentIndex >= 0) {\n visibleIndices.add(currentIndex);\n }\n\n const hiddenIndices: number[] = [];\n for (let index = 0; index < itemCount; index += 1) {\n if (!visibleIndices.has(index)) {\n hiddenIndices.push(index);\n }\n }\n\n if (hiddenIndices.length === 0) {\n return Array.from({ length: itemCount }, () => 'visible' as const);\n }\n\n const displayModes: TngBreadcrumbItemDisplayMode[] = Array.from(\n { length: itemCount },\n () => 'visible' as const,\n );\n\n for (const hiddenIndex of hiddenIndices) {\n displayModes[hiddenIndex] = 'hidden';\n }\n\n // The first hidden item becomes the collapse marker so we avoid introducing a separate focusable node.\n displayModes[hiddenIndices[0]] = 'ellipsis';\n return displayModes;\n }\n\n private resolveVisibleIndices(displayModes: readonly TngBreadcrumbItemDisplayMode[]): readonly number[] {\n const visibleIndices: number[] = [];\n for (let index = 0; index < displayModes.length; index += 1) {\n if (displayModes[index] !== 'hidden') {\n visibleIndices.push(index);\n }\n }\n return visibleIndices;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-context-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/context-menu/tng-context-menu.component.ts"],"names":[],"mappings":"AAMA,qBAiBa,uBAAuB;IAClC,SAAgB,SAAS,8CAAiC;IAG1D,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;CACF"}
1
+ {"version":3,"file":"tng-context-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/context-menu/tng-context-menu.component.ts"],"names":[],"mappings":"AAMA,qBAgBa,uBAAuB;IAClC,SAAgB,SAAS,8CAAiC;IAG1D,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;CACF"}
@@ -12,7 +12,6 @@ __decorate([
12
12
  ], TngContextMenuComponent.prototype, "hostAriaLabel", null);
13
13
  TngContextMenuComponent = __decorate([
14
14
  Component({
15
- standalone: true,
16
15
  selector: 'tng-context-menu',
17
16
  hostDirectives: [
18
17
  {
@@ -1 +1 @@
1
- {"version":3,"file":"tng-context-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/context-menu/tng-context-menu.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,cAAc,IAAI,uBAAuB,EACzC,OAAO,IAAI,gBAAgB,GAC5B,MAAM,uBAAuB,CAAC;AAmBxB,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClB,SAAS,GAAG,KAAK,CAAS,cAAc,CAAC,CAAC;IAG1D,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AAHC;IADC,WAAW,CAAC,iBAAiB,CAAC;4DAG9B;AANU,uBAAuB;IAjBnC,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EAAE;YACd;gBACE,SAAS,EAAE,gBAAgB;gBAC3B,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,CAAC;gBAC3F,OAAO,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC;aAC7D;YACD;gBACE,SAAS,EAAE,uBAAuB;aACnC;SACF;QACD,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,yBAAyB;KACpC,CAAC;GACW,uBAAuB,CAOnC","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport {\n TngContextMenu as TngContextMenuPrimitive,\n TngMenu as TngMenuPrimitive,\n} from '@tailng-ui/primitives';\n\n@Component({\n standalone: true,\n selector: 'tng-context-menu',\n hostDirectives: [\n {\n directive: TngMenuPrimitive,\n inputs: ['loop', 'disabled', 'closeOnSelect', 'dismissOnOutsideClick', 'dismissOnFocusout'],\n outputs: ['tngMenuOpened', 'tngMenuClosed', 'tngMenuSelect'],\n },\n {\n directive: TngContextMenuPrimitive,\n },\n ],\n templateUrl: './tng-context-menu.component.html',\n styleUrl: './tng-context-menu.component.css',\n exportAs: 'tngContextMenuComponent',\n})\nexport class TngContextMenuComponent {\n public readonly ariaLabel = input<string>('Context menu');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n}\n"]}
1
+ {"version":3,"file":"tng-context-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/context-menu/tng-context-menu.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,cAAc,IAAI,uBAAuB,EACzC,OAAO,IAAI,gBAAgB,GAC5B,MAAM,uBAAuB,CAAC;AAkBxB,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClB,SAAS,GAAG,KAAK,CAAS,cAAc,CAAC,CAAC;IAG1D,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AAHC;IADC,WAAW,CAAC,iBAAiB,CAAC;4DAG9B;AANU,uBAAuB;IAhBnC,SAAS,CAAC;QACT,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EAAE;YACd;gBACE,SAAS,EAAE,gBAAgB;gBAC3B,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,CAAC;gBAC3F,OAAO,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC;aAC7D;YACD;gBACE,SAAS,EAAE,uBAAuB;aACnC;SACF;QACD,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,yBAAyB;KACpC,CAAC;GACW,uBAAuB,CAOnC","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport {\n TngContextMenu as TngContextMenuPrimitive,\n TngMenu as TngMenuPrimitive,\n} from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-context-menu',\n hostDirectives: [\n {\n directive: TngMenuPrimitive,\n inputs: ['loop', 'disabled', 'closeOnSelect', 'dismissOnOutsideClick', 'dismissOnFocusout'],\n outputs: ['tngMenuOpened', 'tngMenuClosed', 'tngMenuSelect'],\n },\n {\n directive: TngContextMenuPrimitive,\n },\n ],\n templateUrl: './tng-context-menu.component.html',\n styleUrl: './tng-context-menu.component.css',\n exportAs: 'tngContextMenuComponent',\n})\nexport class TngContextMenuComponent {\n public readonly ariaLabel = input<string>('Context menu');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-dropdown-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.ts"],"names":[],"mappings":"AAWA,qBAOa,wBAAwB;IACnC,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,8CAA4B;IAEjD,SAAS,CAAC,QAAQ,CAAC,IAAI,kDAAiB;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IAGvE,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAoB/C,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,SAAS,CAAC,UAAU,IAAI,IAAI;CAO7B"}
1
+ {"version":3,"file":"tng-dropdown-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.ts"],"names":[],"mappings":"AAWA,qBAMa,wBAAwB;IACnC,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,8CAA4B;IAEjD,SAAS,CAAC,QAAQ,CAAC,IAAI,kDAAiB;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IAGvE,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAoB/C,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,SAAS,CAAC,UAAU,IAAI,IAAI;CAO7B"}
@@ -44,7 +44,6 @@ __decorate([
44
44
  ], TngDropdownMenuComponent.prototype, "onEscapeKeydown", null);
45
45
  TngDropdownMenuComponent = __decorate([
46
46
  Component({
47
- standalone: true,
48
47
  selector: 'tng-dropdown-menu',
49
48
  imports: [TngDropdownMenuPrimitive],
50
49
  templateUrl: './tng-dropdown-menu.component.html',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-dropdown-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,KAAK,EACL,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,IAAI,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAS7E,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnB,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;IAE9B,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvB,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IAG7D,eAAe,CAAC,KAAc;QACtC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAGS,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAES,UAAU;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF,CAAA;AAnCW;IADT,YAAY,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC;+DAkB1C;AAGS;IADT,YAAY,CAAC,yBAAyB,CAAC;+DAOvC;AArCU,wBAAwB;IAPpC,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,CAAC,wBAAwB,CAAC;QACnC,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,mCAAmC;KAC9C,CAAC;GACW,wBAAwB,CA8CpC","sourcesContent":["import {\n Component,\n ElementRef,\n HostListener,\n booleanAttribute,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { TngDropdownMenu as TngDropdownMenuPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n standalone: true,\n selector: 'tng-dropdown-menu',\n imports: [TngDropdownMenuPrimitive],\n templateUrl: './tng-dropdown-menu.component.html',\n styleUrl: './tng-dropdown-menu.component.css',\n})\nexport class TngDropdownMenuComponent {\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly label = input<string>('Actions');\n\n protected readonly open = signal(false);\n\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: unknown): void {\n if (!(event instanceof Event)) {\n return;\n }\n\n if (!this.open()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (!this.hostRef.nativeElement.contains(target)) {\n this.open.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n protected onEscapeKeydown(): void {\n if (!this.open()) {\n return;\n }\n\n this.open.set(false);\n }\n\n protected toggleOpen(): void {\n if (this.disabled()) {\n return;\n }\n\n this.open.set(!this.open());\n }\n}\n"]}
1
+ {"version":3,"file":"tng-dropdown-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,KAAK,EACL,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,IAAI,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAQ7E,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnB,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;IAE9B,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvB,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IAG7D,eAAe,CAAC,KAAc;QACtC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAGS,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAES,UAAU;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF,CAAA;AAnCW;IADT,YAAY,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC;+DAkB1C;AAGS;IADT,YAAY,CAAC,yBAAyB,CAAC;+DAOvC;AArCU,wBAAwB;IANpC,SAAS,CAAC;QACT,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,CAAC,wBAAwB,CAAC;QACnC,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,mCAAmC;KAC9C,CAAC;GACW,wBAAwB,CA8CpC","sourcesContent":["import {\n Component,\n ElementRef,\n HostListener,\n booleanAttribute,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { TngDropdownMenu as TngDropdownMenuPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-dropdown-menu',\n imports: [TngDropdownMenuPrimitive],\n templateUrl: './tng-dropdown-menu.component.html',\n styleUrl: './tng-dropdown-menu.component.css',\n})\nexport class TngDropdownMenuComponent {\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly label = input<string>('Actions');\n\n protected readonly open = signal(false);\n\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: unknown): void {\n if (!(event instanceof Event)) {\n return;\n }\n\n if (!this.open()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (!this.hostRef.nativeElement.contains(target)) {\n this.open.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n protected onEscapeKeydown(): void {\n if (!this.open()) {\n return;\n }\n\n this.open.set(false);\n }\n\n protected toggleOpen(): void {\n if (this.disabled()) {\n return;\n }\n\n this.open.set(!this.open());\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-menu-trigger-for.directive.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu-trigger-for.directive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,KAAK,2BAA2B,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,GACrE,QAAQ,CAAC;IAAE,cAAc,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAAC;AAkB3C,qBAKa,iBAAiB;IAC5B,QAAQ,CAAC,iBAAiB,+CAA6B;IAEvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IAGvE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAG,MAAM,CAAU;;IAmBlD,SAAS,CAAC,OAAO,IAAI,IAAI;IAezB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI;IAmB7D,OAAO,CAAC,aAAa;CAOtB"}
1
+ {"version":3,"file":"tng-menu-trigger-for.directive.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu-trigger-for.directive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,KAAK,2BAA2B,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,GACrE,QAAQ,CAAC;IAAE,cAAc,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAAC;AAkB3C,qBAIa,iBAAiB;IAC5B,QAAQ,CAAC,iBAAiB,+CAA6B;IAEvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IAGvE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAG,MAAM,CAAU;;IAmBlD,SAAS,CAAC,OAAO,IAAI,IAAI;IAezB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI;IAmB7D,OAAO,CAAC,aAAa;CAOtB"}
@@ -78,7 +78,6 @@ TngMenuTriggerFor = __decorate([
78
78
  Directive({
79
79
  selector: '[tngMenuTriggerFor]',
80
80
  exportAs: 'tngMenuTriggerFor',
81
- standalone: true,
82
81
  })
83
82
  ], TngMenuTriggerFor);
84
83
  export { TngMenuTriggerFor };
@@ -1 +1 @@
1
- {"version":3,"file":"tng-menu-trigger-for.directive.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu-trigger-for.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, HostListener, effect, inject, input } from '@angular/core';\nimport { TngMenu } from '@tailng-ui/primitives';\n\ntype TngMenuTriggerKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key'>> &\n Readonly<{ preventDefault: () => void }>;\n\ntype TngMenuOpenFocusAction = 'none' | 'first' | 'last';\n\nfunction resolveFocusActionForOpenKey(key: string): TngMenuOpenFocusAction | null {\n switch (key) {\n case 'ArrowDown':\n return 'first';\n case 'ArrowUp':\n return 'last';\n case 'Enter':\n case ' ':\n return 'none';\n default:\n return null;\n }\n}\n\n@Directive({\n selector: '[tngMenuTriggerFor]',\n exportAs: 'tngMenuTriggerFor',\n standalone: true,\n})\nexport class TngMenuTriggerFor {\n readonly tngMenuTriggerFor = input.required<TngMenu>();\n\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @HostBinding('attr.aria-haspopup')\n protected readonly ariaHasPopup = 'menu' as const;\n\n public constructor() {\n effect((onCleanup): void => {\n const menu = this.tngMenuTriggerFor();\n const trigger = this.hostRef.nativeElement;\n menu.setTriggerElement(trigger, () => this.syncAriaState());\n menu.setRestoreFocusOnOutsideClick(false);\n this.syncAriaState();\n\n onCleanup((): void => {\n menu.clearTriggerLink(trigger);\n trigger.removeAttribute('aria-controls');\n trigger.removeAttribute('aria-expanded');\n });\n });\n }\n\n @HostListener('click')\n protected onClick(): void {\n const menu = this.tngMenuTriggerFor();\n if (menu.isDisabled()) {\n return;\n }\n\n if (menu.isOpen()) {\n menu.close(true);\n return;\n }\n\n menu.open('none');\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuTriggerKeyboardEvent): void {\n const menu = this.tngMenuTriggerFor();\n if (menu.isDisabled()) {\n return;\n }\n\n const focusAction = resolveFocusActionForOpenKey(event.key);\n if (focusAction !== null) {\n event.preventDefault();\n menu.open(focusAction);\n return;\n }\n\n if (event.key === 'Escape' && menu.isOpen()) {\n event.preventDefault();\n menu.close(true);\n }\n }\n\n private syncAriaState(): void {\n const trigger = this.hostRef.nativeElement;\n const menu = this.tngMenuTriggerFor();\n\n trigger.setAttribute('aria-controls', menu.id);\n trigger.setAttribute('aria-expanded', menu.isOpen() ? 'true' : 'false');\n }\n}\n"]}
1
+ {"version":3,"file":"tng-menu-trigger-for.directive.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu-trigger-for.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, HostListener, effect, inject, input } from '@angular/core';\nimport { TngMenu } from '@tailng-ui/primitives';\n\ntype TngMenuTriggerKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key'>> &\n Readonly<{ preventDefault: () => void }>;\n\ntype TngMenuOpenFocusAction = 'none' | 'first' | 'last';\n\nfunction resolveFocusActionForOpenKey(key: string): TngMenuOpenFocusAction | null {\n switch (key) {\n case 'ArrowDown':\n return 'first';\n case 'ArrowUp':\n return 'last';\n case 'Enter':\n case ' ':\n return 'none';\n default:\n return null;\n }\n}\n\n@Directive({\n selector: '[tngMenuTriggerFor]',\n exportAs: 'tngMenuTriggerFor',\n})\nexport class TngMenuTriggerFor {\n readonly tngMenuTriggerFor = input.required<TngMenu>();\n\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @HostBinding('attr.aria-haspopup')\n protected readonly ariaHasPopup = 'menu' as const;\n\n public constructor() {\n effect((onCleanup): void => {\n const menu = this.tngMenuTriggerFor();\n const trigger = this.hostRef.nativeElement;\n menu.setTriggerElement(trigger, () => this.syncAriaState());\n menu.setRestoreFocusOnOutsideClick(false);\n this.syncAriaState();\n\n onCleanup((): void => {\n menu.clearTriggerLink(trigger);\n trigger.removeAttribute('aria-controls');\n trigger.removeAttribute('aria-expanded');\n });\n });\n }\n\n @HostListener('click')\n protected onClick(): void {\n const menu = this.tngMenuTriggerFor();\n if (menu.isDisabled()) {\n return;\n }\n\n if (menu.isOpen()) {\n menu.close(true);\n return;\n }\n\n menu.open('none');\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuTriggerKeyboardEvent): void {\n const menu = this.tngMenuTriggerFor();\n if (menu.isDisabled()) {\n return;\n }\n\n const focusAction = resolveFocusActionForOpenKey(event.key);\n if (focusAction !== null) {\n event.preventDefault();\n menu.open(focusAction);\n return;\n }\n\n if (event.key === 'Escape' && menu.isOpen()) {\n event.preventDefault();\n menu.close(true);\n }\n }\n\n private syncAriaState(): void {\n const trigger = this.hostRef.nativeElement;\n const menu = this.tngMenuTriggerFor();\n\n trigger.setAttribute('aria-controls', menu.id);\n trigger.setAttribute('aria-expanded', menu.isOpen() ? 'true' : 'false');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu.component.ts"],"names":[],"mappings":"AAKA,qBAca,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IACxE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAAK;IAE9B,QAAQ,CAAC,SAAS,8CAAyB;IAG3C,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED,SAAS,IAAI,IAAI;IA+BjB,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,qBAAqB;CAW9B"}
1
+ {"version":3,"file":"tng-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu.component.ts"],"names":[],"mappings":"AAKA,qBAaa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IACxE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAAK;IAE9B,QAAQ,CAAC,SAAS,8CAAyB;IAG3C,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED,SAAS,IAAI,IAAI;IA+BjB,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,qBAAqB;CAW9B"}
@@ -75,7 +75,6 @@ __decorate([
75
75
  TngMenuComponent = __decorate([
76
76
  Component({
77
77
  selector: 'tng-menu',
78
- standalone: true,
79
78
  hostDirectives: [
80
79
  {
81
80
  directive: TngMenuPrimitive,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, HostBinding, inject, input } from '@angular/core';\nimport { TngMenu as TngMenuPrimitive } from '@tailng-ui/primitives';\n\nconst MAX_FOCUS_SYNC_ATTEMPTS = 4;\n\n@Component({\n selector: 'tng-menu',\n standalone: true,\n hostDirectives: [\n {\n directive: TngMenuPrimitive,\n inputs: ['loop', 'disabled', 'closeOnSelect', 'dismissOnOutsideClick', 'dismissOnFocusout'],\n outputs: ['tngMenuOpened', 'tngMenuClosed', 'tngMenuSelect'],\n },\n ],\n templateUrl: './tng-menu.component.html',\n styleUrl: './tng-menu.component.css',\n exportAs: 'tngMenuComponent',\n})\nexport class TngMenuComponent {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly primitive = inject<TngMenuPrimitive>(TngMenuPrimitive);\n private lastOpenState = false;\n private focusSyncQueued = false;\n private focusSyncAttempts = 0;\n\n readonly ariaLabel = input<string>('Menu');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n\n ngDoCheck(): void {\n const isOpen = this.primitive.isOpen();\n if (!isOpen) {\n this.lastOpenState = false;\n this.focusSyncAttempts = 0;\n this.focusSyncQueued = false;\n return;\n }\n\n const host = this.hostRef.nativeElement;\n const activeElement = document.activeElement;\n const deepestOpenSubmenu = this.getDeepestOpenSubmenu(host);\n const hasFocusInDeepestOpenSubmenu =\n deepestOpenSubmenu !== null &&\n activeElement instanceof Node &&\n deepestOpenSubmenu.contains(activeElement);\n const hasFocusInsideHost = activeElement instanceof Node && host.contains(activeElement);\n\n const shouldSyncFocusToHostOrDeepestSubmenu =\n deepestOpenSubmenu !== null ? !hasFocusInDeepestOpenSubmenu : !hasFocusInsideHost;\n\n if (\n (!this.lastOpenState || shouldSyncFocusToHostOrDeepestSubmenu) &&\n this.focusSyncAttempts < MAX_FOCUS_SYNC_ATTEMPTS\n ) {\n this.queueFocusSync();\n }\n\n this.lastOpenState = true;\n }\n\n private queueFocusSync(): void {\n if (this.focusSyncQueued) {\n return;\n }\n\n this.focusSyncQueued = true;\n queueMicrotask((): void => {\n this.focusSyncQueued = false;\n\n if (!this.primitive.isOpen()) {\n return;\n }\n\n const host = this.hostRef.nativeElement;\n const activeElement = document.activeElement;\n const deepestOpenSubmenu = this.getDeepestOpenSubmenu(host);\n\n if (deepestOpenSubmenu !== null) {\n if (!(activeElement instanceof Node) || !deepestOpenSubmenu.contains(activeElement)) {\n this.focusSyncAttempts += 1;\n deepestOpenSubmenu.focus();\n }\n return;\n }\n\n if (activeElement instanceof Node && host.contains(activeElement)) {\n return;\n }\n\n this.focusSyncAttempts += 1;\n host.focus();\n });\n }\n\n private getDeepestOpenSubmenu(host: HTMLElement): HTMLElement | null {\n const openNestedMenus = Array.from(\n host.querySelectorAll<HTMLElement>('[data-slot=\"menu\"][data-state=\"open\"]'),\n ).filter((menuElement) => menuElement !== host);\n\n if (openNestedMenus.length === 0) {\n return null;\n }\n\n return openNestedMenus[openNestedMenus.length - 1] ?? null;\n }\n}\n"]}
1
+ {"version":3,"file":"tng-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menu/tng-menu.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, HostBinding, inject, input } from '@angular/core';\nimport { TngMenu as TngMenuPrimitive } from '@tailng-ui/primitives';\n\nconst MAX_FOCUS_SYNC_ATTEMPTS = 4;\n\n@Component({\n selector: 'tng-menu',\n hostDirectives: [\n {\n directive: TngMenuPrimitive,\n inputs: ['loop', 'disabled', 'closeOnSelect', 'dismissOnOutsideClick', 'dismissOnFocusout'],\n outputs: ['tngMenuOpened', 'tngMenuClosed', 'tngMenuSelect'],\n },\n ],\n templateUrl: './tng-menu.component.html',\n styleUrl: './tng-menu.component.css',\n exportAs: 'tngMenuComponent',\n})\nexport class TngMenuComponent {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly primitive = inject<TngMenuPrimitive>(TngMenuPrimitive);\n private lastOpenState = false;\n private focusSyncQueued = false;\n private focusSyncAttempts = 0;\n\n readonly ariaLabel = input<string>('Menu');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n\n ngDoCheck(): void {\n const isOpen = this.primitive.isOpen();\n if (!isOpen) {\n this.lastOpenState = false;\n this.focusSyncAttempts = 0;\n this.focusSyncQueued = false;\n return;\n }\n\n const host = this.hostRef.nativeElement;\n const activeElement = document.activeElement;\n const deepestOpenSubmenu = this.getDeepestOpenSubmenu(host);\n const hasFocusInDeepestOpenSubmenu =\n deepestOpenSubmenu !== null &&\n activeElement instanceof Node &&\n deepestOpenSubmenu.contains(activeElement);\n const hasFocusInsideHost = activeElement instanceof Node && host.contains(activeElement);\n\n const shouldSyncFocusToHostOrDeepestSubmenu =\n deepestOpenSubmenu !== null ? !hasFocusInDeepestOpenSubmenu : !hasFocusInsideHost;\n\n if (\n (!this.lastOpenState || shouldSyncFocusToHostOrDeepestSubmenu) &&\n this.focusSyncAttempts < MAX_FOCUS_SYNC_ATTEMPTS\n ) {\n this.queueFocusSync();\n }\n\n this.lastOpenState = true;\n }\n\n private queueFocusSync(): void {\n if (this.focusSyncQueued) {\n return;\n }\n\n this.focusSyncQueued = true;\n queueMicrotask((): void => {\n this.focusSyncQueued = false;\n\n if (!this.primitive.isOpen()) {\n return;\n }\n\n const host = this.hostRef.nativeElement;\n const activeElement = document.activeElement;\n const deepestOpenSubmenu = this.getDeepestOpenSubmenu(host);\n\n if (deepestOpenSubmenu !== null) {\n if (!(activeElement instanceof Node) || !deepestOpenSubmenu.contains(activeElement)) {\n this.focusSyncAttempts += 1;\n deepestOpenSubmenu.focus();\n }\n return;\n }\n\n if (activeElement instanceof Node && host.contains(activeElement)) {\n return;\n }\n\n this.focusSyncAttempts += 1;\n host.focus();\n });\n }\n\n private getDeepestOpenSubmenu(host: HTMLElement): HTMLElement | null {\n const openNestedMenus = Array.from(\n host.querySelectorAll<HTMLElement>('[data-slot=\"menu\"][data-state=\"open\"]'),\n ).filter((menuElement) => menuElement !== host);\n\n if (openNestedMenus.length === 0) {\n return null;\n }\n\n return openNestedMenus[openNestedMenus.length - 1] ?? null;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-menubar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menubar/tng-menubar.component.ts"],"names":[],"mappings":"AAGA,qBAaa,mBAAmB;IAC9B,QAAQ,CAAC,SAAS,8CAA4B;IAG9C,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;CACF"}
1
+ {"version":3,"file":"tng-menubar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menubar/tng-menubar.component.ts"],"names":[],"mappings":"AAGA,qBAYa,mBAAmB;IAC9B,QAAQ,CAAC,SAAS,8CAA4B;IAG9C,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;CACF"}
@@ -13,7 +13,6 @@ __decorate([
13
13
  TngMenubarComponent = __decorate([
14
14
  Component({
15
15
  selector: 'tng-menubar',
16
- standalone: true,
17
16
  hostDirectives: [
18
17
  {
19
18
  directive: TngMenubarPrimitive,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-menubar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menubar/tng-menubar.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAenE,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACrB,SAAS,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;IAG9C,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AAHC;IADC,WAAW,CAAC,iBAAiB,CAAC;wDAG9B;AANU,mBAAmB;IAb/B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE;YACd;gBACE,SAAS,EAAE,mBAAmB;gBAC9B,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;SACF;QACD,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;QACvC,QAAQ,EAAE,qBAAqB;KAChC,CAAC;GACW,mBAAmB,CAO/B","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport { TngMenubar as TngMenubarPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-menubar',\n standalone: true,\n hostDirectives: [\n {\n directive: TngMenubarPrimitive,\n inputs: ['loop'],\n },\n ],\n templateUrl: './tng-menubar.component.html',\n styleUrl: './tng-menubar.component.css',\n exportAs: 'tngMenubarComponent',\n})\nexport class TngMenubarComponent {\n readonly ariaLabel = input<string>('Menubar');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n}\n"]}
1
+ {"version":3,"file":"tng-menubar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/menubar/tng-menubar.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAcnE,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACrB,SAAS,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;IAG9C,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AAHC;IADC,WAAW,CAAC,iBAAiB,CAAC;wDAG9B;AANU,mBAAmB;IAZ/B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE;YACd;gBACE,SAAS,EAAE,mBAAmB;gBAC9B,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;SACF;QACD,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;QACvC,QAAQ,EAAE,qBAAqB;KAChC,CAAC;GACW,mBAAmB,CAO/B","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport { TngMenubar as TngMenubarPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-menubar',\n hostDirectives: [\n {\n directive: TngMenubarPrimitive,\n inputs: ['loop'],\n },\n ],\n templateUrl: './tng-menubar.component.html',\n styleUrl: './tng-menubar.component.css',\n exportAs: 'tngMenubarComponent',\n})\nexport class TngMenubarComponent {\n readonly ariaLabel = input<string>('Menubar');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-navigation-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/navigation-menu/tng-navigation-menu.component.ts"],"names":[],"mappings":"AAGA,qBAOa,0BAA0B;IACrC,SAAgB,SAAS,8CAAoC;CAC9D"}
1
+ {"version":3,"file":"tng-navigation-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/navigation-menu/tng-navigation-menu.component.ts"],"names":[],"mappings":"AAGA,qBAMa,0BAA0B;IACrC,SAAgB,SAAS,8CAAoC;CAC9D"}
@@ -6,7 +6,6 @@ let TngNavigationMenuComponent = class TngNavigationMenuComponent {
6
6
  };
7
7
  TngNavigationMenuComponent = __decorate([
8
8
  Component({
9
- standalone: true,
10
9
  selector: 'tng-navigation-menu',
11
10
  imports: [TngNavigationMenuPrimitive],
12
11
  templateUrl: './tng-navigation-menu.component.html',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-navigation-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/navigation-menu/tng-navigation-menu.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AASjF,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrB,SAAS,GAAG,KAAK,CAAS,iBAAiB,CAAC,CAAC;CAC9D,CAAA;AAFY,0BAA0B;IAPtC,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,qBAAqB;QAC/B,OAAO,EAAE,CAAC,0BAA0B,CAAC;QACrC,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,qCAAqC;KAChD,CAAC;GACW,0BAA0B,CAEtC","sourcesContent":["import { Component, input } from '@angular/core';\nimport { TngNavigationMenu as TngNavigationMenuPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n standalone: true,\n selector: 'tng-navigation-menu',\n imports: [TngNavigationMenuPrimitive],\n templateUrl: './tng-navigation-menu.component.html',\n styleUrl: './tng-navigation-menu.component.css',\n})\nexport class TngNavigationMenuComponent {\n public readonly ariaLabel = input<string>('Navigation Menu');\n}\n"]}
1
+ {"version":3,"file":"tng-navigation-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/navigation-menu/tng-navigation-menu.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAQjF,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrB,SAAS,GAAG,KAAK,CAAS,iBAAiB,CAAC,CAAC;CAC9D,CAAA;AAFY,0BAA0B;IANtC,SAAS,CAAC;QACT,QAAQ,EAAE,qBAAqB;QAC/B,OAAO,EAAE,CAAC,0BAA0B,CAAC;QACrC,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,qCAAqC;KAChD,CAAC;GACW,0BAA0B,CAEtC","sourcesContent":["import { Component, input } from '@angular/core';\nimport { TngNavigationMenu as TngNavigationMenuPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-navigation-menu',\n imports: [TngNavigationMenuPrimitive],\n templateUrl: './tng-navigation-menu.component.html',\n styleUrl: './tng-navigation-menu.component.css',\n})\nexport class TngNavigationMenuComponent {\n public readonly ariaLabel = input<string>('Navigation Menu');\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tabs.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/tabs/tng-tabs.component.ts"],"names":[],"mappings":"AAGA,qBAyBa,gBAAgB;IAC3B,QAAQ,CAAC,SAAS,8CAAyB;IAG3C,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;CACF"}
1
+ {"version":3,"file":"tng-tabs.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/tabs/tng-tabs.component.ts"],"names":[],"mappings":"AAGA,qBAwBa,gBAAgB;IAC3B,QAAQ,CAAC,SAAS,8CAAyB;IAG3C,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;CACF"}
@@ -13,7 +13,6 @@ __decorate([
13
13
  TngTabsComponent = __decorate([
14
14
  Component({
15
15
  selector: 'tng-tabs',
16
- standalone: true,
17
16
  hostDirectives: [
18
17
  {
19
18
  directive: TngTabsPrimitive,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tabs.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/tabs/tng-tabs.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA2B7D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAClB,SAAS,GAAG,KAAK,CAAS,MAAM,CAAC,CAAC;IAG3C,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AAHC;IADC,WAAW,CAAC,iBAAiB,CAAC;qDAG9B;AANU,gBAAgB;IAzB5B,SAAS,CAAC;QACT,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE;YACd;gBACE,SAAS,EAAE,gBAAgB;gBAC3B,MAAM,EAAE;oBACN,OAAO;oBACP,cAAc;oBACd,YAAY;oBACZ,aAAa;oBACb,eAAe;oBACf,MAAM;oBACN,KAAK;oBACL,UAAU;oBACV,MAAM;oBACN,WAAW;iBACZ;gBACD,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC;aACrD;SACF;QACD,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,0BAA0B;QACpC,QAAQ,EAAE,kBAAkB;KAC7B,CAAC;GACW,gBAAgB,CAO5B","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport { TngTabs as TngTabsPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-tabs',\n standalone: true,\n hostDirectives: [\n {\n directive: TngTabsPrimitive,\n inputs: [\n 'value',\n 'defaultValue',\n 'activation',\n 'orientation',\n 'scrollButtons',\n 'loop',\n 'dir',\n 'disabled',\n 'lazy',\n 'keepAlive',\n ],\n outputs: ['valueChange', 'tabChange', 'focusChange'],\n },\n ],\n templateUrl: './tng-tabs.component.html',\n styleUrl: './tng-tabs.component.css',\n exportAs: 'tngTabsComponent',\n})\nexport class TngTabsComponent {\n readonly ariaLabel = input<string>('Tabs');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n}\n"]}
1
+ {"version":3,"file":"tng-tabs.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/tabs/tng-tabs.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA0B7D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAClB,SAAS,GAAG,KAAK,CAAS,MAAM,CAAC,CAAC;IAG3C,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AAHC;IADC,WAAW,CAAC,iBAAiB,CAAC;qDAG9B;AANU,gBAAgB;IAxB5B,SAAS,CAAC;QACT,QAAQ,EAAE,UAAU;QACpB,cAAc,EAAE;YACd;gBACE,SAAS,EAAE,gBAAgB;gBAC3B,MAAM,EAAE;oBACN,OAAO;oBACP,cAAc;oBACd,YAAY;oBACZ,aAAa;oBACb,eAAe;oBACf,MAAM;oBACN,KAAK;oBACL,UAAU;oBACV,MAAM;oBACN,WAAW;iBACZ;gBACD,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC;aACrD;SACF;QACD,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,0BAA0B;QACpC,QAAQ,EAAE,kBAAkB;KAC7B,CAAC;GACW,gBAAgB,CAO5B","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport { TngTabs as TngTabsPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-tabs',\n hostDirectives: [\n {\n directive: TngTabsPrimitive,\n inputs: [\n 'value',\n 'defaultValue',\n 'activation',\n 'orientation',\n 'scrollButtons',\n 'loop',\n 'dir',\n 'disabled',\n 'lazy',\n 'keepAlive',\n ],\n outputs: ['valueChange', 'tabChange', 'focusChange'],\n },\n ],\n templateUrl: './tng-tabs.component.html',\n styleUrl: './tng-tabs.component.css',\n exportAs: 'tngTabsComponent',\n})\nexport class TngTabsComponent {\n readonly ariaLabel = input<string>('Tabs');\n\n @HostBinding('attr.aria-label')\n protected get hostAriaLabel(): string {\n return this.ariaLabel();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-toolbar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/toolbar/tng-toolbar.component.ts"],"names":[],"mappings":"AAGA,qBAOa,mBAAmB;IAC9B,SAAgB,SAAS,8CAA4B;CACtD"}
1
+ {"version":3,"file":"tng-toolbar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/toolbar/tng-toolbar.component.ts"],"names":[],"mappings":"AAGA,qBAMa,mBAAmB;IAC9B,SAAgB,SAAS,8CAA4B;CACtD"}
@@ -6,7 +6,6 @@ let TngToolbarComponent = class TngToolbarComponent {
6
6
  };
7
7
  TngToolbarComponent = __decorate([
8
8
  Component({
9
- standalone: true,
10
9
  selector: 'tng-toolbar',
11
10
  imports: [TngToolbarPrimitive],
12
11
  templateUrl: './tng-toolbar.component.html',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-toolbar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/toolbar/tng-toolbar.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AASnE,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;CACtD,CAAA;AAFY,mBAAmB;IAP/B,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,CAAC;QAC9B,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAE/B","sourcesContent":["import { Component, input } from '@angular/core';\nimport { TngToolbar as TngToolbarPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n standalone: true,\n selector: 'tng-toolbar',\n imports: [TngToolbarPrimitive],\n templateUrl: './tng-toolbar.component.html',\n styleUrl: './tng-toolbar.component.css',\n})\nexport class TngToolbarComponent {\n public readonly ariaLabel = input<string>('Toolbar');\n}\n"]}
1
+ {"version":3,"file":"tng-toolbar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/navigation/toolbar/tng-toolbar.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAQnE,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;CACtD,CAAA;AAFY,mBAAmB;IAN/B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,CAAC;QAC9B,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAE/B","sourcesContent":["import { Component, input } from '@angular/core';\nimport { TngToolbar as TngToolbarPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-toolbar',\n imports: [TngToolbarPrimitive],\n templateUrl: './tng-toolbar.component.html',\n styleUrl: './tng-toolbar.component.css',\n})\nexport class TngToolbarComponent {\n public readonly ariaLabel = input<string>('Toolbar');\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-dialog.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/dialog/tng-dialog.component.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,eAAe,CAAC;AA2B3D,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,cAAc,CAAC;AAC3F,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAwE/C,qBAMa,kBAAmB,YAAW,SAAS;IAClD,SAAgB,eAAe,8EAE5B;IACH,SAAgB,aAAa,8EAE1B;IACH,SAAgB,WAAW,qDAA8B;IACzD,SAAgB,IAAI,8EAEjB;IACH,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,KAAK,8CAA2B;IAEhD,SAAgB,MAAM,iEAAkC;IACxD,SAAgB,UAAU,oDAAqB;IAE/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqD;IACjF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkD;IAC3E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAExB;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,mBAAmB,CAA4B;IAEvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAO7B;;IAQI,KAAK,IAAI,IAAI;IAIb,WAAW,IAAI,IAAI;IAKnB,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAW3C,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,iBAAiB;CAkB1B"}
1
+ {"version":3,"file":"tng-dialog.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/dialog/tng-dialog.component.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,eAAe,CAAC;AA2B3D,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,cAAc,CAAC;AAC3F,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAwE/C,qBAKa,kBAAmB,YAAW,SAAS;IAClD,SAAgB,eAAe,8EAE5B;IACH,SAAgB,aAAa,8EAE1B;IACH,SAAgB,WAAW,qDAA8B;IACzD,SAAgB,IAAI,8EAEjB;IACH,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,KAAK,8CAA2B;IAEhD,SAAgB,MAAM,iEAAkC;IACxD,SAAgB,UAAU,oDAAqB;IAE/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqD;IACjF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkD;IAC3E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAExB;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,mBAAmB,CAA4B;IAEvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAO7B;;IAQI,KAAK,IAAI,IAAI;IAIb,WAAW,IAAI,IAAI;IAKnB,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAW3C,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,iBAAiB;CAkB1B"}
@@ -277,7 +277,6 @@ let TngDialogComponent = class TngDialogComponent {
277
277
  };
278
278
  TngDialogComponent = __decorate([
279
279
  Component({
280
- standalone: true,
281
280
  selector: 'tng-dialog',
282
281
  templateUrl: './tng-dialog.component.html',
283
282
  styleUrl: './tng-dialog.component.css',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-dialog.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/dialog/tng-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n afterNextRender,\n booleanAttribute,\n Component,\n effect,\n inject,\n Injector,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport type { ElementRef, OnDestroy } from '@angular/core';\nimport {\n createOverlayScrollLockManager,\n createTngIdFactory,\n type TngOverlayDismissReason,\n} from '@tailng-ui/cdk';\nimport type { TngScrollLockDocument } from '@tailng-ui/cdk/overlay';\nimport { tngOverlayRuntime } from '../tng-overlay-runtime';\n\nconst createDialogId = createTngIdFactory('tng-dialog');\n\nconst focusableSelector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\ntype TngFocusTrapState = Readonly<{\n activeElement: HTMLElement | null;\n first: HTMLElement;\n last: HTMLElement;\n panel: HTMLElement;\n}>;\n\nexport type TngDialogCloseReason = 'backdrop' | 'close-button' | 'escape' | 'programmatic';\nexport type TngDialogSize = 'lg' | 'md' | 'sm';\n\nfunction readKeyboardEvent(event: unknown): KeyboardEvent | null {\n return event instanceof KeyboardEvent ? event : null;\n}\n\nfunction resolveActiveElement(documentRef: unknown): HTMLElement | null {\n if (!(documentRef instanceof Document)) {\n return null;\n }\n\n const activeElement = documentRef.activeElement;\n return activeElement instanceof HTMLElement ? activeElement : null;\n}\n\nfunction resolveFocusableElements(container: unknown): readonly HTMLElement[] {\n if (!(container instanceof HTMLElement)) {\n return [];\n }\n\n const candidates = Array.from(container.querySelectorAll<HTMLElement>(focusableSelector));\n const focusableElements: HTMLElement[] = [];\n for (const candidate of candidates) {\n if (!candidate.hasAttribute('disabled')) {\n focusableElements.push(candidate);\n }\n }\n\n return focusableElements;\n}\n\nfunction resolveFirstFocusableWithin(container: unknown): HTMLElement | null {\n return resolveFocusableElements(container)[0] ?? null;\n}\n\nfunction resolveMarkedInitialElement(container: unknown): HTMLElement | null {\n if (!(container instanceof HTMLElement)) {\n return null;\n }\n\n const markedInitial = container.querySelector<HTMLElement>('[data-tng-dialog-initial-focus]');\n if (markedInitial === null) {\n return null;\n }\n\n if (resolveFocusableElements(container).includes(markedInitial)) {\n return markedInitial;\n }\n\n return resolveFirstFocusableWithin(markedInitial);\n}\n\nfunction toScrollLockDocument(documentRef: unknown): TngScrollLockDocument | null {\n if (!(documentRef instanceof Document)) {\n return null;\n }\n\n return documentRef as unknown as TngScrollLockDocument;\n}\n\nfunction toDialogCloseReason(reason: TngOverlayDismissReason): TngDialogCloseReason | null {\n if (reason === 'escape-key') {\n return 'escape';\n }\n\n if (reason === 'outside-pointer') {\n return 'backdrop';\n }\n\n return null;\n}\n\n@Component({\n standalone: true,\n selector: 'tng-dialog',\n templateUrl: './tng-dialog.component.html',\n styleUrl: './tng-dialog.component.css',\n})\nexport class TngDialogComponent implements OnDestroy {\n public readonly closeOnBackdrop = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnEscape = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly description = input<string | null>(null);\n public readonly open = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly size = input<TngDialogSize>('md');\n public readonly title = input<string>('Dialog');\n\n public readonly closed = output<TngDialogCloseReason>();\n public readonly openChange = output<boolean>();\n\n protected readonly descriptionId: string;\n protected readonly panelId: string;\n protected readonly titleId: string;\n\n private readonly documentRef = typeof document === 'undefined' ? null : document;\n private readonly injector = inject(Injector);\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panelRef');\n private readonly scrollLock = createOverlayScrollLockManager({\n documentRef: toScrollLockDocument(this.documentRef),\n });\n private readonly instanceId = createDialogId();\n private isActive = false;\n private isLayerRegistered = false;\n private restoreFocusElement: HTMLElement | null = null;\n\n private readonly openStateEffect = effect((): void => {\n if (this.open()) {\n this.activateDialog();\n return;\n }\n\n this.deactivateDialog();\n });\n\n public constructor() {\n this.descriptionId = `${this.instanceId}-description`;\n this.panelId = `${this.instanceId}-panel`;\n this.titleId = `${this.instanceId}-title`;\n }\n\n public close(): void {\n this.requestClose('programmatic');\n }\n\n public ngOnDestroy(): void {\n this.openStateEffect.destroy();\n this.deactivateDialog();\n }\n\n public onCloseButtonClick(): void {\n this.requestClose('close-button');\n }\n\n public onPanelKeydown(event: unknown): void {\n const keyboardEvent = readKeyboardEvent(event);\n if (keyboardEvent === null) {\n return;\n }\n\n if (keyboardEvent.key === 'Tab') {\n this.trapTabNavigation(event);\n }\n }\n\n private activateDialog(): void {\n if (this.isActive) {\n return;\n }\n\n this.isActive = true;\n this.registerOverlayLayer();\n this.restoreFocusElement = resolveActiveElement(this.documentRef);\n this.scrollLock.acquire(this.instanceId);\n afterNextRender(\n (): void => {\n this.focusInitialElement();\n },\n { injector: this.injector },\n );\n }\n\n private deactivateDialog(): void {\n if (!this.isActive) {\n return;\n }\n\n this.isActive = false;\n this.unregisterOverlayLayer();\n this.scrollLock.release(this.instanceId);\n this.restoreFocusElement?.focus();\n this.restoreFocusElement = null;\n }\n\n private handleOverlayDismiss(reason: TngOverlayDismissReason): void {\n const closeReason = toDialogCloseReason(reason);\n if (closeReason === null) {\n return;\n }\n\n this.requestClose(closeReason);\n }\n\n private registerOverlayLayer(): void {\n if (this.isLayerRegistered) {\n return;\n }\n\n this.isLayerRegistered = true;\n tngOverlayRuntime.registerLayer({\n containsTarget: (target: unknown, path: readonly unknown[]): boolean => {\n const panel = this.panelRef()?.nativeElement;\n if (panel === undefined) {\n return false;\n }\n\n if (path.includes(panel)) {\n return true;\n }\n\n return target instanceof Node ? panel.contains(target) : false;\n },\n dismissOnEscape: this.closeOnEscape(),\n dismissOnOutsidePointer: this.closeOnBackdrop(),\n id: this.instanceId,\n modal: true,\n onDismiss: (reason: TngOverlayDismissReason): void => {\n this.handleOverlayDismiss(reason);\n },\n priority: 100,\n });\n }\n\n private unregisterOverlayLayer(): void {\n if (!this.isLayerRegistered) {\n return;\n }\n\n this.isLayerRegistered = false;\n tngOverlayRuntime.unregisterLayer(this.instanceId);\n }\n\n private focusInitialElement(): void {\n const panel = this.panelRef()?.nativeElement;\n if (panel === undefined) {\n return;\n }\n\n const markedInitial = resolveMarkedInitialElement(panel);\n if (markedInitial !== null) {\n markedInitial.focus();\n return;\n }\n\n const firstFocusable = resolveFirstFocusableWithin(panel);\n if (firstFocusable !== null) {\n firstFocusable.focus();\n return;\n }\n\n panel.focus();\n }\n\n private preventAndFocus(event: unknown, target: unknown): void {\n const keyboardEvent = readKeyboardEvent(event);\n if (keyboardEvent === null || !(target instanceof HTMLElement)) {\n return;\n }\n\n keyboardEvent.preventDefault();\n target.focus();\n }\n\n private requestClose(reason: TngDialogCloseReason): void {\n this.closed.emit(reason);\n this.openChange.emit(false);\n }\n\n private resolveFocusTrapState(panel: unknown): TngFocusTrapState | null {\n if (!(panel instanceof HTMLElement)) {\n return null;\n }\n\n const focusableElements = resolveFocusableElements(panel);\n const first = focusableElements[0];\n if (first === undefined) {\n return null;\n }\n\n return {\n activeElement: resolveActiveElement(this.documentRef),\n first,\n last: focusableElements[focusableElements.length - 1] ?? first,\n panel,\n };\n }\n\n private focusEdgeWhenOutsidePanel(event: unknown, focusState: unknown): boolean {\n const state = focusState as TngFocusTrapState;\n const activeElement = state.activeElement;\n if (activeElement !== null && state.panel.contains(activeElement)) {\n return false;\n }\n\n const keyboardEvent = readKeyboardEvent(event);\n if (keyboardEvent === null) {\n return true;\n }\n\n const edge = keyboardEvent.shiftKey ? state.last : state.first;\n this.preventAndFocus(keyboardEvent, edge);\n return true;\n }\n\n private wrapTabAtEdges(event: unknown, focusState: unknown): void {\n const state = focusState as TngFocusTrapState;\n const keyboardEvent = readKeyboardEvent(event);\n if (keyboardEvent === null) {\n return;\n }\n\n if (keyboardEvent.shiftKey && state.activeElement === state.first) {\n this.preventAndFocus(keyboardEvent, state.last);\n return;\n }\n\n if (!keyboardEvent.shiftKey && state.activeElement === state.last) {\n this.preventAndFocus(keyboardEvent, state.first);\n }\n }\n\n private trapTabNavigation(event: unknown): void {\n const panel = this.panelRef()?.nativeElement;\n if (panel === undefined) {\n return;\n }\n\n const focusState = this.resolveFocusTrapState(panel);\n if (focusState === null) {\n this.preventAndFocus(event, panel);\n return;\n }\n\n if (this.focusEdgeWhenOutsidePanel(event, focusState)) {\n return;\n }\n\n this.wrapTabAtEdges(event, focusState);\n }\n}\n"]}
1
+ {"version":3,"file":"tng-dialog.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/dialog/tng-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n afterNextRender,\n booleanAttribute,\n Component,\n effect,\n inject,\n Injector,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport type { ElementRef, OnDestroy } from '@angular/core';\nimport {\n createOverlayScrollLockManager,\n createTngIdFactory,\n type TngOverlayDismissReason,\n} from '@tailng-ui/cdk';\nimport type { TngScrollLockDocument } from '@tailng-ui/cdk/overlay';\nimport { tngOverlayRuntime } from '../tng-overlay-runtime';\n\nconst createDialogId = createTngIdFactory('tng-dialog');\n\nconst focusableSelector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\ntype TngFocusTrapState = Readonly<{\n activeElement: HTMLElement | null;\n first: HTMLElement;\n last: HTMLElement;\n panel: HTMLElement;\n}>;\n\nexport type TngDialogCloseReason = 'backdrop' | 'close-button' | 'escape' | 'programmatic';\nexport type TngDialogSize = 'lg' | 'md' | 'sm';\n\nfunction readKeyboardEvent(event: unknown): KeyboardEvent | null {\n return event instanceof KeyboardEvent ? event : null;\n}\n\nfunction resolveActiveElement(documentRef: unknown): HTMLElement | null {\n if (!(documentRef instanceof Document)) {\n return null;\n }\n\n const activeElement = documentRef.activeElement;\n return activeElement instanceof HTMLElement ? activeElement : null;\n}\n\nfunction resolveFocusableElements(container: unknown): readonly HTMLElement[] {\n if (!(container instanceof HTMLElement)) {\n return [];\n }\n\n const candidates = Array.from(container.querySelectorAll<HTMLElement>(focusableSelector));\n const focusableElements: HTMLElement[] = [];\n for (const candidate of candidates) {\n if (!candidate.hasAttribute('disabled')) {\n focusableElements.push(candidate);\n }\n }\n\n return focusableElements;\n}\n\nfunction resolveFirstFocusableWithin(container: unknown): HTMLElement | null {\n return resolveFocusableElements(container)[0] ?? null;\n}\n\nfunction resolveMarkedInitialElement(container: unknown): HTMLElement | null {\n if (!(container instanceof HTMLElement)) {\n return null;\n }\n\n const markedInitial = container.querySelector<HTMLElement>('[data-tng-dialog-initial-focus]');\n if (markedInitial === null) {\n return null;\n }\n\n if (resolveFocusableElements(container).includes(markedInitial)) {\n return markedInitial;\n }\n\n return resolveFirstFocusableWithin(markedInitial);\n}\n\nfunction toScrollLockDocument(documentRef: unknown): TngScrollLockDocument | null {\n if (!(documentRef instanceof Document)) {\n return null;\n }\n\n return documentRef as unknown as TngScrollLockDocument;\n}\n\nfunction toDialogCloseReason(reason: TngOverlayDismissReason): TngDialogCloseReason | null {\n if (reason === 'escape-key') {\n return 'escape';\n }\n\n if (reason === 'outside-pointer') {\n return 'backdrop';\n }\n\n return null;\n}\n\n@Component({\n selector: 'tng-dialog',\n templateUrl: './tng-dialog.component.html',\n styleUrl: './tng-dialog.component.css',\n})\nexport class TngDialogComponent implements OnDestroy {\n public readonly closeOnBackdrop = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnEscape = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly description = input<string | null>(null);\n public readonly open = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly size = input<TngDialogSize>('md');\n public readonly title = input<string>('Dialog');\n\n public readonly closed = output<TngDialogCloseReason>();\n public readonly openChange = output<boolean>();\n\n protected readonly descriptionId: string;\n protected readonly panelId: string;\n protected readonly titleId: string;\n\n private readonly documentRef = typeof document === 'undefined' ? null : document;\n private readonly injector = inject(Injector);\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panelRef');\n private readonly scrollLock = createOverlayScrollLockManager({\n documentRef: toScrollLockDocument(this.documentRef),\n });\n private readonly instanceId = createDialogId();\n private isActive = false;\n private isLayerRegistered = false;\n private restoreFocusElement: HTMLElement | null = null;\n\n private readonly openStateEffect = effect((): void => {\n if (this.open()) {\n this.activateDialog();\n return;\n }\n\n this.deactivateDialog();\n });\n\n public constructor() {\n this.descriptionId = `${this.instanceId}-description`;\n this.panelId = `${this.instanceId}-panel`;\n this.titleId = `${this.instanceId}-title`;\n }\n\n public close(): void {\n this.requestClose('programmatic');\n }\n\n public ngOnDestroy(): void {\n this.openStateEffect.destroy();\n this.deactivateDialog();\n }\n\n public onCloseButtonClick(): void {\n this.requestClose('close-button');\n }\n\n public onPanelKeydown(event: unknown): void {\n const keyboardEvent = readKeyboardEvent(event);\n if (keyboardEvent === null) {\n return;\n }\n\n if (keyboardEvent.key === 'Tab') {\n this.trapTabNavigation(event);\n }\n }\n\n private activateDialog(): void {\n if (this.isActive) {\n return;\n }\n\n this.isActive = true;\n this.registerOverlayLayer();\n this.restoreFocusElement = resolveActiveElement(this.documentRef);\n this.scrollLock.acquire(this.instanceId);\n afterNextRender(\n (): void => {\n this.focusInitialElement();\n },\n { injector: this.injector },\n );\n }\n\n private deactivateDialog(): void {\n if (!this.isActive) {\n return;\n }\n\n this.isActive = false;\n this.unregisterOverlayLayer();\n this.scrollLock.release(this.instanceId);\n this.restoreFocusElement?.focus();\n this.restoreFocusElement = null;\n }\n\n private handleOverlayDismiss(reason: TngOverlayDismissReason): void {\n const closeReason = toDialogCloseReason(reason);\n if (closeReason === null) {\n return;\n }\n\n this.requestClose(closeReason);\n }\n\n private registerOverlayLayer(): void {\n if (this.isLayerRegistered) {\n return;\n }\n\n this.isLayerRegistered = true;\n tngOverlayRuntime.registerLayer({\n containsTarget: (target: unknown, path: readonly unknown[]): boolean => {\n const panel = this.panelRef()?.nativeElement;\n if (panel === undefined) {\n return false;\n }\n\n if (path.includes(panel)) {\n return true;\n }\n\n return target instanceof Node ? panel.contains(target) : false;\n },\n dismissOnEscape: this.closeOnEscape(),\n dismissOnOutsidePointer: this.closeOnBackdrop(),\n id: this.instanceId,\n modal: true,\n onDismiss: (reason: TngOverlayDismissReason): void => {\n this.handleOverlayDismiss(reason);\n },\n priority: 100,\n });\n }\n\n private unregisterOverlayLayer(): void {\n if (!this.isLayerRegistered) {\n return;\n }\n\n this.isLayerRegistered = false;\n tngOverlayRuntime.unregisterLayer(this.instanceId);\n }\n\n private focusInitialElement(): void {\n const panel = this.panelRef()?.nativeElement;\n if (panel === undefined) {\n return;\n }\n\n const markedInitial = resolveMarkedInitialElement(panel);\n if (markedInitial !== null) {\n markedInitial.focus();\n return;\n }\n\n const firstFocusable = resolveFirstFocusableWithin(panel);\n if (firstFocusable !== null) {\n firstFocusable.focus();\n return;\n }\n\n panel.focus();\n }\n\n private preventAndFocus(event: unknown, target: unknown): void {\n const keyboardEvent = readKeyboardEvent(event);\n if (keyboardEvent === null || !(target instanceof HTMLElement)) {\n return;\n }\n\n keyboardEvent.preventDefault();\n target.focus();\n }\n\n private requestClose(reason: TngDialogCloseReason): void {\n this.closed.emit(reason);\n this.openChange.emit(false);\n }\n\n private resolveFocusTrapState(panel: unknown): TngFocusTrapState | null {\n if (!(panel instanceof HTMLElement)) {\n return null;\n }\n\n const focusableElements = resolveFocusableElements(panel);\n const first = focusableElements[0];\n if (first === undefined) {\n return null;\n }\n\n return {\n activeElement: resolveActiveElement(this.documentRef),\n first,\n last: focusableElements[focusableElements.length - 1] ?? first,\n panel,\n };\n }\n\n private focusEdgeWhenOutsidePanel(event: unknown, focusState: unknown): boolean {\n const state = focusState as TngFocusTrapState;\n const activeElement = state.activeElement;\n if (activeElement !== null && state.panel.contains(activeElement)) {\n return false;\n }\n\n const keyboardEvent = readKeyboardEvent(event);\n if (keyboardEvent === null) {\n return true;\n }\n\n const edge = keyboardEvent.shiftKey ? state.last : state.first;\n this.preventAndFocus(keyboardEvent, edge);\n return true;\n }\n\n private wrapTabAtEdges(event: unknown, focusState: unknown): void {\n const state = focusState as TngFocusTrapState;\n const keyboardEvent = readKeyboardEvent(event);\n if (keyboardEvent === null) {\n return;\n }\n\n if (keyboardEvent.shiftKey && state.activeElement === state.first) {\n this.preventAndFocus(keyboardEvent, state.last);\n return;\n }\n\n if (!keyboardEvent.shiftKey && state.activeElement === state.last) {\n this.preventAndFocus(keyboardEvent, state.first);\n }\n }\n\n private trapTabNavigation(event: unknown): void {\n const panel = this.panelRef()?.nativeElement;\n if (panel === undefined) {\n return;\n }\n\n const focusState = this.resolveFocusTrapState(panel);\n if (focusState === null) {\n this.preventAndFocus(event, panel);\n return;\n }\n\n if (this.focusEdgeWhenOutsidePanel(event, focusState)) {\n return;\n }\n\n this.wrapTabAtEdges(event, focusState);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-popover.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/popover/tng-popover.component.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,UAAU,IAAI,mBAAmB,EAGjC,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAUhE,qBAOa,mBAAmB;IAC9B,SAAgB,SAAS,8CAA4B;IACrD,SAAgB,YAAY,8DAA2C;IACvE,SAAgB,SAAS,2DAAiD;IAC1E,SAAgB,KAAK,uDAAmC;IACxD,SAAgB,aAAa,8EAE1B;IACH,SAAgB,qBAAqB,8EAElC;IACH,SAAgB,WAAW,8EAExB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,IAAI,8FAEjB;IACH,SAAgB,SAAS,2DAAwC;IACjE,SAAgB,YAAY,8EAEzB;IACH,SAAgB,IAAI,sDAAmC;IACvD,SAAgB,YAAY,8CAAmC;IAE/D,SAAgB,MAAM,kEAAmC;IACzD,SAAgB,UAAU,oDAAqB;IAE/C,SAAS,CAAC,QAAQ,CAAC,UAAU,sDAAyD;IAE/E,KAAK,IAAI,IAAI;CAGrB"}
1
+ {"version":3,"file":"tng-popover.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/popover/tng-popover.component.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,UAAU,IAAI,mBAAmB,EAGjC,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAUhE,qBAMa,mBAAmB;IAC9B,SAAgB,SAAS,8CAA4B;IACrD,SAAgB,YAAY,8DAA2C;IACvE,SAAgB,SAAS,2DAAiD;IAC1E,SAAgB,KAAK,uDAAmC;IACxD,SAAgB,aAAa,8EAE1B;IACH,SAAgB,qBAAqB,8EAElC;IACH,SAAgB,WAAW,8EAExB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,IAAI,8FAEjB;IACH,SAAgB,SAAS,2DAAwC;IACjE,SAAgB,YAAY,8EAEzB;IACH,SAAgB,IAAI,sDAAmC;IACvD,SAAgB,YAAY,8CAAmC;IAE/D,SAAgB,MAAM,kEAAmC;IACzD,SAAgB,UAAU,oDAAqB;IAE/C,SAAS,CAAC,QAAQ,CAAC,UAAU,sDAAyD;IAE/E,KAAK,IAAI,IAAI;CAGrB"}
@@ -42,7 +42,6 @@ let TngPopoverComponent = class TngPopoverComponent {
42
42
  };
43
43
  TngPopoverComponent = __decorate([
44
44
  Component({
45
- standalone: true,
46
45
  selector: 'tng-popover',
47
46
  imports: [TngPopoverPrimitive, TngPopoverTrigger, TngPopoverPanel],
48
47
  templateUrl: './tng-popover.component.html',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-popover.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/popover/tng-popover.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,eAAe,EACf,iBAAiB,GAOlB,MAAM,uBAAuB,CAAC;AAY/B,SAAS,6BAA6B,CAAC,KAA2B;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AASM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;IACrC,YAAY,GAAG,KAAK,CAAyB,QAAQ,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAsB,iBAAiB,CAAC,CAAC;IAC1D,KAAK,GAAG,KAAK,CAAkB,OAAO,CAAC,CAAC;IACxC,aAAa,GAAG,KAAK,CAA4B,IAAI,EAAE;QACrE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,qBAAqB,GAAG,KAAK,CAA4B,IAAI,EAAE;QAC7E,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,WAAW,GAAG,KAAK,CAA4B,KAAK,EAAE;QACpE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAA4C,SAAS,EAAE;QACjF,SAAS,EAAE,6BAA6B;KACzC,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAAsB,QAAQ,CAAC,CAAC;IACjD,YAAY,GAAG,KAAK,CAA4B,IAAI,EAAE;QACpE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAAiB,QAAQ,CAAC,CAAC;IACvC,YAAY,GAAG,KAAK,CAAS,gBAAgB,CAAC,CAAC;IAE/C,MAAM,GAAG,MAAM,EAAyB,CAAC;IACzC,UAAU,GAAG,MAAM,EAAW,CAAC;IAE5B,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAsB,YAAY,CAAC,CAAC;IAE/E,KAAK;QACV,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAnCY,mBAAmB;IAP/B,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,CAAC;QAClE,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAmC/B","sourcesContent":["import {\n booleanAttribute,\n Component,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport {\n TngPopover as TngPopoverPrimitive,\n TngPopoverPanel,\n TngPopoverTrigger,\n type TngPopoverAlign,\n type TngPopoverAriaHasPopup,\n type TngPopoverAutoFocus,\n type TngPopoverCloseReason,\n type TngPopoverPanelRole,\n type TngPopoverSide,\n} from '@tailng-ui/primitives';\nexport type {\n TngPopoverAlign,\n TngPopoverAriaHasPopup,\n TngPopoverAutoFocus,\n TngPopoverCloseReason,\n TngPopoverPanelRole,\n TngPopoverSide,\n} from '@tailng-ui/primitives';\n\ntype OptionalBooleanInput = boolean | null | string | undefined;\n\nfunction normalizeOptionalBooleanInput(value: OptionalBooleanInput): boolean | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\n@Component({\n standalone: true,\n selector: 'tng-popover',\n imports: [TngPopoverPrimitive, TngPopoverTrigger, TngPopoverPanel],\n templateUrl: './tng-popover.component.html',\n styleUrl: './tng-popover.component.css',\n})\nexport class TngPopoverComponent {\n public readonly ariaLabel = input<string>('Popover');\n public readonly ariaHasPopup = input<TngPopoverAriaHasPopup>('dialog');\n public readonly autoFocus = input<TngPopoverAutoFocus>('first-focusable');\n public readonly align = input<TngPopoverAlign>('start');\n public readonly closeOnEscape = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnOutsidePointer = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly defaultOpen = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly open = input<boolean | undefined, OptionalBooleanInput>(undefined, {\n transform: normalizeOptionalBooleanInput,\n });\n public readonly panelRole = input<TngPopoverPanelRole>('dialog');\n public readonly restoreFocus = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly side = input<TngPopoverSide>('bottom');\n public readonly triggerLabel = input<string>('Toggle Popover');\n\n public readonly closed = output<TngPopoverCloseReason>();\n public readonly openChange = output<boolean>();\n\n protected readonly popoverRef = viewChild.required<TngPopoverPrimitive>('popoverRef');\n\n public close(): void {\n this.popoverRef().closePopover('programmatic');\n }\n}\n"]}
1
+ {"version":3,"file":"tng-popover.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/popover/tng-popover.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,eAAe,EACf,iBAAiB,GAOlB,MAAM,uBAAuB,CAAC;AAY/B,SAAS,6BAA6B,CAAC,KAA2B;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAQM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;IACrC,YAAY,GAAG,KAAK,CAAyB,QAAQ,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAsB,iBAAiB,CAAC,CAAC;IAC1D,KAAK,GAAG,KAAK,CAAkB,OAAO,CAAC,CAAC;IACxC,aAAa,GAAG,KAAK,CAA4B,IAAI,EAAE;QACrE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,qBAAqB,GAAG,KAAK,CAA4B,IAAI,EAAE;QAC7E,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,WAAW,GAAG,KAAK,CAA4B,KAAK,EAAE;QACpE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAA4C,SAAS,EAAE;QACjF,SAAS,EAAE,6BAA6B;KACzC,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAAsB,QAAQ,CAAC,CAAC;IACjD,YAAY,GAAG,KAAK,CAA4B,IAAI,EAAE;QACpE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAAiB,QAAQ,CAAC,CAAC;IACvC,YAAY,GAAG,KAAK,CAAS,gBAAgB,CAAC,CAAC;IAE/C,MAAM,GAAG,MAAM,EAAyB,CAAC;IACzC,UAAU,GAAG,MAAM,EAAW,CAAC;IAE5B,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAsB,YAAY,CAAC,CAAC;IAE/E,KAAK;QACV,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAnCY,mBAAmB;IAN/B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,CAAC;QAClE,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAmC/B","sourcesContent":["import {\n booleanAttribute,\n Component,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport {\n TngPopover as TngPopoverPrimitive,\n TngPopoverPanel,\n TngPopoverTrigger,\n type TngPopoverAlign,\n type TngPopoverAriaHasPopup,\n type TngPopoverAutoFocus,\n type TngPopoverCloseReason,\n type TngPopoverPanelRole,\n type TngPopoverSide,\n} from '@tailng-ui/primitives';\nexport type {\n TngPopoverAlign,\n TngPopoverAriaHasPopup,\n TngPopoverAutoFocus,\n TngPopoverCloseReason,\n TngPopoverPanelRole,\n TngPopoverSide,\n} from '@tailng-ui/primitives';\n\ntype OptionalBooleanInput = boolean | null | string | undefined;\n\nfunction normalizeOptionalBooleanInput(value: OptionalBooleanInput): boolean | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\n@Component({\n selector: 'tng-popover',\n imports: [TngPopoverPrimitive, TngPopoverTrigger, TngPopoverPanel],\n templateUrl: './tng-popover.component.html',\n styleUrl: './tng-popover.component.css',\n})\nexport class TngPopoverComponent {\n public readonly ariaLabel = input<string>('Popover');\n public readonly ariaHasPopup = input<TngPopoverAriaHasPopup>('dialog');\n public readonly autoFocus = input<TngPopoverAutoFocus>('first-focusable');\n public readonly align = input<TngPopoverAlign>('start');\n public readonly closeOnEscape = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnOutsidePointer = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly defaultOpen = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly open = input<boolean | undefined, OptionalBooleanInput>(undefined, {\n transform: normalizeOptionalBooleanInput,\n });\n public readonly panelRole = input<TngPopoverPanelRole>('dialog');\n public readonly restoreFocus = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly side = input<TngPopoverSide>('bottom');\n public readonly triggerLabel = input<string>('Toggle Popover');\n\n public readonly closed = output<TngPopoverCloseReason>();\n public readonly openChange = output<boolean>();\n\n protected readonly popoverRef = viewChild.required<TngPopoverPrimitive>('popoverRef');\n\n public close(): void {\n this.popoverRef().closePopover('programmatic');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tooltip.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,qBAOa,mBAAmB;IAC9B,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,UAAU,8CAAqB;IAC/C,SAAgB,QAAQ,8EAErB;IACH,SAAgB,SAAS,8CAAsB;IAC/C,SAAgB,IAAI,sDAAgC;IACpD,SAAgB,IAAI,8CAAqC;IACzD,SAAgB,YAAY,8CAAyB;IAErD,SAAgB,UAAU,oDAAqB;CAChD"}
1
+ {"version":3,"file":"tng-tooltip.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,qBAMa,mBAAmB;IAC9B,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,UAAU,8CAAqB;IAC/C,SAAgB,QAAQ,8EAErB;IACH,SAAgB,SAAS,8CAAsB;IAC/C,SAAgB,IAAI,sDAAgC;IACpD,SAAgB,IAAI,8CAAqC;IACzD,SAAgB,YAAY,8CAAyB;IAErD,SAAgB,UAAU,oDAAqB;CAChD"}
@@ -21,7 +21,6 @@ let TngTooltipComponent = class TngTooltipComponent {
21
21
  };
22
22
  TngTooltipComponent = __decorate([
23
23
  Component({
24
- standalone: true,
25
24
  selector: 'tng-tooltip',
26
25
  imports: [TngTooltipPrimitive, TngTooltipTriggerPrimitive, TngTooltipContentPrimitive],
27
26
  templateUrl: './tng-tooltip.component.html',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tooltip.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,iBAAiB,IAAI,0BAA0B,EAC/C,iBAAiB,IAAI,0BAA0B,EAE/C,wBAAwB,IAAI,iCAAiC,EAC7D,2BAA2B,IAAI,oCAAoC,GACpE,MAAM,uBAAuB,CAAC;AAE/B,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,iCAAiC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,OAAO,oCAAoC,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AASM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACvC,UAAU,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IAC/B,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAAS,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAiB,KAAK,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,CAAS,kBAAkB,CAAC,CAAC;IACzC,YAAY,GAAG,KAAK,CAAS,MAAM,CAAC,CAAC;IAErC,UAAU,GAAG,MAAM,EAAW,CAAC;CAChD,CAAA;AAZY,mBAAmB;IAP/B,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,0BAA0B,CAAC;QACtF,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAY/B","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngTooltip as TngTooltipPrimitive,\n TngTooltipContent as TngTooltipContentPrimitive,\n TngTooltipTrigger as TngTooltipTriggerPrimitive,\n type TngTooltipSide,\n normalizeTngTooltipDelay as normalizeTngTooltipDelayPrimitive,\n shouldCloseTngTooltipForKey as shouldCloseTngTooltipForKeyPrimitive,\n} from '@tailng-ui/primitives';\n\nexport function normalizeTngTooltipDelay(value: number): number {\n return normalizeTngTooltipDelayPrimitive(value);\n}\n\nexport function shouldCloseTngTooltipForKey(key: string): boolean {\n return shouldCloseTngTooltipForKeyPrimitive(key);\n}\n\n@Component({\n standalone: true,\n selector: 'tng-tooltip',\n imports: [TngTooltipPrimitive, TngTooltipTriggerPrimitive, TngTooltipContentPrimitive],\n templateUrl: './tng-tooltip.component.html',\n styleUrl: './tng-tooltip.component.css',\n})\nexport class TngTooltipComponent {\n public readonly ariaLabel = input<string | null>(null);\n public readonly closeDelay = input<number>(60);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly openDelay = input<number>(120);\n public readonly side = input<TngTooltipSide>('top');\n public readonly text = input<string>('More information');\n public readonly triggerLabel = input<string>('Info');\n\n public readonly openChange = output<boolean>();\n}\n"]}
1
+ {"version":3,"file":"tng-tooltip.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,iBAAiB,IAAI,0BAA0B,EAC/C,iBAAiB,IAAI,0BAA0B,EAE/C,wBAAwB,IAAI,iCAAiC,EAC7D,2BAA2B,IAAI,oCAAoC,GACpE,MAAM,uBAAuB,CAAC;AAE/B,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,iCAAiC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,OAAO,oCAAoC,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAQM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACvC,UAAU,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IAC/B,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAAS,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAiB,KAAK,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,CAAS,kBAAkB,CAAC,CAAC;IACzC,YAAY,GAAG,KAAK,CAAS,MAAM,CAAC,CAAC;IAErC,UAAU,GAAG,MAAM,EAAW,CAAC;CAChD,CAAA;AAZY,mBAAmB;IAN/B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,0BAA0B,CAAC;QACtF,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAY/B","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngTooltip as TngTooltipPrimitive,\n TngTooltipContent as TngTooltipContentPrimitive,\n TngTooltipTrigger as TngTooltipTriggerPrimitive,\n type TngTooltipSide,\n normalizeTngTooltipDelay as normalizeTngTooltipDelayPrimitive,\n shouldCloseTngTooltipForKey as shouldCloseTngTooltipForKeyPrimitive,\n} from '@tailng-ui/primitives';\n\nexport function normalizeTngTooltipDelay(value: number): number {\n return normalizeTngTooltipDelayPrimitive(value);\n}\n\nexport function shouldCloseTngTooltipForKey(key: string): boolean {\n return shouldCloseTngTooltipForKeyPrimitive(key);\n}\n\n@Component({\n selector: 'tng-tooltip',\n imports: [TngTooltipPrimitive, TngTooltipTriggerPrimitive, TngTooltipContentPrimitive],\n templateUrl: './tng-tooltip.component.html',\n styleUrl: './tng-tooltip.component.css',\n})\nexport class TngTooltipComponent {\n public readonly ariaLabel = input<string | null>(null);\n public readonly closeDelay = input<number>(60);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly openDelay = input<number>(120);\n public readonly side = input<TngTooltipSide>('top');\n public readonly text = input<string>('More information');\n public readonly triggerLabel = input<string>('Info');\n\n public readonly openChange = output<boolean>();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-avatar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1C,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA2CxC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAWhF;AAED,qBAOa,kBAAkB;IAC7B,SAAgB,GAAG,qDAAkC;IACrD,SAAgB,QAAQ,qDAA8B;IACtD,SAAgB,KAAK,sDAAmC;IACxD,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,GAAG,qDAA8B;IAEjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,yCAE7B;IACF,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAE5B;IACF,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAE5B;IACF,SAAS,CAAC,QAAQ,CAAC,YAAY,0CAE7B;IAEK,YAAY,IAAI,IAAI;IAIpB,WAAW,IAAI,IAAI;CAG3B"}
1
+ {"version":3,"file":"tng-avatar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1C,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA2CxC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAWhF;AAED,qBAMa,kBAAkB;IAC7B,SAAgB,GAAG,qDAAkC;IACrD,SAAgB,QAAQ,qDAA8B;IACtD,SAAgB,KAAK,sDAAmC;IACxD,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,GAAG,qDAA8B;IAEjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,yCAE7B;IACF,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAE5B;IACF,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAE5B;IACF,SAAS,CAAC,QAAQ,CAAC,YAAY,0CAE7B;IAEK,YAAY,IAAI,IAAI;IAIpB,WAAW,IAAI,IAAI;CAG3B"}
@@ -63,7 +63,6 @@ let TngAvatarComponent = class TngAvatarComponent {
63
63
  };
64
64
  TngAvatarComponent = __decorate([
65
65
  Component({
66
- standalone: true,
67
66
  selector: 'tng-avatar',
68
67
  imports: [TngAvatarPrimitive, TngAvatarImagePrimitive, TngAvatarFallbackPrimitive],
69
68
  templateUrl: './tng-avatar.component.html',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-avatar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, computed, input, signal } from '@angular/core';\nimport {\n TngAvatar as TngAvatarPrimitive,\n TngAvatarFallback as TngAvatarFallbackPrimitive,\n TngAvatarImage as TngAvatarImagePrimitive,\n} from '@tailng-ui/primitives';\n\ntype TngAvatarShape = 'circle' | 'square';\ntype TngAvatarSize = 'lg' | 'md' | 'sm';\n\nfunction normalizeOptionalString(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction normalizeAvatarAlt(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : '';\n}\n\nfunction normalizeFallbackText(value: string): string {\n return value.length > 0 ? value : '?';\n}\n\nfunction toWords(value: string | null | undefined): readonly string[] {\n const normalized = normalizeOptionalString(value);\n if (normalized === null) {\n return [];\n }\n\n return normalized.split(/\\s+/).filter((part) => part.length > 0);\n}\n\nfunction toTwoLetterCode(word: string): string {\n return normalizeFallbackText(word.slice(0, 2).toUpperCase());\n}\n\nfunction toInitialCode(words: readonly string[]): string {\n const firstInitial = words[0]?.charAt(0) ?? '';\n const secondInitial = words[1]?.charAt(0) ?? '';\n return normalizeFallbackText(`${firstInitial}${secondInitial}`.toUpperCase());\n}\n\nexport function toTngAvatarFallbackText(value: string | null | undefined): string {\n const words = toWords(value);\n if (words.length === 0) {\n return '?';\n }\n\n if (words.length === 1) {\n return toTwoLetterCode(words[0] ?? '');\n }\n\n return toInitialCode(words);\n}\n\n@Component({\n standalone: true,\n selector: 'tng-avatar',\n imports: [TngAvatarPrimitive, TngAvatarImagePrimitive, TngAvatarFallbackPrimitive],\n templateUrl: './tng-avatar.component.html',\n styleUrl: './tng-avatar.component.css',\n})\nexport class TngAvatarComponent {\n public readonly alt = input<string | null>('Avatar');\n public readonly fallback = input<string | null>(null);\n public readonly shape = input<TngAvatarShape>('circle');\n public readonly size = input<TngAvatarSize>('md');\n public readonly src = input<string | null>(null);\n\n private readonly imageLoadFailed = signal(false);\n protected readonly fallbackText = computed<string>(() =>\n toTngAvatarFallbackText(this.fallback()),\n );\n protected readonly resolvedAlt = computed<string | null>(() =>\n normalizeAvatarAlt(this.alt()),\n );\n protected readonly resolvedSrc = computed<string | null>(() =>\n normalizeOptionalString(this.src()),\n );\n protected readonly showFallback = computed<boolean>(\n () => this.resolvedSrc() === null || this.imageLoadFailed(),\n );\n\n public onImageError(): void {\n this.imageLoadFailed.set(true);\n }\n\n public onImageLoad(): void {\n this.imageLoadFailed.set(false);\n }\n}\n"]}
1
+ {"version":3,"file":"tng-avatar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,SAAS,IAAI,kBAAkB,EAC/B,iBAAiB,IAAI,0BAA0B,EAC/C,cAAc,IAAI,uBAAuB,GAC1C,MAAM,uBAAuB,CAAC;AAK/B,SAAS,uBAAuB,CAAC,KAAgC;IAC/D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgC;IAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACxC,CAAC;AAED,SAAS,OAAO,CAAC,KAAgC;IAC/C,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,KAAwB;IAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,qBAAqB,CAAC,GAAG,YAAY,GAAG,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAgC;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAQM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACb,GAAG,GAAG,KAAK,CAAgB,QAAQ,CAAC,CAAC;IACrC,QAAQ,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACtC,KAAK,GAAG,KAAK,CAAiB,QAAQ,CAAC,CAAC;IACxC,IAAI,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAClC,GAAG,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAEhC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,YAAY,GAAG,QAAQ,CAAS,GAAG,EAAE,CACtD,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CACzC,CAAC;IACiB,WAAW,GAAG,QAAQ,CAAgB,GAAG,EAAE,CAC5D,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAC/B,CAAC;IACiB,WAAW,GAAG,QAAQ,CAAgB,GAAG,EAAE,CAC5D,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CACpC,CAAC;IACiB,YAAY,GAAG,QAAQ,CACxC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAC5D,CAAC;IAEK,YAAY;QACjB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF,CAAA;AA5BY,kBAAkB;IAN9B,SAAS,CAAC;QACT,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,0BAA0B,CAAC;QAClF,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,4BAA4B;KACvC,CAAC;GACW,kBAAkB,CA4B9B","sourcesContent":["import { Component, computed, input, signal } from '@angular/core';\nimport {\n TngAvatar as TngAvatarPrimitive,\n TngAvatarFallback as TngAvatarFallbackPrimitive,\n TngAvatarImage as TngAvatarImagePrimitive,\n} from '@tailng-ui/primitives';\n\ntype TngAvatarShape = 'circle' | 'square';\ntype TngAvatarSize = 'lg' | 'md' | 'sm';\n\nfunction normalizeOptionalString(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction normalizeAvatarAlt(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : '';\n}\n\nfunction normalizeFallbackText(value: string): string {\n return value.length > 0 ? value : '?';\n}\n\nfunction toWords(value: string | null | undefined): readonly string[] {\n const normalized = normalizeOptionalString(value);\n if (normalized === null) {\n return [];\n }\n\n return normalized.split(/\\s+/).filter((part) => part.length > 0);\n}\n\nfunction toTwoLetterCode(word: string): string {\n return normalizeFallbackText(word.slice(0, 2).toUpperCase());\n}\n\nfunction toInitialCode(words: readonly string[]): string {\n const firstInitial = words[0]?.charAt(0) ?? '';\n const secondInitial = words[1]?.charAt(0) ?? '';\n return normalizeFallbackText(`${firstInitial}${secondInitial}`.toUpperCase());\n}\n\nexport function toTngAvatarFallbackText(value: string | null | undefined): string {\n const words = toWords(value);\n if (words.length === 0) {\n return '?';\n }\n\n if (words.length === 1) {\n return toTwoLetterCode(words[0] ?? '');\n }\n\n return toInitialCode(words);\n}\n\n@Component({\n selector: 'tng-avatar',\n imports: [TngAvatarPrimitive, TngAvatarImagePrimitive, TngAvatarFallbackPrimitive],\n templateUrl: './tng-avatar.component.html',\n styleUrl: './tng-avatar.component.css',\n})\nexport class TngAvatarComponent {\n public readonly alt = input<string | null>('Avatar');\n public readonly fallback = input<string | null>(null);\n public readonly shape = input<TngAvatarShape>('circle');\n public readonly size = input<TngAvatarSize>('md');\n public readonly src = input<string | null>(null);\n\n private readonly imageLoadFailed = signal(false);\n protected readonly fallbackText = computed<string>(() =>\n toTngAvatarFallbackText(this.fallback()),\n );\n protected readonly resolvedAlt = computed<string | null>(() =>\n normalizeAvatarAlt(this.alt()),\n );\n protected readonly resolvedSrc = computed<string | null>(() =>\n normalizeOptionalString(this.src()),\n );\n protected readonly showFallback = computed<boolean>(\n () => this.resolvedSrc() === null || this.imageLoadFailed(),\n );\n\n public onImageError(): void {\n this.imageLoadFailed.set(true);\n }\n\n public onImageLoad(): void {\n this.imageLoadFailed.set(false);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-badge.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/badge/tng-badge.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,qBAKa,iBAAkB,SAAQ,iBAAiB;CAAG"}
1
+ {"version":3,"file":"tng-badge.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/badge/tng-badge.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,qBAIa,iBAAkB,SAAQ,iBAAiB;CAAG"}