@tailng-ui/primitives 0.12.0 → 0.13.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 (273) hide show
  1. package/package.json +12 -6
  2. package/src/lib/feedback/empty/tng-empty.d.ts +11 -0
  3. package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
  4. package/src/lib/feedback/empty/tng-empty.js +76 -66
  5. package/src/lib/feedback/empty/tng-empty.js.map +1 -1
  6. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts +5 -0
  7. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
  8. package/src/lib/feedback/progress-bar/tng-progress-bar.js +50 -54
  9. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
  10. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts +3 -0
  11. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
  12. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +35 -41
  13. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
  14. package/src/lib/feedback/skeleton/tng-skeleton.d.ts +3 -0
  15. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
  16. package/src/lib/feedback/skeleton/tng-skeleton.js +30 -32
  17. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
  18. package/src/lib/feedback/toast/tng-toast.d.ts +5 -0
  19. package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
  20. package/src/lib/feedback/toast/tng-toast.js +51 -49
  21. package/src/lib/feedback/toast/tng-toast.js.map +1 -1
  22. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts +3 -0
  23. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts.map +1 -1
  24. package/src/lib/form/_shared/id/tng-unique-id.service.js +9 -7
  25. package/src/lib/form/_shared/id/tng-unique-id.service.js.map +1 -1
  26. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts +3 -0
  27. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
  28. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +22 -20
  29. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
  30. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts +9 -0
  31. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -1
  32. package/src/lib/form/_shared/select/tng-select.parts.shared.js +106 -98
  33. package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
  34. package/src/lib/form/autocomplete/tng-autocomplete.d.ts +3 -0
  35. package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
  36. package/src/lib/form/autocomplete/tng-autocomplete.js +40 -38
  37. package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
  38. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts +6 -0
  39. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
  40. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +54 -46
  41. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
  42. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts +3 -0
  43. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
  44. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +22 -20
  45. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
  46. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts +9 -0
  47. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
  48. package/src/lib/form/autocomplete/tng-autocomplete.parts.js +109 -101
  49. package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
  50. package/src/lib/form/button-toggle/tng-button-toggle.d.ts +5 -0
  51. package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
  52. package/src/lib/form/button-toggle/tng-button-toggle.js +121 -155
  53. package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
  54. package/src/lib/form/checkbox/tng-checkbox.d.ts +3 -0
  55. package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
  56. package/src/lib/form/checkbox/tng-checkbox.js +95 -107
  57. package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
  58. package/src/lib/form/chips/tng-chips.d.ts +7 -0
  59. package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
  60. package/src/lib/form/chips/tng-chips.js +107 -115
  61. package/src/lib/form/chips/tng-chips.js.map +1 -1
  62. package/src/lib/form/combobox/tng-combobox.d.ts +3 -0
  63. package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
  64. package/src/lib/form/combobox/tng-combobox.js +16 -14
  65. package/src/lib/form/combobox/tng-combobox.js.map +1 -1
  66. package/src/lib/form/input/tng-input.d.ts +9 -0
  67. package/src/lib/form/input/tng-input.d.ts.map +1 -1
  68. package/src/lib/form/input/tng-input.js +161 -141
  69. package/src/lib/form/input/tng-input.js.map +1 -1
  70. package/src/lib/form/input-otp/tng-input-otp.d.ts +3 -0
  71. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
  72. package/src/lib/form/input-otp/tng-input-otp.js +58 -70
  73. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
  74. package/src/lib/form/label/tng-label.d.ts +3 -0
  75. package/src/lib/form/label/tng-label.d.ts.map +1 -1
  76. package/src/lib/form/label/tng-label.js +24 -26
  77. package/src/lib/form/label/tng-label.js.map +1 -1
  78. package/src/lib/form/listbox/listbox.directive.d.ts +3 -0
  79. package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
  80. package/src/lib/form/listbox/listbox.directive.js +45 -43
  81. package/src/lib/form/listbox/listbox.directive.js.map +1 -1
  82. package/src/lib/form/listbox/option.directive.d.ts +3 -0
  83. package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
  84. package/src/lib/form/listbox/option.directive.js +40 -38
  85. package/src/lib/form/listbox/option.directive.js.map +1 -1
  86. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts +3 -0
  87. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -1
  88. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +23 -21
  89. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -1
  90. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts +3 -0
  91. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -1
  92. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +25 -23
  93. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -1
  94. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts +3 -0
  95. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -1
  96. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +35 -33
  97. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -1
  98. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts +6 -0
  99. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -1
  100. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +57 -46
  101. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -1
  102. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts +3 -0
  103. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
  104. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +16 -14
  105. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
  106. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +3 -0
  107. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
  108. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +52 -50
  109. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
  110. package/src/lib/form/multi-select/tng-multi-select.d.ts +3 -0
  111. package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -1
  112. package/src/lib/form/multi-select/tng-multi-select.js +41 -36
  113. package/src/lib/form/multi-select/tng-multi-select.js.map +1 -1
  114. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts +6 -0
  115. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -1
  116. package/src/lib/form/multi-select/tng-multi-select.listbox.js +50 -45
  117. package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
  118. package/src/lib/form/multiselect/tng-multiselect.d.ts +3 -0
  119. package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
  120. package/src/lib/form/multiselect/tng-multiselect.js +16 -14
  121. package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
  122. package/src/lib/form/radio/tng-radio.d.ts +3 -0
  123. package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
  124. package/src/lib/form/radio/tng-radio.js +91 -101
  125. package/src/lib/form/radio/tng-radio.js.map +1 -1
  126. package/src/lib/form/select/tng-select.d.ts +3 -0
  127. package/src/lib/form/select/tng-select.d.ts.map +1 -1
  128. package/src/lib/form/select/tng-select.js +41 -36
  129. package/src/lib/form/select/tng-select.js.map +1 -1
  130. package/src/lib/form/select/tng-select.listbox.d.ts +6 -0
  131. package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
  132. package/src/lib/form/select/tng-select.listbox.js +50 -45
  133. package/src/lib/form/select/tng-select.listbox.js.map +1 -1
  134. package/src/lib/form/slider/tng-slider.d.ts +3 -0
  135. package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
  136. package/src/lib/form/slider/tng-slider.js +42 -50
  137. package/src/lib/form/slider/tng-slider.js.map +1 -1
  138. package/src/lib/form/switch/tng-switch.d.ts +3 -0
  139. package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
  140. package/src/lib/form/switch/tng-switch.js +44 -48
  141. package/src/lib/form/switch/tng-switch.js.map +1 -1
  142. package/src/lib/form/textarea/tng-textarea.d.ts +4 -0
  143. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
  144. package/src/lib/form/textarea/tng-textarea.js +40 -41
  145. package/src/lib/form/textarea/tng-textarea.js.map +1 -1
  146. package/src/lib/form/toggle/tng-toggle.d.ts +3 -0
  147. package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
  148. package/src/lib/form/toggle/tng-toggle.js +71 -75
  149. package/src/lib/form/toggle/tng-toggle.js.map +1 -1
  150. package/src/lib/form/toggle-group/tng-toggle-group.d.ts +3 -0
  151. package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
  152. package/src/lib/form/toggle-group/tng-toggle-group.js +48 -50
  153. package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
  154. package/src/lib/layout/accordion/tng-accordion.d.ts +9 -0
  155. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
  156. package/src/lib/layout/accordion/tng-accordion.js +143 -155
  157. package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
  158. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts +3 -0
  159. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
  160. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +16 -14
  161. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
  162. package/src/lib/layout/card/tng-card.d.ts +21 -0
  163. package/src/lib/layout/card/tng-card.d.ts.map +1 -1
  164. package/src/lib/layout/card/tng-card.js +151 -131
  165. package/src/lib/layout/card/tng-card.js.map +1 -1
  166. package/src/lib/layout/collapsible/tng-collapsible.d.ts +7 -0
  167. package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
  168. package/src/lib/layout/collapsible/tng-collapsible.js +82 -86
  169. package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
  170. package/src/lib/layout/drawer/tng-drawer.d.ts +13 -0
  171. package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
  172. package/src/lib/layout/drawer/tng-drawer.js +217 -226
  173. package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
  174. package/src/lib/layout/grid/tng-grid.d.ts +3 -0
  175. package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
  176. package/src/lib/layout/grid/tng-grid.js +16 -14
  177. package/src/lib/layout/grid/tng-grid.js.map +1 -1
  178. package/src/lib/layout/separator/tng-separator.d.ts +3 -0
  179. package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
  180. package/src/lib/layout/separator/tng-separator.js +30 -30
  181. package/src/lib/layout/separator/tng-separator.js.map +1 -1
  182. package/src/lib/layout/stepper/tng-stepper.d.ts +3 -0
  183. package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
  184. package/src/lib/layout/stepper/tng-stepper.js +16 -14
  185. package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
  186. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts +3 -0
  187. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -1
  188. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +54 -11
  189. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
  190. package/src/lib/layout/tree/tng-tree-group.d.ts +3 -0
  191. package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
  192. package/src/lib/layout/tree/tng-tree-group.js +19 -17
  193. package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
  194. package/src/lib/layout/tree/tng-tree-indicator.d.ts +3 -0
  195. package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
  196. package/src/lib/layout/tree/tng-tree-indicator.js +22 -20
  197. package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
  198. package/src/lib/layout/tree/tng-tree-item.d.ts +3 -0
  199. package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
  200. package/src/lib/layout/tree/tng-tree-item.js +47 -53
  201. package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
  202. package/src/lib/layout/tree/tng-tree.d.ts +3 -0
  203. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
  204. package/src/lib/layout/tree/tng-tree.js +39 -43
  205. package/src/lib/layout/tree/tng-tree.js.map +1 -1
  206. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts +11 -0
  207. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
  208. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +79 -69
  209. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
  210. package/src/lib/navigation/context-menu/tng-context-menu.d.ts +5 -0
  211. package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
  212. package/src/lib/navigation/context-menu/tng-context-menu.js +44 -42
  213. package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
  214. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts +3 -0
  215. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
  216. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +16 -14
  217. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
  218. package/src/lib/navigation/menu/tng-menu.d.ts +13 -0
  219. package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
  220. package/src/lib/navigation/menu/tng-menu.js +184 -186
  221. package/src/lib/navigation/menu/tng-menu.js.map +1 -1
  222. package/src/lib/navigation/menubar/tng-menubar.d.ts +5 -0
  223. package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
  224. package/src/lib/navigation/menubar/tng-menubar.js +72 -70
  225. package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
  226. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts +3 -0
  227. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
  228. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +16 -14
  229. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
  230. package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -0
  231. package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
  232. package/src/lib/navigation/tabs/tng-tabs.js +234 -258
  233. package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
  234. package/src/lib/navigation/toolbar/tng-toolbar.d.ts +3 -0
  235. package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
  236. package/src/lib/navigation/toolbar/tng-toolbar.js +16 -14
  237. package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
  238. package/src/lib/overlay/dialog/tng-dialog.d.ts +19 -0
  239. package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
  240. package/src/lib/overlay/dialog/tng-dialog.js +249 -255
  241. package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
  242. package/src/lib/overlay/popover/tng-popover.d.ts +9 -0
  243. package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
  244. package/src/lib/overlay/popover/tng-popover.js +152 -170
  245. package/src/lib/overlay/popover/tng-popover.js.map +1 -1
  246. package/src/lib/overlay/tooltip/tng-tooltip.d.ts +7 -0
  247. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
  248. package/src/lib/overlay/tooltip/tng-tooltip.js +124 -130
  249. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
  250. package/src/lib/utility/avatar/tng-avatar.d.ts +7 -0
  251. package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
  252. package/src/lib/utility/avatar/tng-avatar.js +46 -40
  253. package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
  254. package/src/lib/utility/badge/tng-badge.d.ts +3 -0
  255. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
  256. package/src/lib/utility/badge/tng-badge.js +26 -40
  257. package/src/lib/utility/badge/tng-badge.js.map +1 -1
  258. package/src/lib/utility/code-block/tng-code-block.d.ts +11 -0
  259. package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
  260. package/src/lib/utility/code-block/tng-code-block.js +76 -66
  261. package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
  262. package/src/lib/utility/copy/tng-copy.d.ts +3 -0
  263. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
  264. package/src/lib/utility/copy/tng-copy.js +44 -52
  265. package/src/lib/utility/copy/tng-copy.js.map +1 -1
  266. package/src/lib/utility/press/tng-press.d.ts +3 -0
  267. package/src/lib/utility/press/tng-press.d.ts.map +1 -1
  268. package/src/lib/utility/press/tng-press.js +55 -61
  269. package/src/lib/utility/press/tng-press.js.map +1 -1
  270. package/src/lib/utility/tag/tng-tag.d.ts +7 -0
  271. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
  272. package/src/lib/utility/tag/tng-tag.js +94 -96
  273. package/src/lib/utility/tag/tng-tag.js.map +1 -1
@@ -1,4 +1,5 @@
1
1
  import type { TngKeyboardEvent, TngMouseEvent } from '@tailng-ui/cdk';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class TngTag {
3
4
  readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
4
5
  readonly removable: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
@@ -12,9 +13,13 @@ export declare class TngTag {
12
13
  protected get dataDisabledAttr(): '' | null;
13
14
  protected get dataRemovableAttr(): '' | null;
14
15
  protected readonly dataSlot: "tag";
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngTag, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngTag, "[tngTag]", ["tngTag"], { "disabled": { "alias": "tngTagDisabled"; "required": false; "isSignal": true; }; "removable": { "alias": "tngTagRemovable"; "required": false; "isSignal": true; }; "label": { "alias": "tngTagLabel"; "required": false; "isSignal": true; }; }, { "tngTagRemoved": "tngTagRemoved"; }, never, never, true, never>;
15
18
  }
16
19
  export declare class TngTagIcon {
17
20
  protected readonly dataSlot: "tag-icon";
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngTagIcon, never>;
22
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngTagIcon, "[tngTagIcon]", ["tngTagIcon"], {}, {}, never, never, true, never>;
18
23
  }
19
24
  export declare class TngTagClose {
20
25
  private readonly elementRef;
@@ -37,5 +42,7 @@ export declare class TngTagClose {
37
42
  protected get roleAttr(): 'button' | null;
38
43
  protected get tabIndexAttr(): '0' | '-1' | null;
39
44
  protected get typeAttr(): 'button' | null;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngTagClose, never>;
46
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngTagClose, "[tngTagClose]", ["tngTagClose"], { "ariaLabel": { "alias": "tngTagCloseAriaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
40
47
  }
41
48
  //# sourceMappingURL=tng-tag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tag.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/tag/tng-tag.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAWtE,qBAKa,MAAM;IACjB,SAAgB,QAAQ,8EAGrB;IAEH,SAAgB,SAAS,8EAGtB;IAEH,SAAgB,KAAK,qDAElB;IAEH,SAAgB,aAAa,iDAAkB;IAExC,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,aAAa,IAAI,OAAO;IAU/B,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,iBAAiB,IAAI,EAAE,GAAG,IAAI,CAE3C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,KAAK,CAAU;CAC9C;AAED,qBAKa,UAAU;IAErB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;CACnD;AAED,qBAKa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsC;IAE1D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAElC,SAAgB,SAAS,qDAEtB;IAGH,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAe7C,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B,SAAS,CAAC,UAAU,IAAI,IAAI;IAK5B,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAgBlD,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,UAAU;IAKlB,SAAS,KAAK,aAAa,IAAI,MAAM,CAapC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,WAAW,CAAU;IAGnD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAMtC;IAGD,SAAS,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAExC;IAGD,SAAS,KAAK,YAAY,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAExC;CACF"}
1
+ {"version":3,"file":"tng-tag.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/tag/tng-tag.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;;AAWtE,qBAKa,MAAM;IACjB,SAAgB,QAAQ,8EAGrB;IAEH,SAAgB,SAAS,8EAGtB;IAEH,SAAgB,KAAK,qDAElB;IAEH,SAAgB,aAAa,iDAAkB;IAExC,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,aAAa,IAAI,OAAO;IAU/B,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,iBAAiB,IAAI,EAAE,GAAG,IAAI,CAE3C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,KAAK,CAAU;yCAtDlC,MAAM;2CAAN,MAAM;CAuDlB;AAED,qBAKa,UAAU;IAErB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;yCAFvC,UAAU;2CAAV,UAAU;CAGtB;AAED,qBAKa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsC;IAE1D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAElC,SAAgB,SAAS,qDAEtB;IAGH,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAe7C,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B,SAAS,CAAC,UAAU,IAAI,IAAI;IAK5B,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAgBlD,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,UAAU;IAKlB,SAAS,KAAK,aAAa,IAAI,MAAM,CAapC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,WAAW,CAAU;IAGnD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAMtC;IAGD,SAAS,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAExC;IAGD,SAAS,KAAK,YAAY,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAExC;yCAxHU,WAAW;2CAAX,WAAW;CAyHvB"}
@@ -1,5 +1,5 @@
1
- import { __decorate } from "tslib";
2
1
  import { Directive, ElementRef, HostBinding, HostListener, booleanAttribute, inject, input, output, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
3
  function normalizeString(value) {
4
4
  if (value === undefined || value === null) {
5
5
  return null;
@@ -7,18 +7,12 @@ function normalizeString(value) {
7
7
  const normalized = value.trim();
8
8
  return normalized.length > 0 ? normalized : null;
9
9
  }
10
- let TngTag = class TngTag {
11
- disabled = input(false, {
12
- alias: 'tngTagDisabled',
13
- transform: booleanAttribute,
14
- });
15
- removable = input(false, {
16
- alias: 'tngTagRemovable',
17
- transform: booleanAttribute,
18
- });
19
- label = input(null, {
20
- alias: 'tngTagLabel',
21
- });
10
+ export class TngTag {
11
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), alias: 'tngTagDisabled',
12
+ transform: booleanAttribute });
13
+ removable = input(false, { ...(ngDevMode ? { debugName: "removable" } : {}), alias: 'tngTagRemovable',
14
+ transform: booleanAttribute });
15
+ label = input(null, { ...(ngDevMode ? { debugName: "label" } : {}), alias: 'tngTagLabel' });
22
16
  tngTagRemoved = output();
23
17
  isDisabled() {
24
18
  return this.disabled();
@@ -46,49 +40,51 @@ let TngTag = class TngTag {
46
40
  return this.removable() ? '' : null;
47
41
  }
48
42
  dataSlot = 'tag';
49
- };
50
- __decorate([
51
- HostBinding('attr.aria-disabled')
52
- ], TngTag.prototype, "ariaDisabledAttr", null);
53
- __decorate([
54
- HostBinding('attr.data-disabled')
55
- ], TngTag.prototype, "dataDisabledAttr", null);
56
- __decorate([
57
- HostBinding('attr.data-removable')
58
- ], TngTag.prototype, "dataRemovableAttr", null);
59
- __decorate([
60
- HostBinding('attr.data-slot')
61
- ], TngTag.prototype, "dataSlot", void 0);
62
- TngTag = __decorate([
63
- Directive({
64
- selector: '[tngTag]',
65
- exportAs: 'tngTag',
66
- standalone: true,
67
- })
68
- ], TngTag);
69
- export { TngTag };
70
- let TngTagIcon = class TngTagIcon {
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTag, deps: [], target: i0.ɵɵFactoryTarget.Directive });
44
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngTag, isStandalone: true, selector: "[tngTag]", inputs: { disabled: { classPropertyName: "disabled", publicName: "tngTagDisabled", isSignal: true, isRequired: false, transformFunction: null }, removable: { classPropertyName: "removable", publicName: "tngTagRemovable", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "tngTagLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tngTagRemoved: "tngTagRemoved" }, host: { properties: { "attr.aria-disabled": "this.ariaDisabledAttr", "attr.data-disabled": "this.dataDisabledAttr", "attr.data-removable": "this.dataRemovableAttr", "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngTag"], ngImport: i0 });
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTag, decorators: [{
47
+ type: Directive,
48
+ args: [{
49
+ selector: '[tngTag]',
50
+ exportAs: 'tngTag',
51
+ standalone: true,
52
+ }]
53
+ }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngTagDisabled", required: false }] }], removable: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngTagRemovable", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngTagLabel", required: false }] }], tngTagRemoved: [{ type: i0.Output, args: ["tngTagRemoved"] }], ariaDisabledAttr: [{
54
+ type: HostBinding,
55
+ args: ['attr.aria-disabled']
56
+ }], dataDisabledAttr: [{
57
+ type: HostBinding,
58
+ args: ['attr.data-disabled']
59
+ }], dataRemovableAttr: [{
60
+ type: HostBinding,
61
+ args: ['attr.data-removable']
62
+ }], dataSlot: [{
63
+ type: HostBinding,
64
+ args: ['attr.data-slot']
65
+ }] } });
66
+ export class TngTagIcon {
71
67
  dataSlot = 'tag-icon';
72
- };
73
- __decorate([
74
- HostBinding('attr.data-slot')
75
- ], TngTagIcon.prototype, "dataSlot", void 0);
76
- TngTagIcon = __decorate([
77
- Directive({
78
- selector: '[tngTagIcon]',
79
- exportAs: 'tngTagIcon',
80
- standalone: true,
81
- })
82
- ], TngTagIcon);
83
- export { TngTagIcon };
84
- let TngTagClose = class TngTagClose {
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTagIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
69
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngTagIcon, isStandalone: true, selector: "[tngTagIcon]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngTagIcon"], ngImport: i0 });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTagIcon, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ selector: '[tngTagIcon]',
75
+ exportAs: 'tngTagIcon',
76
+ standalone: true,
77
+ }]
78
+ }], propDecorators: { dataSlot: [{
79
+ type: HostBinding,
80
+ args: ['attr.data-slot']
81
+ }] } });
82
+ export class TngTagClose {
85
83
  elementRef = inject(ElementRef);
86
84
  tag = inject(TngTag, { optional: true });
87
85
  focused = false;
88
86
  suppressNextClick = false;
89
- ariaLabel = input(null, {
90
- alias: 'tngTagCloseAriaLabel',
91
- });
87
+ ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : {}), alias: 'tngTagCloseAriaLabel' });
92
88
  onClick(event) {
93
89
  if (this.suppressNextClick) {
94
90
  this.suppressNextClick = false;
@@ -165,49 +161,51 @@ let TngTagClose = class TngTagClose {
165
161
  get typeAttr() {
166
162
  return this.isButtonElement() ? 'button' : null;
167
163
  }
168
- };
169
- __decorate([
170
- HostListener('click', ['$event'])
171
- ], TngTagClose.prototype, "onClick", null);
172
- __decorate([
173
- HostListener('focusin')
174
- ], TngTagClose.prototype, "onFocusIn", null);
175
- __decorate([
176
- HostListener('focusout')
177
- ], TngTagClose.prototype, "onFocusOut", null);
178
- __decorate([
179
- HostListener('keydown', ['$event'])
180
- ], TngTagClose.prototype, "onKeydown", null);
181
- __decorate([
182
- HostBinding('attr.aria-label')
183
- ], TngTagClose.prototype, "ariaLabelAttr", null);
184
- __decorate([
185
- HostBinding('attr.data-disabled')
186
- ], TngTagClose.prototype, "dataDisabledAttr", null);
187
- __decorate([
188
- HostBinding('attr.data-focused')
189
- ], TngTagClose.prototype, "dataFocusedAttr", null);
190
- __decorate([
191
- HostBinding('attr.data-slot')
192
- ], TngTagClose.prototype, "dataSlot", void 0);
193
- __decorate([
194
- HostBinding('attr.disabled')
195
- ], TngTagClose.prototype, "disabledAttr", null);
196
- __decorate([
197
- HostBinding('attr.role')
198
- ], TngTagClose.prototype, "roleAttr", null);
199
- __decorate([
200
- HostBinding('attr.tabindex')
201
- ], TngTagClose.prototype, "tabIndexAttr", null);
202
- __decorate([
203
- HostBinding('attr.type')
204
- ], TngTagClose.prototype, "typeAttr", null);
205
- TngTagClose = __decorate([
206
- Directive({
207
- selector: '[tngTagClose]',
208
- exportAs: 'tngTagClose',
209
- standalone: true,
210
- })
211
- ], TngTagClose);
212
- export { TngTagClose };
164
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTagClose, deps: [], target: i0.ɵɵFactoryTarget.Directive });
165
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngTagClose, isStandalone: true, selector: "[tngTagClose]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "tngTagCloseAriaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick($event)", "focusin": "onFocusIn()", "focusout": "onFocusOut()", "keydown": "onKeydown($event)" }, properties: { "attr.aria-label": "this.ariaLabelAttr", "attr.data-disabled": "this.dataDisabledAttr", "attr.data-focused": "this.dataFocusedAttr", "attr.data-slot": "this.dataSlot", "attr.disabled": "this.disabledAttr", "attr.role": "this.roleAttr", "attr.tabindex": "this.tabIndexAttr", "attr.type": "this.typeAttr" } }, exportAs: ["tngTagClose"], ngImport: i0 });
166
+ }
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTagClose, decorators: [{
168
+ type: Directive,
169
+ args: [{
170
+ selector: '[tngTagClose]',
171
+ exportAs: 'tngTagClose',
172
+ standalone: true,
173
+ }]
174
+ }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngTagCloseAriaLabel", required: false }] }], onClick: [{
175
+ type: HostListener,
176
+ args: ['click', ['$event']]
177
+ }], onFocusIn: [{
178
+ type: HostListener,
179
+ args: ['focusin']
180
+ }], onFocusOut: [{
181
+ type: HostListener,
182
+ args: ['focusout']
183
+ }], onKeydown: [{
184
+ type: HostListener,
185
+ args: ['keydown', ['$event']]
186
+ }], ariaLabelAttr: [{
187
+ type: HostBinding,
188
+ args: ['attr.aria-label']
189
+ }], dataDisabledAttr: [{
190
+ type: HostBinding,
191
+ args: ['attr.data-disabled']
192
+ }], dataFocusedAttr: [{
193
+ type: HostBinding,
194
+ args: ['attr.data-focused']
195
+ }], dataSlot: [{
196
+ type: HostBinding,
197
+ args: ['attr.data-slot']
198
+ }], disabledAttr: [{
199
+ type: HostBinding,
200
+ args: ['attr.disabled']
201
+ }], roleAttr: [{
202
+ type: HostBinding,
203
+ args: ['attr.role']
204
+ }], tabIndexAttr: [{
205
+ type: HostBinding,
206
+ args: ['attr.tabindex']
207
+ }], typeAttr: [{
208
+ type: HostBinding,
209
+ args: ['attr.type']
210
+ }] } });
213
211
  //# sourceMappingURL=tng-tag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tag.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/tag/tng-tag.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n inject,\n input,\n output,\n} from '@angular/core';\nimport type { TngKeyboardEvent, TngMouseEvent } from '@tailng-ui/cdk';\n\nfunction normalizeString(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\n@Directive({\n selector: '[tngTag]',\n exportAs: 'tngTag',\n standalone: true,\n})\nexport class TngTag {\n public readonly disabled = input<boolean, boolean | string>(false, {\n alias: 'tngTagDisabled',\n transform: booleanAttribute,\n });\n\n public readonly removable = input<boolean, boolean | string>(false, {\n alias: 'tngTagRemovable',\n transform: booleanAttribute,\n });\n\n public readonly label = input<string | null>(null, {\n alias: 'tngTagLabel',\n });\n\n public readonly tngTagRemoved = output<void>();\n\n public isDisabled(): boolean {\n return this.disabled();\n }\n\n public isRemovable(): boolean {\n return this.removable() && !this.isDisabled();\n }\n\n public resolvedLabel(): string {\n return normalizeString(this.label()) ?? 'tag';\n }\n\n public requestRemove(): boolean {\n if (!this.isRemovable()) {\n return false;\n }\n\n this.tngTagRemoved.emit();\n return true;\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.data-removable')\n protected get dataRemovableAttr(): '' | null {\n return this.removable() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tag' as const;\n}\n\n@Directive({\n selector: '[tngTagIcon]',\n exportAs: 'tngTagIcon',\n standalone: true,\n})\nexport class TngTagIcon {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tag-icon' as const;\n}\n\n@Directive({\n selector: '[tngTagClose]',\n exportAs: 'tngTagClose',\n standalone: true,\n})\nexport class TngTagClose {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tag = inject(TngTag, { optional: true });\n\n private focused = false;\n private suppressNextClick = false;\n\n public readonly ariaLabel = input<string | null>(null, {\n alias: 'tngTagCloseAriaLabel',\n });\n\n @HostListener('click', ['$event'])\n protected onClick(event: TngMouseEvent): void {\n if (this.suppressNextClick) {\n this.suppressNextClick = false;\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (!this.requestRemove()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n @HostListener('focusin')\n protected onFocusIn(): void {\n this.focused = true;\n }\n\n @HostListener('focusout')\n protected onFocusOut(): void {\n this.focused = false;\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngKeyboardEvent): void {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n this.suppressNextClick = true;\n setTimeout(() => {\n this.suppressNextClick = false;\n });\n\n this.requestRemove();\n }\n\n private requestRemove(): boolean {\n return this.tag?.requestRemove() === true;\n }\n\n private isButtonElement(): boolean {\n return this.elementRef.nativeElement.tagName === 'BUTTON';\n }\n\n private isDisabled(): boolean {\n return this.tag?.isRemovable() !== true;\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string {\n const explicit = normalizeString(this.ariaLabel());\n if (explicit !== null) {\n return explicit;\n }\n\n const hostDefined = normalizeString(this.elementRef.nativeElement.getAttribute('aria-label'));\n if (hostDefined !== null) {\n return hostDefined;\n }\n\n const label = this.tag?.resolvedLabel() ?? 'tag';\n return `Remove ${label}`;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): '' | null {\n return this.focused ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tag-close' as const;\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n if (!this.isButtonElement()) {\n return null;\n }\n\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.role')\n protected get roleAttr(): 'button' | null {\n return this.isButtonElement() ? null : 'button';\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndexAttr(): '0' | '-1' | null {\n if (this.isButtonElement()) {\n return null;\n }\n\n return this.isDisabled() ? '-1' : '0';\n }\n\n @HostBinding('attr.type')\n protected get typeAttr(): 'button' | null {\n return this.isButtonElement() ? 'button' : null;\n }\n}\n"]}
1
+ {"version":3,"file":"tng-tag.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/tag/tng-tag.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n inject,\n input,\n output,\n} from '@angular/core';\nimport type { TngKeyboardEvent, TngMouseEvent } from '@tailng-ui/cdk';\n\nfunction normalizeString(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\n@Directive({\n selector: '[tngTag]',\n exportAs: 'tngTag',\n standalone: true,\n})\nexport class TngTag {\n public readonly disabled = input<boolean, boolean | string>(false, {\n alias: 'tngTagDisabled',\n transform: booleanAttribute,\n });\n\n public readonly removable = input<boolean, boolean | string>(false, {\n alias: 'tngTagRemovable',\n transform: booleanAttribute,\n });\n\n public readonly label = input<string | null>(null, {\n alias: 'tngTagLabel',\n });\n\n public readonly tngTagRemoved = output<void>();\n\n public isDisabled(): boolean {\n return this.disabled();\n }\n\n public isRemovable(): boolean {\n return this.removable() && !this.isDisabled();\n }\n\n public resolvedLabel(): string {\n return normalizeString(this.label()) ?? 'tag';\n }\n\n public requestRemove(): boolean {\n if (!this.isRemovable()) {\n return false;\n }\n\n this.tngTagRemoved.emit();\n return true;\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.data-removable')\n protected get dataRemovableAttr(): '' | null {\n return this.removable() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tag' as const;\n}\n\n@Directive({\n selector: '[tngTagIcon]',\n exportAs: 'tngTagIcon',\n standalone: true,\n})\nexport class TngTagIcon {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tag-icon' as const;\n}\n\n@Directive({\n selector: '[tngTagClose]',\n exportAs: 'tngTagClose',\n standalone: true,\n})\nexport class TngTagClose {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tag = inject(TngTag, { optional: true });\n\n private focused = false;\n private suppressNextClick = false;\n\n public readonly ariaLabel = input<string | null>(null, {\n alias: 'tngTagCloseAriaLabel',\n });\n\n @HostListener('click', ['$event'])\n protected onClick(event: TngMouseEvent): void {\n if (this.suppressNextClick) {\n this.suppressNextClick = false;\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (!this.requestRemove()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n @HostListener('focusin')\n protected onFocusIn(): void {\n this.focused = true;\n }\n\n @HostListener('focusout')\n protected onFocusOut(): void {\n this.focused = false;\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngKeyboardEvent): void {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n this.suppressNextClick = true;\n setTimeout(() => {\n this.suppressNextClick = false;\n });\n\n this.requestRemove();\n }\n\n private requestRemove(): boolean {\n return this.tag?.requestRemove() === true;\n }\n\n private isButtonElement(): boolean {\n return this.elementRef.nativeElement.tagName === 'BUTTON';\n }\n\n private isDisabled(): boolean {\n return this.tag?.isRemovable() !== true;\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string {\n const explicit = normalizeString(this.ariaLabel());\n if (explicit !== null) {\n return explicit;\n }\n\n const hostDefined = normalizeString(this.elementRef.nativeElement.getAttribute('aria-label'));\n if (hostDefined !== null) {\n return hostDefined;\n }\n\n const label = this.tag?.resolvedLabel() ?? 'tag';\n return `Remove ${label}`;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): '' | null {\n return this.focused ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tag-close' as const;\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n if (!this.isButtonElement()) {\n return null;\n }\n\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.role')\n protected get roleAttr(): 'button' | null {\n return this.isButtonElement() ? null : 'button';\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndexAttr(): '0' | '-1' | null {\n if (this.isButtonElement()) {\n return null;\n }\n\n return this.isDisabled() ? '-1' : '0';\n }\n\n @HostBinding('attr.type')\n protected get typeAttr(): 'button' | null {\n return this.isButtonElement() ? 'button' : null;\n }\n}\n"]}