@tailng-ui/primitives 0.1.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 (374) hide show
  1. package/README.md +36 -0
  2. package/package.json +13 -0
  3. package/src/index.d.ts +55 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +61 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/feedback/empty/tng-empty.d.ts +16 -0
  8. package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -0
  9. package/src/lib/feedback/empty/tng-empty.js +68 -0
  10. package/src/lib/feedback/empty/tng-empty.js.map +1 -0
  11. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts +24 -0
  12. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -0
  13. package/src/lib/feedback/progress-bar/tng-progress-bar.js +100 -0
  14. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -0
  15. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts +21 -0
  16. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -0
  17. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +87 -0
  18. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -0
  19. package/src/lib/feedback/skeleton/tng-skeleton.d.ts +11 -0
  20. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -0
  21. package/src/lib/feedback/skeleton/tng-skeleton.js +44 -0
  22. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -0
  23. package/src/lib/feedback/toast/tng-toast.d.ts +20 -0
  24. package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -0
  25. package/src/lib/feedback/toast/tng-toast.js +79 -0
  26. package/src/lib/feedback/toast/tng-toast.js.map +1 -0
  27. package/src/lib/form/_shared/id/index.d.ts +4 -0
  28. package/src/lib/form/_shared/id/index.d.ts.map +1 -0
  29. package/src/lib/form/_shared/id/index.js +4 -0
  30. package/src/lib/form/_shared/id/index.js.map +1 -0
  31. package/src/lib/form/_shared/id/tng-unique-id.provider.d.ts +11 -0
  32. package/src/lib/form/_shared/id/tng-unique-id.provider.d.ts.map +1 -0
  33. package/src/lib/form/_shared/id/tng-unique-id.provider.js +15 -0
  34. package/src/lib/form/_shared/id/tng-unique-id.provider.js.map +1 -0
  35. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts +9 -0
  36. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts.map +1 -0
  37. package/src/lib/form/_shared/id/tng-unique-id.service.js +18 -0
  38. package/src/lib/form/_shared/id/tng-unique-id.service.js.map +1 -0
  39. package/src/lib/form/_shared/id/tng-unique-id.token.d.ts +8 -0
  40. package/src/lib/form/_shared/id/tng-unique-id.token.d.ts.map +1 -0
  41. package/src/lib/form/_shared/id/tng-unique-id.token.js +13 -0
  42. package/src/lib/form/_shared/id/tng-unique-id.token.js.map +1 -0
  43. package/src/lib/form/_shared/select/tng-select.host-api.d.ts +28 -0
  44. package/src/lib/form/_shared/select/tng-select.host-api.d.ts.map +1 -0
  45. package/src/lib/form/_shared/select/tng-select.host-api.js +1 -0
  46. package/src/lib/form/_shared/select/tng-select.host-api.js.map +1 -0
  47. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts +38 -0
  48. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -0
  49. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +226 -0
  50. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -0
  51. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts +35 -0
  52. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -0
  53. package/src/lib/form/_shared/select/tng-select.parts.shared.js +199 -0
  54. package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -0
  55. package/src/lib/form/_shared/select/tng-select.tokens.shared.d.ts +8 -0
  56. package/src/lib/form/_shared/select/tng-select.tokens.shared.d.ts.map +1 -0
  57. package/src/lib/form/_shared/select/tng-select.tokens.shared.js +7 -0
  58. package/src/lib/form/_shared/select/tng-select.tokens.shared.js.map +1 -0
  59. package/src/lib/form/autocomplete/index.d.ts +7 -0
  60. package/src/lib/form/autocomplete/index.d.ts.map +1 -0
  61. package/src/lib/form/autocomplete/index.js +6 -0
  62. package/src/lib/form/autocomplete/index.js.map +1 -0
  63. package/src/lib/form/autocomplete/tng-autocomplete.d.ts +52 -0
  64. package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -0
  65. package/src/lib/form/autocomplete/tng-autocomplete.js +95 -0
  66. package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -0
  67. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts +19 -0
  68. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -0
  69. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +123 -0
  70. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -0
  71. package/src/lib/form/autocomplete/tng-autocomplete.listbox.tokens.d.ts +4 -0
  72. package/src/lib/form/autocomplete/tng-autocomplete.listbox.tokens.d.ts.map +1 -0
  73. package/src/lib/form/autocomplete/tng-autocomplete.listbox.tokens.js +3 -0
  74. package/src/lib/form/autocomplete/tng-autocomplete.listbox.tokens.js.map +1 -0
  75. package/src/lib/form/autocomplete/tng-autocomplete.listbox.types.d.ts +4 -0
  76. package/src/lib/form/autocomplete/tng-autocomplete.listbox.types.d.ts.map +1 -0
  77. package/src/lib/form/autocomplete/tng-autocomplete.listbox.types.js +1 -0
  78. package/src/lib/form/autocomplete/tng-autocomplete.listbox.types.js.map +1 -0
  79. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts +40 -0
  80. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -0
  81. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +236 -0
  82. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -0
  83. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts +38 -0
  84. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -0
  85. package/src/lib/form/autocomplete/tng-autocomplete.parts.js +252 -0
  86. package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -0
  87. package/src/lib/form/autocomplete/tng-autocomplete.tokens.d.ts +4 -0
  88. package/src/lib/form/autocomplete/tng-autocomplete.tokens.d.ts.map +1 -0
  89. package/src/lib/form/autocomplete/tng-autocomplete.tokens.js +3 -0
  90. package/src/lib/form/autocomplete/tng-autocomplete.tokens.js.map +1 -0
  91. package/src/lib/form/button-toggle/tng-button-toggle.d.ts +164 -0
  92. package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -0
  93. package/src/lib/form/button-toggle/tng-button-toggle.js +1097 -0
  94. package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -0
  95. package/src/lib/form/checkbox/tng-checkbox.d.ts +48 -0
  96. package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -0
  97. package/src/lib/form/checkbox/tng-checkbox.js +234 -0
  98. package/src/lib/form/checkbox/tng-checkbox.js.map +1 -0
  99. package/src/lib/form/chips/tng-chips.d.ts +4 -0
  100. package/src/lib/form/chips/tng-chips.d.ts.map +1 -0
  101. package/src/lib/form/chips/tng-chips.js +16 -0
  102. package/src/lib/form/chips/tng-chips.js.map +1 -0
  103. package/src/lib/form/combobox/tng-combobox.d.ts +4 -0
  104. package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -0
  105. package/src/lib/form/combobox/tng-combobox.js +16 -0
  106. package/src/lib/form/combobox/tng-combobox.js.map +1 -0
  107. package/src/lib/form/input/tng-input.d.ts +87 -0
  108. package/src/lib/form/input/tng-input.d.ts.map +1 -0
  109. package/src/lib/form/input/tng-input.js +393 -0
  110. package/src/lib/form/input/tng-input.js.map +1 -0
  111. package/src/lib/form/input-otp/tng-input-otp.d.ts +7 -0
  112. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -0
  113. package/src/lib/form/input-otp/tng-input-otp.js +33 -0
  114. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -0
  115. package/src/lib/form/label/tng-label.d.ts +6 -0
  116. package/src/lib/form/label/tng-label.d.ts.map +1 -0
  117. package/src/lib/form/label/tng-label.js +25 -0
  118. package/src/lib/form/label/tng-label.js.map +1 -0
  119. package/src/lib/form/listbox/listbox.directive.d.ts +51 -0
  120. package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -0
  121. package/src/lib/form/listbox/listbox.directive.js +439 -0
  122. package/src/lib/form/listbox/listbox.directive.js.map +1 -0
  123. package/src/lib/form/listbox/option.directive.d.ts +22 -0
  124. package/src/lib/form/listbox/option.directive.d.ts.map +1 -0
  125. package/src/lib/form/listbox/option.directive.js +109 -0
  126. package/src/lib/form/listbox/option.directive.js.map +1 -0
  127. package/src/lib/form/listbox/tokens.d.ts +14 -0
  128. package/src/lib/form/listbox/tokens.d.ts.map +1 -0
  129. package/src/lib/form/listbox/tokens.js +13 -0
  130. package/src/lib/form/listbox/tokens.js.map +1 -0
  131. package/src/lib/form/multi-autocomplete/index.d.ts +10 -0
  132. package/src/lib/form/multi-autocomplete/index.d.ts.map +1 -0
  133. package/src/lib/form/multi-autocomplete/index.js +10 -0
  134. package/src/lib/form/multi-autocomplete/index.js.map +1 -0
  135. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts +11 -0
  136. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -0
  137. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +98 -0
  138. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -0
  139. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts +10 -0
  140. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -0
  141. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +45 -0
  142. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -0
  143. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts +43 -0
  144. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -0
  145. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +150 -0
  146. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -0
  147. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts +20 -0
  148. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -0
  149. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +138 -0
  150. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -0
  151. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.tokens.d.ts +4 -0
  152. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.tokens.d.ts.map +1 -0
  153. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.tokens.js +3 -0
  154. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.tokens.js.map +1 -0
  155. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.types.d.ts +18 -0
  156. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.types.d.ts.map +1 -0
  157. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.types.js +2 -0
  158. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.types.js.map +1 -0
  159. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts +4 -0
  160. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -0
  161. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +17 -0
  162. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -0
  163. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.tokens.d.ts +4 -0
  164. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.tokens.d.ts.map +1 -0
  165. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.tokens.js +3 -0
  166. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.tokens.js.map +1 -0
  167. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +21 -0
  168. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -0
  169. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +241 -0
  170. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -0
  171. package/src/lib/form/multi-select/index.d.ts +7 -0
  172. package/src/lib/form/multi-select/index.d.ts.map +1 -0
  173. package/src/lib/form/multi-select/index.js +6 -0
  174. package/src/lib/form/multi-select/index.js.map +1 -0
  175. package/src/lib/form/multi-select/tng-multi-select.d.ts +45 -0
  176. package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -0
  177. package/src/lib/form/multi-select/tng-multi-select.js +136 -0
  178. package/src/lib/form/multi-select/tng-multi-select.js.map +1 -0
  179. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts +21 -0
  180. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -0
  181. package/src/lib/form/multi-select/tng-multi-select.listbox.js +107 -0
  182. package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -0
  183. package/src/lib/form/multi-select/tng-multi-select.listbox.tokens.d.ts +3 -0
  184. package/src/lib/form/multi-select/tng-multi-select.listbox.tokens.d.ts.map +1 -0
  185. package/src/lib/form/multi-select/tng-multi-select.listbox.tokens.js +3 -0
  186. package/src/lib/form/multi-select/tng-multi-select.listbox.tokens.js.map +1 -0
  187. package/src/lib/form/multi-select/tng-multi-select.listbox.types.d.ts +3 -0
  188. package/src/lib/form/multi-select/tng-multi-select.listbox.types.d.ts.map +1 -0
  189. package/src/lib/form/multi-select/tng-multi-select.listbox.types.js +1 -0
  190. package/src/lib/form/multi-select/tng-multi-select.listbox.types.js.map +1 -0
  191. package/src/lib/form/multi-select/tng-multi-select.overlay.d.ts +5 -0
  192. package/src/lib/form/multi-select/tng-multi-select.overlay.d.ts.map +1 -0
  193. package/src/lib/form/multi-select/tng-multi-select.overlay.js +5 -0
  194. package/src/lib/form/multi-select/tng-multi-select.overlay.js.map +1 -0
  195. package/src/lib/form/multi-select/tng-multi-select.parts.d.ts +5 -0
  196. package/src/lib/form/multi-select/tng-multi-select.parts.d.ts.map +1 -0
  197. package/src/lib/form/multi-select/tng-multi-select.parts.js +5 -0
  198. package/src/lib/form/multi-select/tng-multi-select.parts.js.map +1 -0
  199. package/src/lib/form/multi-select/tng-multi-select.tokens.d.ts +4 -0
  200. package/src/lib/form/multi-select/tng-multi-select.tokens.d.ts.map +1 -0
  201. package/src/lib/form/multi-select/tng-multi-select.tokens.js +3 -0
  202. package/src/lib/form/multi-select/tng-multi-select.tokens.js.map +1 -0
  203. package/src/lib/form/multiselect/tng-multiselect.d.ts +4 -0
  204. package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -0
  205. package/src/lib/form/multiselect/tng-multiselect.js +16 -0
  206. package/src/lib/form/multiselect/tng-multiselect.js.map +1 -0
  207. package/src/lib/form/radio/tng-radio.d.ts +20 -0
  208. package/src/lib/form/radio/tng-radio.d.ts.map +1 -0
  209. package/src/lib/form/radio/tng-radio.js +86 -0
  210. package/src/lib/form/radio/tng-radio.js.map +1 -0
  211. package/src/lib/form/select/tng-select.d.ts +38 -0
  212. package/src/lib/form/select/tng-select.d.ts.map +1 -0
  213. package/src/lib/form/select/tng-select.js +106 -0
  214. package/src/lib/form/select/tng-select.js.map +1 -0
  215. package/src/lib/form/select/tng-select.listbox.d.ts +20 -0
  216. package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -0
  217. package/src/lib/form/select/tng-select.listbox.js +123 -0
  218. package/src/lib/form/select/tng-select.listbox.js.map +1 -0
  219. package/src/lib/form/select/tng-select.listbox.tokens.d.ts +3 -0
  220. package/src/lib/form/select/tng-select.listbox.tokens.d.ts.map +1 -0
  221. package/src/lib/form/select/tng-select.listbox.tokens.js +3 -0
  222. package/src/lib/form/select/tng-select.listbox.tokens.js.map +1 -0
  223. package/src/lib/form/select/tng-select.listbox.types.d.ts +4 -0
  224. package/src/lib/form/select/tng-select.listbox.types.d.ts.map +1 -0
  225. package/src/lib/form/select/tng-select.listbox.types.js +1 -0
  226. package/src/lib/form/select/tng-select.listbox.types.js.map +1 -0
  227. package/src/lib/form/select/tng-select.overlay.d.ts +5 -0
  228. package/src/lib/form/select/tng-select.overlay.d.ts.map +1 -0
  229. package/src/lib/form/select/tng-select.overlay.js +5 -0
  230. package/src/lib/form/select/tng-select.overlay.js.map +1 -0
  231. package/src/lib/form/select/tng-select.parts.d.ts +5 -0
  232. package/src/lib/form/select/tng-select.parts.d.ts.map +1 -0
  233. package/src/lib/form/select/tng-select.parts.js +5 -0
  234. package/src/lib/form/select/tng-select.parts.js.map +1 -0
  235. package/src/lib/form/select/tng-select.tokens.d.ts +4 -0
  236. package/src/lib/form/select/tng-select.tokens.d.ts.map +1 -0
  237. package/src/lib/form/select/tng-select.tokens.js +3 -0
  238. package/src/lib/form/select/tng-select.tokens.js.map +1 -0
  239. package/src/lib/form/slider/tng-slider.d.ts +19 -0
  240. package/src/lib/form/slider/tng-slider.d.ts.map +1 -0
  241. package/src/lib/form/slider/tng-slider.js +84 -0
  242. package/src/lib/form/slider/tng-slider.js.map +1 -0
  243. package/src/lib/form/switch/tng-switch.d.ts +19 -0
  244. package/src/lib/form/switch/tng-switch.d.ts.map +1 -0
  245. package/src/lib/form/switch/tng-switch.js +79 -0
  246. package/src/lib/form/switch/tng-switch.js.map +1 -0
  247. package/src/lib/form/textarea/tng-textarea.d.ts +23 -0
  248. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -0
  249. package/src/lib/form/textarea/tng-textarea.js +119 -0
  250. package/src/lib/form/textarea/tng-textarea.js.map +1 -0
  251. package/src/lib/form/toggle/tng-toggle.d.ts +44 -0
  252. package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -0
  253. package/src/lib/form/toggle/tng-toggle.js +203 -0
  254. package/src/lib/form/toggle/tng-toggle.js.map +1 -0
  255. package/src/lib/form/toggle-group/tng-toggle-group.d.ts +35 -0
  256. package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -0
  257. package/src/lib/form/toggle-group/tng-toggle-group.js +156 -0
  258. package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -0
  259. package/src/lib/internal/combobox/combobox.active.d.ts +17 -0
  260. package/src/lib/internal/combobox/combobox.active.d.ts.map +1 -0
  261. package/src/lib/internal/combobox/combobox.active.js +19 -0
  262. package/src/lib/internal/combobox/combobox.active.js.map +1 -0
  263. package/src/lib/internal/combobox/combobox.commit.d.ts +20 -0
  264. package/src/lib/internal/combobox/combobox.commit.d.ts.map +1 -0
  265. package/src/lib/internal/combobox/combobox.commit.js +34 -0
  266. package/src/lib/internal/combobox/combobox.commit.js.map +1 -0
  267. package/src/lib/internal/combobox/combobox.keyboard.d.ts +39 -0
  268. package/src/lib/internal/combobox/combobox.keyboard.d.ts.map +1 -0
  269. package/src/lib/internal/combobox/combobox.keyboard.js +88 -0
  270. package/src/lib/internal/combobox/combobox.keyboard.js.map +1 -0
  271. package/src/lib/internal/combobox/combobox.listbox-api.d.ts +19 -0
  272. package/src/lib/internal/combobox/combobox.listbox-api.d.ts.map +1 -0
  273. package/src/lib/internal/combobox/combobox.listbox-api.js +5 -0
  274. package/src/lib/internal/combobox/combobox.listbox-api.js.map +1 -0
  275. package/src/lib/internal/combobox/index.d.ts +5 -0
  276. package/src/lib/internal/combobox/index.d.ts.map +1 -0
  277. package/src/lib/internal/combobox/index.js +4 -0
  278. package/src/lib/internal/combobox/index.js.map +1 -0
  279. package/src/lib/layout/accordion/tng-accordion.d.ts +150 -0
  280. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -0
  281. package/src/lib/layout/accordion/tng-accordion.js +852 -0
  282. package/src/lib/layout/accordion/tng-accordion.js.map +1 -0
  283. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts +4 -0
  284. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -0
  285. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +16 -0
  286. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -0
  287. package/src/lib/layout/card/tng-card.d.ts +31 -0
  288. package/src/lib/layout/card/tng-card.d.ts.map +1 -0
  289. package/src/lib/layout/card/tng-card.js +133 -0
  290. package/src/lib/layout/card/tng-card.js.map +1 -0
  291. package/src/lib/layout/collapsible/tng-collapsible.d.ts +28 -0
  292. package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -0
  293. package/src/lib/layout/collapsible/tng-collapsible.js +123 -0
  294. package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -0
  295. package/src/lib/layout/drawer/tng-drawer.d.ts +177 -0
  296. package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -0
  297. package/src/lib/layout/drawer/tng-drawer.js +1147 -0
  298. package/src/lib/layout/drawer/tng-drawer.js.map +1 -0
  299. package/src/lib/layout/grid/tng-grid.d.ts +4 -0
  300. package/src/lib/layout/grid/tng-grid.d.ts.map +1 -0
  301. package/src/lib/layout/grid/tng-grid.js +16 -0
  302. package/src/lib/layout/grid/tng-grid.js.map +1 -0
  303. package/src/lib/layout/separator/tng-separator.d.ts +11 -0
  304. package/src/lib/layout/separator/tng-separator.d.ts.map +1 -0
  305. package/src/lib/layout/separator/tng-separator.js +47 -0
  306. package/src/lib/layout/separator/tng-separator.js.map +1 -0
  307. package/src/lib/layout/stepper/tng-stepper.d.ts +4 -0
  308. package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -0
  309. package/src/lib/layout/stepper/tng-stepper.js +16 -0
  310. package/src/lib/layout/stepper/tng-stepper.js.map +1 -0
  311. package/src/lib/layout/tree/tng-tree.d.ts +4 -0
  312. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -0
  313. package/src/lib/layout/tree/tng-tree.js +16 -0
  314. package/src/lib/layout/tree/tng-tree.js.map +1 -0
  315. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts +17 -0
  316. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -0
  317. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +72 -0
  318. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -0
  319. package/src/lib/navigation/context-menu/tng-context-menu.d.ts +36 -0
  320. package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -0
  321. package/src/lib/navigation/context-menu/tng-context-menu.js +159 -0
  322. package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -0
  323. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts +4 -0
  324. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -0
  325. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +16 -0
  326. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -0
  327. package/src/lib/navigation/menu/tng-menu.d.ts +173 -0
  328. package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -0
  329. package/src/lib/navigation/menu/tng-menu.js +1026 -0
  330. package/src/lib/navigation/menu/tng-menu.js.map +1 -0
  331. package/src/lib/navigation/menubar/tng-menubar.d.ts +64 -0
  332. package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -0
  333. package/src/lib/navigation/menubar/tng-menubar.js +478 -0
  334. package/src/lib/navigation/menubar/tng-menubar.js.map +1 -0
  335. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts +4 -0
  336. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -0
  337. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +16 -0
  338. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -0
  339. package/src/lib/navigation/tabs/tng-tabs.d.ts +234 -0
  340. package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -0
  341. package/src/lib/navigation/tabs/tng-tabs.js +1350 -0
  342. package/src/lib/navigation/tabs/tng-tabs.js.map +1 -0
  343. package/src/lib/navigation/toolbar/tng-toolbar.d.ts +4 -0
  344. package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -0
  345. package/src/lib/navigation/toolbar/tng-toolbar.js +16 -0
  346. package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -0
  347. package/src/lib/overlay/tooltip/tng-tooltip.d.ts +25 -0
  348. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -0
  349. package/src/lib/overlay/tooltip/tng-tooltip.js +99 -0
  350. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -0
  351. package/src/lib/utility/avatar/tng-avatar.d.ts +10 -0
  352. package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -0
  353. package/src/lib/utility/avatar/tng-avatar.js +42 -0
  354. package/src/lib/utility/avatar/tng-avatar.js.map +1 -0
  355. package/src/lib/utility/badge/tng-badge.d.ts +63 -0
  356. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -0
  357. package/src/lib/utility/badge/tng-badge.js +345 -0
  358. package/src/lib/utility/badge/tng-badge.js.map +1 -0
  359. package/src/lib/utility/code-block/tng-code-block.d.ts +16 -0
  360. package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -0
  361. package/src/lib/utility/code-block/tng-code-block.js +68 -0
  362. package/src/lib/utility/code-block/tng-code-block.js.map +1 -0
  363. package/src/lib/utility/copy/tng-copy.d.ts +75 -0
  364. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -0
  365. package/src/lib/utility/copy/tng-copy.js +544 -0
  366. package/src/lib/utility/copy/tng-copy.js.map +1 -0
  367. package/src/lib/utility/press/tng-press.d.ts +33 -0
  368. package/src/lib/utility/press/tng-press.d.ts.map +1 -0
  369. package/src/lib/utility/press/tng-press.js +207 -0
  370. package/src/lib/utility/press/tng-press.js.map +1 -0
  371. package/src/lib/utility/tag/tng-tag.d.ts +4 -0
  372. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -0
  373. package/src/lib/utility/tag/tng-tag.js +16 -0
  374. package/src/lib/utility/tag/tng-tag.js.map +1 -0
@@ -0,0 +1,852 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, ElementRef, HostBinding, HostListener, inject, input, output, } from '@angular/core';
3
+ import { createTngIdFactory } from '@tailng-ui/cdk';
4
+ const createAccordionItemValue = createTngIdFactory('tng-accordion-item');
5
+ const createAccordionTriggerId = createTngIdFactory('tng-accordion-trigger');
6
+ const createAccordionPanelId = createTngIdFactory('tng-accordion-panel');
7
+ let nextAccordionItemRegistrationOrder = 0;
8
+ function normalizeBooleanInput(value) {
9
+ if (typeof value === 'boolean') {
10
+ return value;
11
+ }
12
+ if (typeof value === 'string') {
13
+ const normalized = value.trim().toLowerCase();
14
+ if (normalized === '' || normalized === 'true') {
15
+ return true;
16
+ }
17
+ if (normalized === 'false') {
18
+ return false;
19
+ }
20
+ }
21
+ return false;
22
+ }
23
+ function normalizeAccordionType(value) {
24
+ return value === 'multiple' ? 'multiple' : 'single';
25
+ }
26
+ function normalizeAccordionValue(value) {
27
+ if (typeof value === 'number') {
28
+ return value;
29
+ }
30
+ if (typeof value === 'string') {
31
+ return value;
32
+ }
33
+ return String(value);
34
+ }
35
+ function normalizeOptionalAccordionValue(value) {
36
+ if (value === undefined || value === null) {
37
+ return undefined;
38
+ }
39
+ return normalizeAccordionValue(value);
40
+ }
41
+ function normalizeAccordionValueInput(value) {
42
+ if (value === undefined) {
43
+ return undefined;
44
+ }
45
+ if (value === null) {
46
+ return null;
47
+ }
48
+ if (Array.isArray(value)) {
49
+ return value.map((entry) => normalizeAccordionValue(entry));
50
+ }
51
+ return normalizeAccordionValue(value);
52
+ }
53
+ function compareAccordionItemsByDomPosition(a, b) {
54
+ const aElement = a.getHostElement();
55
+ const bElement = b.getHostElement();
56
+ if (aElement === bElement) {
57
+ return a.getRegistrationOrder() - b.getRegistrationOrder();
58
+ }
59
+ const relativePosition = aElement.compareDocumentPosition(bElement);
60
+ if (relativePosition & Node.DOCUMENT_POSITION_FOLLOWING) {
61
+ return -1;
62
+ }
63
+ if (relativePosition & Node.DOCUMENT_POSITION_PRECEDING) {
64
+ return 1;
65
+ }
66
+ return a.getRegistrationOrder() - b.getRegistrationOrder();
67
+ }
68
+ function toSet(values) {
69
+ return new Set(values);
70
+ }
71
+ function setsEqual(a, b) {
72
+ if (a.size !== b.size) {
73
+ return false;
74
+ }
75
+ for (const value of a) {
76
+ if (!b.has(value)) {
77
+ return false;
78
+ }
79
+ }
80
+ return true;
81
+ }
82
+ let TngAccordion = class TngAccordion {
83
+ hostRef = inject(ElementRef);
84
+ items = new Set();
85
+ uncontrolledValues = new Set();
86
+ focusedValue = null;
87
+ initialized = false;
88
+ lastType = 'single';
89
+ defaultValuesSnapshot = [];
90
+ hasUserInteraction = false;
91
+ type = input('single', {
92
+ transform: normalizeAccordionType,
93
+ });
94
+ value = input(undefined, {
95
+ transform: normalizeAccordionValueInput,
96
+ });
97
+ defaultValue = input(undefined, {
98
+ transform: normalizeAccordionValueInput,
99
+ });
100
+ collapsible = input(true, {
101
+ transform: normalizeBooleanInput,
102
+ });
103
+ disabled = input(false, {
104
+ transform: normalizeBooleanInput,
105
+ });
106
+ loop = input(true, {
107
+ transform: normalizeBooleanInput,
108
+ });
109
+ lazy = input(false, {
110
+ transform: normalizeBooleanInput,
111
+ });
112
+ keepAlive = input(true, {
113
+ transform: normalizeBooleanInput,
114
+ });
115
+ valueChange = output();
116
+ valuesChange = output();
117
+ expandedChange = output();
118
+ openStart = output();
119
+ opened = output();
120
+ closeStart = output();
121
+ closed = output();
122
+ dataSlot = 'accordion';
123
+ get dataType() {
124
+ return this.type();
125
+ }
126
+ get dataDisabled() {
127
+ return this.disabled() ? 'true' : 'false';
128
+ }
129
+ ngDoCheck() {
130
+ this.syncStateFromInputs('check');
131
+ }
132
+ ngOnDestroy() {
133
+ this.items.clear();
134
+ }
135
+ registerItem(item) {
136
+ this.items.add(item);
137
+ this.syncStateFromInputs('registration');
138
+ }
139
+ unregisterItem(item) {
140
+ const wasExpanded = this.getEffectiveValueSet().has(item.getValue());
141
+ const removedValue = item.getValue();
142
+ this.items.delete(item);
143
+ if (wasExpanded && !this.isControlled()) {
144
+ const next = new Set(this.uncontrolledValues);
145
+ next.delete(removedValue);
146
+ this.uncontrolledValues = next;
147
+ }
148
+ if (this.focusedValue !== null && this.focusedValue === removedValue) {
149
+ this.focusedValue = null;
150
+ }
151
+ this.syncStateFromInputs('check');
152
+ }
153
+ notifyItemMutated() {
154
+ this.syncStateFromInputs('check');
155
+ }
156
+ isItemExpanded(item) {
157
+ return this.getEffectiveValueSet().has(item.getValue());
158
+ }
159
+ isItemDisabled(item) {
160
+ return this.disabled() || item.disabled();
161
+ }
162
+ getTriggerTabIndex(item) {
163
+ if (this.isItemDisabled(item)) {
164
+ return '-1';
165
+ }
166
+ const focusableItem = this.resolveCurrentFocusableItem();
167
+ if (focusableItem === null) {
168
+ return '-1';
169
+ }
170
+ return focusableItem === item ? '0' : '-1';
171
+ }
172
+ onTriggerFocused(item) {
173
+ if (this.isItemDisabled(item)) {
174
+ return;
175
+ }
176
+ this.focusedValue = item.getValue();
177
+ }
178
+ onTriggerClicked(item) {
179
+ this.requestToggle(item, 'pointer');
180
+ }
181
+ onTriggerKeydown(item, event) {
182
+ if (this.isItemDisabled(item) || event.altKey || event.ctrlKey || event.metaKey) {
183
+ return;
184
+ }
185
+ if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {
186
+ event.preventDefault();
187
+ this.requestToggle(item, 'keyboard');
188
+ return;
189
+ }
190
+ const action = this.resolveNavigationAction(event.key);
191
+ if (action === null) {
192
+ return;
193
+ }
194
+ if (this.moveFocus(item, action)) {
195
+ event.preventDefault();
196
+ }
197
+ }
198
+ isPanelMounted(item) {
199
+ if (this.isItemExpanded(item)) {
200
+ item.markExpandedOnce();
201
+ return true;
202
+ }
203
+ if (!this.keepAlive()) {
204
+ return false;
205
+ }
206
+ if (!this.lazy()) {
207
+ return true;
208
+ }
209
+ return item.hasExpandedOnce();
210
+ }
211
+ open(value) {
212
+ this.requestSetExpanded(value, true, 'programmatic');
213
+ }
214
+ close(value) {
215
+ this.requestSetExpanded(value, false, 'programmatic');
216
+ }
217
+ toggle(value) {
218
+ const expanded = this.getEffectiveValueSet().has(value);
219
+ this.requestSetExpanded(value, !expanded, 'programmatic');
220
+ }
221
+ getExpandedValues() {
222
+ const effectiveSet = this.getEffectiveValueSet();
223
+ return this.getOrderedItems()
224
+ .map((item) => item.getValue())
225
+ .filter((value) => effectiveSet.has(value));
226
+ }
227
+ requestSetExpanded(value, nextExpanded, trigger) {
228
+ const item = this.getOrderedItems().find((candidate) => candidate.getValue() === value) ?? null;
229
+ if (item === null) {
230
+ return;
231
+ }
232
+ if (this.isItemExpanded(item) === nextExpanded) {
233
+ return;
234
+ }
235
+ this.requestToggle(item, trigger, nextExpanded);
236
+ }
237
+ requestToggle(item, trigger, forcedExpanded) {
238
+ if (this.isItemDisabled(item)) {
239
+ return;
240
+ }
241
+ const previous = this.getEffectiveValueSet();
242
+ const next = new Set(previous);
243
+ const itemValue = item.getValue();
244
+ const currentlyExpanded = previous.has(itemValue);
245
+ const shouldExpand = forcedExpanded ?? !currentlyExpanded;
246
+ if (this.type() === 'single') {
247
+ if (!shouldExpand && !this.collapsible()) {
248
+ return;
249
+ }
250
+ next.clear();
251
+ if (shouldExpand) {
252
+ next.add(itemValue);
253
+ }
254
+ }
255
+ else {
256
+ if (shouldExpand) {
257
+ next.add(itemValue);
258
+ }
259
+ else {
260
+ next.delete(itemValue);
261
+ }
262
+ }
263
+ if (setsEqual(previous, next)) {
264
+ return;
265
+ }
266
+ if (!this.isControlled()) {
267
+ this.uncontrolledValues = next;
268
+ }
269
+ this.hasUserInteraction = true;
270
+ this.focusedValue = itemValue;
271
+ const previousValues = this.mapSetToOrderedValues(previous);
272
+ const nextValues = this.mapSetToOrderedValues(next);
273
+ const expanded = next.has(itemValue);
274
+ this.emitSelectionOutputs(itemValue, expanded, previousValues, nextValues, trigger);
275
+ this.syncStateFromInputs('check');
276
+ }
277
+ emitSelectionOutputs(value, expanded, previousValues, values, trigger) {
278
+ if (expanded) {
279
+ this.openStart.emit(value);
280
+ }
281
+ else {
282
+ this.closeStart.emit(value);
283
+ }
284
+ if (this.type() === 'single') {
285
+ const nextSingle = values[0] ?? null;
286
+ this.valueChange.emit(nextSingle);
287
+ }
288
+ else {
289
+ this.valueChange.emit(values);
290
+ this.valuesChange.emit(values);
291
+ }
292
+ this.expandedChange.emit({
293
+ value,
294
+ expanded,
295
+ previousValues,
296
+ values,
297
+ trigger,
298
+ });
299
+ if (expanded) {
300
+ this.opened.emit(value);
301
+ }
302
+ else {
303
+ this.closed.emit(value);
304
+ }
305
+ }
306
+ resolveNavigationAction(key) {
307
+ if (key === 'ArrowDown') {
308
+ return 'next';
309
+ }
310
+ if (key === 'ArrowUp') {
311
+ return 'prev';
312
+ }
313
+ if (key === 'Home') {
314
+ return 'first';
315
+ }
316
+ if (key === 'End') {
317
+ return 'last';
318
+ }
319
+ return null;
320
+ }
321
+ moveFocus(item, action) {
322
+ const enabledItems = this.getEnabledItems();
323
+ if (enabledItems.length === 0) {
324
+ return false;
325
+ }
326
+ const currentIndex = enabledItems.indexOf(item);
327
+ if (currentIndex < 0) {
328
+ return false;
329
+ }
330
+ let nextIndex = currentIndex;
331
+ if (action === 'first') {
332
+ nextIndex = 0;
333
+ }
334
+ else if (action === 'last') {
335
+ nextIndex = enabledItems.length - 1;
336
+ }
337
+ else if (action === 'next') {
338
+ if (currentIndex + 1 < enabledItems.length) {
339
+ nextIndex = currentIndex + 1;
340
+ }
341
+ else if (this.loop()) {
342
+ nextIndex = 0;
343
+ }
344
+ else {
345
+ return false;
346
+ }
347
+ }
348
+ else if (action === 'prev') {
349
+ if (currentIndex - 1 >= 0) {
350
+ nextIndex = currentIndex - 1;
351
+ }
352
+ else if (this.loop()) {
353
+ nextIndex = enabledItems.length - 1;
354
+ }
355
+ else {
356
+ return false;
357
+ }
358
+ }
359
+ const target = enabledItems[nextIndex] ?? null;
360
+ if (target === null || target === item) {
361
+ return false;
362
+ }
363
+ target.focusTrigger();
364
+ this.focusedValue = target.getValue();
365
+ return true;
366
+ }
367
+ syncStateFromInputs(source) {
368
+ if (!this.initialized) {
369
+ this.initialized = this.initializeUncontrolledState(source);
370
+ if (!this.initialized) {
371
+ return;
372
+ }
373
+ }
374
+ const nextType = this.type();
375
+ if (nextType !== this.lastType) {
376
+ this.lastType = nextType;
377
+ if (!this.isControlled() && nextType === 'single' && this.uncontrolledValues.size > 1) {
378
+ const first = this.mapSetToOrderedValues(this.uncontrolledValues)[0];
379
+ this.uncontrolledValues = first === undefined ? new Set() : new Set([first]);
380
+ }
381
+ }
382
+ if (!this.isControlled()) {
383
+ this.uncontrolledValues = this.normalizeSetForCurrentItems(this.uncontrolledValues);
384
+ if (!this.hasUserInteraction && this.defaultValuesSnapshot.length > 0) {
385
+ const normalizedDefaultValues = this.normalizeSetForCurrentItems(toSet(this.defaultValuesSnapshot));
386
+ if (!setsEqual(this.uncontrolledValues, normalizedDefaultValues)) {
387
+ this.uncontrolledValues = normalizedDefaultValues;
388
+ }
389
+ }
390
+ }
391
+ this.ensureSingleModeNonCollapsibleSelection();
392
+ this.ensureFocusedValueStillValid();
393
+ }
394
+ initializeUncontrolledState(source) {
395
+ if (this.isControlled()) {
396
+ this.uncontrolledValues = new Set();
397
+ return true;
398
+ }
399
+ if (this.items.size === 0) {
400
+ this.uncontrolledValues = new Set();
401
+ return false;
402
+ }
403
+ const defaultInput = this.defaultValue();
404
+ const initialValues = this.normalizeValueInputToArray(defaultInput);
405
+ this.defaultValuesSnapshot = initialValues;
406
+ this.uncontrolledValues = this.normalizeSetForCurrentItems(toSet(initialValues));
407
+ if (initialValues.length === 0) {
408
+ return this.items.size > 0 || source === 'check';
409
+ }
410
+ const requiredValuesCount = new Set(initialValues).size;
411
+ if (this.uncontrolledValues.size >= requiredValuesCount) {
412
+ return true;
413
+ }
414
+ return source === 'check';
415
+ }
416
+ ensureSingleModeNonCollapsibleSelection() {
417
+ if (this.type() !== 'single' || this.collapsible()) {
418
+ return;
419
+ }
420
+ const effectiveValues = this.getEffectiveValueSet();
421
+ if (effectiveValues.size > 0) {
422
+ return;
423
+ }
424
+ const firstEnabled = this.getEnabledItems()[0];
425
+ if (firstEnabled === undefined) {
426
+ return;
427
+ }
428
+ if (this.isControlled()) {
429
+ return;
430
+ }
431
+ this.uncontrolledValues = new Set([firstEnabled.getValue()]);
432
+ }
433
+ ensureFocusedValueStillValid() {
434
+ const enabledItems = this.getEnabledItems();
435
+ if (enabledItems.length === 0) {
436
+ this.focusedValue = null;
437
+ return;
438
+ }
439
+ if (this.focusedValue !== null && enabledItems.some((item) => item.getValue() === this.focusedValue)) {
440
+ return;
441
+ }
442
+ const expandedSet = this.getEffectiveValueSet();
443
+ const expandedItem = enabledItems.find((item) => expandedSet.has(item.getValue())) ??
444
+ null;
445
+ this.focusedValue = expandedItem?.getValue() ?? enabledItems[0]?.getValue() ?? null;
446
+ }
447
+ isControlled() {
448
+ return this.value() !== undefined;
449
+ }
450
+ getEffectiveValueSet() {
451
+ if (!this.isControlled()) {
452
+ return this.uncontrolledValues;
453
+ }
454
+ const controlledValues = toSet(this.normalizeValueInputToArray(this.value()));
455
+ return this.normalizeSetForCurrentItems(controlledValues);
456
+ }
457
+ normalizeSetForCurrentItems(values) {
458
+ const availableValues = new Set(this.getOrderedItems().map((item) => item.getValue()));
459
+ const normalized = new Set();
460
+ for (const value of values) {
461
+ if (availableValues.has(value)) {
462
+ normalized.add(value);
463
+ }
464
+ }
465
+ if (this.type() === 'single') {
466
+ const first = this.mapSetToOrderedValues(normalized)[0];
467
+ return first === undefined ? new Set() : new Set([first]);
468
+ }
469
+ return normalized;
470
+ }
471
+ normalizeValueInputToArray(value) {
472
+ if (value === undefined || value === null) {
473
+ return [];
474
+ }
475
+ if (Array.isArray(value)) {
476
+ return [...value];
477
+ }
478
+ return [value];
479
+ }
480
+ mapSetToOrderedValues(values) {
481
+ return this.getOrderedItems()
482
+ .map((item) => item.getValue())
483
+ .filter((value) => values.has(value));
484
+ }
485
+ getOrderedItems() {
486
+ return Array.from(this.items).sort(compareAccordionItemsByDomPosition);
487
+ }
488
+ getEnabledItems() {
489
+ return this.getOrderedItems().filter((item) => !this.isItemDisabled(item));
490
+ }
491
+ resolveCurrentFocusableItem() {
492
+ const enabledItems = this.getEnabledItems();
493
+ if (enabledItems.length === 0) {
494
+ return null;
495
+ }
496
+ if (this.focusedValue !== null) {
497
+ const focusedItem = enabledItems.find((item) => item.getValue() === this.focusedValue) ?? null;
498
+ if (focusedItem !== null) {
499
+ return focusedItem;
500
+ }
501
+ }
502
+ const expandedValues = this.getEffectiveValueSet();
503
+ const expandedItem = enabledItems.find((item) => expandedValues.has(item.getValue())) ?? null;
504
+ if (expandedItem !== null) {
505
+ return expandedItem;
506
+ }
507
+ return enabledItems[0] ?? null;
508
+ }
509
+ getHostElement() {
510
+ return this.hostRef.nativeElement;
511
+ }
512
+ };
513
+ __decorate([
514
+ HostBinding('attr.data-slot')
515
+ ], TngAccordion.prototype, "dataSlot", void 0);
516
+ __decorate([
517
+ HostBinding('attr.data-type')
518
+ ], TngAccordion.prototype, "dataType", null);
519
+ __decorate([
520
+ HostBinding('attr.data-disabled')
521
+ ], TngAccordion.prototype, "dataDisabled", null);
522
+ TngAccordion = __decorate([
523
+ Directive({
524
+ selector: '[tngAccordion]',
525
+ exportAs: 'tngAccordion',
526
+ standalone: true,
527
+ })
528
+ ], TngAccordion);
529
+ export { TngAccordion };
530
+ let TngAccordionItem = class TngAccordionItem {
531
+ root = inject(TngAccordion, { optional: true, host: true });
532
+ hostRef = inject(ElementRef);
533
+ fallbackValue = createAccordionItemValue();
534
+ registrationOrder = nextAccordionItemRegistrationOrder++;
535
+ trigger = null;
536
+ panel = null;
537
+ expandedOnce = false;
538
+ value = input(undefined, {
539
+ transform: normalizeOptionalAccordionValue,
540
+ });
541
+ disabled = input(false, {
542
+ transform: normalizeBooleanInput,
543
+ });
544
+ dataSlot = 'accordion-item';
545
+ get dataState() {
546
+ return this.root?.isItemExpanded(this) ? 'open' : 'closed';
547
+ }
548
+ get dataDisabled() {
549
+ return this.disabled() ? 'true' : 'false';
550
+ }
551
+ ngOnInit() {
552
+ this.root?.registerItem(this);
553
+ }
554
+ ngDoCheck() {
555
+ this.root?.notifyItemMutated();
556
+ }
557
+ ngOnDestroy() {
558
+ this.root?.unregisterItem(this);
559
+ }
560
+ getHostElement() {
561
+ return this.hostRef.nativeElement;
562
+ }
563
+ getRegistrationOrder() {
564
+ return this.registrationOrder;
565
+ }
566
+ getValue() {
567
+ return this.value() ?? this.fallbackValue;
568
+ }
569
+ getAccordion() {
570
+ return this.root ?? null;
571
+ }
572
+ registerTrigger(trigger) {
573
+ this.trigger = trigger;
574
+ }
575
+ unregisterTrigger(trigger) {
576
+ if (this.trigger === trigger) {
577
+ this.trigger = null;
578
+ }
579
+ }
580
+ registerPanel(panel) {
581
+ this.panel = panel;
582
+ }
583
+ unregisterPanel(panel) {
584
+ if (this.panel === panel) {
585
+ this.panel = null;
586
+ }
587
+ }
588
+ focusTrigger() {
589
+ this.trigger?.focusSelf();
590
+ }
591
+ getTriggerId() {
592
+ return this.trigger?.getTriggerId() ?? null;
593
+ }
594
+ getPanelId() {
595
+ return this.panel?.getPanelId() ?? null;
596
+ }
597
+ markExpandedOnce() {
598
+ this.expandedOnce = true;
599
+ }
600
+ hasExpandedOnce() {
601
+ return this.expandedOnce;
602
+ }
603
+ };
604
+ __decorate([
605
+ HostBinding('attr.data-slot')
606
+ ], TngAccordionItem.prototype, "dataSlot", void 0);
607
+ __decorate([
608
+ HostBinding('attr.data-state')
609
+ ], TngAccordionItem.prototype, "dataState", null);
610
+ __decorate([
611
+ HostBinding('attr.data-disabled')
612
+ ], TngAccordionItem.prototype, "dataDisabled", null);
613
+ TngAccordionItem = __decorate([
614
+ Directive({
615
+ selector: '[tngAccordionItem]',
616
+ exportAs: 'tngAccordionItem',
617
+ standalone: true,
618
+ })
619
+ ], TngAccordionItem);
620
+ export { TngAccordionItem };
621
+ let TngAccordionTrigger = class TngAccordionTrigger {
622
+ item = inject(TngAccordionItem, { optional: true, host: true });
623
+ hostRef = inject(ElementRef);
624
+ fallbackTriggerId = this.hostRef.nativeElement.getAttribute('id') ?? createAccordionTriggerId();
625
+ dataSlot = 'accordion-trigger';
626
+ get idAttr() {
627
+ return this.resolveTriggerId();
628
+ }
629
+ role = 'button';
630
+ get typeAttr() {
631
+ return this.hostRef.nativeElement instanceof HTMLButtonElement ? 'button' : null;
632
+ }
633
+ get tabIndexAttr() {
634
+ if (this.item === null) {
635
+ return this.hostRef.nativeElement.getAttribute('tabindex') ?? '0';
636
+ }
637
+ const root = this.item.getAccordion();
638
+ return root?.getTriggerTabIndex(this.item) ?? '0';
639
+ }
640
+ get ariaExpanded() {
641
+ if (this.item === null) {
642
+ return 'false';
643
+ }
644
+ return this.item.getAccordion()?.isItemExpanded(this.item) ? 'true' : 'false';
645
+ }
646
+ get ariaControls() {
647
+ return this.item?.getPanelId() ?? null;
648
+ }
649
+ get ariaDisabled() {
650
+ if (this.item === null) {
651
+ return null;
652
+ }
653
+ return this.item.getAccordion()?.isItemDisabled(this.item) ? 'true' : null;
654
+ }
655
+ get disabledAttr() {
656
+ if (!(this.hostRef.nativeElement instanceof HTMLButtonElement) || this.item === null) {
657
+ return null;
658
+ }
659
+ return this.item.getAccordion()?.isItemDisabled(this.item) ? '' : null;
660
+ }
661
+ get dataState() {
662
+ if (this.item === null) {
663
+ return 'closed';
664
+ }
665
+ return this.item.getAccordion()?.isItemExpanded(this.item) ? 'open' : 'closed';
666
+ }
667
+ get dataDisabled() {
668
+ if (this.item === null) {
669
+ return 'false';
670
+ }
671
+ return this.item.getAccordion()?.isItemDisabled(this.item) ? 'true' : 'false';
672
+ }
673
+ ngOnInit() {
674
+ this.item?.registerTrigger(this);
675
+ }
676
+ ngOnDestroy() {
677
+ this.item?.unregisterTrigger(this);
678
+ }
679
+ getTriggerId() {
680
+ return this.resolveTriggerId();
681
+ }
682
+ focusSelf() {
683
+ this.hostRef.nativeElement.focus();
684
+ }
685
+ resolveTriggerId() {
686
+ const explicitId = this.hostRef.nativeElement.getAttribute('id');
687
+ if (explicitId !== null && explicitId.length > 0) {
688
+ return explicitId;
689
+ }
690
+ return this.fallbackTriggerId;
691
+ }
692
+ onFocus() {
693
+ if (this.item === null) {
694
+ return;
695
+ }
696
+ this.item.getAccordion()?.onTriggerFocused(this.item);
697
+ }
698
+ onClick(event) {
699
+ if (this.item === null) {
700
+ return;
701
+ }
702
+ const accordion = this.item.getAccordion();
703
+ if (accordion?.isItemDisabled(this.item)) {
704
+ event.preventDefault();
705
+ return;
706
+ }
707
+ accordion?.onTriggerClicked(this.item);
708
+ }
709
+ onKeydown(event) {
710
+ if (this.item === null) {
711
+ return;
712
+ }
713
+ this.item.getAccordion()?.onTriggerKeydown(this.item, event);
714
+ }
715
+ };
716
+ __decorate([
717
+ HostBinding('attr.data-slot')
718
+ ], TngAccordionTrigger.prototype, "dataSlot", void 0);
719
+ __decorate([
720
+ HostBinding('attr.id')
721
+ ], TngAccordionTrigger.prototype, "idAttr", null);
722
+ __decorate([
723
+ HostBinding('attr.role')
724
+ ], TngAccordionTrigger.prototype, "role", void 0);
725
+ __decorate([
726
+ HostBinding('attr.type')
727
+ ], TngAccordionTrigger.prototype, "typeAttr", null);
728
+ __decorate([
729
+ HostBinding('attr.tabindex')
730
+ ], TngAccordionTrigger.prototype, "tabIndexAttr", null);
731
+ __decorate([
732
+ HostBinding('attr.aria-expanded')
733
+ ], TngAccordionTrigger.prototype, "ariaExpanded", null);
734
+ __decorate([
735
+ HostBinding('attr.aria-controls')
736
+ ], TngAccordionTrigger.prototype, "ariaControls", null);
737
+ __decorate([
738
+ HostBinding('attr.aria-disabled')
739
+ ], TngAccordionTrigger.prototype, "ariaDisabled", null);
740
+ __decorate([
741
+ HostBinding('attr.disabled')
742
+ ], TngAccordionTrigger.prototype, "disabledAttr", null);
743
+ __decorate([
744
+ HostBinding('attr.data-state')
745
+ ], TngAccordionTrigger.prototype, "dataState", null);
746
+ __decorate([
747
+ HostBinding('attr.data-disabled')
748
+ ], TngAccordionTrigger.prototype, "dataDisabled", null);
749
+ __decorate([
750
+ HostListener('focus')
751
+ ], TngAccordionTrigger.prototype, "onFocus", null);
752
+ __decorate([
753
+ HostListener('click', ['$event'])
754
+ ], TngAccordionTrigger.prototype, "onClick", null);
755
+ __decorate([
756
+ HostListener('keydown', ['$event'])
757
+ ], TngAccordionTrigger.prototype, "onKeydown", null);
758
+ TngAccordionTrigger = __decorate([
759
+ Directive({
760
+ selector: '[tngAccordionTrigger]',
761
+ exportAs: 'tngAccordionTrigger',
762
+ standalone: true,
763
+ })
764
+ ], TngAccordionTrigger);
765
+ export { TngAccordionTrigger };
766
+ let TngAccordionPanel = class TngAccordionPanel {
767
+ item = inject(TngAccordionItem, { optional: true, host: true });
768
+ hostRef = inject(ElementRef);
769
+ fallbackPanelId = this.hostRef.nativeElement.getAttribute('id') ?? createAccordionPanelId();
770
+ dataSlot = 'accordion-panel';
771
+ get idAttr() {
772
+ return this.resolvePanelId();
773
+ }
774
+ role = 'region';
775
+ get ariaLabelledBy() {
776
+ return this.item?.getTriggerId() ?? null;
777
+ }
778
+ get hiddenAttr() {
779
+ if (this.item === null) {
780
+ return '';
781
+ }
782
+ const accordion = this.item.getAccordion();
783
+ if (accordion === null) {
784
+ return '';
785
+ }
786
+ const isVisible = accordion.isItemExpanded(this.item) && accordion.isPanelMounted(this.item);
787
+ return isVisible ? null : '';
788
+ }
789
+ get dataState() {
790
+ if (this.item === null) {
791
+ return 'closed';
792
+ }
793
+ return this.item.getAccordion()?.isItemExpanded(this.item) ? 'open' : 'closed';
794
+ }
795
+ get dataMounted() {
796
+ if (this.item === null) {
797
+ return 'false';
798
+ }
799
+ return this.item.getAccordion()?.isPanelMounted(this.item) ? 'true' : 'false';
800
+ }
801
+ ngOnInit() {
802
+ this.item?.registerPanel(this);
803
+ }
804
+ ngDoCheck() {
805
+ if (this.item?.getAccordion()?.isItemExpanded(this.item)) {
806
+ this.item.markExpandedOnce();
807
+ }
808
+ }
809
+ ngOnDestroy() {
810
+ this.item?.unregisterPanel(this);
811
+ }
812
+ getPanelId() {
813
+ return this.resolvePanelId();
814
+ }
815
+ resolvePanelId() {
816
+ const explicitId = this.hostRef.nativeElement.getAttribute('id');
817
+ if (explicitId !== null && explicitId.length > 0) {
818
+ return explicitId;
819
+ }
820
+ return this.fallbackPanelId;
821
+ }
822
+ };
823
+ __decorate([
824
+ HostBinding('attr.data-slot')
825
+ ], TngAccordionPanel.prototype, "dataSlot", void 0);
826
+ __decorate([
827
+ HostBinding('attr.id')
828
+ ], TngAccordionPanel.prototype, "idAttr", null);
829
+ __decorate([
830
+ HostBinding('attr.role')
831
+ ], TngAccordionPanel.prototype, "role", void 0);
832
+ __decorate([
833
+ HostBinding('attr.aria-labelledby')
834
+ ], TngAccordionPanel.prototype, "ariaLabelledBy", null);
835
+ __decorate([
836
+ HostBinding('attr.hidden')
837
+ ], TngAccordionPanel.prototype, "hiddenAttr", null);
838
+ __decorate([
839
+ HostBinding('attr.data-state')
840
+ ], TngAccordionPanel.prototype, "dataState", null);
841
+ __decorate([
842
+ HostBinding('attr.data-mounted')
843
+ ], TngAccordionPanel.prototype, "dataMounted", null);
844
+ TngAccordionPanel = __decorate([
845
+ Directive({
846
+ selector: '[tngAccordionPanel]',
847
+ exportAs: 'tngAccordionPanel',
848
+ standalone: true,
849
+ })
850
+ ], TngAccordionPanel);
851
+ export { TngAccordionPanel };
852
+ //# sourceMappingURL=tng-accordion.js.map