@tailng-ui/components 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 (266) hide show
  1. package/README.md +26 -0
  2. package/package.json +14 -0
  3. package/src/index.d.ts +7 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +7 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/feedback/empty/tng-empty.component.d.ts +14 -0
  8. package/src/lib/feedback/empty/tng-empty.component.d.ts.map +1 -0
  9. package/src/lib/feedback/empty/tng-empty.component.js +60 -0
  10. package/src/lib/feedback/empty/tng-empty.component.js.map +1 -0
  11. package/src/lib/feedback/index.d.ts +11 -0
  12. package/src/lib/feedback/index.d.ts.map +1 -0
  13. package/src/lib/feedback/index.js +11 -0
  14. package/src/lib/feedback/index.js.map +1 -0
  15. package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts +10 -0
  16. package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts.map +1 -0
  17. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js +37 -0
  18. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js.map +1 -0
  19. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts +14 -0
  20. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts.map +1 -0
  21. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js +55 -0
  22. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js.map +1 -0
  23. package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts +10 -0
  24. package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts.map +1 -0
  25. package/src/lib/feedback/skeleton/tng-skeleton.component.js +33 -0
  26. package/src/lib/feedback/skeleton/tng-skeleton.component.js.map +1 -0
  27. package/src/lib/feedback/toast/tng-toast.component.d.ts +40 -0
  28. package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -0
  29. package/src/lib/feedback/toast/tng-toast.component.js +111 -0
  30. package/src/lib/feedback/toast/tng-toast.component.js.map +1 -0
  31. package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts +26 -0
  32. package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts.map +1 -0
  33. package/src/lib/form/autocomplete/tng-autocomplete.component.js +104 -0
  34. package/src/lib/form/autocomplete/tng-autocomplete.component.js.map +1 -0
  35. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts +44 -0
  36. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts.map +1 -0
  37. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js +123 -0
  38. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js.map +1 -0
  39. package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts +14 -0
  40. package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts.map +1 -0
  41. package/src/lib/form/button-toggle/tng-button-toggle.component.js +65 -0
  42. package/src/lib/form/button-toggle/tng-button-toggle.component.js.map +1 -0
  43. package/src/lib/form/checkbox/tng-checkbox.component.d.ts +38 -0
  44. package/src/lib/form/checkbox/tng-checkbox.component.d.ts.map +1 -0
  45. package/src/lib/form/checkbox/tng-checkbox.component.js +138 -0
  46. package/src/lib/form/checkbox/tng-checkbox.component.js.map +1 -0
  47. package/src/lib/form/chips/tng-chips.component.d.ts +4 -0
  48. package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -0
  49. package/src/lib/form/chips/tng-chips.component.js +16 -0
  50. package/src/lib/form/chips/tng-chips.component.js.map +1 -0
  51. package/src/lib/form/combobox/tng-combobox.component.d.ts +4 -0
  52. package/src/lib/form/combobox/tng-combobox.component.d.ts.map +1 -0
  53. package/src/lib/form/combobox/tng-combobox.component.js +16 -0
  54. package/src/lib/form/combobox/tng-combobox.component.js.map +1 -0
  55. package/src/lib/form/index.d.ts +37 -0
  56. package/src/lib/form/index.d.ts.map +1 -0
  57. package/src/lib/form/index.js +37 -0
  58. package/src/lib/form/index.js.map +1 -0
  59. package/src/lib/form/input/tng-input.component.d.ts +16 -0
  60. package/src/lib/form/input/tng-input.component.d.ts.map +1 -0
  61. package/src/lib/form/input/tng-input.component.js +52 -0
  62. package/src/lib/form/input/tng-input.component.js.map +1 -0
  63. package/src/lib/form/input-otp/tng-input-otp.component.d.ts +13 -0
  64. package/src/lib/form/input-otp/tng-input-otp.component.d.ts.map +1 -0
  65. package/src/lib/form/input-otp/tng-input-otp.component.js +138 -0
  66. package/src/lib/form/input-otp/tng-input-otp.component.js.map +1 -0
  67. package/src/lib/form/label/tng-label.component.d.ts +8 -0
  68. package/src/lib/form/label/tng-label.component.d.ts.map +1 -0
  69. package/src/lib/form/label/tng-label.component.js +29 -0
  70. package/src/lib/form/label/tng-label.component.js.map +1 -0
  71. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts +55 -0
  72. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts.map +1 -0
  73. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js +126 -0
  74. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js.map +1 -0
  75. package/src/lib/form/multiselect/tng-multiselect.component.d.ts +49 -0
  76. package/src/lib/form/multiselect/tng-multiselect.component.d.ts.map +1 -0
  77. package/src/lib/form/multiselect/tng-multiselect.component.js +112 -0
  78. package/src/lib/form/multiselect/tng-multiselect.component.js.map +1 -0
  79. package/src/lib/form/radio/tng-radio.component.d.ts +12 -0
  80. package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -0
  81. package/src/lib/form/radio/tng-radio.component.js +45 -0
  82. package/src/lib/form/radio/tng-radio.component.js.map +1 -0
  83. package/src/lib/form/select/tng-select.component.d.ts +40 -0
  84. package/src/lib/form/select/tng-select.component.d.ts.map +1 -0
  85. package/src/lib/form/select/tng-select.component.js +98 -0
  86. package/src/lib/form/select/tng-select.component.js.map +1 -0
  87. package/src/lib/form/select/tng-select.slots.d.ts +25 -0
  88. package/src/lib/form/select/tng-select.slots.d.ts.map +1 -0
  89. package/src/lib/form/select/tng-select.slots.js +23 -0
  90. package/src/lib/form/select/tng-select.slots.js.map +1 -0
  91. package/src/lib/form/slider/tng-slider.component.d.ts +11 -0
  92. package/src/lib/form/slider/tng-slider.component.d.ts.map +1 -0
  93. package/src/lib/form/slider/tng-slider.component.js +48 -0
  94. package/src/lib/form/slider/tng-slider.component.js.map +1 -0
  95. package/src/lib/form/switch/tng-switch.component.d.ts +18 -0
  96. package/src/lib/form/switch/tng-switch.component.d.ts.map +1 -0
  97. package/src/lib/form/switch/tng-switch.component.js +57 -0
  98. package/src/lib/form/switch/tng-switch.component.js.map +1 -0
  99. package/src/lib/form/textarea/tng-textarea.component.d.ts +17 -0
  100. package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -0
  101. package/src/lib/form/textarea/tng-textarea.component.js +54 -0
  102. package/src/lib/form/textarea/tng-textarea.component.js.map +1 -0
  103. package/src/lib/form/toggle/tng-toggle.component.d.ts +39 -0
  104. package/src/lib/form/toggle/tng-toggle.component.d.ts.map +1 -0
  105. package/src/lib/form/toggle/tng-toggle.component.js +152 -0
  106. package/src/lib/form/toggle/tng-toggle.component.js.map +1 -0
  107. package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts +3 -0
  108. package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts.map +1 -0
  109. package/src/lib/form/toggle-group/tng-toggle-group.component.js +34 -0
  110. package/src/lib/form/toggle-group/tng-toggle-group.component.js.map +1 -0
  111. package/src/lib/layout/accordion/tng-accordion.component.d.ts +11 -0
  112. package/src/lib/layout/accordion/tng-accordion.component.d.ts.map +1 -0
  113. package/src/lib/layout/accordion/tng-accordion.component.js +158 -0
  114. package/src/lib/layout/accordion/tng-accordion.component.js.map +1 -0
  115. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts +4 -0
  116. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts.map +1 -0
  117. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js +16 -0
  118. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js.map +1 -0
  119. package/src/lib/layout/card/tng-card.component.d.ts +42 -0
  120. package/src/lib/layout/card/tng-card.component.d.ts.map +1 -0
  121. package/src/lib/layout/card/tng-card.component.js +186 -0
  122. package/src/lib/layout/card/tng-card.component.js.map +1 -0
  123. package/src/lib/layout/collapsible/tng-collapsible.component.d.ts +11 -0
  124. package/src/lib/layout/collapsible/tng-collapsible.component.d.ts.map +1 -0
  125. package/src/lib/layout/collapsible/tng-collapsible.component.js +40 -0
  126. package/src/lib/layout/collapsible/tng-collapsible.component.js.map +1 -0
  127. package/src/lib/layout/drawer/tng-drawer.component.d.ts +12 -0
  128. package/src/lib/layout/drawer/tng-drawer.component.d.ts.map +1 -0
  129. package/src/lib/layout/drawer/tng-drawer.component.js +77 -0
  130. package/src/lib/layout/drawer/tng-drawer.component.js.map +1 -0
  131. package/src/lib/layout/grid/tng-grid.component.d.ts +4 -0
  132. package/src/lib/layout/grid/tng-grid.component.d.ts.map +1 -0
  133. package/src/lib/layout/grid/tng-grid.component.js +16 -0
  134. package/src/lib/layout/grid/tng-grid.component.js.map +1 -0
  135. package/src/lib/layout/index.d.ts +16 -0
  136. package/src/lib/layout/index.d.ts.map +1 -0
  137. package/src/lib/layout/index.js +16 -0
  138. package/src/lib/layout/index.js.map +1 -0
  139. package/src/lib/layout/separator/tng-separator.component.d.ts +6 -0
  140. package/src/lib/layout/separator/tng-separator.component.d.ts.map +1 -0
  141. package/src/lib/layout/separator/tng-separator.component.js +19 -0
  142. package/src/lib/layout/separator/tng-separator.component.js.map +1 -0
  143. package/src/lib/layout/stepper/tng-stepper.component.d.ts +4 -0
  144. package/src/lib/layout/stepper/tng-stepper.component.d.ts.map +1 -0
  145. package/src/lib/layout/stepper/tng-stepper.component.js +16 -0
  146. package/src/lib/layout/stepper/tng-stepper.component.js.map +1 -0
  147. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts +28 -0
  148. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -0
  149. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +86 -0
  150. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -0
  151. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts +10 -0
  152. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts.map +1 -0
  153. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js +29 -0
  154. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js.map +1 -0
  155. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts +3 -0
  156. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts.map +1 -0
  157. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js +15 -0
  158. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js.map +1 -0
  159. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts +6 -0
  160. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts.map +1 -0
  161. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js +16 -0
  162. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js.map +1 -0
  163. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts +6 -0
  164. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts.map +1 -0
  165. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js +18 -0
  166. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js.map +1 -0
  167. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts +23 -0
  168. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts.map +1 -0
  169. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js +155 -0
  170. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js.map +1 -0
  171. package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts +4 -0
  172. package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts.map +1 -0
  173. package/src/lib/navigation/context-menu/tng-context-menu.component.js +16 -0
  174. package/src/lib/navigation/context-menu/tng-context-menu.component.js.map +1 -0
  175. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts +10 -0
  176. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts.map +1 -0
  177. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js +54 -0
  178. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js.map +1 -0
  179. package/src/lib/navigation/index.d.ts +27 -0
  180. package/src/lib/navigation/index.d.ts.map +1 -0
  181. package/src/lib/navigation/index.js +27 -0
  182. package/src/lib/navigation/index.js.map +1 -0
  183. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts +15 -0
  184. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts.map +1 -0
  185. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js +85 -0
  186. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js.map +1 -0
  187. package/src/lib/navigation/menu/tng-menu.component.d.ts +13 -0
  188. package/src/lib/navigation/menu/tng-menu.component.d.ts.map +1 -0
  189. package/src/lib/navigation/menu/tng-menu.component.js +92 -0
  190. package/src/lib/navigation/menu/tng-menu.component.js.map +1 -0
  191. package/src/lib/navigation/menubar/tng-menubar.component.d.ts +5 -0
  192. package/src/lib/navigation/menubar/tng-menubar.component.d.ts.map +1 -0
  193. package/src/lib/navigation/menubar/tng-menubar.component.js +29 -0
  194. package/src/lib/navigation/menubar/tng-menubar.component.js.map +1 -0
  195. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts +4 -0
  196. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts.map +1 -0
  197. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js +16 -0
  198. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js.map +1 -0
  199. package/src/lib/navigation/tabs/tng-tabs.component.d.ts +5 -0
  200. package/src/lib/navigation/tabs/tng-tabs.component.d.ts.map +1 -0
  201. package/src/lib/navigation/tabs/tng-tabs.component.js +41 -0
  202. package/src/lib/navigation/tabs/tng-tabs.component.js.map +1 -0
  203. package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts +4 -0
  204. package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts.map +1 -0
  205. package/src/lib/navigation/toolbar/tng-toolbar.component.js +16 -0
  206. package/src/lib/navigation/toolbar/tng-toolbar.component.js.map +1 -0
  207. package/src/lib/overlay/dialog/tng-dialog.component.d.ts +43 -0
  208. package/src/lib/overlay/dialog/tng-dialog.component.d.ts.map +1 -0
  209. package/src/lib/overlay/dialog/tng-dialog.component.js +286 -0
  210. package/src/lib/overlay/dialog/tng-dialog.component.js.map +1 -0
  211. package/src/lib/overlay/index.d.ts +7 -0
  212. package/src/lib/overlay/index.d.ts.map +1 -0
  213. package/src/lib/overlay/index.js +7 -0
  214. package/src/lib/overlay/index.js.map +1 -0
  215. package/src/lib/overlay/popover/tng-popover.component.d.ts +28 -0
  216. package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -0
  217. package/src/lib/overlay/popover/tng-popover.component.js +133 -0
  218. package/src/lib/overlay/popover/tng-popover.component.js.map +1 -0
  219. package/src/lib/overlay/tng-overlay-runtime.d.ts +11 -0
  220. package/src/lib/overlay/tng-overlay-runtime.d.ts.map +1 -0
  221. package/src/lib/overlay/tng-overlay-runtime.js +11 -0
  222. package/src/lib/overlay/tng-overlay-runtime.js.map +1 -0
  223. package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts +31 -0
  224. package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -0
  225. package/src/lib/overlay/tooltip/tng-tooltip.component.js +111 -0
  226. package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -0
  227. package/src/lib/utility/avatar/tng-avatar.component.d.ts +19 -0
  228. package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -0
  229. package/src/lib/utility/avatar/tng-avatar.component.js +66 -0
  230. package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -0
  231. package/src/lib/utility/badge/tng-badge.component.d.ts +4 -0
  232. package/src/lib/utility/badge/tng-badge.component.d.ts.map +1 -0
  233. package/src/lib/utility/badge/tng-badge.component.js +13 -0
  234. package/src/lib/utility/badge/tng-badge.component.js.map +1 -0
  235. package/src/lib/utility/button/tng-button.component.d.ts +18 -0
  236. package/src/lib/utility/button/tng-button.component.d.ts.map +1 -0
  237. package/src/lib/utility/button/tng-button.component.js +32 -0
  238. package/src/lib/utility/button/tng-button.component.js.map +1 -0
  239. package/src/lib/utility/code-block/highlighting.d.ts +96 -0
  240. package/src/lib/utility/code-block/highlighting.d.ts.map +1 -0
  241. package/src/lib/utility/code-block/highlighting.js +220 -0
  242. package/src/lib/utility/code-block/highlighting.js.map +1 -0
  243. package/src/lib/utility/code-block/tng-code-block.component.d.ts +118 -0
  244. package/src/lib/utility/code-block/tng-code-block.component.d.ts.map +1 -0
  245. package/src/lib/utility/code-block/tng-code-block.component.js +586 -0
  246. package/src/lib/utility/code-block/tng-code-block.component.js.map +1 -0
  247. package/src/lib/utility/copy-button/tng-copy-button.component.d.ts +39 -0
  248. package/src/lib/utility/copy-button/tng-copy-button.component.d.ts.map +1 -0
  249. package/src/lib/utility/copy-button/tng-copy-button.component.js +127 -0
  250. package/src/lib/utility/copy-button/tng-copy-button.component.js.map +1 -0
  251. package/src/lib/utility/index.d.ts +17 -0
  252. package/src/lib/utility/index.d.ts.map +1 -0
  253. package/src/lib/utility/index.js +16 -0
  254. package/src/lib/utility/index.js.map +1 -0
  255. package/src/lib/utility/tag/tng-tag.component.d.ts +10 -0
  256. package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -0
  257. package/src/lib/utility/tag/tng-tag.component.js +18 -0
  258. package/src/lib/utility/tag/tng-tag.component.js.map +1 -0
  259. package/src/lib/utility/tree/tng-tree.component.d.ts +72 -0
  260. package/src/lib/utility/tree/tng-tree.component.d.ts.map +1 -0
  261. package/src/lib/utility/tree/tng-tree.component.js +336 -0
  262. package/src/lib/utility/tree/tng-tree.component.js.map +1 -0
  263. package/src/test-setup.d.ts +3 -0
  264. package/src/test-setup.d.ts.map +1 -0
  265. package/src/test-setup.js +10 -0
  266. package/src/test-setup.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-chips.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/chips/tng-chips.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAQ/D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACZ,SAAS,GAAG,KAAK,CAAS,OAAO,CAAC,CAAC;CACpD,CAAA;AAFY,iBAAiB;IAN7B,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,iBAAiB,CAAC;QAC5B,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,iBAAiB,CAE7B","sourcesContent":["import { Component, input } from '@angular/core';\nimport { TngChips as TngChipsPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-chips',\n imports: [TngChipsPrimitive],\n templateUrl: './tng-chips.component.html',\n styleUrl: './tng-chips.component.css',\n})\nexport class TngChipsComponent {\n public readonly ariaLabel = input<string>('Chips');\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export declare class TngComboboxComponent {
2
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
3
+ }
4
+ //# sourceMappingURL=tng-combobox.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-combobox.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/combobox/tng-combobox.component.ts"],"names":[],"mappings":"AAGA,qBAMa,oBAAoB;IAC/B,SAAgB,SAAS,8CAA6B;CACvD"}
@@ -0,0 +1,16 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, input } from '@angular/core';
3
+ import { TngCombobox as TngComboboxPrimitive } from '@tailng-ui/primitives';
4
+ let TngComboboxComponent = class TngComboboxComponent {
5
+ ariaLabel = input('Combobox');
6
+ };
7
+ TngComboboxComponent = __decorate([
8
+ Component({
9
+ selector: 'tng-combobox',
10
+ imports: [TngComboboxPrimitive],
11
+ templateUrl: './tng-combobox.component.html',
12
+ styleUrl: './tng-combobox.component.css',
13
+ })
14
+ ], TngComboboxComponent);
15
+ export { TngComboboxComponent };
16
+ //# sourceMappingURL=tng-combobox.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-combobox.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/combobox/tng-combobox.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAQrE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACf,SAAS,GAAG,KAAK,CAAS,UAAU,CAAC,CAAC;CACvD,CAAA;AAFY,oBAAoB;IANhC,SAAS,CAAC;QACT,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,WAAW,EAAE,+BAA+B;QAC5C,QAAQ,EAAE,8BAA8B;KACzC,CAAC;GACW,oBAAoB,CAEhC","sourcesContent":["import { Component, input } from '@angular/core';\nimport { TngCombobox as TngComboboxPrimitive } from '@tailng-ui/primitives';\n\n@Component({\n selector: 'tng-combobox',\n imports: [TngComboboxPrimitive],\n templateUrl: './tng-combobox.component.html',\n styleUrl: './tng-combobox.component.css',\n})\nexport class TngComboboxComponent {\n public readonly ariaLabel = input<string>('Combobox');\n}\n"]}
@@ -0,0 +1,37 @@
1
+ export * from './autocomplete/tng-autocomplete.component';
2
+ export { TngAutocompleteComponent } from './autocomplete/tng-autocomplete.component';
3
+ export * from './button-toggle/tng-button-toggle.component';
4
+ export { TngButtonToggleComponent } from './button-toggle/tng-button-toggle.component';
5
+ export * from './button-toggle/tng-button-toggle-group.component';
6
+ export { TngButtonToggleGroupComponent } from './button-toggle/tng-button-toggle-group.component';
7
+ export * from './checkbox/tng-checkbox.component';
8
+ export { TngCheckboxComponent } from './checkbox/tng-checkbox.component';
9
+ export * from './chips/tng-chips.component';
10
+ export { TngChipsComponent } from './chips/tng-chips.component';
11
+ export * from './combobox/tng-combobox.component';
12
+ export { TngComboboxComponent } from './combobox/tng-combobox.component';
13
+ export * from './input/tng-input.component';
14
+ export { TngInputComponent } from './input/tng-input.component';
15
+ export * from './input-otp/tng-input-otp.component';
16
+ export { TngInputOtpComponent } from './input-otp/tng-input-otp.component';
17
+ export * from './label/tng-label.component';
18
+ export { TngLabelComponent } from './label/tng-label.component';
19
+ export * from './multi-autocomplete/tng-multi-autocomplete.component';
20
+ export { TngMultiAutocompleteComponent } from './multi-autocomplete/tng-multi-autocomplete.component';
21
+ export * from './multiselect/tng-multiselect.component';
22
+ export { TngMultiSelectComponent } from './multiselect/tng-multiselect.component';
23
+ export * from './radio/tng-radio.component';
24
+ export { TngRadioComponent } from './radio/tng-radio.component';
25
+ export * from './select/tng-select.component';
26
+ export { TngSelectComponent } from './select/tng-select.component';
27
+ export * from './slider/tng-slider.component';
28
+ export { TngSliderComponent } from './slider/tng-slider.component';
29
+ export * from './switch/tng-switch.component';
30
+ export { TngSwitchComponent } from './switch/tng-switch.component';
31
+ export * from './textarea/tng-textarea.component';
32
+ export { TngTextareaComponent } from './textarea/tng-textarea.component';
33
+ export * from './toggle/tng-toggle.component';
34
+ export { TngToggleComponent } from './toggle/tng-toggle.component';
35
+ export * from './toggle-group/tng-toggle-group.component';
36
+ export { TngToggleGroupComponent } from './toggle-group/tng-toggle-group.component';
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/form/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAC,MAAM,mDAAmD,CAAC;AACjG,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,qCAAqC,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAC,MAAM,qCAAqC,CAAC;AAC1E,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uDAAuD,CAAC;AACtG,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAC,MAAM,2CAA2C,CAAC"}
@@ -0,0 +1,37 @@
1
+ export * from './autocomplete/tng-autocomplete.component';
2
+ export { TngAutocompleteComponent } from './autocomplete/tng-autocomplete.component';
3
+ export * from './button-toggle/tng-button-toggle.component';
4
+ export { TngButtonToggleComponent } from './button-toggle/tng-button-toggle.component';
5
+ export * from './button-toggle/tng-button-toggle-group.component';
6
+ export { TngButtonToggleGroupComponent } from './button-toggle/tng-button-toggle-group.component';
7
+ export * from './checkbox/tng-checkbox.component';
8
+ export { TngCheckboxComponent } from './checkbox/tng-checkbox.component';
9
+ export * from './chips/tng-chips.component';
10
+ export { TngChipsComponent } from './chips/tng-chips.component';
11
+ export * from './combobox/tng-combobox.component';
12
+ export { TngComboboxComponent } from './combobox/tng-combobox.component';
13
+ export * from './input/tng-input.component';
14
+ export { TngInputComponent } from './input/tng-input.component';
15
+ export * from './input-otp/tng-input-otp.component';
16
+ export { TngInputOtpComponent } from './input-otp/tng-input-otp.component';
17
+ export * from './label/tng-label.component';
18
+ export { TngLabelComponent } from './label/tng-label.component';
19
+ export * from './multi-autocomplete/tng-multi-autocomplete.component';
20
+ export { TngMultiAutocompleteComponent } from './multi-autocomplete/tng-multi-autocomplete.component';
21
+ export * from './multiselect/tng-multiselect.component';
22
+ export { TngMultiSelectComponent } from './multiselect/tng-multiselect.component';
23
+ export * from './radio/tng-radio.component';
24
+ export { TngRadioComponent } from './radio/tng-radio.component';
25
+ export * from './select/tng-select.component';
26
+ export { TngSelectComponent } from './select/tng-select.component';
27
+ export * from './slider/tng-slider.component';
28
+ export { TngSliderComponent } from './slider/tng-slider.component';
29
+ export * from './switch/tng-switch.component';
30
+ export { TngSwitchComponent } from './switch/tng-switch.component';
31
+ export * from './textarea/tng-textarea.component';
32
+ export { TngTextareaComponent } from './textarea/tng-textarea.component';
33
+ export * from './toggle/tng-toggle.component';
34
+ export { TngToggleComponent } from './toggle/tng-toggle.component';
35
+ export * from './toggle-group/tng-toggle-group.component';
36
+ export { TngToggleGroupComponent } from './toggle-group/tng-toggle-group.component';
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/form/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAC,MAAM,mDAAmD,CAAC;AACjG,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,qCAAqC,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAC,MAAM,qCAAqC,CAAC;AAC1E,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uDAAuD,CAAC;AACtG,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAC,MAAM,2CAA2C,CAAC","sourcesContent":["export * from './autocomplete/tng-autocomplete.component';\nexport { TngAutocompleteComponent } from './autocomplete/tng-autocomplete.component';\nexport * from './button-toggle/tng-button-toggle.component';\nexport { TngButtonToggleComponent } from './button-toggle/tng-button-toggle.component';\nexport * from './button-toggle/tng-button-toggle-group.component';\nexport { TngButtonToggleGroupComponent} from './button-toggle/tng-button-toggle-group.component';\nexport * from './checkbox/tng-checkbox.component';\nexport { TngCheckboxComponent} from './checkbox/tng-checkbox.component';\nexport * from './chips/tng-chips.component';\nexport { TngChipsComponent} from './chips/tng-chips.component';\nexport * from './combobox/tng-combobox.component';\nexport { TngComboboxComponent} from './combobox/tng-combobox.component';\nexport * from './input/tng-input.component';\nexport { TngInputComponent} from './input/tng-input.component';\nexport * from './input-otp/tng-input-otp.component';\nexport { TngInputOtpComponent} from './input-otp/tng-input-otp.component';\nexport * from './label/tng-label.component';\nexport { TngLabelComponent} from './label/tng-label.component';\nexport * from './multi-autocomplete/tng-multi-autocomplete.component';\nexport { TngMultiAutocompleteComponent } from './multi-autocomplete/tng-multi-autocomplete.component';\nexport * from './multiselect/tng-multiselect.component';\nexport { TngMultiSelectComponent } from './multiselect/tng-multiselect.component';\nexport * from './radio/tng-radio.component';\nexport { TngRadioComponent} from './radio/tng-radio.component';\nexport * from './select/tng-select.component';\nexport { TngSelectComponent} from './select/tng-select.component';\nexport * from './slider/tng-slider.component';\nexport { TngSliderComponent} from './slider/tng-slider.component';\nexport * from './switch/tng-switch.component';\nexport { TngSwitchComponent} from './switch/tng-switch.component';\nexport * from './textarea/tng-textarea.component';\nexport { TngTextareaComponent} from './textarea/tng-textarea.component';\nexport * from './toggle/tng-toggle.component';\nexport { TngToggleComponent} from './toggle/tng-toggle.component';\nexport * from './toggle-group/tng-toggle-group.component';\nexport { TngToggleGroupComponent} from './toggle-group/tng-toggle-group.component';\n"]}
@@ -0,0 +1,16 @@
1
+ export type TngInputAppearance = 'outline' | 'solid' | 'ghost';
2
+ export type TngInputSize = 'sm' | 'md' | 'lg';
3
+ export type TngInputTone = 'neutral' | 'primary' | 'success' | 'danger';
4
+ export declare class TngInputComponent {
5
+ readonly appearance: import("@angular/core").InputSignal<TngInputAppearance>;
6
+ readonly size: import("@angular/core").InputSignal<TngInputSize>;
7
+ readonly tone: import("@angular/core").InputSignal<TngInputTone>;
8
+ /** Default true so forms look consistent out-of-the-box */
9
+ readonly fullWidth: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
10
+ protected readonly dataSlot: "input-wrapper";
11
+ protected get dataAppearance(): TngInputAppearance;
12
+ protected get dataSize(): TngInputSize;
13
+ protected get dataTone(): TngInputTone;
14
+ protected get dataFullWidth(): '' | null;
15
+ }
16
+ //# sourceMappingURL=tng-input.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-input.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input/tng-input.component.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExE,qBAOa,iBAAiB;IAC5B,SAAgB,UAAU,0DAAwC;IAClE,SAAgB,IAAI,oDAA6B;IACjD,SAAgB,IAAI,oDAAkC;IAEtD,2DAA2D;IAC3D,SAAgB,SAAS,8EAEtB;IAGH,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,eAAe,CAAU;IAGvD,SAAS,KAAK,cAAc,IAAI,kBAAkB,CAEjD;IAGD,SAAS,KAAK,QAAQ,IAAI,YAAY,CAErC;IAGD,SAAS,KAAK,QAAQ,IAAI,YAAY,CAErC;IAGD,SAAS,KAAK,aAAa,IAAI,EAAE,GAAG,IAAI,CAEvC;CACF"}
@@ -0,0 +1,52 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, HostBinding, input } from '@angular/core';
3
+ import { booleanAttribute } from '@angular/core';
4
+ import { TngInputGroup, TngInputLeading, TngInputTrailing } from '@tailng-ui/primitives';
5
+ let TngInputComponent = class TngInputComponent {
6
+ appearance = input('outline');
7
+ size = input('md');
8
+ tone = input('neutral');
9
+ /** Default true so forms look consistent out-of-the-box */
10
+ fullWidth = input(true, {
11
+ transform: booleanAttribute,
12
+ });
13
+ dataSlot = 'input-wrapper';
14
+ get dataAppearance() {
15
+ return this.appearance();
16
+ }
17
+ get dataSize() {
18
+ return this.size();
19
+ }
20
+ get dataTone() {
21
+ return this.tone();
22
+ }
23
+ get dataFullWidth() {
24
+ return this.fullWidth() ? '' : null;
25
+ }
26
+ };
27
+ __decorate([
28
+ HostBinding('attr.data-slot')
29
+ ], TngInputComponent.prototype, "dataSlot", void 0);
30
+ __decorate([
31
+ HostBinding('attr.data-appearance')
32
+ ], TngInputComponent.prototype, "dataAppearance", null);
33
+ __decorate([
34
+ HostBinding('attr.data-size')
35
+ ], TngInputComponent.prototype, "dataSize", null);
36
+ __decorate([
37
+ HostBinding('attr.data-tone')
38
+ ], TngInputComponent.prototype, "dataTone", null);
39
+ __decorate([
40
+ HostBinding('attr.data-full-width')
41
+ ], TngInputComponent.prototype, "dataFullWidth", null);
42
+ TngInputComponent = __decorate([
43
+ Component({
44
+ selector: 'tng-input',
45
+ standalone: true,
46
+ imports: [TngInputGroup, TngInputLeading, TngInputTrailing],
47
+ templateUrl: './tng-input.component.html',
48
+ styleUrl: './tng-input.component.css',
49
+ })
50
+ ], TngInputComponent);
51
+ export { TngInputComponent };
52
+ //# sourceMappingURL=tng-input.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-input.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input/tng-input.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAalF,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACZ,UAAU,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;IAClD,IAAI,GAAG,KAAK,CAAe,IAAI,CAAC,CAAC;IACjC,IAAI,GAAG,KAAK,CAAe,SAAS,CAAC,CAAC;IAEtD,2DAA2D;IAC3C,SAAS,GAAG,KAAK,CAA4B,IAAI,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAGgB,QAAQ,GAAG,eAAwB,CAAC;IAGvD,IAAc,cAAc;QAC1B,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAGD,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAGD,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAGD,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;CACF,CAAA;AArBoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;mDACyB;AAGvD;IADC,WAAW,CAAC,sBAAsB,CAAC;uDAGnC;AAGD;IADC,WAAW,CAAC,gBAAgB,CAAC;iDAG7B;AAGD;IADC,WAAW,CAAC,gBAAgB,CAAC;iDAG7B;AAGD;IADC,WAAW,CAAC,sBAAsB,CAAC;sDAGnC;AA/BU,iBAAiB;IAP7B,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC;QAC3D,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,iBAAiB,CAgC7B","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport { booleanAttribute } from '@angular/core';\n\nimport { TngInputGroup, TngInputLeading, TngInputTrailing } from '@tailng-ui/primitives';\n\nexport type TngInputAppearance = 'outline' | 'solid' | 'ghost';\nexport type TngInputSize = 'sm' | 'md' | 'lg';\nexport type TngInputTone = 'neutral' | 'primary' | 'success' | 'danger';\n\n@Component({\n selector: 'tng-input',\n standalone: true,\n imports: [TngInputGroup, TngInputLeading, TngInputTrailing],\n templateUrl: './tng-input.component.html',\n styleUrl: './tng-input.component.css',\n})\nexport class TngInputComponent {\n public readonly appearance = input<TngInputAppearance>('outline');\n public readonly size = input<TngInputSize>('md');\n public readonly tone = input<TngInputTone>('neutral');\n\n /** Default true so forms look consistent out-of-the-box */\n public readonly fullWidth = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'input-wrapper' as const;\n\n @HostBinding('attr.data-appearance')\n protected get dataAppearance(): TngInputAppearance {\n return this.appearance();\n }\n\n @HostBinding('attr.data-size')\n protected get dataSize(): TngInputSize {\n return this.size();\n }\n\n @HostBinding('attr.data-tone')\n protected get dataTone(): TngInputTone {\n return this.tone();\n }\n\n @HostBinding('attr.data-full-width')\n protected get dataFullWidth(): '' | null {\n return this.fullWidth() ? '' : null;\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ export declare function sanitizeTngOtpValue(value: string): string;
2
+ export declare function applyTngOtpSlotValue(slots: readonly string[], index: number, nextValue: string): readonly string[];
3
+ export declare class TngInputOtpComponent {
4
+ readonly length: import("@angular/core").InputSignalWithTransform<number, string | number>;
5
+ readonly value: import("@angular/core").InputSignal<string>;
6
+ readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
7
+ readonly complete: import("@angular/core").OutputEmitterRef<string>;
8
+ protected readonly slots: import("@angular/core").Signal<readonly string[]>;
9
+ protected onSlotInput(index: number, event: unknown): void;
10
+ protected onSlotKeydown(index: number, event: unknown): void;
11
+ protected onSlotsPaste(event: unknown): void;
12
+ }
13
+ //# sourceMappingURL=tng-input-otp.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-input-otp.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input-otp/tng-input-otp.component.ts"],"names":[],"mappings":"AAqBA,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,SAAS,MAAM,EAAE,CAQnB;AA2DD,qBAMa,oBAAoB;IAC/B,SAAgB,MAAM,4EAGnB;IACH,SAAgB,KAAK,8CAAqB;IAE1C,SAAgB,WAAW,mDAAoB;IAC/C,SAAgB,QAAQ,mDAAoB;IAE5C,SAAS,CAAC,QAAQ,CAAC,KAAK,oDAEtB;IAEF,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAmB1D,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAoB5D,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;CAqB7C"}
@@ -0,0 +1,138 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, computed, input, output } from '@angular/core';
3
+ import { normalizeTngOtpLength, TngInputOtp as TngInputOtpPrimitive } from '@tailng-ui/primitives';
4
+ function toOtpSlots(length, value) {
5
+ const slots = Array.from({ length }, () => '');
6
+ for (const [index, char] of Array.from(value).entries()) {
7
+ if (index >= length) {
8
+ break;
9
+ }
10
+ slots[index] = char;
11
+ }
12
+ return slots;
13
+ }
14
+ function joinOtpSlots(slots) {
15
+ return slots.join('');
16
+ }
17
+ export function sanitizeTngOtpValue(value) {
18
+ return value.replace(/[^a-zA-Z0-9]/g, '');
19
+ }
20
+ export function applyTngOtpSlotValue(slots, index, nextValue) {
21
+ if (index < 0 || index >= slots.length) {
22
+ return slots;
23
+ }
24
+ const nextSlots = [...slots];
25
+ nextSlots[index] = sanitizeTngOtpValue(nextValue).slice(0, 1);
26
+ return nextSlots;
27
+ }
28
+ function isFilledOtp(slots) {
29
+ return slots.every((slot) => slot.length === 1);
30
+ }
31
+ function focusOtpInput(index) {
32
+ const target = document.querySelector(`[data-tng-otp-slot='${index}']`);
33
+ target?.focus();
34
+ target?.select();
35
+ }
36
+ function readInputValue(event) {
37
+ if (!(event instanceof Event)) {
38
+ return null;
39
+ }
40
+ const target = event.target;
41
+ if (!(target instanceof HTMLInputElement)) {
42
+ return null;
43
+ }
44
+ return target.value;
45
+ }
46
+ function readClipboardText(event) {
47
+ if (!(event instanceof ClipboardEvent)) {
48
+ return null;
49
+ }
50
+ return event.clipboardData?.getData('text') ?? null;
51
+ }
52
+ function handleOtpArrowNavigation(index, key, total) {
53
+ if (key === 'ArrowLeft' && index > 0) {
54
+ focusOtpInput(index - 1);
55
+ return true;
56
+ }
57
+ if (key === 'ArrowRight' && index < total - 1) {
58
+ focusOtpInput(index + 1);
59
+ return true;
60
+ }
61
+ return false;
62
+ }
63
+ function shouldMoveBackForDelete(slots, index, key) {
64
+ if (key !== 'Backspace') {
65
+ return false;
66
+ }
67
+ if (index === 0) {
68
+ return false;
69
+ }
70
+ return slots[index] === '';
71
+ }
72
+ let TngInputOtpComponent = class TngInputOtpComponent {
73
+ length = input(6, {
74
+ transform: (value) => normalizeTngOtpLength(typeof value === 'number' ? value : Number(value)),
75
+ });
76
+ value = input('');
77
+ valueChange = output();
78
+ complete = output();
79
+ slots = computed(() => toOtpSlots(this.length(), sanitizeTngOtpValue(this.value())));
80
+ onSlotInput(index, event) {
81
+ const value = readInputValue(event);
82
+ if (value === null) {
83
+ return;
84
+ }
85
+ const nextSlots = applyTngOtpSlotValue(this.slots(), index, value);
86
+ const nextValue = joinOtpSlots(nextSlots);
87
+ this.valueChange.emit(nextValue);
88
+ if (nextSlots[index] !== '' && index < nextSlots.length - 1) {
89
+ focusOtpInput(index + 1);
90
+ }
91
+ if (isFilledOtp(nextSlots)) {
92
+ this.complete.emit(nextValue);
93
+ }
94
+ }
95
+ onSlotKeydown(index, event) {
96
+ if (!(event instanceof KeyboardEvent)) {
97
+ return;
98
+ }
99
+ if (handleOtpArrowNavigation(index, event.key, this.slots().length)) {
100
+ event.preventDefault();
101
+ return;
102
+ }
103
+ if (!shouldMoveBackForDelete(this.slots(), index, event.key)) {
104
+ return;
105
+ }
106
+ event.preventDefault();
107
+ const nextSlots = applyTngOtpSlotValue(this.slots(), index - 1, '');
108
+ this.valueChange.emit(joinOtpSlots(nextSlots));
109
+ focusOtpInput(index - 1);
110
+ }
111
+ onSlotsPaste(event) {
112
+ const clipboardValue = readClipboardText(event);
113
+ if (clipboardValue === null) {
114
+ return;
115
+ }
116
+ const cleanedValue = sanitizeTngOtpValue(clipboardValue).slice(0, this.length());
117
+ if (cleanedValue.length === 0) {
118
+ return;
119
+ }
120
+ if (event instanceof ClipboardEvent) {
121
+ event.preventDefault();
122
+ }
123
+ this.valueChange.emit(cleanedValue);
124
+ if (cleanedValue.length >= this.length()) {
125
+ this.complete.emit(cleanedValue);
126
+ }
127
+ }
128
+ };
129
+ TngInputOtpComponent = __decorate([
130
+ Component({
131
+ selector: 'tng-input-otp',
132
+ imports: [TngInputOtpPrimitive],
133
+ templateUrl: './tng-input-otp.component.html',
134
+ styleUrl: './tng-input-otp.component.css',
135
+ })
136
+ ], TngInputOtpComponent);
137
+ export { TngInputOtpComponent };
138
+ //# sourceMappingURL=tng-input-otp.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-input-otp.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input-otp/tng-input-otp.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEnG,SAAS,UAAU,CAAC,MAAc,EAAE,KAAa;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YACpB,MAAM;QACR,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAwB;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAwB,EACxB,KAAa,EACb,SAAiB;IAEjB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7B,SAAS,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,KAAwB;IAC3C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAmB,uBAAuB,KAAK,IAAI,CAAC,CAAC;IAC1F,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,CAAC,KAAK,YAAY,cAAc,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AACtD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa,EAAE,GAAW,EAAE,KAAa;IACzE,IAAI,GAAG,KAAK,WAAW,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACrC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAG,KAAK,YAAY,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAwB,EAAE,KAAa,EAAE,GAAW;IACnF,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAQM,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACf,MAAM,GAAG,KAAK,CAA0B,CAAC,EAAE;QACzD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,qBAAqB,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3E,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IAE1B,WAAW,GAAG,MAAM,EAAU,CAAC;IAC/B,QAAQ,GAAG,MAAM,EAAU,CAAC;IAEzB,KAAK,GAAG,QAAQ,CAAoB,GAAG,EAAE,CAC1D,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAC7D,CAAC;IAEQ,WAAW,CAAC,KAAa,EAAE,KAAc;QACjD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAES,aAAa,CAAC,KAAa,EAAE,KAAc;QACnD,IAAI,CAAC,CAAC,KAAK,YAAY,aAAa,CAAC,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACpE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/C,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAES,YAAY,CAAC,KAAc;QACnC,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACjF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YACpC,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEpC,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAA;AA1EY,oBAAoB;IANhC,SAAS,CAAC;QACT,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,+BAA+B;KAC1C,CAAC;GACW,oBAAoB,CA0EhC","sourcesContent":["import { Component, computed, input, output } from '@angular/core';\nimport { normalizeTngOtpLength, TngInputOtp as TngInputOtpPrimitive } from '@tailng-ui/primitives';\n\nfunction toOtpSlots(length: number, value: string): string[] {\n const slots = Array.from({ length }, () => '');\n\n for (const [index, char] of Array.from(value).entries()) {\n if (index >= length) {\n break;\n }\n\n slots[index] = char;\n }\n\n return slots;\n}\n\nfunction joinOtpSlots(slots: readonly string[]): string {\n return slots.join('');\n}\n\nexport function sanitizeTngOtpValue(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, '');\n}\n\nexport function applyTngOtpSlotValue(\n slots: readonly string[],\n index: number,\n nextValue: string,\n): readonly string[] {\n if (index < 0 || index >= slots.length) {\n return slots;\n }\n\n const nextSlots = [...slots];\n nextSlots[index] = sanitizeTngOtpValue(nextValue).slice(0, 1);\n return nextSlots;\n}\n\nfunction isFilledOtp(slots: readonly string[]): boolean {\n return slots.every((slot) => slot.length === 1);\n}\n\nfunction focusOtpInput(index: number): void {\n const target = document.querySelector<HTMLInputElement>(`[data-tng-otp-slot='${index}']`);\n target?.focus();\n target?.select();\n}\n\nfunction readInputValue(event: unknown): string | null {\n if (!(event instanceof Event)) {\n return null;\n }\n\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return null;\n }\n\n return target.value;\n}\n\nfunction readClipboardText(event: unknown): string | null {\n if (!(event instanceof ClipboardEvent)) {\n return null;\n }\n\n return event.clipboardData?.getData('text') ?? null;\n}\n\nfunction handleOtpArrowNavigation(index: number, key: string, total: number): boolean {\n if (key === 'ArrowLeft' && index > 0) {\n focusOtpInput(index - 1);\n return true;\n }\n\n if (key === 'ArrowRight' && index < total - 1) {\n focusOtpInput(index + 1);\n return true;\n }\n\n return false;\n}\n\nfunction shouldMoveBackForDelete(slots: readonly string[], index: number, key: string): boolean {\n if (key !== 'Backspace') {\n return false;\n }\n\n if (index === 0) {\n return false;\n }\n\n return slots[index] === '';\n}\n\n@Component({\n selector: 'tng-input-otp',\n imports: [TngInputOtpPrimitive],\n templateUrl: './tng-input-otp.component.html',\n styleUrl: './tng-input-otp.component.css',\n})\nexport class TngInputOtpComponent {\n public readonly length = input<number, number | string>(6, {\n transform: (value: number | string): number =>\n normalizeTngOtpLength(typeof value === 'number' ? value : Number(value)),\n });\n public readonly value = input<string>('');\n\n public readonly valueChange = output<string>();\n public readonly complete = output<string>();\n\n protected readonly slots = computed<readonly string[]>(() =>\n toOtpSlots(this.length(), sanitizeTngOtpValue(this.value())),\n );\n\n protected onSlotInput(index: number, event: unknown): void {\n const value = readInputValue(event);\n if (value === null) {\n return;\n }\n\n const nextSlots = applyTngOtpSlotValue(this.slots(), index, value);\n const nextValue = joinOtpSlots(nextSlots);\n this.valueChange.emit(nextValue);\n\n if (nextSlots[index] !== '' && index < nextSlots.length - 1) {\n focusOtpInput(index + 1);\n }\n\n if (isFilledOtp(nextSlots)) {\n this.complete.emit(nextValue);\n }\n }\n\n protected onSlotKeydown(index: number, event: unknown): void {\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n if (handleOtpArrowNavigation(index, event.key, this.slots().length)) {\n event.preventDefault();\n return;\n }\n\n if (!shouldMoveBackForDelete(this.slots(), index, event.key)) {\n return;\n }\n\n event.preventDefault();\n const nextSlots = applyTngOtpSlotValue(this.slots(), index - 1, '');\n this.valueChange.emit(joinOtpSlots(nextSlots));\n focusOtpInput(index - 1);\n }\n\n protected onSlotsPaste(event: unknown): void {\n const clipboardValue = readClipboardText(event);\n if (clipboardValue === null) {\n return;\n }\n\n const cleanedValue = sanitizeTngOtpValue(clipboardValue).slice(0, this.length());\n if (cleanedValue.length === 0) {\n return;\n }\n\n if (event instanceof ClipboardEvent) {\n event.preventDefault();\n }\n\n this.valueChange.emit(cleanedValue);\n\n if (cleanedValue.length >= this.length()) {\n this.complete.emit(cleanedValue);\n }\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ export declare function resolveTngLabelForAttr(forId: string): string | null;
2
+ export declare class TngLabelComponent {
3
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
4
+ readonly forId: import("@angular/core").InputSignal<string>;
5
+ readonly required: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
6
+ resolveForAttr(): string | null;
7
+ }
8
+ //# sourceMappingURL=tng-label.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-label.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/label/tng-label.component.ts"],"names":[],"mappings":"AAGA,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnE;AAED,qBAMa,iBAAiB;IAC5B,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,8CAAqB;IAC1C,SAAgB,QAAQ,8EAErB;IAEI,cAAc,IAAI,MAAM,GAAG,IAAI;CAGvC"}
@@ -0,0 +1,29 @@
1
+ import { __decorate } from "tslib";
2
+ import { booleanAttribute, Component, input } from '@angular/core';
3
+ import { TngLabel as TngLabelPrimitive } from '@tailng-ui/primitives';
4
+ export function resolveTngLabelForAttr(forId) {
5
+ const trimmedId = forId.trim();
6
+ return trimmedId.length > 0 ? trimmedId : null;
7
+ }
8
+ let TngLabelComponent = class TngLabelComponent {
9
+ disabled = input(false, {
10
+ transform: booleanAttribute,
11
+ });
12
+ forId = input('');
13
+ required = input(false, {
14
+ transform: booleanAttribute,
15
+ });
16
+ resolveForAttr() {
17
+ return resolveTngLabelForAttr(this.forId());
18
+ }
19
+ };
20
+ TngLabelComponent = __decorate([
21
+ Component({
22
+ selector: 'tng-label',
23
+ imports: [TngLabelPrimitive],
24
+ templateUrl: './tng-label.component.html',
25
+ styleUrl: './tng-label.component.css',
26
+ })
27
+ ], TngLabelComponent);
28
+ export { TngLabelComponent };
29
+ //# sourceMappingURL=tng-label.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-label.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/label/tng-label.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAQM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACZ,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IAC1B,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAEI,cAAc;QACnB,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AAZY,iBAAiB;IAN7B,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,iBAAiB,CAAC;QAC5B,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,iBAAiB,CAY7B","sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\nimport { TngLabel as TngLabelPrimitive } from '@tailng-ui/primitives';\n\nexport function resolveTngLabelForAttr(forId: string): string | null {\n const trimmedId = forId.trim();\n return trimmedId.length > 0 ? trimmedId : null;\n}\n\n@Component({\n selector: 'tng-label',\n imports: [TngLabelPrimitive],\n templateUrl: './tng-label.component.html',\n styleUrl: './tng-label.component.css',\n})\nexport class TngLabelComponent {\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly forId = input<string>('');\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n public resolveForAttr(): string | null {\n return resolveTngLabelForAttr(this.forId());\n }\n}\n"]}
@@ -0,0 +1,55 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import { TngMultiAutocomplete } from '@tailng-ui/primitives';
3
+ export type TngMultiAutocompleteGetValue<O, V> = (opt: O) => V;
4
+ export type TngMultiAutocompleteGetLabel<O> = (opt: O) => string;
5
+ export type TngMultiAutocompleteIsDisabled<O> = (opt: O) => boolean;
6
+ export type TngMultiAutocompleteTrackBy<O> = (index: number, opt: O) => unknown;
7
+ export type TngMultiAutocompleteChipContext<O, V> = {
8
+ $implicit: {
9
+ option: O | null;
10
+ value: V;
11
+ label: string;
12
+ removeItem: (item: V) => void;
13
+ };
14
+ };
15
+ export type TngMultiAutocompleteOptionContext<O, V> = {
16
+ $implicit: {
17
+ option: O;
18
+ value: V;
19
+ label: string;
20
+ disabled: boolean;
21
+ selected: boolean;
22
+ active: boolean;
23
+ };
24
+ };
25
+ type SelectedItem<O, V> = {
26
+ option: O | null;
27
+ value: V;
28
+ label: string;
29
+ trackId: unknown;
30
+ };
31
+ export declare class TngMultiAutocompleteComponent<O = unknown, V = unknown> {
32
+ protected readonly primitive: TngMultiAutocomplete<V>;
33
+ readonly options: import("@angular/core").InputSignal<readonly O[]>;
34
+ readonly placeholder: import("@angular/core").InputSignal<string>;
35
+ readonly emptyText: import("@angular/core").InputSignal<string>;
36
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
37
+ readonly getOptionValue: import("@angular/core").InputSignal<TngMultiAutocompleteGetValue<O, V>>;
38
+ readonly getOptionLabel: import("@angular/core").InputSignal<TngMultiAutocompleteGetLabel<O>>;
39
+ readonly isOptionDisabled: import("@angular/core").InputSignal<TngMultiAutocompleteIsDisabled<O>>;
40
+ readonly trackBy: import("@angular/core").InputSignal<TngMultiAutocompleteTrackBy<O>>;
41
+ chipTpl?: TemplateRef<TngMultiAutocompleteChipContext<O, V>>;
42
+ optionTpl?: TemplateRef<TngMultiAutocompleteOptionContext<O, V>>;
43
+ protected readonly selectedItems: import("@angular/core").Signal<readonly SelectedItem<O, V>[]>;
44
+ protected readonly filteredOptions: import("@angular/core").Signal<readonly O[]>;
45
+ protected chipContext(item: SelectedItem<O, V>): TngMultiAutocompleteChipContext<O, V>;
46
+ protected optionContext(opt: O): TngMultiAutocompleteOptionContext<O, V>;
47
+ addSelectedItem(item: V): void;
48
+ removeSelectedItem(item: V): void;
49
+ toggleSelectedItem(item: V): void;
50
+ clear(): void;
51
+ private findOption;
52
+ private hasSelectedValue;
53
+ }
54
+ export {};
55
+ //# sourceMappingURL=tng-multi-autocomplete.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-multi-autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EAIZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,oBAAoB,EAOrB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,4BAA4B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/D,MAAM,MAAM,4BAA4B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AACjE,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AACpE,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAEhF,MAAM,MAAM,+BAA+B,CAAC,CAAC,EAAE,CAAC,IAAI;IAClD,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QACjB,KAAK,EAAE,CAAC,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAAC,CAAC,EAAE,CAAC,IAAI;IACpD,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,CAAC;QACV,KAAK,EAAE,CAAC,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI;IACxB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,qBAsBa,6BAA6B,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACjE,SAAS,CAAC,QAAQ,CAAC,SAAS,0BAAyD;IAErF,QAAQ,CAAC,OAAO,oDAA2B;IAC3C,QAAQ,CAAC,WAAW,8CAAoC;IACxD,QAAQ,CAAC,SAAS,8CAA+B;IACjD,QAAQ,CAAC,SAAS,8CAAuC;IAEzD,QAAQ,CAAC,cAAc,0EAErB;IACF,QAAQ,CAAC,cAAc,uEAOrB;IACF,QAAQ,CAAC,gBAAgB,yEAGvB;IACF,QAAQ,CAAC,OAAO,sEAGb;IAGH,OAAO,CAAC,EAAE,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAG7D,SAAS,CAAC,EAAE,WAAW,CAAC,iCAAiC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjE,SAAS,CAAC,QAAQ,CAAC,aAAa,gEAa7B;IAEH,SAAS,CAAC,QAAQ,CAAC,eAAe,+CAmB/B;IAEH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;IAWtF,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,iCAAiC,CAAC,CAAC,EAAE,CAAC,CAAC;IAexE,eAAe,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAI9B,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,gBAAgB;CAMzB"}
@@ -0,0 +1,126 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, ContentChild, TemplateRef, computed, inject, input, } from '@angular/core';
3
+ import { NgTemplateOutlet } from '@angular/common';
4
+ import { TngMultiAutocomplete, TngMultiAutocompleteChip, TngMultiAutocompleteContent, TngMultiAutocompleteListbox, TngMultiAutocompleteOption, TngMultiAutocompleteOverlay, TngMultiAutocompleteTrigger, } from '@tailng-ui/primitives';
5
+ let TngMultiAutocompleteComponent = class TngMultiAutocompleteComponent {
6
+ primitive = inject(TngMultiAutocomplete);
7
+ options = input([]);
8
+ placeholder = input('Type to search…');
9
+ emptyText = input('No matches');
10
+ ariaLabel = input('Multi autocomplete');
11
+ getOptionValue = input(((opt) => opt?.value));
12
+ getOptionLabel = input(((opt) => String(opt?.label ??
13
+ opt?.value ??
14
+ opt)));
15
+ isOptionDisabled = input(((opt) => !!opt?.disabled));
16
+ trackBy = input((_, opt) => {
17
+ const o = opt;
18
+ return o?.['value'] ?? o?.['id'] ?? opt;
19
+ });
20
+ chipTpl;
21
+ optionTpl;
22
+ selectedItems = computed(() => {
23
+ const values = this.primitive.value();
24
+ const getLabel = this.getOptionLabel();
25
+ return values.map((value) => {
26
+ const option = this.findOption(value);
27
+ return {
28
+ option,
29
+ value,
30
+ label: option ? getLabel(option) : String(value),
31
+ trackId: value,
32
+ };
33
+ });
34
+ });
35
+ filteredOptions = computed(() => {
36
+ const q = this.primitive.query().toLowerCase().trim();
37
+ const list = this.options();
38
+ const getLabel = this.getOptionLabel();
39
+ const getValue = this.getOptionValue();
40
+ const selected = this.primitive.value();
41
+ const matches = q
42
+ ? list.filter((opt) => getLabel(opt).toLowerCase().includes(q))
43
+ : list;
44
+ const pinnedSelected = matches.filter((opt) => this.hasSelectedValue(getValue(opt), selected));
45
+ const remaining = matches.filter((opt) => !this.hasSelectedValue(getValue(opt), selected));
46
+ return [...pinnedSelected, ...remaining];
47
+ });
48
+ chipContext(item) {
49
+ return {
50
+ $implicit: {
51
+ option: item.option,
52
+ value: item.value,
53
+ label: item.label,
54
+ removeItem: (value) => this.removeSelectedItem(value),
55
+ },
56
+ };
57
+ }
58
+ optionContext(opt) {
59
+ const value = this.getOptionValue()(opt);
60
+ return {
61
+ $implicit: {
62
+ option: opt,
63
+ value,
64
+ label: this.getOptionLabel()(opt),
65
+ disabled: this.isOptionDisabled()(opt),
66
+ selected: this.hasSelectedValue(value),
67
+ active: false,
68
+ },
69
+ };
70
+ }
71
+ addSelectedItem(item) {
72
+ this.primitive.add(item);
73
+ }
74
+ removeSelectedItem(item) {
75
+ this.primitive.remove(item);
76
+ }
77
+ toggleSelectedItem(item) {
78
+ this.primitive.toggle(item);
79
+ }
80
+ clear() {
81
+ this.primitive.clear();
82
+ }
83
+ findOption(value) {
84
+ const getValue = this.getOptionValue();
85
+ for (const opt of this.options()) {
86
+ if (Object.is(getValue(opt), value))
87
+ return opt;
88
+ }
89
+ return null;
90
+ }
91
+ hasSelectedValue(value, selected = this.primitive.value()) {
92
+ return selected.some((entry) => Object.is(entry, value));
93
+ }
94
+ };
95
+ __decorate([
96
+ ContentChild('tngMultiAutocompleteChipTpl', { read: TemplateRef })
97
+ ], TngMultiAutocompleteComponent.prototype, "chipTpl", void 0);
98
+ __decorate([
99
+ ContentChild('tngMultiAutocompleteOptionTpl', { read: TemplateRef })
100
+ ], TngMultiAutocompleteComponent.prototype, "optionTpl", void 0);
101
+ TngMultiAutocompleteComponent = __decorate([
102
+ Component({
103
+ selector: 'tng-multi-autocomplete',
104
+ standalone: true,
105
+ imports: [
106
+ NgTemplateOutlet,
107
+ TngMultiAutocompleteChip,
108
+ TngMultiAutocompleteTrigger,
109
+ TngMultiAutocompleteContent,
110
+ TngMultiAutocompleteOverlay,
111
+ TngMultiAutocompleteListbox,
112
+ TngMultiAutocompleteOption,
113
+ ],
114
+ hostDirectives: [
115
+ {
116
+ directive: TngMultiAutocomplete,
117
+ inputs: ['open', 'value', 'disabled', 'loading', 'invalid'],
118
+ outputs: ['openChange', 'valueChange'],
119
+ },
120
+ ],
121
+ templateUrl: './tng-multi-autocomplete.component.html',
122
+ styleUrl: './tng-multi-autocomplete.component.css',
123
+ })
124
+ ], TngMultiAutocompleteComponent);
125
+ export { TngMultiAutocompleteComponent };
126
+ //# sourceMappingURL=tng-multi-autocomplete.component.js.map