@tailng-ui/primitives 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/package.json +3 -2
  2. package/src/index.d.ts +1 -0
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +1 -0
  5. package/src/index.js.map +1 -1
  6. package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
  7. package/src/lib/feedback/empty/tng-empty.js +0 -5
  8. package/src/lib/feedback/empty/tng-empty.js.map +1 -1
  9. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
  10. package/src/lib/feedback/progress-bar/tng-progress-bar.js +0 -2
  11. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
  12. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
  13. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +0 -1
  14. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
  15. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
  16. package/src/lib/feedback/skeleton/tng-skeleton.js +0 -1
  17. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
  18. package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
  19. package/src/lib/feedback/toast/tng-toast.js +0 -2
  20. package/src/lib/feedback/toast/tng-toast.js.map +1 -1
  21. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
  22. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +0 -1
  23. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
  24. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -1
  25. package/src/lib/form/_shared/select/tng-select.parts.shared.js +0 -4
  26. package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
  27. package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
  28. package/src/lib/form/autocomplete/tng-autocomplete.js +0 -1
  29. package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
  30. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
  31. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +0 -2
  32. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
  33. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
  34. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +0 -1
  35. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
  36. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
  37. package/src/lib/form/autocomplete/tng-autocomplete.parts.js +0 -4
  38. package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
  39. package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
  40. package/src/lib/form/button-toggle/tng-button-toggle.js +0 -2
  41. package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
  42. package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
  43. package/src/lib/form/checkbox/tng-checkbox.js +0 -1
  44. package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
  45. package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
  46. package/src/lib/form/chips/tng-chips.js +0 -3
  47. package/src/lib/form/chips/tng-chips.js.map +1 -1
  48. package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
  49. package/src/lib/form/combobox/tng-combobox.js +0 -1
  50. package/src/lib/form/combobox/tng-combobox.js.map +1 -1
  51. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts +25 -0
  52. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts.map +1 -0
  53. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js +105 -0
  54. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js.map +1 -0
  55. package/src/lib/form/datepicker/datepicker.adapters.d.ts +5 -0
  56. package/src/lib/form/datepicker/datepicker.adapters.d.ts.map +1 -0
  57. package/src/lib/form/datepicker/datepicker.adapters.js +194 -0
  58. package/src/lib/form/datepicker/datepicker.adapters.js.map +1 -0
  59. package/src/lib/form/datepicker/datepicker.state.d.ts +10 -0
  60. package/src/lib/form/datepicker/datepicker.state.d.ts.map +1 -0
  61. package/src/lib/form/datepicker/datepicker.state.js +97 -0
  62. package/src/lib/form/datepicker/datepicker.state.js.map +1 -0
  63. package/src/lib/form/datepicker/datepicker.types.d.ts +269 -0
  64. package/src/lib/form/datepicker/datepicker.types.d.ts.map +1 -0
  65. package/src/lib/form/datepicker/datepicker.types.js +1 -0
  66. package/src/lib/form/datepicker/datepicker.types.js.map +1 -0
  67. package/src/lib/form/datepicker/datepicker.utils.d.ts +75 -0
  68. package/src/lib/form/datepicker/datepicker.utils.d.ts.map +1 -0
  69. package/src/lib/form/datepicker/datepicker.utils.js +238 -0
  70. package/src/lib/form/datepicker/datepicker.utils.js.map +1 -0
  71. package/src/lib/form/datepicker/index.d.ts +3 -0
  72. package/src/lib/form/datepicker/index.d.ts.map +1 -0
  73. package/src/lib/form/datepicker/index.js +3 -0
  74. package/src/lib/form/datepicker/index.js.map +1 -0
  75. package/src/lib/form/datepicker/tng-datepicker.d.ts +5 -0
  76. package/src/lib/form/datepicker/tng-datepicker.d.ts.map +1 -0
  77. package/src/lib/form/datepicker/tng-datepicker.js +1948 -0
  78. package/src/lib/form/datepicker/tng-datepicker.js.map +1 -0
  79. package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts +60 -0
  80. package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts.map +1 -0
  81. package/src/lib/form/datepicker/tng-datepicker.overlay.js +275 -0
  82. package/src/lib/form/datepicker/tng-datepicker.overlay.js.map +1 -0
  83. package/src/lib/form/input/tng-input.d.ts.map +1 -1
  84. package/src/lib/form/input/tng-input.js +0 -4
  85. package/src/lib/form/input/tng-input.js.map +1 -1
  86. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
  87. package/src/lib/form/input-otp/tng-input-otp.js +0 -1
  88. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
  89. package/src/lib/form/label/tng-label.d.ts.map +1 -1
  90. package/src/lib/form/label/tng-label.js +0 -1
  91. package/src/lib/form/label/tng-label.js.map +1 -1
  92. package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
  93. package/src/lib/form/listbox/listbox.directive.js +0 -1
  94. package/src/lib/form/listbox/listbox.directive.js.map +1 -1
  95. package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
  96. package/src/lib/form/listbox/option.directive.js +0 -1
  97. package/src/lib/form/listbox/option.directive.js.map +1 -1
  98. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -1
  99. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +0 -1
  100. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -1
  101. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -1
  102. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +0 -1
  103. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -1
  104. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -1
  105. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +0 -1
  106. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -1
  107. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -1
  108. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +0 -2
  109. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -1
  110. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
  111. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +0 -1
  112. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
  113. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
  114. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +0 -1
  115. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
  116. package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -1
  117. package/src/lib/form/multi-select/tng-multi-select.js +0 -1
  118. package/src/lib/form/multi-select/tng-multi-select.js.map +1 -1
  119. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -1
  120. package/src/lib/form/multi-select/tng-multi-select.listbox.js +0 -2
  121. package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
  122. package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
  123. package/src/lib/form/multiselect/tng-multiselect.js +0 -1
  124. package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
  125. package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
  126. package/src/lib/form/radio/tng-radio.js +0 -1
  127. package/src/lib/form/radio/tng-radio.js.map +1 -1
  128. package/src/lib/form/select/tng-select.d.ts.map +1 -1
  129. package/src/lib/form/select/tng-select.js +0 -1
  130. package/src/lib/form/select/tng-select.js.map +1 -1
  131. package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
  132. package/src/lib/form/select/tng-select.listbox.js +0 -2
  133. package/src/lib/form/select/tng-select.listbox.js.map +1 -1
  134. package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
  135. package/src/lib/form/slider/tng-slider.js +0 -1
  136. package/src/lib/form/slider/tng-slider.js.map +1 -1
  137. package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
  138. package/src/lib/form/switch/tng-switch.js +0 -1
  139. package/src/lib/form/switch/tng-switch.js.map +1 -1
  140. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
  141. package/src/lib/form/textarea/tng-textarea.js +0 -1
  142. package/src/lib/form/textarea/tng-textarea.js.map +1 -1
  143. package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
  144. package/src/lib/form/toggle/tng-toggle.js +0 -1
  145. package/src/lib/form/toggle/tng-toggle.js.map +1 -1
  146. package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
  147. package/src/lib/form/toggle-group/tng-toggle-group.js +0 -1
  148. package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
  149. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
  150. package/src/lib/layout/accordion/tng-accordion.js +0 -4
  151. package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
  152. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
  153. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +0 -1
  154. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
  155. package/src/lib/layout/card/tng-card.d.ts.map +1 -1
  156. package/src/lib/layout/card/tng-card.js +0 -10
  157. package/src/lib/layout/card/tng-card.js.map +1 -1
  158. package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
  159. package/src/lib/layout/collapsible/tng-collapsible.js +0 -3
  160. package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
  161. package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
  162. package/src/lib/layout/drawer/tng-drawer.js +0 -6
  163. package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
  164. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts +32 -0
  165. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts.map +1 -0
  166. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js +312 -0
  167. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js.map +1 -0
  168. package/src/lib/layout/grid/tng-grid.d.ts +144 -2
  169. package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
  170. package/src/lib/layout/grid/tng-grid.js +669 -3
  171. package/src/lib/layout/grid/tng-grid.js.map +1 -1
  172. package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
  173. package/src/lib/layout/separator/tng-separator.js +0 -1
  174. package/src/lib/layout/separator/tng-separator.js.map +1 -1
  175. package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
  176. package/src/lib/layout/stepper/tng-stepper.js +0 -1
  177. package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
  178. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -1
  179. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +0 -1
  180. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
  181. package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
  182. package/src/lib/layout/tree/tng-tree-group.js +0 -1
  183. package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
  184. package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
  185. package/src/lib/layout/tree/tng-tree-indicator.js +0 -1
  186. package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
  187. package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
  188. package/src/lib/layout/tree/tng-tree-item.js +0 -1
  189. package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
  190. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
  191. package/src/lib/layout/tree/tng-tree.js +0 -1
  192. package/src/lib/layout/tree/tng-tree.js.map +1 -1
  193. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
  194. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +0 -5
  195. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
  196. package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
  197. package/src/lib/navigation/context-menu/tng-context-menu.js +0 -2
  198. package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
  199. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
  200. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +0 -1
  201. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
  202. package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
  203. package/src/lib/navigation/menu/tng-menu.js +0 -6
  204. package/src/lib/navigation/menu/tng-menu.js.map +1 -1
  205. package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
  206. package/src/lib/navigation/menubar/tng-menubar.js +0 -2
  207. package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
  208. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
  209. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +0 -1
  210. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
  211. package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -6
  212. package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
  213. package/src/lib/navigation/tabs/tng-tabs.js +77 -41
  214. package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
  215. package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
  216. package/src/lib/navigation/toolbar/tng-toolbar.js +0 -1
  217. package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
  218. package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
  219. package/src/lib/overlay/dialog/tng-dialog.js +0 -9
  220. package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
  221. package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
  222. package/src/lib/overlay/popover/tng-popover.js +0 -4
  223. package/src/lib/overlay/popover/tng-popover.js.map +1 -1
  224. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
  225. package/src/lib/overlay/tooltip/tng-tooltip.js +0 -3
  226. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
  227. package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
  228. package/src/lib/utility/avatar/tng-avatar.js +0 -3
  229. package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
  230. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
  231. package/src/lib/utility/badge/tng-badge.js +0 -1
  232. package/src/lib/utility/badge/tng-badge.js.map +1 -1
  233. package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
  234. package/src/lib/utility/code-block/tng-code-block.js +0 -5
  235. package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
  236. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
  237. package/src/lib/utility/copy/tng-copy.js +0 -1
  238. package/src/lib/utility/copy/tng-copy.js.map +1 -1
  239. package/src/lib/utility/press/tng-press.d.ts.map +1 -1
  240. package/src/lib/utility/press/tng-press.js +0 -1
  241. package/src/lib/utility/press/tng-press.js.map +1 -1
  242. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
  243. package/src/lib/utility/tag/tng-tag.js +0 -3
  244. package/src/lib/utility/tag/tng-tag.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tng-multi-select.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multi-select/tng-multi-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, inject, input, model } from '@angular/core';\nimport { TNG_MULTI_SELECT } from './tng-multi-select.tokens';\nimport { TNG_SELECT_HOST } from '../_shared/select/tng-select.tokens.shared';\nimport type { TngSelectHostApi } from '../_shared/select/tng-select.host-api';\nimport { TngMultiSelectListboxApi } from './tng-multi-select.listbox.types';\n\n@Directive({\n selector: '[tngMultiSelect]',\n exportAs: 'tngMultiSelect',\n standalone: true,\n providers: [\n { provide: TNG_MULTI_SELECT, useExisting: TngMultiSelect },\n { provide: TNG_SELECT_HOST, useExisting: TngMultiSelect },\n ],\n})\nexport class TngMultiSelect<T = unknown> implements TngSelectHostApi {\n readonly hostElement = inject(ElementRef<HTMLElement>).nativeElement;\n public readonly open = model<boolean>(false);\n public readonly disabled = input<boolean>(false);\n /** Values of selected options. Empty array = no selection. */\n public readonly value = model<readonly T[]>([]);\n\n private _contentId: string | null = null;\n private _listboxId: string | null = null;\n private _activeId: string | null = null;\n private _listboxApi: TngMultiSelectListboxApi<T> | null = null;\n\n public readonly loading = input<boolean>(false);\n public readonly invalid = input<boolean>(false);\n public readonly labelId = input<string | null>(null);\n public readonly descriptionId = input<string | null>(null);\n public readonly errorId = input<string | null>(null);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'multi-select' = 'multi-select';\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.open() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-loading')\n protected get dataLoading(): '' | null {\n return this.loading() ? '' : null;\n }\n\n @HostBinding('attr.data-invalid')\n protected get dataInvalid(): '' | null {\n return this.invalid() ? '' : null;\n }\n\n /** Multi-select: always true. Satisfies TngSelectHostApi. */\n public readonly multiple = (): boolean => true;\n\n public setContentId(id: string | null): void {\n this._contentId = id;\n }\n public getContentId(): string | null {\n return this._contentId;\n }\n public setListboxId(id: string | null): void {\n this._listboxId = id;\n }\n public getListboxId(): string | null {\n return this._listboxId;\n }\n public setActiveDescendantId(id: string | null): void {\n this._activeId = id;\n }\n public getActiveDescendantId(): string | null {\n return this._activeId;\n }\n\n public openSelect(): void {\n if (this.disabled()) return;\n this.open.set(true);\n }\n public close(): void {\n this.open.set(false);\n }\n public toggle(): void {\n if (this.disabled()) return;\n this.open.set(!this.open());\n }\n\n /** Adds an item to the selection if not already selected. */\n public addSelectedItem(item: T): void {\n if (this.disabled()) return;\n const cur = this.value();\n if (cur.some((v) => Object.is(v, item))) return;\n this.value.set([...cur, item]);\n }\n\n /** Removes an item from the selection if currently selected. */\n public removeSelectedItem(item: T): void {\n if (this.disabled()) return;\n const cur = this.value();\n const idx = cur.findIndex((v) => Object.is(v, item));\n if (idx < 0) return;\n this.value.set([...cur.slice(0, idx), ...cur.slice(idx + 1)]);\n }\n\n /** Toggles an item in the selection (add if not present, remove if present). */\n public toggleSelectedItem(item: T): void {\n if (this.disabled()) return;\n const cur = this.value();\n const idx = cur.findIndex((v) => Object.is(v, item));\n const next =\n idx >= 0\n ? [...cur.slice(0, idx), ...cur.slice(idx + 1)]\n : [...cur, item];\n this.value.set(next);\n }\n\n /** Clears the selection. */\n public clear(): void {\n if (this.disabled()) return;\n this.value.set([]);\n }\n\n public setListboxApi(api: TngMultiSelectListboxApi<T> | null): void {\n this._listboxApi = api;\n }\n public getListboxApi(): TngMultiSelectListboxApi<T> | null {\n return this._listboxApi;\n }\n}\n"]}
1
+ {"version":3,"file":"tng-multi-select.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multi-select/tng-multi-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, inject, input, model } from '@angular/core';\nimport { TNG_MULTI_SELECT } from './tng-multi-select.tokens';\nimport { TNG_SELECT_HOST } from '../_shared/select/tng-select.tokens.shared';\nimport type { TngSelectHostApi } from '../_shared/select/tng-select.host-api';\nimport { TngMultiSelectListboxApi } from './tng-multi-select.listbox.types';\n\n@Directive({\n selector: '[tngMultiSelect]',\n exportAs: 'tngMultiSelect',\n providers: [\n { provide: TNG_MULTI_SELECT, useExisting: TngMultiSelect },\n { provide: TNG_SELECT_HOST, useExisting: TngMultiSelect },\n ],\n})\nexport class TngMultiSelect<T = unknown> implements TngSelectHostApi {\n readonly hostElement = inject(ElementRef<HTMLElement>).nativeElement;\n public readonly open = model<boolean>(false);\n public readonly disabled = input<boolean>(false);\n /** Values of selected options. Empty array = no selection. */\n public readonly value = model<readonly T[]>([]);\n\n private _contentId: string | null = null;\n private _listboxId: string | null = null;\n private _activeId: string | null = null;\n private _listboxApi: TngMultiSelectListboxApi<T> | null = null;\n\n public readonly loading = input<boolean>(false);\n public readonly invalid = input<boolean>(false);\n public readonly labelId = input<string | null>(null);\n public readonly descriptionId = input<string | null>(null);\n public readonly errorId = input<string | null>(null);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'multi-select' = 'multi-select';\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.open() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-loading')\n protected get dataLoading(): '' | null {\n return this.loading() ? '' : null;\n }\n\n @HostBinding('attr.data-invalid')\n protected get dataInvalid(): '' | null {\n return this.invalid() ? '' : null;\n }\n\n /** Multi-select: always true. Satisfies TngSelectHostApi. */\n public readonly multiple = (): boolean => true;\n\n public setContentId(id: string | null): void {\n this._contentId = id;\n }\n public getContentId(): string | null {\n return this._contentId;\n }\n public setListboxId(id: string | null): void {\n this._listboxId = id;\n }\n public getListboxId(): string | null {\n return this._listboxId;\n }\n public setActiveDescendantId(id: string | null): void {\n this._activeId = id;\n }\n public getActiveDescendantId(): string | null {\n return this._activeId;\n }\n\n public openSelect(): void {\n if (this.disabled()) return;\n this.open.set(true);\n }\n public close(): void {\n this.open.set(false);\n }\n public toggle(): void {\n if (this.disabled()) return;\n this.open.set(!this.open());\n }\n\n /** Adds an item to the selection if not already selected. */\n public addSelectedItem(item: T): void {\n if (this.disabled()) return;\n const cur = this.value();\n if (cur.some((v) => Object.is(v, item))) return;\n this.value.set([...cur, item]);\n }\n\n /** Removes an item from the selection if currently selected. */\n public removeSelectedItem(item: T): void {\n if (this.disabled()) return;\n const cur = this.value();\n const idx = cur.findIndex((v) => Object.is(v, item));\n if (idx < 0) return;\n this.value.set([...cur.slice(0, idx), ...cur.slice(idx + 1)]);\n }\n\n /** Toggles an item in the selection (add if not present, remove if present). */\n public toggleSelectedItem(item: T): void {\n if (this.disabled()) return;\n const cur = this.value();\n const idx = cur.findIndex((v) => Object.is(v, item));\n const next =\n idx >= 0\n ? [...cur.slice(0, idx), ...cur.slice(idx + 1)]\n : [...cur, item];\n this.value.set(next);\n }\n\n /** Clears the selection. */\n public clear(): void {\n if (this.disabled()) return;\n this.value.set([]);\n }\n\n public setListboxApi(api: TngMultiSelectListboxApi<T> | null): void {\n this._listboxApi = api;\n }\n public getListboxApi(): TngMultiSelectListboxApi<T> | null {\n return this._listboxApi;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-multi-select.listbox.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multi-select/tng-multi-select.listbox.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;;;AAK5E,qBAYa,qBAAqB,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,wBAAwB,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+C;IAC3E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkD;IAG1E,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAA0B;IAG7E,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAqB;;IAuB1C,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO;IAInD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,mDAAmD;IACnD,YAAY,IAAI,IAAI;IAKpB,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI;yCA1DzD,qBAAqB;2CAArB,qBAAqB;CAoEjC;AAED,qBAUa,oBAAoB,CAAC,CAAC;IAEjC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAyB;yCAFhE,oBAAoB;2CAApB,oBAAoB;CAGhC"}
1
+ {"version":3,"file":"tng-multi-select.listbox.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multi-select/tng-multi-select.listbox.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;;;AAK5E,qBAWa,qBAAqB,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,wBAAwB,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+C;IAC3E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkD;IAG1E,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAA0B;IAG7E,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAqB;;IAuB1C,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO;IAInD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,mDAAmD;IACnD,YAAY,IAAI,IAAI;IAKpB,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI;yCA1DzD,qBAAqB;2CAArB,qBAAqB;CAoEjC;AAED,qBASa,oBAAoB,CAAC,CAAC;IAEjC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAyB;yCAFhE,oBAAoB;2CAApB,oBAAoB;CAGhC"}
@@ -68,7 +68,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
68
68
  type: Directive,
69
69
  args: [{
70
70
  selector: '[tngMultiSelectListbox]',
71
- standalone: true,
72
71
  providers: [{ provide: TNG_MULTI_SELECT_LISTBOX, useExisting: TngMultiSelectListbox }],
73
72
  hostDirectives: [
74
73
  {
@@ -97,7 +96,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
97
96
  type: Directive,
98
97
  args: [{
99
98
  selector: '[tngMultiSelectOption]',
100
- standalone: true,
101
99
  hostDirectives: [
102
100
  {
103
101
  directive: TngOptionDirective,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-multi-select.listbox.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multi-select/tng-multi-select.listbox.ts"],"names":[],"mappings":"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","sourcesContent":["import { DestroyRef, Directive, effect, HostBinding, HostListener, inject, untracked } from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\nimport { arraysEqual, normalizeToArray } from '../../internal/combobox';\nimport type { ListboxValue } from '../listbox/listbox.directive';\nimport { TngListboxDirective, TngOptionDirective } from '@tailng-ui/primitives';\nimport { TNG_MULTI_SELECT } from './tng-multi-select.tokens';\nimport type { TngMultiSelect } from './tng-multi-select';\nimport { TngMultiSelectListboxApi } from './tng-multi-select.listbox.types';\nimport { TNG_MULTI_SELECT_LISTBOX } from './tng-multi-select.listbox.tokens';\n\nconst createListboxId = createTngIdFactory('tng-multi-select-listbox');\n\n@Directive({\n selector: '[tngMultiSelectListbox]',\n standalone: true,\n providers: [{ provide: TNG_MULTI_SELECT_LISTBOX, useExisting: TngMultiSelectListbox }],\n hostDirectives: [\n {\n directive: TngListboxDirective,\n inputs: ['orientation', 'direction', 'disabled', 'loop', 'value', 'multiple'],\n outputs: ['valueChange'],\n },\n ],\n})\nexport class TngMultiSelectListbox<T = unknown> implements TngMultiSelectListboxApi<T> {\n private readonly multiSelect = inject<TngMultiSelect<T>>(TNG_MULTI_SELECT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly listbox = inject(TngListboxDirective<T>, { self: true });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'multi-select-listbox' = 'multi-select-listbox';\n\n @HostBinding('attr.id')\n protected readonly id = createListboxId();\n\n constructor() {\n this.multiSelect.setListboxId(this.id);\n this.multiSelect.setListboxApi(this);\n\n effect(() => {\n const v = this.multiSelect.value();\n if (this.multiSelect.open()) return;\n\n const current = untracked(this.listbox.value);\n const arrV = v.length > 0 ? ([...v] as readonly T[]) : null;\n const arrCur = normalizeToArray(current);\n if (arraysEqual(arrV, arrCur)) return;\n this.listbox.value.set((v.length > 0 ? v : null) as ListboxValue<T>);\n });\n\n this.destroyRef.onDestroy(() => {\n this.multiSelect.setListboxId(null);\n this.multiSelect.setListboxApi(null);\n });\n }\n\n getHostId(): string | null {\n return this.id ?? null;\n }\n\n getActiveId(): string | null {\n return this.listbox.getActiveId();\n }\n\n ensureActive(pref?: 'first' | 'last'): void {\n this.listbox.ensureActive(pref);\n }\n\n handleKey(key: string, shiftKey?: boolean): boolean {\n return this.listbox.handleKeyFromCombobox(key, shiftKey);\n }\n\n typeahead(key: string): boolean {\n return this.listbox.typeaheadFromCombobox(key);\n }\n\n /** Multi: Enter toggles option, does not close. */\n commitActive(): void {\n this.listbox.handleKeyFromCombobox('Enter');\n }\n\n @HostListener('valueChange', ['$event'])\n protected onListboxValueChange(value: T | readonly T[] | null): void {\n if (this.multiSelect.disabled()) return;\n\n const next = normalizeToArray(value);\n const cur = this.multiSelect.value();\n if (arraysEqual(next, cur.length > 0 ? cur : null)) return;\n\n this.multiSelect.value.set(next && next.length > 0 ? [...next] : []);\n // Multi: overlay stays open\n }\n}\n\n@Directive({\n selector: '[tngMultiSelectOption]',\n standalone: true,\n hostDirectives: [\n {\n directive: TngOptionDirective,\n inputs: ['tngValue', 'disabled'],\n },\n ],\n})\nexport class TngMultiSelectOption<T> {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'multi-select-option' = 'multi-select-option';\n}\n"]}
1
+ {"version":3,"file":"tng-multi-select.listbox.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multi-select/tng-multi-select.listbox.ts"],"names":[],"mappings":"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","sourcesContent":["import { DestroyRef, Directive, effect, HostBinding, HostListener, inject, untracked } from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\nimport { arraysEqual, normalizeToArray } from '../../internal/combobox';\nimport type { ListboxValue } from '../listbox/listbox.directive';\nimport { TngListboxDirective, TngOptionDirective } from '@tailng-ui/primitives';\nimport { TNG_MULTI_SELECT } from './tng-multi-select.tokens';\nimport type { TngMultiSelect } from './tng-multi-select';\nimport { TngMultiSelectListboxApi } from './tng-multi-select.listbox.types';\nimport { TNG_MULTI_SELECT_LISTBOX } from './tng-multi-select.listbox.tokens';\n\nconst createListboxId = createTngIdFactory('tng-multi-select-listbox');\n\n@Directive({\n selector: '[tngMultiSelectListbox]',\n providers: [{ provide: TNG_MULTI_SELECT_LISTBOX, useExisting: TngMultiSelectListbox }],\n hostDirectives: [\n {\n directive: TngListboxDirective,\n inputs: ['orientation', 'direction', 'disabled', 'loop', 'value', 'multiple'],\n outputs: ['valueChange'],\n },\n ],\n})\nexport class TngMultiSelectListbox<T = unknown> implements TngMultiSelectListboxApi<T> {\n private readonly multiSelect = inject<TngMultiSelect<T>>(TNG_MULTI_SELECT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly listbox = inject(TngListboxDirective<T>, { self: true });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'multi-select-listbox' = 'multi-select-listbox';\n\n @HostBinding('attr.id')\n protected readonly id = createListboxId();\n\n constructor() {\n this.multiSelect.setListboxId(this.id);\n this.multiSelect.setListboxApi(this);\n\n effect(() => {\n const v = this.multiSelect.value();\n if (this.multiSelect.open()) return;\n\n const current = untracked(this.listbox.value);\n const arrV = v.length > 0 ? ([...v] as readonly T[]) : null;\n const arrCur = normalizeToArray(current);\n if (arraysEqual(arrV, arrCur)) return;\n this.listbox.value.set((v.length > 0 ? v : null) as ListboxValue<T>);\n });\n\n this.destroyRef.onDestroy(() => {\n this.multiSelect.setListboxId(null);\n this.multiSelect.setListboxApi(null);\n });\n }\n\n getHostId(): string | null {\n return this.id ?? null;\n }\n\n getActiveId(): string | null {\n return this.listbox.getActiveId();\n }\n\n ensureActive(pref?: 'first' | 'last'): void {\n this.listbox.ensureActive(pref);\n }\n\n handleKey(key: string, shiftKey?: boolean): boolean {\n return this.listbox.handleKeyFromCombobox(key, shiftKey);\n }\n\n typeahead(key: string): boolean {\n return this.listbox.typeaheadFromCombobox(key);\n }\n\n /** Multi: Enter toggles option, does not close. */\n commitActive(): void {\n this.listbox.handleKeyFromCombobox('Enter');\n }\n\n @HostListener('valueChange', ['$event'])\n protected onListboxValueChange(value: T | readonly T[] | null): void {\n if (this.multiSelect.disabled()) return;\n\n const next = normalizeToArray(value);\n const cur = this.multiSelect.value();\n if (arraysEqual(next, cur.length > 0 ? cur : null)) return;\n\n this.multiSelect.value.set(next && next.length > 0 ? [...next] : []);\n // Multi: overlay stays open\n }\n}\n\n@Directive({\n selector: '[tngMultiSelectOption]',\n hostDirectives: [\n {\n directive: TngOptionDirective,\n inputs: ['tngValue', 'disabled'],\n },\n ],\n})\nexport class TngMultiSelectOption<T> {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'multi-select-option' = 'multi-select-option';\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-multiselect.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multiselect/tng-multiselect.ts"],"names":[],"mappings":";AAEA,qBAKa,cAAc;IAEzB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;yCAF1C,cAAc;2CAAd,cAAc;CAG1B"}
1
+ {"version":3,"file":"tng-multiselect.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multiselect/tng-multiselect.ts"],"names":[],"mappings":";AAEA,qBAIa,cAAc;IAEzB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;yCAF1C,cAAc;2CAAd,cAAc;CAG1B"}
@@ -10,7 +10,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
10
10
  args: [{
11
11
  selector: '[tngMultiselect]',
12
12
  exportAs: 'tngMultiselect',
13
- standalone: true,
14
13
  }]
15
14
  }], propDecorators: { dataSlot: [{
16
15
  type: HostBinding,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-multiselect.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multiselect/tng-multiselect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAOvD,MAAM,OAAO,cAAc;IAEN,QAAQ,GAAG,aAAsB,CAAC;uGAF1C,cAAc;2FAAd,cAAc;;2FAAd,cAAc;kBAL1B,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,gBAAgB;oBAC1B,UAAU,EAAE,IAAI;iBACjB;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngMultiselect]',\n exportAs: 'tngMultiselect',\n standalone: true,\n})\nexport class TngMultiselect {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'multiselect' as const;\n}\n"]}
1
+ {"version":3,"file":"tng-multiselect.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multiselect/tng-multiselect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAMvD,MAAM,OAAO,cAAc;IAEN,QAAQ,GAAG,aAAsB,CAAC;uGAF1C,cAAc;2FAAd,cAAc;;2FAAd,cAAc;kBAJ1B,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,gBAAgB;iBAC3B;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngMultiselect]',\n exportAs: 'tngMultiselect',\n})\nexport class TngMultiselect {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'multiselect' as const;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-radio.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/radio/tng-radio.ts"],"names":[],"mappings":";AAUA,KAAK,oBAAoB,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE/E,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAO5F;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAczF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAElF;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,WAAW,EAAE,OAAO,GAAG,IAAI,GAC1B,OAAO,CAUT;AAED,qBAKa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoD;IAC/E,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAE7B,SAAgB,eAAe,qDAA8B;IAC7D,SAAgB,WAAW,yFAExB;IACH,SAAgB,OAAO,8EAEpB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,OAAO,yFAEpB;IACH,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,QAAQ,8EAErB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,qDAA8B;IACnD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAG/C,SAAS,KAAK,WAAW,IAAI,OAAO,CAEnC;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,CAEhD;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEjD;IAGD,SAAS,KAAK,eAAe,IAAI,MAAM,GAAG,IAAI,CAE7C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,oBAAoB,IAAI,EAAE,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,aAAa,IAAI,SAAS,GAAG,WAAW,CAErD;IAGD,SAAS,KAAK,iBAAiB,IAAI,EAAE,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,YAAY,IAAI,OAAO,CAEpC;IAGD,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,IAAI,CAEvC;IAGM,MAAM,IAAI,IAAI;IAMd,OAAO,IAAI,IAAI;IAMf,gBAAgB,IAAI,IAAI;IAQ/B,OAAO,CAAC,SAAS;yCArJN,QAAQ;2CAAR,QAAQ;CAwJpB"}
1
+ {"version":3,"file":"tng-radio.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/radio/tng-radio.ts"],"names":[],"mappings":";AAUA,KAAK,oBAAoB,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE/E,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAO5F;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAczF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAElF;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,WAAW,EAAE,OAAO,GAAG,IAAI,GAC1B,OAAO,CAUT;AAED,qBAIa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoD;IAC/E,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAE7B,SAAgB,eAAe,qDAA8B;IAC7D,SAAgB,WAAW,yFAExB;IACH,SAAgB,OAAO,8EAEpB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,OAAO,yFAEpB;IACH,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,QAAQ,8EAErB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,qDAA8B;IACnD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAG/C,SAAS,KAAK,WAAW,IAAI,OAAO,CAEnC;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,CAEhD;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEjD;IAGD,SAAS,KAAK,eAAe,IAAI,MAAM,GAAG,IAAI,CAE7C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,oBAAoB,IAAI,EAAE,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,aAAa,IAAI,SAAS,GAAG,WAAW,CAErD;IAGD,SAAS,KAAK,iBAAiB,IAAI,EAAE,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,YAAY,IAAI,OAAO,CAEpC;IAGD,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,IAAI,CAEvC;IAGM,MAAM,IAAI,IAAI;IAMd,OAAO,IAAI,IAAI;IAMf,gBAAgB,IAAI,IAAI;IAQ/B,OAAO,CAAC,SAAS;yCArJN,QAAQ;2CAAR,QAAQ;CAwJpB"}
@@ -130,7 +130,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
130
130
  args: [{
131
131
  selector: 'input[tngRadio]',
132
132
  exportAs: 'tngRadio',
133
- standalone: true,
134
133
  }]
135
134
  }], propDecorators: { ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], ariaInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaInvalid", required: false }] }], checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], checkedProp: [{
136
135
  type: HostBinding,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-radio.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/radio/tng-radio.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\ntype NullableBooleanInput = '' | 'false' | 'true' | boolean | null | undefined;\n\nexport function normalizeTngRadioStringValue(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\nexport function coerceTngRadioNullableBoolean(value: NullableBooleanInput): boolean | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return null;\n}\n\nexport function resolveTngRadioDataState(checked: boolean): 'checked' | 'unchecked' {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport function resolveTngRadioInvalidState(\n invalid: boolean | null,\n ariaInvalid: boolean | null,\n): boolean {\n if (invalid !== null) {\n return invalid;\n }\n\n if (ariaInvalid !== null) {\n return ariaInvalid;\n }\n\n return false;\n}\n\n@Directive({\n selector: 'input[tngRadio]',\n exportAs: 'tngRadio',\n standalone: true,\n})\nexport class TngRadio {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private focused = false;\n private focusVisible = false;\n\n public readonly ariaDescribedBy = input<string | null>(null);\n public readonly ariaInvalid = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngRadioNullableBoolean,\n });\n public readonly checked = 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 invalid = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngRadioNullableBoolean,\n });\n public readonly name = input<string | null>(null);\n public readonly readonly = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly value = input<string | null>(null);\n protected readonly typeAttr = 'radio' as const;\n\n @HostBinding('checked')\n protected get checkedProp(): boolean {\n return this.checked();\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaCheckedAttr(): 'false' | 'true' {\n return this.checked() ? 'true' : 'false';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.disabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-describedby')\n protected get ariaDescribedByAttr(): string | null {\n return normalizeTngRadioStringValue(this.ariaDescribedBy());\n }\n\n @HostBinding('attr.aria-invalid')\n protected get ariaInvalidAttr(): 'true' | null {\n return this.isInvalid() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-readonly')\n protected get ariaReadonlyAttr(): 'true' | null {\n return this.readonly() ? 'true' : null;\n }\n\n @HostBinding('attr.data-checked')\n protected get dataCheckedAttr(): '' | null {\n return this.checked() ? '' : null;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): '' | null {\n return this.focused ? '' : null;\n }\n\n @HostBinding('attr.data-focus-visible')\n protected get dataFocusVisibleAttr(): '' | null {\n return this.focusVisible ? '' : null;\n }\n\n @HostBinding('attr.data-invalid')\n protected get dataInvalidAttr(): '' | null {\n return this.isInvalid() ? '' : null;\n }\n\n @HostBinding('attr.data-readonly')\n protected get dataReadonlyAttr(): '' | null {\n return this.readonly() ? '' : null;\n }\n\n @HostBinding('attr.data-required')\n protected get dataRequiredAttr(): '' | null {\n return this.required() ? '' : null;\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'checked' | 'unchecked' {\n return resolveTngRadioDataState(this.checked());\n }\n\n @HostBinding('attr.data-unchecked')\n protected get dataUncheckedAttr(): '' | null {\n return this.checked() ? null : '';\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.name')\n protected get nameAttr(): string | null {\n return normalizeTngRadioStringValue(this.name());\n }\n\n @HostBinding('attr.required')\n protected get requiredAttr(): '' | null {\n return this.required() ? '' : null;\n }\n\n @HostBinding('attr.type')\n protected get hostTypeAttr(): 'radio' {\n return this.typeAttr;\n }\n\n @HostBinding('attr.value')\n protected get valueAttr(): string | null {\n return normalizeTngRadioStringValue(this.value());\n }\n\n @HostListener('blur')\n public onBlur(): void {\n this.focused = false;\n this.focusVisible = false;\n }\n\n @HostListener('focus')\n public onFocus(): void {\n this.focused = true;\n this.focusVisible = this.elementRef.nativeElement.matches(':focus-visible');\n }\n\n @HostListener('change')\n public onReadonlyChange(): void {\n if (!this.readonly() || this.disabled()) {\n return;\n }\n\n this.elementRef.nativeElement.checked = this.checked();\n }\n\n private isInvalid(): boolean {\n return resolveTngRadioInvalidState(this.invalid(), this.ariaInvalid());\n }\n}\n"]}
1
+ {"version":3,"file":"tng-radio.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/radio/tng-radio.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\ntype NullableBooleanInput = '' | 'false' | 'true' | boolean | null | undefined;\n\nexport function normalizeTngRadioStringValue(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\nexport function coerceTngRadioNullableBoolean(value: NullableBooleanInput): boolean | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return null;\n}\n\nexport function resolveTngRadioDataState(checked: boolean): 'checked' | 'unchecked' {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport function resolveTngRadioInvalidState(\n invalid: boolean | null,\n ariaInvalid: boolean | null,\n): boolean {\n if (invalid !== null) {\n return invalid;\n }\n\n if (ariaInvalid !== null) {\n return ariaInvalid;\n }\n\n return false;\n}\n\n@Directive({\n selector: 'input[tngRadio]',\n exportAs: 'tngRadio',\n})\nexport class TngRadio {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private focused = false;\n private focusVisible = false;\n\n public readonly ariaDescribedBy = input<string | null>(null);\n public readonly ariaInvalid = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngRadioNullableBoolean,\n });\n public readonly checked = 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 invalid = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngRadioNullableBoolean,\n });\n public readonly name = input<string | null>(null);\n public readonly readonly = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly value = input<string | null>(null);\n protected readonly typeAttr = 'radio' as const;\n\n @HostBinding('checked')\n protected get checkedProp(): boolean {\n return this.checked();\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaCheckedAttr(): 'false' | 'true' {\n return this.checked() ? 'true' : 'false';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.disabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-describedby')\n protected get ariaDescribedByAttr(): string | null {\n return normalizeTngRadioStringValue(this.ariaDescribedBy());\n }\n\n @HostBinding('attr.aria-invalid')\n protected get ariaInvalidAttr(): 'true' | null {\n return this.isInvalid() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-readonly')\n protected get ariaReadonlyAttr(): 'true' | null {\n return this.readonly() ? 'true' : null;\n }\n\n @HostBinding('attr.data-checked')\n protected get dataCheckedAttr(): '' | null {\n return this.checked() ? '' : null;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): '' | null {\n return this.focused ? '' : null;\n }\n\n @HostBinding('attr.data-focus-visible')\n protected get dataFocusVisibleAttr(): '' | null {\n return this.focusVisible ? '' : null;\n }\n\n @HostBinding('attr.data-invalid')\n protected get dataInvalidAttr(): '' | null {\n return this.isInvalid() ? '' : null;\n }\n\n @HostBinding('attr.data-readonly')\n protected get dataReadonlyAttr(): '' | null {\n return this.readonly() ? '' : null;\n }\n\n @HostBinding('attr.data-required')\n protected get dataRequiredAttr(): '' | null {\n return this.required() ? '' : null;\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'checked' | 'unchecked' {\n return resolveTngRadioDataState(this.checked());\n }\n\n @HostBinding('attr.data-unchecked')\n protected get dataUncheckedAttr(): '' | null {\n return this.checked() ? null : '';\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.name')\n protected get nameAttr(): string | null {\n return normalizeTngRadioStringValue(this.name());\n }\n\n @HostBinding('attr.required')\n protected get requiredAttr(): '' | null {\n return this.required() ? '' : null;\n }\n\n @HostBinding('attr.type')\n protected get hostTypeAttr(): 'radio' {\n return this.typeAttr;\n }\n\n @HostBinding('attr.value')\n protected get valueAttr(): string | null {\n return normalizeTngRadioStringValue(this.value());\n }\n\n @HostListener('blur')\n public onBlur(): void {\n this.focused = false;\n this.focusVisible = false;\n }\n\n @HostListener('focus')\n public onFocus(): void {\n this.focused = true;\n this.focusVisible = this.elementRef.nativeElement.matches(':focus-visible');\n }\n\n @HostListener('change')\n public onReadonlyChange(): void {\n if (!this.readonly() || this.disabled()) {\n return;\n }\n\n this.elementRef.nativeElement.checked = this.checked();\n }\n\n private isInvalid(): boolean {\n return resolveTngRadioInvalidState(this.invalid(), this.ariaInvalid());\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-select.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/select/tng-select.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;;AAEjE,qBASa,SAAS,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,gBAAgB;IAC7D,QAAQ,CAAC,WAAW,MAAiD;IACrE,SAAgB,IAAI,+CAAyB;IAC7C,SAAgB,QAAQ,+CAAyB;IACjD,wDAAwD;IACxD,SAAgB,KAAK,gDAAyB;IAE9C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAuC;IAE1D,SAAgB,OAAO,+CAAyB;IAChD,SAAgB,OAAO,+CAAyB;IAChD,SAAgB,OAAO,qDAA8B;IACrD,SAAgB,aAAa,qDAA8B;IAC3D,SAAgB,OAAO,qDAA8B;IAGrD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAY;IAGjD,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,QAAQ,CAE3C;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,WAAW,IAAI,EAAE,GAAG,IAAI,CAErC;IAGD,SAAS,KAAK,WAAW,IAAI,EAAE,GAAG,IAAI,CAErC;IAED,+DAA+D;IAC/D,SAAgB,QAAQ,QAAO,OAAO,CAAU;IAEzC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAGrC,YAAY,IAAI,MAAM,GAAG,IAAI;IAG7B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAGrC,YAAY,IAAI,MAAM,GAAG,IAAI;IAG7B,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAG9C,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAItC,UAAU,IAAI,IAAI;IAIlB,KAAK,IAAI,IAAI;IAGb,MAAM,IAAI,IAAI;IAKd,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAM3B,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;IAGvD,aAAa,IAAI,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;yCApF1C,SAAS;2CAAT,SAAS;CAuFrB"}
1
+ {"version":3,"file":"tng-select.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/select/tng-select.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;;AAEjE,qBAQa,SAAS,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,gBAAgB;IAC7D,QAAQ,CAAC,WAAW,MAAiD;IACrE,SAAgB,IAAI,+CAAyB;IAC7C,SAAgB,QAAQ,+CAAyB;IACjD,wDAAwD;IACxD,SAAgB,KAAK,gDAAyB;IAE9C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAuC;IAE1D,SAAgB,OAAO,+CAAyB;IAChD,SAAgB,OAAO,+CAAyB;IAChD,SAAgB,OAAO,qDAA8B;IACrD,SAAgB,aAAa,qDAA8B;IAC3D,SAAgB,OAAO,qDAA8B;IAGrD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAY;IAGjD,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,QAAQ,CAE3C;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,WAAW,IAAI,EAAE,GAAG,IAAI,CAErC;IAGD,SAAS,KAAK,WAAW,IAAI,EAAE,GAAG,IAAI,CAErC;IAED,+DAA+D;IAC/D,SAAgB,QAAQ,QAAO,OAAO,CAAU;IAEzC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAGrC,YAAY,IAAI,MAAM,GAAG,IAAI;IAG7B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAGrC,YAAY,IAAI,MAAM,GAAG,IAAI;IAG7B,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAG9C,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAItC,UAAU,IAAI,IAAI;IAIlB,KAAK,IAAI,IAAI;IAGb,MAAM,IAAI,IAAI;IAKd,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAM3B,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;IAGvD,aAAa,IAAI,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;yCApF1C,SAAS;2CAAT,SAAS;CAuFrB"}
@@ -86,7 +86,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
86
86
  args: [{
87
87
  selector: '[tngSelect]',
88
88
  exportAs: 'tngSelect',
89
- standalone: true,
90
89
  providers: [
91
90
  { provide: TNG_SELECT, useExisting: TngSelect },
92
91
  { provide: TNG_SELECT_HOST, useExisting: TngSelect },
@@ -1 +1 @@
1
- {"version":3,"file":"tng-select.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/select/tng-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, inject, input, model } from '@angular/core';\nimport { TNG_SELECT } from './tng-select.tokens';\nimport { TNG_SELECT_HOST } from '../_shared/select/tng-select.tokens.shared';\nimport type { TngSelectHostApi } from '../_shared/select/tng-select.host-api';\nimport { TngSelectListboxApi } from './tng-select.listbox.types';\n\n@Directive({\n selector: '[tngSelect]',\n exportAs: 'tngSelect',\n standalone: true,\n providers: [\n { provide: TNG_SELECT, useExisting: TngSelect },\n { provide: TNG_SELECT_HOST, useExisting: TngSelect },\n ],\n})\nexport class TngSelect<T = unknown> implements TngSelectHostApi {\n readonly hostElement = inject(ElementRef<HTMLElement>).nativeElement;\n public readonly open = model<boolean>(false);\n public readonly disabled = input<boolean>(false);\n /** Value of the selected option. Single-select only. */\n public readonly value = model<T | null>(null);\n\n private _contentId: string | null = null;\n private _listboxId: string | null = null;\n private _activeId: string | null = null;\n private _listboxApi: TngSelectListboxApi<T> | null = null;\n\n public readonly loading = input<boolean>(false);\n public readonly invalid = input<boolean>(false);\n public readonly labelId = input<string | null>(null);\n public readonly descriptionId = input<string | null>(null);\n public readonly errorId = input<string | null>(null);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'select' = 'select';\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.open() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-loading')\n protected get dataLoading(): '' | null {\n return this.loading() ? '' : null;\n }\n\n @HostBinding('attr.data-invalid')\n protected get dataInvalid(): '' | null {\n return this.invalid() ? '' : null;\n }\n\n /** Single-select: always false. Satisfies TngSelectHostApi. */\n public readonly multiple = (): boolean => false;\n\n public setContentId(id: string | null): void {\n this._contentId = id;\n }\n public getContentId(): string | null {\n return this._contentId;\n }\n public setListboxId(id: string | null): void {\n this._listboxId = id;\n }\n public getListboxId(): string | null {\n return this._listboxId;\n }\n public setActiveDescendantId(id: string | null): void {\n this._activeId = id;\n }\n public getActiveDescendantId(): string | null {\n return this._activeId;\n }\n\n public openSelect(): void {\n if (this.disabled()) return;\n this.open.set(true);\n }\n public close(): void {\n this.open.set(false);\n }\n public toggle(): void {\n if (this.disabled()) return;\n this.open.set(!this.open());\n }\n\n public selectValue(value: T): void {\n if (this.disabled()) return;\n this.value.set(value);\n this.close();\n }\n\n public setListboxApi(api: TngSelectListboxApi<T> | null): void {\n this._listboxApi = api;\n }\n public getListboxApi(): TngSelectListboxApi<T> | null {\n return this._listboxApi;\n }\n}\n"]}
1
+ {"version":3,"file":"tng-select.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/select/tng-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, inject, input, model } from '@angular/core';\nimport { TNG_SELECT } from './tng-select.tokens';\nimport { TNG_SELECT_HOST } from '../_shared/select/tng-select.tokens.shared';\nimport type { TngSelectHostApi } from '../_shared/select/tng-select.host-api';\nimport { TngSelectListboxApi } from './tng-select.listbox.types';\n\n@Directive({\n selector: '[tngSelect]',\n exportAs: 'tngSelect',\n providers: [\n { provide: TNG_SELECT, useExisting: TngSelect },\n { provide: TNG_SELECT_HOST, useExisting: TngSelect },\n ],\n})\nexport class TngSelect<T = unknown> implements TngSelectHostApi {\n readonly hostElement = inject(ElementRef<HTMLElement>).nativeElement;\n public readonly open = model<boolean>(false);\n public readonly disabled = input<boolean>(false);\n /** Value of the selected option. Single-select only. */\n public readonly value = model<T | null>(null);\n\n private _contentId: string | null = null;\n private _listboxId: string | null = null;\n private _activeId: string | null = null;\n private _listboxApi: TngSelectListboxApi<T> | null = null;\n\n public readonly loading = input<boolean>(false);\n public readonly invalid = input<boolean>(false);\n public readonly labelId = input<string | null>(null);\n public readonly descriptionId = input<string | null>(null);\n public readonly errorId = input<string | null>(null);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'select' = 'select';\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.open() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-loading')\n protected get dataLoading(): '' | null {\n return this.loading() ? '' : null;\n }\n\n @HostBinding('attr.data-invalid')\n protected get dataInvalid(): '' | null {\n return this.invalid() ? '' : null;\n }\n\n /** Single-select: always false. Satisfies TngSelectHostApi. */\n public readonly multiple = (): boolean => false;\n\n public setContentId(id: string | null): void {\n this._contentId = id;\n }\n public getContentId(): string | null {\n return this._contentId;\n }\n public setListboxId(id: string | null): void {\n this._listboxId = id;\n }\n public getListboxId(): string | null {\n return this._listboxId;\n }\n public setActiveDescendantId(id: string | null): void {\n this._activeId = id;\n }\n public getActiveDescendantId(): string | null {\n return this._activeId;\n }\n\n public openSelect(): void {\n if (this.disabled()) return;\n this.open.set(true);\n }\n public close(): void {\n this.open.set(false);\n }\n public toggle(): void {\n if (this.disabled()) return;\n this.open.set(!this.open());\n }\n\n public selectValue(value: T): void {\n if (this.disabled()) return;\n this.value.set(value);\n this.close();\n }\n\n public setListboxApi(api: TngSelectListboxApi<T> | null): void {\n this._listboxApi = api;\n }\n public getListboxApi(): TngSelectListboxApi<T> | null {\n return this._listboxApi;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-select.listbox.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/select/tng-select.listbox.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;;;AAIjE,qBAYa,gBAAgB,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkD;IAG1E,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAoB;IAGjE,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAqB;;IA6B1C,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO;IAInD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,YAAY,IAAI,IAAI;IAOpB,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI;yCAjEzD,gBAAgB;2CAAhB,gBAAgB;CAyF5B;AAED,qBAUa,eAAe,CAAC,CAAC;IAE5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAmB;yCAFpD,eAAe;2CAAf,eAAe;CAG3B"}
1
+ {"version":3,"file":"tng-select.listbox.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/select/tng-select.listbox.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;;;AAIjE,qBAWa,gBAAgB,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkD;IAG1E,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAoB;IAGjE,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAqB;;IA6B1C,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO;IAInD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,YAAY,IAAI,IAAI;IAOpB,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI;yCAjEzD,gBAAgB;2CAAhB,gBAAgB;CAyF5B;AAED,qBASa,eAAe,CAAC,CAAC;IAE5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAmB;yCAFpD,eAAe;2CAAf,eAAe;CAG3B"}
@@ -84,7 +84,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
84
84
  type: Directive,
85
85
  args: [{
86
86
  selector: '[tngSelectListbox]',
87
- standalone: true,
88
87
  providers: [{ provide: TNG_SELECT_LISTBOX, useExisting: TngSelectListbox }],
89
88
  hostDirectives: [
90
89
  {
@@ -113,7 +112,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
113
112
  type: Directive,
114
113
  args: [{
115
114
  selector: '[tngSelectOption]',
116
- standalone: true,
117
115
  hostDirectives: [
118
116
  {
119
117
  directive: TngOptionDirective,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-select.listbox.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/select/tng-select.listbox.ts"],"names":[],"mappings":"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","sourcesContent":["import { DestroyRef, Directive, effect, HostBinding, HostListener, inject, untracked } from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\nimport { normalizeToSingle } from '../../internal/combobox';\nimport { TngListboxDirective, TngOptionDirective } from '@tailng-ui/primitives';\nimport { TNG_SELECT } from './tng-select.tokens';\nimport type { TngSelect } from './tng-select';\nimport { TngSelectListboxApi } from './tng-select.listbox.types';\nimport { TNG_SELECT_LISTBOX } from './tng-select.listbox.tokens';\n\nconst createListboxId = createTngIdFactory('tng-select-listbox');\n@Directive({\n selector: '[tngSelectListbox]',\n standalone: true,\n providers: [{ provide: TNG_SELECT_LISTBOX, useExisting: TngSelectListbox }],\n hostDirectives: [\n {\n directive: TngListboxDirective,\n inputs: ['orientation', 'direction', 'disabled', 'loop', 'value'],\n outputs: ['valueChange'],\n },\n ],\n})\nexport class TngSelectListbox<T = unknown> implements TngSelectListboxApi<T> {\n private readonly select = inject<TngSelect<T>>(TNG_SELECT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly listbox = inject(TngListboxDirective<T>, { self: true });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'select-listbox' = 'select-listbox';\n\n @HostBinding('attr.id')\n protected readonly id = createListboxId();\n\n constructor() {\n // register id\n this.select.setListboxId(this.id);\n\n // register API into select (Mode-2 bridge)\n this.select.setListboxApi(this);\n\n // controlled sync from Select -> Listbox\n effect(() => {\n const v = this.select.value();\n\n if (this.select.open()) return;\n\n const current = untracked(this.listbox.value);\n const currentSingle = normalizeToSingle(current);\n if (Object.is(currentSingle, v)) return;\n this.listbox.value.set(v as T | null);\n });\n\n this.destroyRef.onDestroy(() => {\n this.select.setListboxId(null);\n this.select.setListboxApi(null);\n });\n }\n\n // ---------------- API ----------------\n\n getHostId(): string | null {\n return this.id ?? null;\n }\n\n getActiveId(): string | null {\n return this.listbox.getActiveId();\n }\n\n ensureActive(pref?: 'first' | 'last'): void {\n this.listbox.ensureActive(pref);\n }\n\n handleKey(key: string, shiftKey?: boolean): boolean {\n return this.listbox.handleKeyFromCombobox(key, shiftKey);\n }\n\n typeahead(key: string): boolean {\n return this.listbox.typeaheadFromCombobox(key);\n }\n\n commitActive(): void {\n const value = this.listbox.getActiveValue();\n if (value === undefined) return;\n this.select.selectValue(value as T);\n }\n\n @HostListener('valueChange', ['$event'])\n protected onListboxValueChange(value: T | readonly T[] | null): void {\n if (this.select.disabled()) return;\n\n const next = normalizeToSingle(value);\n if (Object.is(next, this.select.value())) {\n if (this.select.open() && next !== null) {\n this.select.selectValue(next as T);\n }\n return;\n }\n\n if (!this.select.open()) {\n this.select.value.set(next as T | null);\n return;\n }\n\n if (next === null) {\n this.select.value.set(null);\n this.select.close();\n return;\n }\n\n this.select.selectValue(next);\n }\n}\n\n@Directive({\n selector: '[tngSelectOption]',\n standalone: true,\n hostDirectives: [\n {\n directive: TngOptionDirective,\n inputs: ['tngValue', 'disabled'],\n },\n ],\n})\nexport class TngSelectOption<T> {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'select-option' = 'select-option';\n}"]}
1
+ {"version":3,"file":"tng-select.listbox.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/select/tng-select.listbox.ts"],"names":[],"mappings":"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","sourcesContent":["import { DestroyRef, Directive, effect, HostBinding, HostListener, inject, untracked } from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\nimport { normalizeToSingle } from '../../internal/combobox';\nimport { TngListboxDirective, TngOptionDirective } from '@tailng-ui/primitives';\nimport { TNG_SELECT } from './tng-select.tokens';\nimport type { TngSelect } from './tng-select';\nimport { TngSelectListboxApi } from './tng-select.listbox.types';\nimport { TNG_SELECT_LISTBOX } from './tng-select.listbox.tokens';\n\nconst createListboxId = createTngIdFactory('tng-select-listbox');\n@Directive({\n selector: '[tngSelectListbox]',\n providers: [{ provide: TNG_SELECT_LISTBOX, useExisting: TngSelectListbox }],\n hostDirectives: [\n {\n directive: TngListboxDirective,\n inputs: ['orientation', 'direction', 'disabled', 'loop', 'value'],\n outputs: ['valueChange'],\n },\n ],\n})\nexport class TngSelectListbox<T = unknown> implements TngSelectListboxApi<T> {\n private readonly select = inject<TngSelect<T>>(TNG_SELECT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly listbox = inject(TngListboxDirective<T>, { self: true });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'select-listbox' = 'select-listbox';\n\n @HostBinding('attr.id')\n protected readonly id = createListboxId();\n\n constructor() {\n // register id\n this.select.setListboxId(this.id);\n\n // register API into select (Mode-2 bridge)\n this.select.setListboxApi(this);\n\n // controlled sync from Select -> Listbox\n effect(() => {\n const v = this.select.value();\n\n if (this.select.open()) return;\n\n const current = untracked(this.listbox.value);\n const currentSingle = normalizeToSingle(current);\n if (Object.is(currentSingle, v)) return;\n this.listbox.value.set(v as T | null);\n });\n\n this.destroyRef.onDestroy(() => {\n this.select.setListboxId(null);\n this.select.setListboxApi(null);\n });\n }\n\n // ---------------- API ----------------\n\n getHostId(): string | null {\n return this.id ?? null;\n }\n\n getActiveId(): string | null {\n return this.listbox.getActiveId();\n }\n\n ensureActive(pref?: 'first' | 'last'): void {\n this.listbox.ensureActive(pref);\n }\n\n handleKey(key: string, shiftKey?: boolean): boolean {\n return this.listbox.handleKeyFromCombobox(key, shiftKey);\n }\n\n typeahead(key: string): boolean {\n return this.listbox.typeaheadFromCombobox(key);\n }\n\n commitActive(): void {\n const value = this.listbox.getActiveValue();\n if (value === undefined) return;\n this.select.selectValue(value as T);\n }\n\n @HostListener('valueChange', ['$event'])\n protected onListboxValueChange(value: T | readonly T[] | null): void {\n if (this.select.disabled()) return;\n\n const next = normalizeToSingle(value);\n if (Object.is(next, this.select.value())) {\n if (this.select.open() && next !== null) {\n this.select.selectValue(next as T);\n }\n return;\n }\n\n if (!this.select.open()) {\n this.select.value.set(next as T | null);\n return;\n }\n\n if (next === null) {\n this.select.value.set(null);\n this.select.close();\n return;\n }\n\n this.select.selectValue(next);\n }\n}\n\n@Directive({\n selector: '[tngSelectOption]',\n hostDirectives: [\n {\n directive: TngOptionDirective,\n inputs: ['tngValue', 'disabled'],\n },\n ],\n})\nexport class TngSelectOption<T> {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot: 'select-option' = 'select-option';\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-slider.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/slider/tng-slider.ts"],"names":[],"mappings":";AAMA,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,qBAKa,SAAS;IACpB,SAAgB,QAAQ,8EAErB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,IAAI,4EAGjB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGhD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;IAGD,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAG/C,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;yCAvDU,SAAS;2CAAT,SAAS;CAwDrB"}
1
+ {"version":3,"file":"tng-slider.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/slider/tng-slider.ts"],"names":[],"mappings":";AAMA,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,qBAIa,SAAS;IACpB,SAAgB,QAAQ,8EAErB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,IAAI,4EAGjB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGhD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;IAGD,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAG/C,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;yCAvDU,SAAS;2CAAT,SAAS;CAwDrB"}
@@ -47,7 +47,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
47
47
  args: [{
48
48
  selector: 'input[tngSlider]',
49
49
  exportAs: 'tngSlider',
50
- standalone: true,
51
50
  }]
52
51
  }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], dataDisabledAttr: [{
53
52
  type: HostBinding,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-slider.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/slider/tng-slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAEhF,SAAS,qBAAqB,CAAC,KAAa,EAAE,QAAgB;IAC5D,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAOD,MAAM,OAAO,SAAS;IACJ,QAAQ,GAAG,KAAK,CAA4B,KAAK,qDAC/D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,GAAG,GAAG,KAAK,CAA0B,GAAG,gDACtD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,qBAAqB,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAC1E,CAAC;IACa,GAAG,GAAG,KAAK,CAA0B,CAAC,gDACpD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,qBAAqB,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAC1E,CAAC;IACa,IAAI,GAAG,KAAK,CAA0B,CAAC,iDACrD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,sBAAsB,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAC3E,CAAC;IACa,KAAK,GAAG,KAAK,CAA0B,CAAC,kDACtD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GACnD,CAAC;IAEH,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGkB,QAAQ,GAAG,QAAiB,CAAC;IAEhD,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,IACc,OAAO;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IACc,OAAO;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IACc,QAAQ;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;IAGkB,QAAQ,GAAG,OAAgB,CAAC;IAE/C,IACc,SAAS;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9B,CAAC;uGAvDU,SAAS;2FAAT,SAAS;;2FAAT,SAAS;kBALrB,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,IAAI;iBACjB;;sBAsBE,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,eAAe;;sBAK3B,WAAW;uBAAC,UAAU;;sBAKtB,WAAW;uBAAC,UAAU;;sBAKtB,WAAW;uBAAC,WAAW;;sBAKvB,WAAW;uBAAC,WAAW;;sBAGvB,WAAW;uBAAC,YAAY","sourcesContent":["import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';\n\nfunction normalizeFiniteNumber(value: number, fallback: number): number {\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport function normalizeTngSliderMin(value: number): number {\n return normalizeFiniteNumber(value, 0);\n}\n\nexport function normalizeTngSliderMax(value: number): number {\n return normalizeFiniteNumber(value, 100);\n}\n\nexport function normalizeTngSliderStep(value: number): number {\n const normalized = normalizeFiniteNumber(value, 1);\n return normalized > 0 ? normalized : 1;\n}\n\n@Directive({\n selector: 'input[tngSlider]',\n exportAs: 'tngSlider',\n standalone: true,\n})\nexport class TngSlider {\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly max = input<number, number | string>(100, {\n transform: (value: number | string): number =>\n normalizeTngSliderMax(typeof value === 'number' ? value : Number(value)),\n });\n public readonly min = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n normalizeTngSliderMin(typeof value === 'number' ? value : Number(value)),\n });\n public readonly step = input<number, number | string>(1, {\n transform: (value: number | string): number =>\n normalizeTngSliderStep(typeof value === 'number' ? value : Number(value)),\n });\n public readonly value = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n typeof value === 'number' ? value : Number(value),\n });\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'slider' as const;\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.max')\n protected get maxAttr(): string {\n return String(this.max());\n }\n\n @HostBinding('attr.min')\n protected get minAttr(): string {\n return String(this.min());\n }\n\n @HostBinding('attr.step')\n protected get stepAttr(): string {\n return String(this.step());\n }\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'range' as const;\n\n @HostBinding('attr.value')\n protected get valueAttr(): string {\n return String(this.value());\n }\n}\n"]}
1
+ {"version":3,"file":"tng-slider.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/slider/tng-slider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';\n\nfunction normalizeFiniteNumber(value: number, fallback: number): number {\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport function normalizeTngSliderMin(value: number): number {\n return normalizeFiniteNumber(value, 0);\n}\n\nexport function normalizeTngSliderMax(value: number): number {\n return normalizeFiniteNumber(value, 100);\n}\n\nexport function normalizeTngSliderStep(value: number): number {\n const normalized = normalizeFiniteNumber(value, 1);\n return normalized > 0 ? normalized : 1;\n}\n\n@Directive({\n selector: 'input[tngSlider]',\n exportAs: 'tngSlider',\n})\nexport class TngSlider {\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly max = input<number, number | string>(100, {\n transform: (value: number | string): number =>\n normalizeTngSliderMax(typeof value === 'number' ? value : Number(value)),\n });\n public readonly min = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n normalizeTngSliderMin(typeof value === 'number' ? value : Number(value)),\n });\n public readonly step = input<number, number | string>(1, {\n transform: (value: number | string): number =>\n normalizeTngSliderStep(typeof value === 'number' ? value : Number(value)),\n });\n public readonly value = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n typeof value === 'number' ? value : Number(value),\n });\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'slider' as const;\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.max')\n protected get maxAttr(): string {\n return String(this.max());\n }\n\n @HostBinding('attr.min')\n protected get minAttr(): string {\n return String(this.min());\n }\n\n @HostBinding('attr.step')\n protected get stepAttr(): string {\n return String(this.step());\n }\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'range' as const;\n\n @HostBinding('attr.value')\n protected get valueAttr(): string {\n return String(this.value());\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-switch.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/switch/tng-switch.ts"],"names":[],"mappings":";AAEA,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAEnF;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAE7E;AAED,qBAKa,SAAS;IACpB,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,OAAO,8EAEpB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,QAAQ,8EAErB;IAGH,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,CAEhD;IAGD,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGhD,SAAS,KAAK,aAAa,IAAI,SAAS,GAAG,WAAW,CAErD;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGhD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;yCAjDrC,SAAS;2CAAT,SAAS;CAkDrB"}
1
+ {"version":3,"file":"tng-switch.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/switch/tng-switch.ts"],"names":[],"mappings":";AAEA,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAEnF;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAE7E;AAED,qBAIa,SAAS;IACpB,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,OAAO,8EAEpB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,QAAQ,8EAErB;IAGH,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,CAEhD;IAGD,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGhD,SAAS,KAAK,aAAa,IAAI,SAAS,GAAG,WAAW,CAErD;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGhD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;yCAjDrC,SAAS;2CAAT,SAAS;CAkDrB"}
@@ -43,7 +43,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
43
43
  args: [{
44
44
  selector: 'button[tngSwitch]',
45
45
  exportAs: 'tngSwitch',
46
- standalone: true,
47
46
  }]
48
47
  }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], ariaCheckedAttr: [{
49
48
  type: HostBinding,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-switch.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/switch/tng-switch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAEhF,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAiB;IAC5D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAOD,MAAM,OAAO,SAAS;IACJ,SAAS,GAAG,KAAK,CAAgB,IAAI,qDAAC,CAAC;IACvC,OAAO,GAAG,KAAK,CAA4B,KAAK,oDAC9D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,qDAC/D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,qDAC/D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IAEH,IACc,eAAe;QAC3B,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,4BAA4B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGkB,QAAQ,GAAG,QAAiB,CAAC;IAEhD,IACc,aAAa;QACzB,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGkB,QAAQ,GAAG,QAAiB,CAAC;IAG7B,QAAQ,GAAG,QAAiB,CAAC;uGAjDrC,SAAS;2FAAT,SAAS;;2FAAT,SAAS;kBALrB,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,IAAI;iBACjB;;sBAaE,WAAW;uBAAC,mBAAmB;;sBAK/B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,eAAe;;sBAK3B,WAAW;uBAAC,WAAW;;sBAGvB,WAAW;uBAAC,WAAW","sourcesContent":["import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';\n\nexport function resolveTngSwitchAriaChecked(checked: boolean): 'false' | 'true' {\n return checked ? 'true' : 'false';\n}\n\nexport function resolveTngSwitchDataState(checked: boolean): 'checked' | 'unchecked' {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport function resolveTngSwitchAriaRequired(required: boolean): 'true' | null {\n return required ? 'true' : null;\n}\n\n@Directive({\n selector: 'button[tngSwitch]',\n exportAs: 'tngSwitch',\n standalone: true,\n})\nexport class TngSwitch {\n public readonly ariaLabel = input<string | null>(null);\n public readonly checked = 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 required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.aria-checked')\n protected get ariaCheckedAttr(): 'false' | 'true' {\n return resolveTngSwitchAriaChecked(this.checked());\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return this.ariaLabel();\n }\n\n @HostBinding('attr.aria-required')\n protected get ariaRequiredAttr(): 'true' | null {\n return resolveTngSwitchAriaRequired(this.required());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'switch' as const;\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'checked' | 'unchecked' {\n return resolveTngSwitchDataState(this.checked());\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'switch' as const;\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'button' as const;\n}\n"]}
1
+ {"version":3,"file":"tng-switch.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/switch/tng-switch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAEhF,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAiB;IAC5D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAMD,MAAM,OAAO,SAAS;IACJ,SAAS,GAAG,KAAK,CAAgB,IAAI,qDAAC,CAAC;IACvC,OAAO,GAAG,KAAK,CAA4B,KAAK,oDAC9D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,qDAC/D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,qDAC/D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IAEH,IACc,eAAe;QAC3B,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,4BAA4B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGkB,QAAQ,GAAG,QAAiB,CAAC;IAEhD,IACc,aAAa;QACzB,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGkB,QAAQ,GAAG,QAAiB,CAAC;IAG7B,QAAQ,GAAG,QAAiB,CAAC;uGAjDrC,SAAS;2FAAT,SAAS;;2FAAT,SAAS;kBAJrB,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,WAAW;iBACtB;;sBAaE,WAAW;uBAAC,mBAAmB;;sBAK/B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,eAAe;;sBAK3B,WAAW;uBAAC,WAAW;;sBAGvB,WAAW;uBAAC,WAAW","sourcesContent":["import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';\n\nexport function resolveTngSwitchAriaChecked(checked: boolean): 'false' | 'true' {\n return checked ? 'true' : 'false';\n}\n\nexport function resolveTngSwitchDataState(checked: boolean): 'checked' | 'unchecked' {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport function resolveTngSwitchAriaRequired(required: boolean): 'true' | null {\n return required ? 'true' : null;\n}\n\n@Directive({\n selector: 'button[tngSwitch]',\n exportAs: 'tngSwitch',\n})\nexport class TngSwitch {\n public readonly ariaLabel = input<string | null>(null);\n public readonly checked = 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 required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.aria-checked')\n protected get ariaCheckedAttr(): 'false' | 'true' {\n return resolveTngSwitchAriaChecked(this.checked());\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return this.ariaLabel();\n }\n\n @HostBinding('attr.aria-required')\n protected get ariaRequiredAttr(): 'true' | null {\n return resolveTngSwitchAriaRequired(this.required());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'switch' as const;\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'checked' | 'unchecked' {\n return resolveTngSwitchDataState(this.checked());\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'switch' as const;\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'button' as const;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-textarea.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":";;AAGA,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5E,wEAAwE;AACxE,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAE5F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAgB5E;AAED,qBAoBa,WAAW;IACtB,SAAgB,MAAM,8EAEnB;IACH,SAAgB,IAAI,4EAEjB;IAGH,SAAS,KAAK,cAAc,IAAI,iBAAiB,CAEhD;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAGD,SAAS,KAAK,WAAW,IAAI,iBAAiB,CAE7C;yCArBU,WAAW;2CAAX,WAAW;CAsBvB"}
1
+ {"version":3,"file":"tng-textarea.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":";;AAGA,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5E,wEAAwE;AACxE,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAE5F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAgB5E;AAED,qBAmBa,WAAW;IACtB,SAAgB,MAAM,8EAEnB;IACH,SAAgB,IAAI,4EAEjB;IAGH,SAAS,KAAK,cAAc,IAAI,iBAAiB,CAEhD;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAGD,SAAS,KAAK,WAAW,IAAI,iBAAiB,CAE7C;yCArBU,WAAW;2CAAX,WAAW;CAsBvB"}
@@ -45,7 +45,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
45
45
  args: [{
46
46
  selector: 'textarea[tngTextarea]',
47
47
  exportAs: 'tngTextarea',
48
- standalone: true,
49
48
  hostDirectives: [
50
49
  {
51
50
  directive: TngInput,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-textarea.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;;;AAK7E,wEAAwE;AACxE,MAAM,UAAU,gCAAgC,CAAC,KAA2B;IAC1E,OAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IACE,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,UAAU;QACzB,UAAU,KAAK,YAAY;QAC3B,UAAU,KAAK,MAAM,EACrB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAsBD,MAAM,OAAO,WAAW;IACN,MAAM,GAAG,KAAK,CAAgD,UAAU,mDACtF,SAAS,EAAE,0BAA0B,GACrC,CAAC;IACa,IAAI,GAAG,KAAK,CAA0B,CAAC,iDACrD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAAC,wBAAwB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,GAC/F,CAAC;IAEH,IACc,cAAc;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,IACc,WAAW;QACvB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;uGArBU,WAAW;2FAAX,WAAW;;2FAAX,WAAW;kBApBvB,SAAS;mBAAC;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,QAAQ,EAAE,aAAa;oBACvB,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE;wBACd;4BACE,SAAS,EAAE,QAAQ;4BACnB,MAAM,EAAE;gCACN,iBAAiB;gCACjB,aAAa;gCACb,WAAW;gCACX,gBAAgB;gCAChB,cAAc;gCACd,UAAU;gCACV,UAAU;gCACV,UAAU;6BACX;yBACF;qBACF;iBACF;;sBASE,WAAW;uBAAC,kBAAkB;;sBAK9B,WAAW;uBAAC,WAAW;;sBAKvB,WAAW;uBAAC,cAAc","sourcesContent":["import { Directive, HostBinding, input, numberAttribute } from '@angular/core';\nimport { coerceTngInputNullableBoolean, TngInput } from '../input/tng-input';\n\ntype NullableBooleanInput = boolean | null | string | undefined;\nexport type TngTextareaResize = 'both' | 'horizontal' | 'none' | 'vertical';\n\n/** @deprecated Use `coerceTngInputNullableBoolean` from `tng-input`. */\nexport function coerceTngTextareaNullableBoolean(value: NullableBooleanInput): boolean | null {\n return coerceTngInputNullableBoolean(value);\n}\n\nexport function normalizeTngTextareaRows(value: number): number {\n if (!Number.isFinite(value)) {\n return 3;\n }\n\n return Math.max(1, Math.trunc(value));\n}\n\nexport function normalizeTngTextareaResize(value: unknown): TngTextareaResize {\n if (typeof value !== 'string') {\n return 'vertical';\n }\n\n const normalized = value.trim().toLowerCase();\n if (\n normalized === 'none' ||\n normalized === 'vertical' ||\n normalized === 'horizontal' ||\n normalized === 'both'\n ) {\n return normalized;\n }\n\n return 'vertical';\n}\n\n@Directive({\n selector: 'textarea[tngTextarea]',\n exportAs: 'tngTextarea',\n standalone: true,\n hostDirectives: [\n {\n directive: TngInput,\n inputs: [\n 'ariaDescribedBy',\n 'ariaInvalid',\n 'ariaLabel',\n 'ariaLabelledby',\n 'ariaRequired',\n 'disabled',\n 'readonly',\n 'required',\n ],\n },\n ],\n})\nexport class TngTextarea {\n public readonly resize = input<TngTextareaResize, TngTextareaResize | string>('vertical', {\n transform: normalizeTngTextareaResize,\n });\n public readonly rows = input<number, number | string>(3, {\n transform: (value: number | string): number => normalizeTngTextareaRows(numberAttribute(value)),\n });\n\n @HostBinding('attr.data-resize')\n protected get dataResizeAttr(): TngTextareaResize {\n return this.resize();\n }\n\n @HostBinding('attr.rows')\n protected get rowsAttr(): number {\n return this.rows();\n }\n\n @HostBinding('style.resize')\n protected get resizeStyle(): TngTextareaResize {\n return this.resize();\n }\n}\n"]}
1
+ {"version":3,"file":"tng-textarea.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;;;AAK7E,wEAAwE;AACxE,MAAM,UAAU,gCAAgC,CAAC,KAA2B;IAC1E,OAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IACE,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,UAAU;QACzB,UAAU,KAAK,YAAY;QAC3B,UAAU,KAAK,MAAM,EACrB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAqBD,MAAM,OAAO,WAAW;IACN,MAAM,GAAG,KAAK,CAAgD,UAAU,mDACtF,SAAS,EAAE,0BAA0B,GACrC,CAAC;IACa,IAAI,GAAG,KAAK,CAA0B,CAAC,iDACrD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAAC,wBAAwB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,GAC/F,CAAC;IAEH,IACc,cAAc;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,IACc,WAAW;QACvB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;uGArBU,WAAW;2FAAX,WAAW;;2FAAX,WAAW;kBAnBvB,SAAS;mBAAC;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,QAAQ,EAAE,aAAa;oBACvB,cAAc,EAAE;wBACd;4BACE,SAAS,EAAE,QAAQ;4BACnB,MAAM,EAAE;gCACN,iBAAiB;gCACjB,aAAa;gCACb,WAAW;gCACX,gBAAgB;gCAChB,cAAc;gCACd,UAAU;gCACV,UAAU;gCACV,UAAU;6BACX;yBACF;qBACF;iBACF;;sBASE,WAAW;uBAAC,kBAAkB;;sBAK9B,WAAW;uBAAC,WAAW;;sBAKvB,WAAW;uBAAC,cAAc","sourcesContent":["import { Directive, HostBinding, input, numberAttribute } from '@angular/core';\nimport { coerceTngInputNullableBoolean, TngInput } from '../input/tng-input';\n\ntype NullableBooleanInput = boolean | null | string | undefined;\nexport type TngTextareaResize = 'both' | 'horizontal' | 'none' | 'vertical';\n\n/** @deprecated Use `coerceTngInputNullableBoolean` from `tng-input`. */\nexport function coerceTngTextareaNullableBoolean(value: NullableBooleanInput): boolean | null {\n return coerceTngInputNullableBoolean(value);\n}\n\nexport function normalizeTngTextareaRows(value: number): number {\n if (!Number.isFinite(value)) {\n return 3;\n }\n\n return Math.max(1, Math.trunc(value));\n}\n\nexport function normalizeTngTextareaResize(value: unknown): TngTextareaResize {\n if (typeof value !== 'string') {\n return 'vertical';\n }\n\n const normalized = value.trim().toLowerCase();\n if (\n normalized === 'none' ||\n normalized === 'vertical' ||\n normalized === 'horizontal' ||\n normalized === 'both'\n ) {\n return normalized;\n }\n\n return 'vertical';\n}\n\n@Directive({\n selector: 'textarea[tngTextarea]',\n exportAs: 'tngTextarea',\n hostDirectives: [\n {\n directive: TngInput,\n inputs: [\n 'ariaDescribedBy',\n 'ariaInvalid',\n 'ariaLabel',\n 'ariaLabelledby',\n 'ariaRequired',\n 'disabled',\n 'readonly',\n 'required',\n ],\n },\n ],\n})\nexport class TngTextarea {\n public readonly resize = input<TngTextareaResize, TngTextareaResize | string>('vertical', {\n transform: normalizeTngTextareaResize,\n });\n public readonly rows = input<number, number | string>(3, {\n transform: (value: number | string): number => normalizeTngTextareaRows(numberAttribute(value)),\n });\n\n @HostBinding('attr.data-resize')\n protected get dataResizeAttr(): TngTextareaResize {\n return this.resize();\n }\n\n @HostBinding('attr.rows')\n protected get rowsAttr(): number {\n return this.rows();\n }\n\n @HostBinding('style.resize')\n protected get resizeStyle(): TngTextareaResize {\n return this.resize();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-toggle.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/toggle/tng-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,MAAM,EAOP,MAAM,eAAe,CAAC;;AAGvB,KAAK,oBAAoB,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAW/E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAc1F;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAExE;AAED,qBAKa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqD;IAChF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,6BAA6B,CAAS;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAE7B,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,eAAe,qDAA8B;IAC7D,SAAgB,KAAK,qDAA2D;IAEhF,SAAgB,OAAO,yFAEpB;IACH,SAAgB,cAAc,8EAE3B;IACH,SAAgB,QAAQ,8EAErB;IAEH,SAAgB,aAAa,oDAAqB;IAElD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE9B;IAEH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAY7B;IAEI,QAAQ,IAAI,IAAI;IAKvB,SAAS,KAAK,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEjD;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEhD;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,CAEhD;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,oBAAoB,IAAI,EAAE,GAAG,IAAI,CAE9C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGhD,SAAS,KAAK,aAAa,IAAI,KAAK,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGzC,MAAM,IAAI,IAAI;IAMd,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAiBhC,OAAO,IAAI,IAAI;IAMf,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAc5C,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,qBAAqB;yCAvJlB,SAAS;2CAAT,SAAS;CAsKrB"}
1
+ {"version":3,"file":"tng-toggle.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/toggle/tng-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,MAAM,EAOP,MAAM,eAAe,CAAC;;AAGvB,KAAK,oBAAoB,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAW/E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAc1F;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAExE;AAED,qBAIa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqD;IAChF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,6BAA6B,CAAS;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAE7B,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,eAAe,qDAA8B;IAC7D,SAAgB,KAAK,qDAA2D;IAEhF,SAAgB,OAAO,yFAEpB;IACH,SAAgB,cAAc,8EAE3B;IACH,SAAgB,QAAQ,8EAErB;IAEH,SAAgB,aAAa,oDAAqB;IAElD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE9B;IAEH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAY7B;IAEI,QAAQ,IAAI,IAAI;IAKvB,SAAS,KAAK,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEjD;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEhD;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,CAEhD;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,oBAAoB,IAAI,EAAE,GAAG,IAAI,CAE9C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGhD,SAAS,KAAK,aAAa,IAAI,KAAK,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGzC,MAAM,IAAI,IAAI;IAMd,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAiBhC,OAAO,IAAI,IAAI;IAMf,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAc5C,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,qBAAqB;yCAvJlB,SAAS;2CAAT,SAAS;CAsKrB"}
@@ -146,7 +146,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
146
146
  args: [{
147
147
  selector: 'button[tngToggle]',
148
148
  exportAs: 'tngToggle',
149
- standalone: true,
150
149
  }]
151
150
  }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledby", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngToggleValue", required: false }] }], pressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "pressed", required: false }] }], defaultPressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPressed", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], pressedChange: [{ type: i0.Output, args: ["pressedChange"] }], ariaDescribedByAttr: [{
152
151
  type: HostBinding,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-toggle.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/toggle/tng-toggle.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n OnInit,\n booleanAttribute,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { TngToggleGroup } from '../toggle-group/tng-toggle-group';\n\ntype NullableBooleanInput = '' | 'false' | 'true' | boolean | null | undefined;\n\nfunction normalizeStringValue(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\nexport function coerceTngToggleNullableBoolean(value: NullableBooleanInput): boolean | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return null;\n}\n\nexport function resolveTngToggleAriaPressed(pressed: boolean): 'false' | 'true' {\n return pressed ? 'true' : 'false';\n}\n\nexport function resolveTngToggleDataState(pressed: boolean): 'off' | 'on' {\n return pressed ? 'on' : 'off';\n}\n\n@Directive({\n selector: 'button[tngToggle]',\n exportAs: 'tngToggle',\n standalone: true,\n})\nexport class TngToggle implements OnInit {\n private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n private readonly group = inject(TngToggleGroup, { optional: true });\n private readonly internalPressed = signal(false);\n private suppressNextClickFromKeyboard = false;\n private focused = false;\n private focusVisible = false;\n\n public readonly ariaLabel = input<string | null>(null);\n public readonly ariaLabelledby = input<string | null>(null);\n public readonly ariaDescribedBy = input<string | null>(null);\n public readonly value = input<string | null>(null, { alias: 'tngToggleValue' });\n\n public readonly pressed = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngToggleNullableBoolean,\n });\n public readonly defaultPressed = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n public readonly pressedChange = output<boolean>();\n\n private readonly resolvedDisabled = computed(() => {\n return this.disabled() || this.group?.isGroupDisabled() === true;\n });\n\n private readonly resolvedPressed = computed(() => {\n const groupItemValue = this.groupItemValue();\n if (groupItemValue !== null && this.group !== null) {\n return this.group.isItemSelected(groupItemValue);\n }\n\n const controlledPressed = this.pressed();\n if (controlledPressed !== null) {\n return controlledPressed;\n }\n\n return this.internalPressed();\n });\n\n public ngOnInit(): void {\n this.internalPressed.set(this.defaultPressed());\n }\n\n @HostBinding('attr.aria-describedby')\n protected get ariaDescribedByAttr(): string | null {\n return normalizeStringValue(this.ariaDescribedBy());\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.resolvedDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return normalizeStringValue(this.ariaLabel());\n }\n\n @HostBinding('attr.aria-labelledby')\n protected get ariaLabelledbyAttr(): string | null {\n return normalizeStringValue(this.ariaLabelledby());\n }\n\n @HostBinding('attr.aria-pressed')\n protected get ariaPressedAttr(): 'false' | 'true' {\n return resolveTngToggleAriaPressed(this.resolvedPressed());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.resolvedDisabled() ? '' : null;\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): '' | null {\n return this.focused ? '' : null;\n }\n\n @HostBinding('attr.data-focus-visible')\n protected get dataFocusVisibleAttr(): '' | null {\n return this.focusVisible ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'toggle' as const;\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'off' | 'on' {\n return resolveTngToggleDataState(this.resolvedPressed());\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.resolvedDisabled() ? '' : null;\n }\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'button' as const;\n\n @HostListener('blur')\n public onBlur(): void {\n this.focused = false;\n this.focusVisible = false;\n }\n\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n if (this.resolvedDisabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (this.suppressNextClickFromKeyboard && event.detail === 0) {\n this.suppressNextClickFromKeyboard = false;\n return;\n }\n\n this.suppressNextClickFromKeyboard = false;\n this.toggleFromInteraction();\n }\n\n @HostListener('focus')\n public onFocus(): void {\n this.focused = true;\n this.focusVisible = this.elementRef.nativeElement.matches(':focus-visible');\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydown(event: KeyboardEvent): void {\n if (this.resolvedDisabled()) {\n return;\n }\n\n if (event.key !== ' ' && event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n this.suppressNextClickFromKeyboard = true;\n this.toggleFromInteraction();\n }\n\n private groupItemValue(): string | null {\n return normalizeStringValue(this.value());\n }\n\n private toggleFromInteraction(): void {\n const groupItemValue = this.groupItemValue();\n if (groupItemValue !== null && this.group !== null) {\n const nextValue = this.group.toggleItem(groupItemValue);\n this.pressedChange.emit(nextValue);\n return;\n }\n\n const nextValue = !this.resolvedPressed();\n if (this.pressed() === null) {\n this.internalPressed.set(nextValue);\n }\n\n this.pressedChange.emit(nextValue);\n }\n}\n"]}
1
+ {"version":3,"file":"tng-toggle.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/toggle/tng-toggle.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n OnInit,\n booleanAttribute,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { TngToggleGroup } from '../toggle-group/tng-toggle-group';\n\ntype NullableBooleanInput = '' | 'false' | 'true' | boolean | null | undefined;\n\nfunction normalizeStringValue(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\nexport function coerceTngToggleNullableBoolean(value: NullableBooleanInput): boolean | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return null;\n}\n\nexport function resolveTngToggleAriaPressed(pressed: boolean): 'false' | 'true' {\n return pressed ? 'true' : 'false';\n}\n\nexport function resolveTngToggleDataState(pressed: boolean): 'off' | 'on' {\n return pressed ? 'on' : 'off';\n}\n\n@Directive({\n selector: 'button[tngToggle]',\n exportAs: 'tngToggle',\n})\nexport class TngToggle implements OnInit {\n private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n private readonly group = inject(TngToggleGroup, { optional: true });\n private readonly internalPressed = signal(false);\n private suppressNextClickFromKeyboard = false;\n private focused = false;\n private focusVisible = false;\n\n public readonly ariaLabel = input<string | null>(null);\n public readonly ariaLabelledby = input<string | null>(null);\n public readonly ariaDescribedBy = input<string | null>(null);\n public readonly value = input<string | null>(null, { alias: 'tngToggleValue' });\n\n public readonly pressed = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngToggleNullableBoolean,\n });\n public readonly defaultPressed = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n public readonly pressedChange = output<boolean>();\n\n private readonly resolvedDisabled = computed(() => {\n return this.disabled() || this.group?.isGroupDisabled() === true;\n });\n\n private readonly resolvedPressed = computed(() => {\n const groupItemValue = this.groupItemValue();\n if (groupItemValue !== null && this.group !== null) {\n return this.group.isItemSelected(groupItemValue);\n }\n\n const controlledPressed = this.pressed();\n if (controlledPressed !== null) {\n return controlledPressed;\n }\n\n return this.internalPressed();\n });\n\n public ngOnInit(): void {\n this.internalPressed.set(this.defaultPressed());\n }\n\n @HostBinding('attr.aria-describedby')\n protected get ariaDescribedByAttr(): string | null {\n return normalizeStringValue(this.ariaDescribedBy());\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.resolvedDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return normalizeStringValue(this.ariaLabel());\n }\n\n @HostBinding('attr.aria-labelledby')\n protected get ariaLabelledbyAttr(): string | null {\n return normalizeStringValue(this.ariaLabelledby());\n }\n\n @HostBinding('attr.aria-pressed')\n protected get ariaPressedAttr(): 'false' | 'true' {\n return resolveTngToggleAriaPressed(this.resolvedPressed());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.resolvedDisabled() ? '' : null;\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): '' | null {\n return this.focused ? '' : null;\n }\n\n @HostBinding('attr.data-focus-visible')\n protected get dataFocusVisibleAttr(): '' | null {\n return this.focusVisible ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'toggle' as const;\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'off' | 'on' {\n return resolveTngToggleDataState(this.resolvedPressed());\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.resolvedDisabled() ? '' : null;\n }\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'button' as const;\n\n @HostListener('blur')\n public onBlur(): void {\n this.focused = false;\n this.focusVisible = false;\n }\n\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n if (this.resolvedDisabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (this.suppressNextClickFromKeyboard && event.detail === 0) {\n this.suppressNextClickFromKeyboard = false;\n return;\n }\n\n this.suppressNextClickFromKeyboard = false;\n this.toggleFromInteraction();\n }\n\n @HostListener('focus')\n public onFocus(): void {\n this.focused = true;\n this.focusVisible = this.elementRef.nativeElement.matches(':focus-visible');\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydown(event: KeyboardEvent): void {\n if (this.resolvedDisabled()) {\n return;\n }\n\n if (event.key !== ' ' && event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n this.suppressNextClickFromKeyboard = true;\n this.toggleFromInteraction();\n }\n\n private groupItemValue(): string | null {\n return normalizeStringValue(this.value());\n }\n\n private toggleFromInteraction(): void {\n const groupItemValue = this.groupItemValue();\n if (groupItemValue !== null && this.group !== null) {\n const nextValue = this.group.toggleItem(groupItemValue);\n this.pressedChange.emit(nextValue);\n return;\n }\n\n const nextValue = !this.resolvedPressed();\n if (this.pressed() === null) {\n this.internalPressed.set(nextValue);\n }\n\n this.pressedChange.emit(nextValue);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-toggle-group.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/toggle-group/tng-toggle-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAKP,MAAM,eAAe,CAAC;;AAEvB,KAAK,2BAA2B,GAAG,UAAU,GAAG,QAAQ,CAAC;AAiCzD,qBAKa,cAAe,YAAW,MAAM;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+B;IACnE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IAExE,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,WAAW,iEAAkD;IAC7E,SAAgB,aAAa,yFAE1B;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,iEAA+C;IACpE,SAAgB,MAAM,qEAAmD;IACzE,SAAgB,YAAY,qDAA8B;IAC1D,SAAgB,aAAa,yDAAgC;IAE7D,SAAgB,WAAW,0DAA2B;IACtD,SAAgB,YAAY,8DAA+B;IAEpD,QAAQ,IAAI,IAAI;IAKhB,eAAe,IAAI,OAAO;IAI1B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQ1C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAqC7C,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,qBAAqB;IAS7B,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEhD;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,mBAAmB,IAAI,YAAY,GAAG,UAAU,CAE7D;IAGD,SAAS,KAAK,qBAAqB,IAAI,2BAA2B,CAEjE;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;IAGtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;yCArIpC,cAAc;2CAAd,cAAc;CAsI1B"}
1
+ {"version":3,"file":"tng-toggle-group.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/toggle-group/tng-toggle-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAKP,MAAM,eAAe,CAAC;;AAEvB,KAAK,2BAA2B,GAAG,UAAU,GAAG,QAAQ,CAAC;AAiCzD,qBAIa,cAAe,YAAW,MAAM;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+B;IACnE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IAExE,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,WAAW,iEAAkD;IAC7E,SAAgB,aAAa,yFAE1B;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,iEAA+C;IACpE,SAAgB,MAAM,qEAAmD;IACzE,SAAgB,YAAY,qDAA8B;IAC1D,SAAgB,aAAa,yDAAgC;IAE7D,SAAgB,WAAW,0DAA2B;IACtD,SAAgB,YAAY,8DAA+B;IAEpD,QAAQ,IAAI,IAAI;IAKhB,eAAe,IAAI,OAAO;IAI1B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQ1C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAqC7C,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,qBAAqB;IAS7B,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEhD;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,mBAAmB,IAAI,YAAY,GAAG,UAAU,CAE7D;IAGD,SAAS,KAAK,qBAAqB,IAAI,2BAA2B,CAEjE;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;IAGtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;yCArIpC,cAAc;2CAAd,cAAc;CAsI1B"}
@@ -125,7 +125,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
125
125
  args: [{
126
126
  selector: '[tngToggleGroup]',
127
127
  exportAs: 'tngToggleGroup',
128
- standalone: true,
129
128
  }]
130
129
  }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledby", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], values: [{ type: i0.Input, args: [{ isSignal: true, alias: "values", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], defaultValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValues", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], valuesChange: [{ type: i0.Output, args: ["valuesChange"] }], ariaLabelAttr: [{
131
130
  type: HostBinding,