@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,79 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';
3
+ export function resolveTngSwitchAriaChecked(checked) {
4
+ return checked ? 'true' : 'false';
5
+ }
6
+ export function resolveTngSwitchDataState(checked) {
7
+ return checked ? 'checked' : 'unchecked';
8
+ }
9
+ export function resolveTngSwitchAriaRequired(required) {
10
+ return required ? 'true' : null;
11
+ }
12
+ let TngSwitch = class TngSwitch {
13
+ ariaLabel = input(null);
14
+ checked = input(false, {
15
+ transform: booleanAttribute,
16
+ });
17
+ disabled = input(false, {
18
+ transform: booleanAttribute,
19
+ });
20
+ required = input(false, {
21
+ transform: booleanAttribute,
22
+ });
23
+ get ariaCheckedAttr() {
24
+ return resolveTngSwitchAriaChecked(this.checked());
25
+ }
26
+ get ariaLabelAttr() {
27
+ return this.ariaLabel();
28
+ }
29
+ get ariaRequiredAttr() {
30
+ return resolveTngSwitchAriaRequired(this.required());
31
+ }
32
+ get dataDisabledAttr() {
33
+ return this.disabled() ? '' : null;
34
+ }
35
+ dataSlot = 'switch';
36
+ get dataStateAttr() {
37
+ return resolveTngSwitchDataState(this.checked());
38
+ }
39
+ get disabledAttr() {
40
+ return this.disabled() ? '' : null;
41
+ }
42
+ roleAttr = 'switch';
43
+ typeAttr = 'button';
44
+ };
45
+ __decorate([
46
+ HostBinding('attr.aria-checked')
47
+ ], TngSwitch.prototype, "ariaCheckedAttr", null);
48
+ __decorate([
49
+ HostBinding('attr.aria-label')
50
+ ], TngSwitch.prototype, "ariaLabelAttr", null);
51
+ __decorate([
52
+ HostBinding('attr.aria-required')
53
+ ], TngSwitch.prototype, "ariaRequiredAttr", null);
54
+ __decorate([
55
+ HostBinding('attr.data-disabled')
56
+ ], TngSwitch.prototype, "dataDisabledAttr", null);
57
+ __decorate([
58
+ HostBinding('attr.data-slot')
59
+ ], TngSwitch.prototype, "dataSlot", void 0);
60
+ __decorate([
61
+ HostBinding('attr.data-state')
62
+ ], TngSwitch.prototype, "dataStateAttr", null);
63
+ __decorate([
64
+ HostBinding('attr.disabled')
65
+ ], TngSwitch.prototype, "disabledAttr", null);
66
+ __decorate([
67
+ HostBinding('attr.role')
68
+ ], TngSwitch.prototype, "roleAttr", void 0);
69
+ __decorate([
70
+ HostBinding('attr.type')
71
+ ], TngSwitch.prototype, "typeAttr", void 0);
72
+ TngSwitch = __decorate([
73
+ Directive({
74
+ selector: 'button[tngSwitch]',
75
+ exportAs: 'tngSwitch',
76
+ })
77
+ ], TngSwitch);
78
+ export { TngSwitch };
79
+ //# sourceMappingURL=tng-switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-switch.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/switch/tng-switch.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEhF,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAiB;IAC5D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAMM,IAAM,SAAS,GAAf,MAAM,SAAS;IACJ,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACvC,OAAO,GAAG,KAAK,CAA4B,KAAK,EAAE;QAChE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAGH,IAAc,eAAe;QAC3B,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAGD,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAGD,IAAc,gBAAgB;QAC5B,OAAO,4BAA4B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IAGD,IAAc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGkB,QAAQ,GAAG,QAAiB,CAAC;IAGhD,IAAc,aAAa;QACzB,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAGD,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGkB,QAAQ,GAAG,QAAiB,CAAC;IAG7B,QAAQ,GAAG,QAAiB,CAAC;CACjD,CAAA;AArCC;IADC,WAAW,CAAC,mBAAmB,CAAC;gDAGhC;AAGD;IADC,WAAW,CAAC,iBAAiB,CAAC;8CAG9B;AAGD;IADC,WAAW,CAAC,oBAAoB,CAAC;iDAGjC;AAGD;IADC,WAAW,CAAC,oBAAoB,CAAC;iDAGjC;AAGkB;IADlB,WAAW,CAAC,gBAAgB,CAAC;2CACkB;AAGhD;IADC,WAAW,CAAC,iBAAiB,CAAC;8CAG9B;AAGD;IADC,WAAW,CAAC,eAAe,CAAC;6CAG5B;AAGkB;IADlB,WAAW,CAAC,WAAW,CAAC;2CACuB;AAG7B;IADlB,WAAW,CAAC,WAAW,CAAC;2CACuB;AAjDrC,SAAS;IAJrB,SAAS,CAAC;QACT,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,WAAW;KACtB,CAAC;GACW,SAAS,CAkDrB","sourcesContent":["import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';\n\nexport function resolveTngSwitchAriaChecked(checked: boolean): 'false' | 'true' {\n return checked ? 'true' : 'false';\n}\n\nexport function resolveTngSwitchDataState(checked: boolean): 'checked' | 'unchecked' {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport function resolveTngSwitchAriaRequired(required: boolean): 'true' | null {\n return required ? 'true' : null;\n}\n\n@Directive({\n selector: 'button[tngSwitch]',\n exportAs: 'tngSwitch',\n})\nexport class TngSwitch {\n public readonly ariaLabel = input<string | null>(null);\n public readonly checked = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.aria-checked')\n protected get ariaCheckedAttr(): 'false' | 'true' {\n return resolveTngSwitchAriaChecked(this.checked());\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return this.ariaLabel();\n }\n\n @HostBinding('attr.aria-required')\n protected get ariaRequiredAttr(): 'true' | null {\n return resolveTngSwitchAriaRequired(this.required());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'switch' as const;\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'checked' | 'unchecked' {\n return resolveTngSwitchDataState(this.checked());\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'switch' as const;\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'button' as const;\n}\n"]}
@@ -0,0 +1,23 @@
1
+ type NullableBooleanInput = boolean | null | string | undefined;
2
+ export declare function coerceTngTextareaNullableBoolean(value: NullableBooleanInput): boolean | null;
3
+ export declare function normalizeTngTextareaRows(value: number): number;
4
+ export declare class TngTextarea {
5
+ readonly ariaDescribedBy: import("@angular/core").InputSignal<string | null>;
6
+ readonly ariaInvalid: import("@angular/core").InputSignalWithTransform<boolean | null, NullableBooleanInput>;
7
+ readonly ariaRequired: import("@angular/core").InputSignalWithTransform<boolean | null, NullableBooleanInput>;
8
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
9
+ readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
10
+ readonly required: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
11
+ readonly rows: import("@angular/core").InputSignalWithTransform<number, string | number>;
12
+ protected get ariaDescribedByAttr(): string | null;
13
+ protected get ariaInvalidAttr(): 'false' | 'true' | null;
14
+ protected get ariaRequiredAttr(): 'false' | 'true' | null;
15
+ protected get dataDisabledAttr(): '' | null;
16
+ protected get dataInvalidAttr(): '' | null;
17
+ protected get disabledAttr(): '' | null;
18
+ protected get readonlyAttr(): '' | null;
19
+ protected get requiredAttr(): '' | null;
20
+ protected get rowsAttr(): number;
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=tng-textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-textarea.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":"AAEA,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhE,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAc5F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D;AAmBD,qBAIa,WAAW;IACtB,SAAgB,eAAe,qDAA8B;IAC7D,SAAgB,WAAW,yFAExB;IACH,SAAgB,YAAY,yFAEzB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,IAAI,4EAEjB;IAGH,SAAS,KAAK,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEjD;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,GAAG,IAAI,CAEvD;IAGD,SAAS,KAAK,gBAAgB,IAAI,OAAO,GAAG,MAAM,GAAG,IAAI,CAMxD;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;CACF"}
@@ -0,0 +1,119 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, HostBinding, booleanAttribute, input, numberAttribute } from '@angular/core';
3
+ export function coerceTngTextareaNullableBoolean(value) {
4
+ if (value === undefined || value === null) {
5
+ return null;
6
+ }
7
+ if (value === '' || value === true || value === 'true') {
8
+ return true;
9
+ }
10
+ if (value === false || value === 'false') {
11
+ return false;
12
+ }
13
+ return null;
14
+ }
15
+ export function normalizeTngTextareaRows(value) {
16
+ if (!Number.isFinite(value)) {
17
+ return 3;
18
+ }
19
+ return Math.max(1, Math.trunc(value));
20
+ }
21
+ function normalizeStringValue(value) {
22
+ if (value === undefined || value === null) {
23
+ return null;
24
+ }
25
+ const normalized = value.trim();
26
+ return normalized.length > 0 ? normalized : null;
27
+ }
28
+ function toAriaBoolean(value) {
29
+ if (value === null) {
30
+ return null;
31
+ }
32
+ return value ? 'true' : 'false';
33
+ }
34
+ let TngTextarea = class TngTextarea {
35
+ ariaDescribedBy = input(null);
36
+ ariaInvalid = input(null, {
37
+ transform: coerceTngTextareaNullableBoolean,
38
+ });
39
+ ariaRequired = input(null, {
40
+ transform: coerceTngTextareaNullableBoolean,
41
+ });
42
+ disabled = input(false, {
43
+ transform: booleanAttribute,
44
+ });
45
+ readonly = input(false, {
46
+ transform: booleanAttribute,
47
+ });
48
+ required = input(false, {
49
+ transform: booleanAttribute,
50
+ });
51
+ rows = input(3, {
52
+ transform: (value) => normalizeTngTextareaRows(numberAttribute(value)),
53
+ });
54
+ get ariaDescribedByAttr() {
55
+ return normalizeStringValue(this.ariaDescribedBy());
56
+ }
57
+ get ariaInvalidAttr() {
58
+ return toAriaBoolean(this.ariaInvalid());
59
+ }
60
+ get ariaRequiredAttr() {
61
+ if (this.required()) {
62
+ return 'true';
63
+ }
64
+ return toAriaBoolean(this.ariaRequired());
65
+ }
66
+ get dataDisabledAttr() {
67
+ return this.disabled() ? '' : null;
68
+ }
69
+ get dataInvalidAttr() {
70
+ return this.ariaInvalid() === true ? '' : null;
71
+ }
72
+ get disabledAttr() {
73
+ return this.disabled() ? '' : null;
74
+ }
75
+ get readonlyAttr() {
76
+ return this.readonly() ? '' : null;
77
+ }
78
+ get requiredAttr() {
79
+ return this.required() ? '' : null;
80
+ }
81
+ get rowsAttr() {
82
+ return this.rows();
83
+ }
84
+ };
85
+ __decorate([
86
+ HostBinding('attr.aria-describedby')
87
+ ], TngTextarea.prototype, "ariaDescribedByAttr", null);
88
+ __decorate([
89
+ HostBinding('attr.aria-invalid')
90
+ ], TngTextarea.prototype, "ariaInvalidAttr", null);
91
+ __decorate([
92
+ HostBinding('attr.aria-required')
93
+ ], TngTextarea.prototype, "ariaRequiredAttr", null);
94
+ __decorate([
95
+ HostBinding('attr.data-disabled')
96
+ ], TngTextarea.prototype, "dataDisabledAttr", null);
97
+ __decorate([
98
+ HostBinding('attr.data-invalid')
99
+ ], TngTextarea.prototype, "dataInvalidAttr", null);
100
+ __decorate([
101
+ HostBinding('attr.disabled')
102
+ ], TngTextarea.prototype, "disabledAttr", null);
103
+ __decorate([
104
+ HostBinding('attr.readonly')
105
+ ], TngTextarea.prototype, "readonlyAttr", null);
106
+ __decorate([
107
+ HostBinding('attr.required')
108
+ ], TngTextarea.prototype, "requiredAttr", null);
109
+ __decorate([
110
+ HostBinding('attr.rows')
111
+ ], TngTextarea.prototype, "rowsAttr", null);
112
+ TngTextarea = __decorate([
113
+ Directive({
114
+ selector: 'textarea[tngTextarea]',
115
+ exportAs: 'tngTextarea',
116
+ })
117
+ ], TngTextarea);
118
+ export { TngTextarea };
119
+ //# sourceMappingURL=tng-textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-textarea.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, HostBinding, booleanAttribute, input, numberAttribute } from '@angular/core';\n\ntype NullableBooleanInput = boolean | null | string | undefined;\n\nexport function coerceTngTextareaNullableBoolean(value: NullableBooleanInput): boolean | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return null;\n}\n\nexport function normalizeTngTextareaRows(value: number): number {\n if (!Number.isFinite(value)) {\n return 3;\n }\n\n return Math.max(1, Math.trunc(value));\n}\n\nfunction normalizeStringValue(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction toAriaBoolean(value: boolean | null): 'false' | 'true' | null {\n if (value === null) {\n return null;\n }\n\n return value ? 'true' : 'false';\n}\n\n@Directive({\n selector: 'textarea[tngTextarea]',\n exportAs: 'tngTextarea',\n})\nexport class TngTextarea {\n public readonly ariaDescribedBy = input<string | null>(null);\n public readonly ariaInvalid = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngTextareaNullableBoolean,\n });\n public readonly ariaRequired = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngTextareaNullableBoolean,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly readonly = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly rows = input<number, number | string>(3, {\n transform: (value: number | string): number => normalizeTngTextareaRows(numberAttribute(value)),\n });\n\n @HostBinding('attr.aria-describedby')\n protected get ariaDescribedByAttr(): string | null {\n return normalizeStringValue(this.ariaDescribedBy());\n }\n\n @HostBinding('attr.aria-invalid')\n protected get ariaInvalidAttr(): 'false' | 'true' | null {\n return toAriaBoolean(this.ariaInvalid());\n }\n\n @HostBinding('attr.aria-required')\n protected get ariaRequiredAttr(): 'false' | 'true' | null {\n if (this.required()) {\n return 'true';\n }\n\n return toAriaBoolean(this.ariaRequired());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-invalid')\n protected get dataInvalidAttr(): '' | null {\n return this.ariaInvalid() === true ? '' : null;\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.readonly')\n protected get readonlyAttr(): '' | null {\n return this.readonly() ? '' : null;\n }\n\n @HostBinding('attr.required')\n protected get requiredAttr(): '' | null {\n return this.required() ? '' : null;\n }\n\n @HostBinding('attr.rows')\n protected get rowsAttr(): number {\n return this.rows();\n }\n}\n"]}
@@ -0,0 +1,44 @@
1
+ import { OnInit } from '@angular/core';
2
+ type NullableBooleanInput = '' | 'false' | 'true' | boolean | null | undefined;
3
+ export declare function coerceTngToggleNullableBoolean(value: NullableBooleanInput): boolean | null;
4
+ export declare function resolveTngToggleAriaPressed(pressed: boolean): 'false' | 'true';
5
+ export declare function resolveTngToggleDataState(pressed: boolean): 'off' | 'on';
6
+ export declare class TngToggle implements OnInit {
7
+ private readonly elementRef;
8
+ private readonly group;
9
+ private readonly internalPressed;
10
+ private suppressNextClickFromKeyboard;
11
+ private focused;
12
+ private focusVisible;
13
+ readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
14
+ readonly ariaLabelledby: import("@angular/core").InputSignal<string | null>;
15
+ readonly ariaDescribedBy: import("@angular/core").InputSignal<string | null>;
16
+ readonly value: import("@angular/core").InputSignal<string | null>;
17
+ readonly pressed: import("@angular/core").InputSignalWithTransform<boolean | null, NullableBooleanInput>;
18
+ readonly defaultPressed: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
19
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
20
+ readonly pressedChange: import("@angular/core").OutputEmitterRef<boolean>;
21
+ private readonly resolvedDisabled;
22
+ private readonly resolvedPressed;
23
+ ngOnInit(): void;
24
+ protected get ariaDescribedByAttr(): string | null;
25
+ protected get ariaDisabledAttr(): 'true' | null;
26
+ protected get ariaLabelAttr(): string | null;
27
+ protected get ariaLabelledbyAttr(): string | null;
28
+ protected get ariaPressedAttr(): 'false' | 'true';
29
+ protected get dataDisabledAttr(): '' | null;
30
+ protected get dataFocusedAttr(): '' | null;
31
+ protected get dataFocusVisibleAttr(): '' | null;
32
+ protected readonly dataSlot: "toggle";
33
+ protected get dataStateAttr(): 'off' | 'on';
34
+ protected get disabledAttr(): '' | null;
35
+ protected readonly typeAttr: "button";
36
+ onBlur(): void;
37
+ onClick(event: MouseEvent): void;
38
+ onFocus(): void;
39
+ onKeydown(event: KeyboardEvent): void;
40
+ private groupItemValue;
41
+ private toggleFromInteraction;
42
+ }
43
+ export {};
44
+ //# sourceMappingURL=tng-toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-toggle.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/toggle/tng-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,MAAM,EAOP,MAAM,eAAe,CAAC;AAGvB,KAAK,oBAAoB,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAW/E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAc1F;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAExE;AAED,qBAIa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqD;IAChF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,6BAA6B,CAAS;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAE7B,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,eAAe,qDAA8B;IAC7D,SAAgB,KAAK,qDAA2D;IAEhF,SAAgB,OAAO,yFAEpB;IACH,SAAgB,cAAc,8EAE3B;IACH,SAAgB,QAAQ,8EAErB;IAEH,SAAgB,aAAa,oDAAqB;IAElD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE9B;IAEH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAY7B;IAEI,QAAQ,IAAI,IAAI;IAKvB,SAAS,KAAK,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEjD;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEhD;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,CAEhD;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,oBAAoB,IAAI,EAAE,GAAG,IAAI,CAE9C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGhD,SAAS,KAAK,aAAa,IAAI,KAAK,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAGzC,MAAM,IAAI,IAAI;IAMd,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAiBhC,OAAO,IAAI,IAAI;IAMf,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAc5C,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,qBAAqB;CAe9B"}
@@ -0,0 +1,203 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, ElementRef, HostBinding, HostListener, booleanAttribute, computed, inject, input, output, signal, } from '@angular/core';
3
+ import { TngToggleGroup } from '../toggle-group/tng-toggle-group';
4
+ function normalizeStringValue(value) {
5
+ if (value === undefined || value === null) {
6
+ return null;
7
+ }
8
+ const normalized = value.trim();
9
+ return normalized.length > 0 ? normalized : null;
10
+ }
11
+ export function coerceTngToggleNullableBoolean(value) {
12
+ if (value === undefined || value === null) {
13
+ return null;
14
+ }
15
+ if (value === '' || value === true || value === 'true') {
16
+ return true;
17
+ }
18
+ if (value === false || value === 'false') {
19
+ return false;
20
+ }
21
+ return null;
22
+ }
23
+ export function resolveTngToggleAriaPressed(pressed) {
24
+ return pressed ? 'true' : 'false';
25
+ }
26
+ export function resolveTngToggleDataState(pressed) {
27
+ return pressed ? 'on' : 'off';
28
+ }
29
+ let TngToggle = class TngToggle {
30
+ elementRef = inject(ElementRef);
31
+ group = inject(TngToggleGroup, { optional: true });
32
+ internalPressed = signal(false);
33
+ suppressNextClickFromKeyboard = false;
34
+ focused = false;
35
+ focusVisible = false;
36
+ ariaLabel = input(null);
37
+ ariaLabelledby = input(null);
38
+ ariaDescribedBy = input(null);
39
+ value = input(null, { alias: 'tngToggleValue' });
40
+ pressed = input(null, {
41
+ transform: coerceTngToggleNullableBoolean,
42
+ });
43
+ defaultPressed = input(false, {
44
+ transform: booleanAttribute,
45
+ });
46
+ disabled = input(false, {
47
+ transform: booleanAttribute,
48
+ });
49
+ pressedChange = output();
50
+ resolvedDisabled = computed(() => {
51
+ return this.disabled() || this.group?.isGroupDisabled() === true;
52
+ });
53
+ resolvedPressed = computed(() => {
54
+ const groupItemValue = this.groupItemValue();
55
+ if (groupItemValue !== null && this.group !== null) {
56
+ return this.group.isItemSelected(groupItemValue);
57
+ }
58
+ const controlledPressed = this.pressed();
59
+ if (controlledPressed !== null) {
60
+ return controlledPressed;
61
+ }
62
+ return this.internalPressed();
63
+ });
64
+ ngOnInit() {
65
+ this.internalPressed.set(this.defaultPressed());
66
+ }
67
+ get ariaDescribedByAttr() {
68
+ return normalizeStringValue(this.ariaDescribedBy());
69
+ }
70
+ get ariaDisabledAttr() {
71
+ return this.resolvedDisabled() ? 'true' : null;
72
+ }
73
+ get ariaLabelAttr() {
74
+ return normalizeStringValue(this.ariaLabel());
75
+ }
76
+ get ariaLabelledbyAttr() {
77
+ return normalizeStringValue(this.ariaLabelledby());
78
+ }
79
+ get ariaPressedAttr() {
80
+ return resolveTngToggleAriaPressed(this.resolvedPressed());
81
+ }
82
+ get dataDisabledAttr() {
83
+ return this.resolvedDisabled() ? '' : null;
84
+ }
85
+ get dataFocusedAttr() {
86
+ return this.focused ? '' : null;
87
+ }
88
+ get dataFocusVisibleAttr() {
89
+ return this.focusVisible ? '' : null;
90
+ }
91
+ dataSlot = 'toggle';
92
+ get dataStateAttr() {
93
+ return resolveTngToggleDataState(this.resolvedPressed());
94
+ }
95
+ get disabledAttr() {
96
+ return this.resolvedDisabled() ? '' : null;
97
+ }
98
+ typeAttr = 'button';
99
+ onBlur() {
100
+ this.focused = false;
101
+ this.focusVisible = false;
102
+ }
103
+ onClick(event) {
104
+ if (this.resolvedDisabled()) {
105
+ event.preventDefault();
106
+ event.stopPropagation();
107
+ return;
108
+ }
109
+ if (this.suppressNextClickFromKeyboard && event.detail === 0) {
110
+ this.suppressNextClickFromKeyboard = false;
111
+ return;
112
+ }
113
+ this.suppressNextClickFromKeyboard = false;
114
+ this.toggleFromInteraction();
115
+ }
116
+ onFocus() {
117
+ this.focused = true;
118
+ this.focusVisible = this.elementRef.nativeElement.matches(':focus-visible');
119
+ }
120
+ onKeydown(event) {
121
+ if (this.resolvedDisabled()) {
122
+ return;
123
+ }
124
+ if (event.key !== ' ' && event.key !== 'Enter') {
125
+ return;
126
+ }
127
+ event.preventDefault();
128
+ this.suppressNextClickFromKeyboard = true;
129
+ this.toggleFromInteraction();
130
+ }
131
+ groupItemValue() {
132
+ return normalizeStringValue(this.value());
133
+ }
134
+ toggleFromInteraction() {
135
+ const groupItemValue = this.groupItemValue();
136
+ if (groupItemValue !== null && this.group !== null) {
137
+ const nextValue = this.group.toggleItem(groupItemValue);
138
+ this.pressedChange.emit(nextValue);
139
+ return;
140
+ }
141
+ const nextValue = !this.resolvedPressed();
142
+ if (this.pressed() === null) {
143
+ this.internalPressed.set(nextValue);
144
+ }
145
+ this.pressedChange.emit(nextValue);
146
+ }
147
+ };
148
+ __decorate([
149
+ HostBinding('attr.aria-describedby')
150
+ ], TngToggle.prototype, "ariaDescribedByAttr", null);
151
+ __decorate([
152
+ HostBinding('attr.aria-disabled')
153
+ ], TngToggle.prototype, "ariaDisabledAttr", null);
154
+ __decorate([
155
+ HostBinding('attr.aria-label')
156
+ ], TngToggle.prototype, "ariaLabelAttr", null);
157
+ __decorate([
158
+ HostBinding('attr.aria-labelledby')
159
+ ], TngToggle.prototype, "ariaLabelledbyAttr", null);
160
+ __decorate([
161
+ HostBinding('attr.aria-pressed')
162
+ ], TngToggle.prototype, "ariaPressedAttr", null);
163
+ __decorate([
164
+ HostBinding('attr.data-disabled')
165
+ ], TngToggle.prototype, "dataDisabledAttr", null);
166
+ __decorate([
167
+ HostBinding('attr.data-focused')
168
+ ], TngToggle.prototype, "dataFocusedAttr", null);
169
+ __decorate([
170
+ HostBinding('attr.data-focus-visible')
171
+ ], TngToggle.prototype, "dataFocusVisibleAttr", null);
172
+ __decorate([
173
+ HostBinding('attr.data-slot')
174
+ ], TngToggle.prototype, "dataSlot", void 0);
175
+ __decorate([
176
+ HostBinding('attr.data-state')
177
+ ], TngToggle.prototype, "dataStateAttr", null);
178
+ __decorate([
179
+ HostBinding('attr.disabled')
180
+ ], TngToggle.prototype, "disabledAttr", null);
181
+ __decorate([
182
+ HostBinding('attr.type')
183
+ ], TngToggle.prototype, "typeAttr", void 0);
184
+ __decorate([
185
+ HostListener('blur')
186
+ ], TngToggle.prototype, "onBlur", null);
187
+ __decorate([
188
+ HostListener('click', ['$event'])
189
+ ], TngToggle.prototype, "onClick", null);
190
+ __decorate([
191
+ HostListener('focus')
192
+ ], TngToggle.prototype, "onFocus", null);
193
+ __decorate([
194
+ HostListener('keydown', ['$event'])
195
+ ], TngToggle.prototype, "onKeydown", null);
196
+ TngToggle = __decorate([
197
+ Directive({
198
+ selector: 'button[tngToggle]',
199
+ exportAs: 'tngToggle',
200
+ })
201
+ ], TngToggle);
202
+ export { TngToggle };
203
+ //# sourceMappingURL=tng-toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-toggle.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/toggle/tng-toggle.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n OnInit,\n booleanAttribute,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { TngToggleGroup } from '../toggle-group/tng-toggle-group';\n\ntype NullableBooleanInput = '' | 'false' | 'true' | boolean | null | undefined;\n\nfunction normalizeStringValue(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function coerceTngToggleNullableBoolean(value: NullableBooleanInput): boolean | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return null;\n}\n\nexport function resolveTngToggleAriaPressed(pressed: boolean): 'false' | 'true' {\n return pressed ? 'true' : 'false';\n}\n\nexport function resolveTngToggleDataState(pressed: boolean): 'off' | 'on' {\n return pressed ? 'on' : 'off';\n}\n\n@Directive({\n selector: 'button[tngToggle]',\n exportAs: 'tngToggle',\n})\nexport class TngToggle implements OnInit {\n private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n private readonly group = inject(TngToggleGroup, { optional: true });\n private readonly internalPressed = signal(false);\n private suppressNextClickFromKeyboard = false;\n private focused = false;\n private focusVisible = false;\n\n public readonly ariaLabel = input<string | null>(null);\n public readonly ariaLabelledby = input<string | null>(null);\n public readonly ariaDescribedBy = input<string | null>(null);\n public readonly value = input<string | null>(null, { alias: 'tngToggleValue' });\n\n public readonly pressed = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngToggleNullableBoolean,\n });\n public readonly defaultPressed = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n public readonly pressedChange = output<boolean>();\n\n private readonly resolvedDisabled = computed(() => {\n return this.disabled() || this.group?.isGroupDisabled() === true;\n });\n\n private readonly resolvedPressed = computed(() => {\n const groupItemValue = this.groupItemValue();\n if (groupItemValue !== null && this.group !== null) {\n return this.group.isItemSelected(groupItemValue);\n }\n\n const controlledPressed = this.pressed();\n if (controlledPressed !== null) {\n return controlledPressed;\n }\n\n return this.internalPressed();\n });\n\n public ngOnInit(): void {\n this.internalPressed.set(this.defaultPressed());\n }\n\n @HostBinding('attr.aria-describedby')\n protected get ariaDescribedByAttr(): string | null {\n return normalizeStringValue(this.ariaDescribedBy());\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.resolvedDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return normalizeStringValue(this.ariaLabel());\n }\n\n @HostBinding('attr.aria-labelledby')\n protected get ariaLabelledbyAttr(): string | null {\n return normalizeStringValue(this.ariaLabelledby());\n }\n\n @HostBinding('attr.aria-pressed')\n protected get ariaPressedAttr(): 'false' | 'true' {\n return resolveTngToggleAriaPressed(this.resolvedPressed());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.resolvedDisabled() ? '' : null;\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): '' | null {\n return this.focused ? '' : null;\n }\n\n @HostBinding('attr.data-focus-visible')\n protected get dataFocusVisibleAttr(): '' | null {\n return this.focusVisible ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'toggle' as const;\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'off' | 'on' {\n return resolveTngToggleDataState(this.resolvedPressed());\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.resolvedDisabled() ? '' : null;\n }\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'button' as const;\n\n @HostListener('blur')\n public onBlur(): void {\n this.focused = false;\n this.focusVisible = false;\n }\n\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n if (this.resolvedDisabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (this.suppressNextClickFromKeyboard && event.detail === 0) {\n this.suppressNextClickFromKeyboard = false;\n return;\n }\n\n this.suppressNextClickFromKeyboard = false;\n this.toggleFromInteraction();\n }\n\n @HostListener('focus')\n public onFocus(): void {\n this.focused = true;\n this.focusVisible = this.elementRef.nativeElement.matches(':focus-visible');\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydown(event: KeyboardEvent): void {\n if (this.resolvedDisabled()) {\n return;\n }\n\n if (event.key !== ' ' && event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n this.suppressNextClickFromKeyboard = true;\n this.toggleFromInteraction();\n }\n\n private groupItemValue(): string | null {\n return normalizeStringValue(this.value());\n }\n\n private toggleFromInteraction(): void {\n const groupItemValue = this.groupItemValue();\n if (groupItemValue !== null && this.group !== null) {\n const nextValue = this.group.toggleItem(groupItemValue);\n this.pressedChange.emit(nextValue);\n return;\n }\n\n const nextValue = !this.resolvedPressed();\n if (this.pressed() === null) {\n this.internalPressed.set(nextValue);\n }\n\n this.pressedChange.emit(nextValue);\n }\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import { OnInit } from '@angular/core';
2
+ type TngToggleGroupSelectionMode = 'multiple' | 'single';
3
+ export declare class TngToggleGroup implements OnInit {
4
+ private readonly internalSingleValue;
5
+ private readonly internalMultipleValues;
6
+ readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
7
+ readonly ariaLabelledby: import("@angular/core").InputSignal<string | null>;
8
+ readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
9
+ readonly selectionMode: import("@angular/core").InputSignalWithTransform<TngToggleGroupSelectionMode, unknown>;
10
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
11
+ readonly value: import("@angular/core").InputSignal<string | null | undefined>;
12
+ readonly values: import("@angular/core").InputSignal<readonly string[] | undefined>;
13
+ readonly defaultValue: import("@angular/core").InputSignal<string | null>;
14
+ readonly defaultValues: import("@angular/core").InputSignal<readonly string[]>;
15
+ readonly valueChange: import("@angular/core").OutputEmitterRef<string | null>;
16
+ readonly valuesChange: import("@angular/core").OutputEmitterRef<readonly string[]>;
17
+ ngOnInit(): void;
18
+ isGroupDisabled(): boolean;
19
+ isItemSelected(itemValue: string): boolean;
20
+ toggleItem(itemValue: string): boolean;
21
+ private isSingleControlled;
22
+ private isMultipleControlled;
23
+ private resolveSingleValue;
24
+ private resolveMultipleValues;
25
+ protected get ariaLabelAttr(): string | null;
26
+ protected get ariaLabelledbyAttr(): string | null;
27
+ protected get ariaDisabledAttr(): 'true' | null;
28
+ protected get dataDisabledAttr(): '' | null;
29
+ protected get dataOrientationAttr(): 'horizontal' | 'vertical';
30
+ protected get dataSelectionModeAttr(): TngToggleGroupSelectionMode;
31
+ protected readonly dataSlot: "toggle-group";
32
+ protected readonly roleAttr: "group";
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=tng-toggle-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-toggle-group.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/toggle-group/tng-toggle-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAKP,MAAM,eAAe,CAAC;AAEvB,KAAK,2BAA2B,GAAG,UAAU,GAAG,QAAQ,CAAC;AAiCzD,qBAIa,cAAe,YAAW,MAAM;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+B;IACnE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IAExE,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,WAAW,iEAAkD;IAC7E,SAAgB,aAAa,yFAE1B;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,iEAA+C;IACpE,SAAgB,MAAM,qEAAmD;IACzE,SAAgB,YAAY,qDAA8B;IAC1D,SAAgB,aAAa,yDAAgC;IAE7D,SAAgB,WAAW,0DAA2B;IACtD,SAAgB,YAAY,8DAA+B;IAEpD,QAAQ,IAAI,IAAI;IAKhB,eAAe,IAAI,OAAO;IAI1B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQ1C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAqC7C,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,qBAAqB;IAS7B,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEhD;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,mBAAmB,IAAI,YAAY,GAAG,UAAU,CAE7D;IAGD,SAAS,KAAK,qBAAqB,IAAI,2BAA2B,CAEjE;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;IAGtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;CAChD"}