@ngstarter-ui/components 1.0.21

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 (415) hide show
  1. package/README.md +0 -0
  2. package/fesm2022/ngstarter-ui-components-action-required.mjs +42 -0
  3. package/fesm2022/ngstarter-ui-components-action-required.mjs.map +1 -0
  4. package/fesm2022/ngstarter-ui-components-alert.mjs +132 -0
  5. package/fesm2022/ngstarter-ui-components-alert.mjs.map +1 -0
  6. package/fesm2022/ngstarter-ui-components-announcement.mjs +86 -0
  7. package/fesm2022/ngstarter-ui-components-announcement.mjs.map +1 -0
  8. package/fesm2022/ngstarter-ui-components-autocomplete.mjs +360 -0
  9. package/fesm2022/ngstarter-ui-components-autocomplete.mjs.map +1 -0
  10. package/fesm2022/ngstarter-ui-components-avatar.mjs +235 -0
  11. package/fesm2022/ngstarter-ui-components-avatar.mjs.map +1 -0
  12. package/fesm2022/ngstarter-ui-components-badge.mjs +97 -0
  13. package/fesm2022/ngstarter-ui-components-badge.mjs.map +1 -0
  14. package/fesm2022/ngstarter-ui-components-block-loader.mjs +48 -0
  15. package/fesm2022/ngstarter-ui-components-block-loader.mjs.map +1 -0
  16. package/fesm2022/ngstarter-ui-components-bottom-sheet.mjs +327 -0
  17. package/fesm2022/ngstarter-ui-components-bottom-sheet.mjs.map +1 -0
  18. package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs +209 -0
  19. package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs.map +1 -0
  20. package/fesm2022/ngstarter-ui-components-button-toggle.mjs +175 -0
  21. package/fesm2022/ngstarter-ui-components-button-toggle.mjs.map +1 -0
  22. package/fesm2022/ngstarter-ui-components-button.mjs +70 -0
  23. package/fesm2022/ngstarter-ui-components-button.mjs.map +1 -0
  24. package/fesm2022/ngstarter-ui-components-card-overlay.mjs +49 -0
  25. package/fesm2022/ngstarter-ui-components-card-overlay.mjs.map +1 -0
  26. package/fesm2022/ngstarter-ui-components-card.mjs +199 -0
  27. package/fesm2022/ngstarter-ui-components-card.mjs.map +1 -0
  28. package/fesm2022/ngstarter-ui-components-carousel.mjs +614 -0
  29. package/fesm2022/ngstarter-ui-components-carousel.mjs.map +1 -0
  30. package/fesm2022/ngstarter-ui-components-checkbox.mjs +300 -0
  31. package/fesm2022/ngstarter-ui-components-checkbox.mjs.map +1 -0
  32. package/fesm2022/ngstarter-ui-components-chips.mjs +589 -0
  33. package/fesm2022/ngstarter-ui-components-chips.mjs.map +1 -0
  34. package/fesm2022/ngstarter-ui-components-code-highlighter.mjs +347 -0
  35. package/fesm2022/ngstarter-ui-components-code-highlighter.mjs.map +1 -0
  36. package/fesm2022/ngstarter-ui-components-color-picker.mjs +713 -0
  37. package/fesm2022/ngstarter-ui-components-color-picker.mjs.map +1 -0
  38. package/fesm2022/ngstarter-ui-components-color-scheme.mjs +106 -0
  39. package/fesm2022/ngstarter-ui-components-color-scheme.mjs.map +1 -0
  40. package/fesm2022/ngstarter-ui-components-color-switcher.mjs +72 -0
  41. package/fesm2022/ngstarter-ui-components-color-switcher.mjs.map +1 -0
  42. package/fesm2022/ngstarter-ui-components-command-bar.mjs +57 -0
  43. package/fesm2022/ngstarter-ui-components-command-bar.mjs.map +1 -0
  44. package/fesm2022/ngstarter-ui-components-comment-editor.mjs +1024 -0
  45. package/fesm2022/ngstarter-ui-components-comment-editor.mjs.map +1 -0
  46. package/fesm2022/ngstarter-ui-components-comparison-slider.mjs +177 -0
  47. package/fesm2022/ngstarter-ui-components-comparison-slider.mjs.map +1 -0
  48. package/fesm2022/ngstarter-ui-components-confirm.mjs +85 -0
  49. package/fesm2022/ngstarter-ui-components-confirm.mjs.map +1 -0
  50. package/fesm2022/ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs +173 -0
  51. package/fesm2022/ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs.map +1 -0
  52. package/fesm2022/ngstarter-ui-components-content-editor-content-editor-content-editable.directive-Bvfa2dqh.mjs +124 -0
  53. package/fesm2022/ngstarter-ui-components-content-editor-content-editor-content-editable.directive-Bvfa2dqh.mjs.map +1 -0
  54. package/fesm2022/ngstarter-ui-components-content-editor-cursor-controller-4Ak8VqGX.mjs +99 -0
  55. package/fesm2022/ngstarter-ui-components-content-editor-cursor-controller-4Ak8VqGX.mjs.map +1 -0
  56. package/fesm2022/ngstarter-ui-components-content-editor-divider-block.component-C_iRTCPH.mjs +33 -0
  57. package/fesm2022/ngstarter-ui-components-content-editor-divider-block.component-C_iRTCPH.mjs.map +1 -0
  58. package/fesm2022/ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs +354 -0
  59. package/fesm2022/ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs.map +1 -0
  60. package/fesm2022/ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs +114 -0
  61. package/fesm2022/ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs.map +1 -0
  62. package/fesm2022/ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs +146 -0
  63. package/fesm2022/ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs.map +1 -0
  64. package/fesm2022/ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs +215 -0
  65. package/fesm2022/ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs.map +1 -0
  66. package/fesm2022/ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs +2548 -0
  67. package/fesm2022/ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs.map +1 -0
  68. package/fesm2022/ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs +110 -0
  69. package/fesm2022/ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs.map +1 -0
  70. package/fesm2022/ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs +141 -0
  71. package/fesm2022/ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs.map +1 -0
  72. package/fesm2022/ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs +1604 -0
  73. package/fesm2022/ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs.map +1 -0
  74. package/fesm2022/ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs +175 -0
  75. package/fesm2022/ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs.map +1 -0
  76. package/fesm2022/ngstarter-ui-components-content-editor.mjs +2 -0
  77. package/fesm2022/ngstarter-ui-components-content-editor.mjs.map +1 -0
  78. package/fesm2022/ngstarter-ui-components-content-fade.mjs +35 -0
  79. package/fesm2022/ngstarter-ui-components-content-fade.mjs.map +1 -0
  80. package/fesm2022/ngstarter-ui-components-cookie-popup.mjs +107 -0
  81. package/fesm2022/ngstarter-ui-components-cookie-popup.mjs.map +1 -0
  82. package/fesm2022/ngstarter-ui-components-core.mjs +1330 -0
  83. package/fesm2022/ngstarter-ui-components-core.mjs.map +1 -0
  84. package/fesm2022/ngstarter-ui-components-country-select.mjs +489 -0
  85. package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -0
  86. package/fesm2022/ngstarter-ui-components-crop.mjs +183 -0
  87. package/fesm2022/ngstarter-ui-components-crop.mjs.map +1 -0
  88. package/fesm2022/ngstarter-ui-components-currency-select.mjs +397 -0
  89. package/fesm2022/ngstarter-ui-components-currency-select.mjs.map +1 -0
  90. package/fesm2022/ngstarter-ui-components-data-view.mjs +1494 -0
  91. package/fesm2022/ngstarter-ui-components-data-view.mjs.map +1 -0
  92. package/fesm2022/ngstarter-ui-components-date-format-select.mjs +154 -0
  93. package/fesm2022/ngstarter-ui-components-date-format-select.mjs.map +1 -0
  94. package/fesm2022/ngstarter-ui-components-datepicker.mjs +1159 -0
  95. package/fesm2022/ngstarter-ui-components-datepicker.mjs.map +1 -0
  96. package/fesm2022/ngstarter-ui-components-dialog.mjs +357 -0
  97. package/fesm2022/ngstarter-ui-components-dialog.mjs.map +1 -0
  98. package/fesm2022/ngstarter-ui-components-divider.mjs +42 -0
  99. package/fesm2022/ngstarter-ui-components-divider.mjs.map +1 -0
  100. package/fesm2022/ngstarter-ui-components-drawer.mjs +132 -0
  101. package/fesm2022/ngstarter-ui-components-drawer.mjs.map +1 -0
  102. package/fesm2022/ngstarter-ui-components-emoji-picker.mjs +245 -0
  103. package/fesm2022/ngstarter-ui-components-emoji-picker.mjs.map +1 -0
  104. package/fesm2022/ngstarter-ui-components-empty-state.mjs +75 -0
  105. package/fesm2022/ngstarter-ui-components-empty-state.mjs.map +1 -0
  106. package/fesm2022/ngstarter-ui-components-expand.mjs +56 -0
  107. package/fesm2022/ngstarter-ui-components-expand.mjs.map +1 -0
  108. package/fesm2022/ngstarter-ui-components-expansion.mjs +193 -0
  109. package/fesm2022/ngstarter-ui-components-expansion.mjs.map +1 -0
  110. package/fesm2022/ngstarter-ui-components-filter-builder.mjs +333 -0
  111. package/fesm2022/ngstarter-ui-components-filter-builder.mjs.map +1 -0
  112. package/fesm2022/ngstarter-ui-components-form-field.mjs +230 -0
  113. package/fesm2022/ngstarter-ui-components-form-field.mjs.map +1 -0
  114. package/fesm2022/ngstarter-ui-components-form-renderer-autocomplete-many-field-BKQVlZHV.mjs +124 -0
  115. package/fesm2022/ngstarter-ui-components-form-renderer-autocomplete-many-field-BKQVlZHV.mjs.map +1 -0
  116. package/fesm2022/ngstarter-ui-components-form-renderer-checkbox-field-CoyKdvhV.mjs +22 -0
  117. package/fesm2022/ngstarter-ui-components-form-renderer-checkbox-field-CoyKdvhV.mjs.map +1 -0
  118. package/fesm2022/ngstarter-ui-components-form-renderer-datepicker-field-Bzc0TPO9.mjs +44 -0
  119. package/fesm2022/ngstarter-ui-components-form-renderer-datepicker-field-Bzc0TPO9.mjs.map +1 -0
  120. package/fesm2022/ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs +17 -0
  121. package/fesm2022/ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs.map +1 -0
  122. package/fesm2022/ngstarter-ui-components-form-renderer-image-content-ICTwkZPa.mjs +17 -0
  123. package/fesm2022/ngstarter-ui-components-form-renderer-image-content-ICTwkZPa.mjs.map +1 -0
  124. package/fesm2022/ngstarter-ui-components-form-renderer-input-field-RYxi-Mpw.mjs +35 -0
  125. package/fesm2022/ngstarter-ui-components-form-renderer-input-field-RYxi-Mpw.mjs.map +1 -0
  126. package/fesm2022/ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs +38 -0
  127. package/fesm2022/ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs.map +1 -0
  128. package/fesm2022/ngstarter-ui-components-form-renderer-select-field-eLcwI-BY.mjs +39 -0
  129. package/fesm2022/ngstarter-ui-components-form-renderer-select-field-eLcwI-BY.mjs.map +1 -0
  130. package/fesm2022/ngstarter-ui-components-form-renderer-text-content-BjzH_M3-.mjs +24 -0
  131. package/fesm2022/ngstarter-ui-components-form-renderer-text-content-BjzH_M3-.mjs.map +1 -0
  132. package/fesm2022/ngstarter-ui-components-form-renderer-textarea-field-4zH7FTQ1.mjs +37 -0
  133. package/fesm2022/ngstarter-ui-components-form-renderer-textarea-field-4zH7FTQ1.mjs.map +1 -0
  134. package/fesm2022/ngstarter-ui-components-form-renderer-timezone-field-BpH65Hd-.mjs +35 -0
  135. package/fesm2022/ngstarter-ui-components-form-renderer-timezone-field-BpH65Hd-.mjs.map +1 -0
  136. package/fesm2022/ngstarter-ui-components-form-renderer-toggle-field-iyqUrWxt.mjs +22 -0
  137. package/fesm2022/ngstarter-ui-components-form-renderer-toggle-field-iyqUrWxt.mjs.map +1 -0
  138. package/fesm2022/ngstarter-ui-components-form-renderer.mjs +317 -0
  139. package/fesm2022/ngstarter-ui-components-form-renderer.mjs.map +1 -0
  140. package/fesm2022/ngstarter-ui-components-gauge.mjs +44 -0
  141. package/fesm2022/ngstarter-ui-components-gauge.mjs.map +1 -0
  142. package/fesm2022/ngstarter-ui-components-grid.mjs +78 -0
  143. package/fesm2022/ngstarter-ui-components-grid.mjs.map +1 -0
  144. package/fesm2022/ngstarter-ui-components-guided-tour.mjs +736 -0
  145. package/fesm2022/ngstarter-ui-components-guided-tour.mjs.map +1 -0
  146. package/fesm2022/ngstarter-ui-components-headless-stepper.mjs +192 -0
  147. package/fesm2022/ngstarter-ui-components-headless-stepper.mjs.map +1 -0
  148. package/fesm2022/ngstarter-ui-components-icon.mjs +61 -0
  149. package/fesm2022/ngstarter-ui-components-icon.mjs.map +1 -0
  150. package/fesm2022/ngstarter-ui-components-image-designer.mjs +4016 -0
  151. package/fesm2022/ngstarter-ui-components-image-designer.mjs.map +1 -0
  152. package/fesm2022/ngstarter-ui-components-image-placeholder.mjs +20 -0
  153. package/fesm2022/ngstarter-ui-components-image-placeholder.mjs.map +1 -0
  154. package/fesm2022/ngstarter-ui-components-image-resizer.mjs +151 -0
  155. package/fesm2022/ngstarter-ui-components-image-resizer.mjs.map +1 -0
  156. package/fesm2022/ngstarter-ui-components-image-viewer.mjs +349 -0
  157. package/fesm2022/ngstarter-ui-components-image-viewer.mjs.map +1 -0
  158. package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs +162 -0
  159. package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs.map +1 -0
  160. package/fesm2022/ngstarter-ui-components-incidents.mjs +257 -0
  161. package/fesm2022/ngstarter-ui-components-incidents.mjs.map +1 -0
  162. package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs +179 -0
  163. package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs.map +1 -0
  164. package/fesm2022/ngstarter-ui-components-input-mask.mjs +180 -0
  165. package/fesm2022/ngstarter-ui-components-input-mask.mjs.map +1 -0
  166. package/fesm2022/ngstarter-ui-components-input-validator.mjs +24 -0
  167. package/fesm2022/ngstarter-ui-components-input-validator.mjs.map +1 -0
  168. package/fesm2022/ngstarter-ui-components-input.mjs +152 -0
  169. package/fesm2022/ngstarter-ui-components-input.mjs.map +1 -0
  170. package/fesm2022/ngstarter-ui-components-kanban-board.mjs +156 -0
  171. package/fesm2022/ngstarter-ui-components-kanban-board.mjs.map +1 -0
  172. package/fesm2022/ngstarter-ui-components-kbd.mjs +31 -0
  173. package/fesm2022/ngstarter-ui-components-kbd.mjs.map +1 -0
  174. package/fesm2022/ngstarter-ui-components-layout.mjs +199 -0
  175. package/fesm2022/ngstarter-ui-components-layout.mjs.map +1 -0
  176. package/fesm2022/ngstarter-ui-components-list.mjs +279 -0
  177. package/fesm2022/ngstarter-ui-components-list.mjs.map +1 -0
  178. package/fesm2022/ngstarter-ui-components-logo.mjs +51 -0
  179. package/fesm2022/ngstarter-ui-components-logo.mjs.map +1 -0
  180. package/fesm2022/ngstarter-ui-components-marquee.mjs +76 -0
  181. package/fesm2022/ngstarter-ui-components-marquee.mjs.map +1 -0
  182. package/fesm2022/ngstarter-ui-components-menu.mjs +851 -0
  183. package/fesm2022/ngstarter-ui-components-menu.mjs.map +1 -0
  184. package/fesm2022/ngstarter-ui-components-micro-chart.mjs +928 -0
  185. package/fesm2022/ngstarter-ui-components-micro-chart.mjs.map +1 -0
  186. package/fesm2022/ngstarter-ui-components-navigation.mjs +439 -0
  187. package/fesm2022/ngstarter-ui-components-navigation.mjs.map +1 -0
  188. package/fesm2022/ngstarter-ui-components-notifications.mjs +181 -0
  189. package/fesm2022/ngstarter-ui-components-notifications.mjs.map +1 -0
  190. package/fesm2022/ngstarter-ui-components-number-input.mjs +293 -0
  191. package/fesm2022/ngstarter-ui-components-number-input.mjs.map +1 -0
  192. package/fesm2022/ngstarter-ui-components-option.mjs +157 -0
  193. package/fesm2022/ngstarter-ui-components-option.mjs.map +1 -0
  194. package/fesm2022/ngstarter-ui-components-overlay.mjs +112 -0
  195. package/fesm2022/ngstarter-ui-components-overlay.mjs.map +1 -0
  196. package/fesm2022/ngstarter-ui-components-page-loading-bar.mjs +77 -0
  197. package/fesm2022/ngstarter-ui-components-page-loading-bar.mjs.map +1 -0
  198. package/fesm2022/ngstarter-ui-components-paginator.mjs +297 -0
  199. package/fesm2022/ngstarter-ui-components-paginator.mjs.map +1 -0
  200. package/fesm2022/ngstarter-ui-components-panel.mjs +123 -0
  201. package/fesm2022/ngstarter-ui-components-panel.mjs.map +1 -0
  202. package/fesm2022/ngstarter-ui-components-password-strength.mjs +335 -0
  203. package/fesm2022/ngstarter-ui-components-password-strength.mjs.map +1 -0
  204. package/fesm2022/ngstarter-ui-components-phone-input.mjs +651 -0
  205. package/fesm2022/ngstarter-ui-components-phone-input.mjs.map +1 -0
  206. package/fesm2022/ngstarter-ui-components-pin-input.mjs +193 -0
  207. package/fesm2022/ngstarter-ui-components-pin-input.mjs.map +1 -0
  208. package/fesm2022/ngstarter-ui-components-popover.mjs +302 -0
  209. package/fesm2022/ngstarter-ui-components-popover.mjs.map +1 -0
  210. package/fesm2022/ngstarter-ui-components-progress-bar.mjs +68 -0
  211. package/fesm2022/ngstarter-ui-components-progress-bar.mjs.map +1 -0
  212. package/fesm2022/ngstarter-ui-components-radio-card.mjs +102 -0
  213. package/fesm2022/ngstarter-ui-components-radio-card.mjs.map +1 -0
  214. package/fesm2022/ngstarter-ui-components-radio.mjs +147 -0
  215. package/fesm2022/ngstarter-ui-components-radio.mjs.map +1 -0
  216. package/fesm2022/ngstarter-ui-components-rail-nav.mjs +87 -0
  217. package/fesm2022/ngstarter-ui-components-rail-nav.mjs.map +1 -0
  218. package/fesm2022/ngstarter-ui-components-resizable-container.mjs +74 -0
  219. package/fesm2022/ngstarter-ui-components-resizable-container.mjs.map +1 -0
  220. package/fesm2022/ngstarter-ui-components-screen-loader.mjs +95 -0
  221. package/fesm2022/ngstarter-ui-components-screen-loader.mjs.map +1 -0
  222. package/fesm2022/ngstarter-ui-components-scroll-spy.mjs +219 -0
  223. package/fesm2022/ngstarter-ui-components-scroll-spy.mjs.map +1 -0
  224. package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs +459 -0
  225. package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs.map +1 -0
  226. package/fesm2022/ngstarter-ui-components-segmented.mjs +218 -0
  227. package/fesm2022/ngstarter-ui-components-segmented.mjs.map +1 -0
  228. package/fesm2022/ngstarter-ui-components-select.mjs +496 -0
  229. package/fesm2022/ngstarter-ui-components-select.mjs.map +1 -0
  230. package/fesm2022/ngstarter-ui-components-side-panel.mjs +107 -0
  231. package/fesm2022/ngstarter-ui-components-side-panel.mjs.map +1 -0
  232. package/fesm2022/ngstarter-ui-components-sidebar.mjs +435 -0
  233. package/fesm2022/ngstarter-ui-components-sidebar.mjs.map +1 -0
  234. package/fesm2022/ngstarter-ui-components-sidenav.mjs +354 -0
  235. package/fesm2022/ngstarter-ui-components-sidenav.mjs.map +1 -0
  236. package/fesm2022/ngstarter-ui-components-signature-pad.mjs +452 -0
  237. package/fesm2022/ngstarter-ui-components-signature-pad.mjs.map +1 -0
  238. package/fesm2022/ngstarter-ui-components-skeleton.mjs +22 -0
  239. package/fesm2022/ngstarter-ui-components-skeleton.mjs.map +1 -0
  240. package/fesm2022/ngstarter-ui-components-slide-toggle.mjs +93 -0
  241. package/fesm2022/ngstarter-ui-components-slide-toggle.mjs.map +1 -0
  242. package/fesm2022/ngstarter-ui-components-slider.mjs +481 -0
  243. package/fesm2022/ngstarter-ui-components-slider.mjs.map +1 -0
  244. package/fesm2022/ngstarter-ui-components-snack-bar.mjs +354 -0
  245. package/fesm2022/ngstarter-ui-components-snack-bar.mjs.map +1 -0
  246. package/fesm2022/ngstarter-ui-components-sort.mjs +140 -0
  247. package/fesm2022/ngstarter-ui-components-sort.mjs.map +1 -0
  248. package/fesm2022/ngstarter-ui-components-spinner.mjs +75 -0
  249. package/fesm2022/ngstarter-ui-components-spinner.mjs.map +1 -0
  250. package/fesm2022/ngstarter-ui-components-splash-screen.mjs +93 -0
  251. package/fesm2022/ngstarter-ui-components-splash-screen.mjs.map +1 -0
  252. package/fesm2022/ngstarter-ui-components-split.mjs +948 -0
  253. package/fesm2022/ngstarter-ui-components-split.mjs.map +1 -0
  254. package/fesm2022/ngstarter-ui-components-stepper.mjs +103 -0
  255. package/fesm2022/ngstarter-ui-components-stepper.mjs.map +1 -0
  256. package/fesm2022/ngstarter-ui-components-suggestions.mjs +72 -0
  257. package/fesm2022/ngstarter-ui-components-suggestions.mjs.map +1 -0
  258. package/fesm2022/ngstarter-ui-components-tab-panel.mjs +265 -0
  259. package/fesm2022/ngstarter-ui-components-tab-panel.mjs.map +1 -0
  260. package/fesm2022/ngstarter-ui-components-table.mjs +648 -0
  261. package/fesm2022/ngstarter-ui-components-table.mjs.map +1 -0
  262. package/fesm2022/ngstarter-ui-components-tabs.mjs +591 -0
  263. package/fesm2022/ngstarter-ui-components-tabs.mjs.map +1 -0
  264. package/fesm2022/ngstarter-ui-components-text-editor.mjs +1012 -0
  265. package/fesm2022/ngstarter-ui-components-text-editor.mjs.map +1 -0
  266. package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs +212 -0
  267. package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs.map +1 -0
  268. package/fesm2022/ngstarter-ui-components-tiles.mjs +634 -0
  269. package/fesm2022/ngstarter-ui-components-tiles.mjs.map +1 -0
  270. package/fesm2022/ngstarter-ui-components-timeline.mjs +122 -0
  271. package/fesm2022/ngstarter-ui-components-timeline.mjs.map +1 -0
  272. package/fesm2022/ngstarter-ui-components-timepicker.mjs +486 -0
  273. package/fesm2022/ngstarter-ui-components-timepicker.mjs.map +1 -0
  274. package/fesm2022/ngstarter-ui-components-timezone-select.mjs +371 -0
  275. package/fesm2022/ngstarter-ui-components-timezone-select.mjs.map +1 -0
  276. package/fesm2022/ngstarter-ui-components-toolbar.mjs +299 -0
  277. package/fesm2022/ngstarter-ui-components-toolbar.mjs.map +1 -0
  278. package/fesm2022/ngstarter-ui-components-tooltip.mjs +506 -0
  279. package/fesm2022/ngstarter-ui-components-tooltip.mjs.map +1 -0
  280. package/fesm2022/ngstarter-ui-components-tree.mjs +200 -0
  281. package/fesm2022/ngstarter-ui-components-tree.mjs.map +1 -0
  282. package/fesm2022/ngstarter-ui-components-upload.mjs +330 -0
  283. package/fesm2022/ngstarter-ui-components-upload.mjs.map +1 -0
  284. package/fesm2022/ngstarter-ui-components-video-player.mjs +516 -0
  285. package/fesm2022/ngstarter-ui-components-video-player.mjs.map +1 -0
  286. package/fesm2022/ngstarter-ui-components-video-viewer.mjs +218 -0
  287. package/fesm2022/ngstarter-ui-components-video-viewer.mjs.map +1 -0
  288. package/fesm2022/ngstarter-ui-components-visual-builder.mjs +18 -0
  289. package/fesm2022/ngstarter-ui-components-visual-builder.mjs.map +1 -0
  290. package/fesm2022/ngstarter-ui-components.mjs +6 -0
  291. package/fesm2022/ngstarter-ui-components.mjs.map +1 -0
  292. package/package.json +535 -0
  293. package/styles/_common.scss +456 -0
  294. package/styles/_global.scss +91 -0
  295. package/styles/themes/default.scss +2 -0
  296. package/types/ngstarter-ui-components-action-required.d.ts +14 -0
  297. package/types/ngstarter-ui-components-alert.d.ts +50 -0
  298. package/types/ngstarter-ui-components-announcement.d.ts +59 -0
  299. package/types/ngstarter-ui-components-autocomplete.d.ts +83 -0
  300. package/types/ngstarter-ui-components-avatar.d.ts +69 -0
  301. package/types/ngstarter-ui-components-badge.d.ts +38 -0
  302. package/types/ngstarter-ui-components-block-loader.d.ts +21 -0
  303. package/types/ngstarter-ui-components-bottom-sheet.d.ts +149 -0
  304. package/types/ngstarter-ui-components-breadcrumbs.d.ts +104 -0
  305. package/types/ngstarter-ui-components-button-toggle.d.ts +54 -0
  306. package/types/ngstarter-ui-components-button.d.ts +27 -0
  307. package/types/ngstarter-ui-components-card-overlay.d.ts +20 -0
  308. package/types/ngstarter-ui-components-card.d.ts +85 -0
  309. package/types/ngstarter-ui-components-carousel.d.ts +76 -0
  310. package/types/ngstarter-ui-components-checkbox.d.ts +94 -0
  311. package/types/ngstarter-ui-components-chips.d.ts +189 -0
  312. package/types/ngstarter-ui-components-code-highlighter.d.ts +28 -0
  313. package/types/ngstarter-ui-components-color-picker.d.ts +92 -0
  314. package/types/ngstarter-ui-components-color-scheme.d.ts +44 -0
  315. package/types/ngstarter-ui-components-color-switcher.d.ts +26 -0
  316. package/types/ngstarter-ui-components-command-bar.d.ts +28 -0
  317. package/types/ngstarter-ui-components-comment-editor.d.ts +194 -0
  318. package/types/ngstarter-ui-components-comparison-slider.d.ts +42 -0
  319. package/types/ngstarter-ui-components-confirm.d.ts +34 -0
  320. package/types/ngstarter-ui-components-content-editor.d.ts +321 -0
  321. package/types/ngstarter-ui-components-content-fade.d.ts +17 -0
  322. package/types/ngstarter-ui-components-cookie-popup.d.ts +41 -0
  323. package/types/ngstarter-ui-components-core.d.ts +421 -0
  324. package/types/ngstarter-ui-components-country-select.d.ts +78 -0
  325. package/types/ngstarter-ui-components-crop.d.ts +59 -0
  326. package/types/ngstarter-ui-components-currency-select.d.ts +82 -0
  327. package/types/ngstarter-ui-components-data-view.d.ts +391 -0
  328. package/types/ngstarter-ui-components-date-format-select.d.ts +59 -0
  329. package/types/ngstarter-ui-components-datepicker.d.ts +384 -0
  330. package/types/ngstarter-ui-components-dialog.d.ts +115 -0
  331. package/types/ngstarter-ui-components-divider.d.ts +18 -0
  332. package/types/ngstarter-ui-components-drawer.d.ts +32 -0
  333. package/types/ngstarter-ui-components-emoji-picker.d.ts +49 -0
  334. package/types/ngstarter-ui-components-empty-state.d.ts +33 -0
  335. package/types/ngstarter-ui-components-expand.d.ts +26 -0
  336. package/types/ngstarter-ui-components-expansion.d.ts +68 -0
  337. package/types/ngstarter-ui-components-filter-builder.d.ts +106 -0
  338. package/types/ngstarter-ui-components-form-field.d.ts +107 -0
  339. package/types/ngstarter-ui-components-form-renderer.d.ts +121 -0
  340. package/types/ngstarter-ui-components-gauge.d.ts +21 -0
  341. package/types/ngstarter-ui-components-grid.d.ts +45 -0
  342. package/types/ngstarter-ui-components-guided-tour.d.ts +227 -0
  343. package/types/ngstarter-ui-components-headless-stepper.d.ts +65 -0
  344. package/types/ngstarter-ui-components-icon.d.ts +17 -0
  345. package/types/ngstarter-ui-components-image-designer.d.ts +357 -0
  346. package/types/ngstarter-ui-components-image-placeholder.d.ts +8 -0
  347. package/types/ngstarter-ui-components-image-resizer.d.ts +35 -0
  348. package/types/ngstarter-ui-components-image-viewer.d.ts +63 -0
  349. package/types/ngstarter-ui-components-image-zoom-viewer.d.ts +34 -0
  350. package/types/ngstarter-ui-components-incidents.d.ts +119 -0
  351. package/types/ngstarter-ui-components-inline-text-edit.d.ts +39 -0
  352. package/types/ngstarter-ui-components-input-mask.d.ts +36 -0
  353. package/types/ngstarter-ui-components-input-validator.d.ts +5 -0
  354. package/types/ngstarter-ui-components-input.d.ts +53 -0
  355. package/types/ngstarter-ui-components-kanban-board.d.ts +68 -0
  356. package/types/ngstarter-ui-components-kbd.d.ts +13 -0
  357. package/types/ngstarter-ui-components-layout.d.ts +83 -0
  358. package/types/ngstarter-ui-components-list.d.ts +98 -0
  359. package/types/ngstarter-ui-components-logo.d.ts +26 -0
  360. package/types/ngstarter-ui-components-marquee.d.ts +27 -0
  361. package/types/ngstarter-ui-components-menu.d.ts +199 -0
  362. package/types/ngstarter-ui-components-micro-chart.d.ts +195 -0
  363. package/types/ngstarter-ui-components-navigation.d.ts +136 -0
  364. package/types/ngstarter-ui-components-notifications.d.ts +84 -0
  365. package/types/ngstarter-ui-components-number-input.d.ts +99 -0
  366. package/types/ngstarter-ui-components-option.d.ts +61 -0
  367. package/types/ngstarter-ui-components-overlay.d.ts +12 -0
  368. package/types/ngstarter-ui-components-page-loading-bar.d.ts +20 -0
  369. package/types/ngstarter-ui-components-paginator.d.ts +145 -0
  370. package/types/ngstarter-ui-components-panel.d.ts +59 -0
  371. package/types/ngstarter-ui-components-password-strength.d.ts +109 -0
  372. package/types/ngstarter-ui-components-phone-input.d.ts +103 -0
  373. package/types/ngstarter-ui-components-pin-input.d.ts +48 -0
  374. package/types/ngstarter-ui-components-popover.d.ts +94 -0
  375. package/types/ngstarter-ui-components-progress-bar.d.ts +30 -0
  376. package/types/ngstarter-ui-components-radio-card.d.ts +37 -0
  377. package/types/ngstarter-ui-components-radio.d.ts +45 -0
  378. package/types/ngstarter-ui-components-rail-nav.d.ts +36 -0
  379. package/types/ngstarter-ui-components-resizable-container.d.ts +25 -0
  380. package/types/ngstarter-ui-components-screen-loader.d.ts +34 -0
  381. package/types/ngstarter-ui-components-scroll-spy.d.ts +63 -0
  382. package/types/ngstarter-ui-components-scrollbar-area.d.ts +67 -0
  383. package/types/ngstarter-ui-components-segmented.d.ts +65 -0
  384. package/types/ngstarter-ui-components-select.d.ts +126 -0
  385. package/types/ngstarter-ui-components-side-panel.d.ts +42 -0
  386. package/types/ngstarter-ui-components-sidebar.d.ts +143 -0
  387. package/types/ngstarter-ui-components-sidenav.d.ts +86 -0
  388. package/types/ngstarter-ui-components-signature-pad.d.ts +49 -0
  389. package/types/ngstarter-ui-components-skeleton.d.ts +9 -0
  390. package/types/ngstarter-ui-components-slide-toggle.d.ts +41 -0
  391. package/types/ngstarter-ui-components-slider.d.ts +85 -0
  392. package/types/ngstarter-ui-components-snack-bar.d.ts +142 -0
  393. package/types/ngstarter-ui-components-sort.d.ts +66 -0
  394. package/types/ngstarter-ui-components-spinner.d.ts +28 -0
  395. package/types/ngstarter-ui-components-splash-screen.d.ts +31 -0
  396. package/types/ngstarter-ui-components-split.d.ts +210 -0
  397. package/types/ngstarter-ui-components-stepper.d.ts +44 -0
  398. package/types/ngstarter-ui-components-suggestions.d.ts +32 -0
  399. package/types/ngstarter-ui-components-tab-panel.d.ts +96 -0
  400. package/types/ngstarter-ui-components-table.d.ts +277 -0
  401. package/types/ngstarter-ui-components-tabs.d.ts +145 -0
  402. package/types/ngstarter-ui-components-text-editor.d.ts +191 -0
  403. package/types/ngstarter-ui-components-thumbnail-maker.d.ts +35 -0
  404. package/types/ngstarter-ui-components-tiles.d.ts +109 -0
  405. package/types/ngstarter-ui-components-timeline.d.ts +57 -0
  406. package/types/ngstarter-ui-components-timepicker.d.ts +115 -0
  407. package/types/ngstarter-ui-components-timezone-select.d.ts +75 -0
  408. package/types/ngstarter-ui-components-toolbar.d.ts +74 -0
  409. package/types/ngstarter-ui-components-tooltip.d.ts +52 -0
  410. package/types/ngstarter-ui-components-tree.d.ts +60 -0
  411. package/types/ngstarter-ui-components-upload.d.ts +134 -0
  412. package/types/ngstarter-ui-components-video-player.d.ts +67 -0
  413. package/types/ngstarter-ui-components-video-viewer.d.ts +98 -0
  414. package/types/ngstarter-ui-components-visual-builder.d.ts +8 -0
  415. package/types/ngstarter-ui-components.d.ts +2 -0
@@ -0,0 +1,230 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, Injectable, input, Directive, InjectionToken, booleanAttribute, inject, ElementRef, viewChild, contentChild, contentChildren, computed, HostListener } from '@angular/core';
3
+
4
+ class Label {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Label, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: Label, isStandalone: true, selector: "ngs-label", host: { classAttribute: "ngs-label" }, ngImport: i0, template: "<ng-content/>\n", styles: [":host{display:inline-block}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Label, decorators: [{
9
+ type: Component,
10
+ args: [{ selector: 'ngs-label', host: {
11
+ 'class': 'ngs-label',
12
+ }, template: "<ng-content/>\n", styles: [":host{display:inline-block}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
13
+ }] });
14
+
15
+ class FormFieldControl {
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FormFieldControl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FormFieldControl });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FormFieldControl, decorators: [{
20
+ type: Injectable
21
+ }] });
22
+
23
+ class Hint {
24
+ align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Hint, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: Hint, isStandalone: true, selector: "ngs-hint", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ngs-hint-end": "align() === \"end\"" }, classAttribute: "ngs-hint" }, ngImport: i0, template: "<ng-content />\n", styles: [":host{display:block}:host.ngs-hint-end{margin-left:auto}\n"] });
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Hint, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'ngs-hint', standalone: true, host: {
31
+ 'class': 'ngs-hint',
32
+ '[class.ngs-hint-end]': 'align() === "end"',
33
+ }, template: "<ng-content />\n", styles: [":host{display:block}:host.ngs-hint-end{margin-left:auto}\n"] }]
34
+ }], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }] } });
35
+
36
+ class Error {
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Error, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: Error, isStandalone: true, selector: "ngs-error", host: { attributes: { "role": "alert" }, classAttribute: "ngs-error" }, ngImport: i0, template: "<ng-content />\n", styles: [":host{display:block;color:var(--ngs-form-field-error-color, var(--input-error))}\n"] });
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Error, decorators: [{
41
+ type: Component,
42
+ args: [{ selector: 'ngs-error', standalone: true, host: {
43
+ 'class': 'ngs-error',
44
+ 'role': 'alert',
45
+ }, template: "<ng-content />\n", styles: [":host{display:block;color:var(--ngs-form-field-error-color, var(--input-error))}\n"] }]
46
+ }] });
47
+
48
+ class Prefix {
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Prefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
50
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: Prefix, isStandalone: true, selector: "[ngsPrefix]", ngImport: i0 });
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Prefix, decorators: [{
53
+ type: Directive,
54
+ args: [{
55
+ selector: '[ngsPrefix]',
56
+ }]
57
+ }] });
58
+ class TextPrefix {
59
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TextPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
60
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: TextPrefix, isStandalone: true, selector: "[ngsTextPrefix]", ngImport: i0 });
61
+ }
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TextPrefix, decorators: [{
63
+ type: Directive,
64
+ args: [{
65
+ selector: '[ngsTextPrefix]',
66
+ }]
67
+ }] });
68
+ class IconPrefix {
69
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IconPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
70
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: IconPrefix, isStandalone: true, selector: "[ngsIconPrefix]", ngImport: i0 });
71
+ }
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IconPrefix, decorators: [{
73
+ type: Directive,
74
+ args: [{
75
+ selector: '[ngsIconPrefix]',
76
+ }]
77
+ }] });
78
+ class IconButtonPrefix {
79
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IconButtonPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
80
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: IconButtonPrefix, isStandalone: true, selector: "[ngsIconButtonPrefix]", ngImport: i0 });
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IconButtonPrefix, decorators: [{
83
+ type: Directive,
84
+ args: [{
85
+ selector: '[ngsIconButtonPrefix]',
86
+ }]
87
+ }] });
88
+ class Suffix {
89
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Suffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
90
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: Suffix, isStandalone: true, selector: "[ngsSuffix]", ngImport: i0 });
91
+ }
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Suffix, decorators: [{
93
+ type: Directive,
94
+ args: [{
95
+ selector: '[ngsSuffix]',
96
+ }]
97
+ }] });
98
+ class TextSuffix {
99
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TextSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
100
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: TextSuffix, isStandalone: true, selector: "[ngsTextSuffix]", ngImport: i0 });
101
+ }
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TextSuffix, decorators: [{
103
+ type: Directive,
104
+ args: [{
105
+ selector: '[ngsTextSuffix]',
106
+ }]
107
+ }] });
108
+ class IconSuffix {
109
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IconSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
110
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: IconSuffix, isStandalone: true, selector: "[ngsIconSuffix]", ngImport: i0 });
111
+ }
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IconSuffix, decorators: [{
113
+ type: Directive,
114
+ args: [{
115
+ selector: '[ngsIconSuffix]',
116
+ }]
117
+ }] });
118
+ class IconButtonSuffix {
119
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IconButtonSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
120
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: IconButtonSuffix, isStandalone: true, selector: "[ngsIconButtonSuffix]", ngImport: i0 });
121
+ }
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IconButtonSuffix, decorators: [{
123
+ type: Directive,
124
+ args: [{
125
+ selector: '[ngsIconButtonSuffix]',
126
+ }]
127
+ }] });
128
+
129
+ const FORM_FIELD = new InjectionToken('FORM_FIELD');
130
+
131
+ class FormField {
132
+ subscriptHiddenIfEmpty = input(false, { ...(ngDevMode ? { debugName: "subscriptHiddenIfEmpty" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
133
+ elementRef = inject(ElementRef);
134
+ wrapper = viewChild.required('wrapper');
135
+ container = viewChild.required('container');
136
+ control = contentChild(FormFieldControl, ...(ngDevMode ? [{ debugName: "control" }] : /* istanbul ignore next */ []));
137
+ labelChild = contentChild(Label, ...(ngDevMode ? [{ debugName: "labelChild" }] : /* istanbul ignore next */ []));
138
+ prefixChildren = contentChildren(Prefix, ...(ngDevMode ? [{ debugName: "prefixChildren" }] : /* istanbul ignore next */ []));
139
+ iconPrefixChildren = contentChildren(IconPrefix, ...(ngDevMode ? [{ debugName: "iconPrefixChildren" }] : /* istanbul ignore next */ []));
140
+ iconButtonPrefixChildren = contentChildren(IconButtonPrefix, ...(ngDevMode ? [{ debugName: "iconButtonPrefixChildren" }] : /* istanbul ignore next */ []));
141
+ textPrefixChildren = contentChildren(TextPrefix, ...(ngDevMode ? [{ debugName: "textPrefixChildren" }] : /* istanbul ignore next */ []));
142
+ suffixChildren = contentChildren(Suffix, ...(ngDevMode ? [{ debugName: "suffixChildren" }] : /* istanbul ignore next */ []));
143
+ iconSuffixChildren = contentChildren(IconSuffix, ...(ngDevMode ? [{ debugName: "iconSuffixChildren" }] : /* istanbul ignore next */ []));
144
+ iconButtonSuffixChildren = contentChildren(IconButtonSuffix, ...(ngDevMode ? [{ debugName: "iconButtonSuffixChildren" }] : /* istanbul ignore next */ []));
145
+ textSuffixChildren = contentChildren(TextSuffix, ...(ngDevMode ? [{ debugName: "textSuffixChildren" }] : /* istanbul ignore next */ []));
146
+ hintChildren = contentChildren(Hint, ...(ngDevMode ? [{ debugName: "hintChildren" }] : /* istanbul ignore next */ []));
147
+ errorChildren = contentChildren(Error, ...(ngDevMode ? [{ debugName: "errorChildren" }] : /* istanbul ignore next */ []));
148
+ isRequired = computed(() => {
149
+ const control = this.control();
150
+ if (!control) {
151
+ return false;
152
+ }
153
+ if (control.required) {
154
+ return true;
155
+ }
156
+ const ngControl = control.ngControl;
157
+ if (ngControl && ngControl.control && ngControl.control.validator) {
158
+ const validator = ngControl.control.validator({});
159
+ if (validator && validator['required']) {
160
+ return true;
161
+ }
162
+ }
163
+ return false;
164
+ }, ...(ngDevMode ? [{ debugName: "isRequired" }] : /* istanbul ignore next */ []));
165
+ shouldLabelFloat() {
166
+ return !!this.control()?.shouldLabelFloat;
167
+ }
168
+ _onClick(event) {
169
+ const target = event.target;
170
+ const wrapper = this.wrapper().nativeElement;
171
+ const isInsideWrapper = wrapper.contains(target);
172
+ if (!isInsideWrapper) {
173
+ return;
174
+ }
175
+ const isIconButton = !!target.closest('.ngs-icon-button') || !!target.closest('[ngsIconButton]');
176
+ const isToggle = !!target.closest('ngs-datepicker-toggle') || !!target.closest('ngs-date-range-picker');
177
+ if (this.control()?.focused || isIconButton || isToggle) {
178
+ return;
179
+ }
180
+ this.focus();
181
+ event.stopPropagation();
182
+ }
183
+ focus() {
184
+ const control = this.control();
185
+ if (control && !control.disabled) {
186
+ control.focus();
187
+ }
188
+ }
189
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FormField, deps: [], target: i0.ɵɵFactoryTarget.Component });
190
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: FormField, isStandalone: true, selector: "ngs-form-field", inputs: { subscriptHiddenIfEmpty: { classPropertyName: "subscriptHiddenIfEmpty", publicName: "subscriptHiddenIfEmpty", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick($event)" }, properties: { "class.ngs-form-field-disabled": "control()?.disabled", "class.ngs-form-field-invalid": "control()?.errorState", "class.ngs-form-field-should-float": "shouldLabelFloat()", "class.ngs-form-field-has-label": "labelChild()", "class.ngs-form-field-empty": "control()?.empty", "class.ngs-form-field-focused": "control()?.focused", "class.ngs-form-field-subscript-hidden-if-empty": "subscriptHiddenIfEmpty()", "class.ngs-form-field-has-icon-prefix": "iconPrefixChildren().length > 0", "class.ngs-form-field-has-icon-button-prefix": "iconButtonPrefixChildren().length > 0", "class.ngs-form-field-has-icon-suffix": "iconSuffixChildren().length > 0", "class.ngs-form-field-has-icon-button-suffix": "iconButtonSuffixChildren().length > 0" }, classAttribute: "ngs-form-field" }, providers: [
191
+ {
192
+ provide: FORM_FIELD,
193
+ useExisting: FormField
194
+ }
195
+ ], queries: [{ propertyName: "control", first: true, predicate: FormFieldControl, descendants: true, isSignal: true }, { propertyName: "labelChild", first: true, predicate: Label, descendants: true, isSignal: true }, { propertyName: "prefixChildren", predicate: Prefix, isSignal: true }, { propertyName: "iconPrefixChildren", predicate: IconPrefix, isSignal: true }, { propertyName: "iconButtonPrefixChildren", predicate: IconButtonPrefix, isSignal: true }, { propertyName: "textPrefixChildren", predicate: TextPrefix, isSignal: true }, { propertyName: "suffixChildren", predicate: Suffix, isSignal: true }, { propertyName: "iconSuffixChildren", predicate: IconSuffix, isSignal: true }, { propertyName: "iconButtonSuffixChildren", predicate: IconButtonSuffix, isSignal: true }, { propertyName: "textSuffixChildren", predicate: TextSuffix, isSignal: true }, { propertyName: "hintChildren", predicate: Hint, isSignal: true }, { propertyName: "errorChildren", predicate: Error, isSignal: true }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, isSignal: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], exportAs: ["ngsFormField"], ngImport: i0, template: "<div class=\"ngs-form-field-wrapper\" #wrapper>\n <div class=\"ngs-form-field-container\" #container>\n @if (prefixChildren().length > 0) {\n <div class=\"ngs-form-field-prefix\">\n <ng-content select=\"[ngsPrefix]\"/>\n </div>\n }\n\n @if (iconPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-prefix\">\n <ng-content select=\"[ngsIconPrefix]\"/>\n </div>\n }\n\n @if (iconButtonPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-button-prefix\">\n <ng-content select=\"[ngsIconButtonPrefix]\"/>\n </div>\n }\n\n @if (textPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-text-prefix\">\n <ng-content select=\"[ngsTextPrefix]\"/>\n </div>\n }\n\n <div class=\"ngs-form-field-infix\">\n @if (labelChild()) {\n <label class=\"ngs-form-field-label\" [attr.for]=\"control()?.id\">\n <ng-content select=\"ngs-label\"/>\n\n @if (isRequired()) {\n <span class=\"ngs-form-field-required-marker\">*</span>\n }\n </label>\n }\n <ng-content/>\n </div>\n\n @if (textSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-text-suffix\">\n <ng-content select=\"[ngsTextSuffix]\"/>\n </div>\n }\n\n @if (iconButtonSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-button-suffix\">\n <ng-content select=\"[ngsIconButtonSuffix]\"/>\n </div>\n }\n\n @if (iconSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-suffix\">\n <ng-content select=\"[ngsIconSuffix]\"/>\n </div>\n }\n\n @if (suffixChildren().length > 0) {\n <div class=\"ngs-form-field-suffix\">\n <ng-content select=\"[ngsSuffix]\"/>\n </div>\n }\n </div>\n</div>\n\n<div class=\"subscript-wrapper\">\n @if (control()?.errorState && errorChildren().length > 0) {\n <ng-content select=\"ngs-error\"/>\n } @else if (hintChildren().length > 0) {\n <div class=\"ngs-form-field-hint-wrapper\">\n <ng-content select=\"ngs-hint\"/>\n </div>\n }\n</div>\n", styles: [":host{--ngs-form-field-color: var(--input-color);--ngs-form-field-border-color: var(--input-border-color);--ngs-form-field-border-width: 1px;--ngs-form-field-border-radius: calc(var(--spacing, .25rem) * 3);--ngs-form-field-padding-x: .75rem;--ngs-form-field-padding-y: 1.75rem;--ngs-form-field-bg: var(--color-surface);--ngs-form-field-disabled-bg: var(--color-surface-container-low);--ngs-form-field-label-color: var(--input-label-color);--ngs-form-field-error-color: var(--input-error);--ngs-form-field-container-min-height: 50px;--ngs-form-field-infix-min-height: 50px;--ngs-form-field-infix-padding-top: 23px;--ngs-form-field-infix-padding-bottom: 8px;display:block;width:var(--ngs-form-field-width, 100%)}:host.ngs-form-field-disabled{cursor:default}:host.ngs-form-field-disabled .ngs-form-field-container{background:var(--color-on-surface);border-color:var(--color-on-surface)}@supports (color: color-mix(in lab,red,red)){:host.ngs-form-field-disabled .ngs-form-field-container{background:color-mix(in srgb,var(--color-on-surface),transparent 95%)}}@supports (color: color-mix(in lab,red,red)){:host.ngs-form-field-disabled .ngs-form-field-container{border-color:color-mix(in srgb,var(--color-on-surface),transparent 90%)}}:host.ngs-form-field-disabled .ngs-form-field-label{color:var(--color-on-surface)}@supports (color: color-mix(in lab,red,red)){:host.ngs-form-field-disabled .ngs-form-field-label{color:color-mix(in srgb,var(--color-on-surface),transparent 62%)}}:host.ngs-form-field-disabled ::ng-deep input{color:var(--color-on-surface)}@supports (color: color-mix(in lab,red,red)){:host.ngs-form-field-disabled ::ng-deep input{color:color-mix(in srgb,var(--color-on-surface),transparent 62%)}}:host.ngs-form-field-focused .ngs-form-field-container{border-color:var(--input-outlined-border-focus);box-shadow:0 0 0 1px var(--input-outlined-border-focus)}:host.ngs-form-field-focused .ngs-form-field-label{color:var(--ngs-form-field-color)}:host.ngs-form-field-invalid .ngs-form-field-container{border-color:var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid.ngs-form-field-focused .ngs-form-field-container{box-shadow:0 0 0 1px var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid .ngs-form-field-label{color:var(--ngs-form-field-error-color)}:host .ngs-form-field-wrapper{display:flex;flex-direction:column}:host .ngs-form-field-container{position:relative;border:var(--ngs-form-field-border-width) solid var(--ngs-form-field-border-color);border-radius:var(--ngs-form-field-border-radius);background:var(--ngs-form-field-bg);padding:0 var(--ngs-form-field-padding-x);transition:border-color .2s,box-shadow .2s;min-height:var(--ngs-form-field-container-min-height);display:flex;align-items:center}:host .ngs-form-field-container:has(.ngs-form-field-icon-prefix){padding-left:calc(var(--spacing, .25rem) * 2)}:host .ngs-form-field-container:has(.ngs-form-field-icon-button-prefix){padding-left:calc(var(--spacing, .25rem) * 1)}:host .ngs-form-field-container:has(.ngs-form-field-icon-suffix){padding-right:calc(var(--spacing, .25rem) * 2)}:host .ngs-form-field-container:has(.ngs-form-field-icon-button-suffix){padding-right:calc(var(--spacing, .25rem) * 1)}:host .ngs-form-field-infix{flex:1;position:relative;padding:var(--ngs-form-field-infix-padding-top) 0 var(--ngs-form-field-infix-padding-bottom) 0;min-width:0;min-height:var(--ngs-form-field-infix-min-height);display:flex;flex-direction:column;overflow:hidden}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix{padding:8px 0;display:flex;justify-content:center}:host:not(.ngs-form-field-has-label) .ngs-form-field-text-prefix,:host:not(.ngs-form-field-has-label) .ngs-form-field-text-suffix{padding:8px 0}:host .ngs-form-field-label{position:absolute;left:0;transform:translateY(-50%);top:calc(var(--ngs-form-field-container-min-height) / 2);transform-origin:left top;font-size:var(--input-font-size);color:var(--ngs-form-field-label-color);transition:transform .2s ease,font-size .2s ease,color .2s ease,top .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:flex;align-items:center;gap:.125rem;pointer-events:none;z-index:1;-webkit-user-select:none;user-select:none}:host .ngs-form-field-required-marker{color:var(--ngs-form-field-error-color)}:host.ngs-form-field-should-float .ngs-form-field-label{top:4px;font-size:var(--input-label-float-font-size);transform:translateY(0)}:host ::ng-deep input{line-height:var(--input-line-height);outline:none!important;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep textarea{min-height:22px;line-height:var(--input-line-height);outline:none!important;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep textarea[ngsTextareaAutoSize]{resize:none!important}:host ::ng-deep textarea::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep .ngs-input,:host ::ng-deep .ngs-chip-input,:host ::ng-deep .ngs-phone-input,:host ::ng-deep .ngs-number-input,:host ::ng-deep ngs-select{width:100%;border:none!important;background:transparent!important;padding:0!important;color:inherit;outline:none!important;display:block}:host ::ng-deep .ngs-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-chip-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-phone-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-number-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep ngs-select:not(textarea):not(ngs-select):not(.ngs-chip-input){height:20px}:host ::ng-deep .ngs-input::placeholder,:host ::ng-deep .ngs-chip-input::placeholder,:host ::ng-deep .ngs-phone-input::placeholder,:host ::ng-deep .ngs-number-input::placeholder,:host ::ng-deep ngs-select::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep ngs-chip-grid:empty{display:none}:host ::ng-deep ngs-chip-grid{margin:calc(var(--spacing, .25rem) * 1) 0}:host ::ng-deep .ngs-date-range-input{width:100%;border:none!important;background:transparent!important;padding:0!important;font-size:var(--input-font-size);line-height:var(--input-line-height);color:inherit;outline:none!important;display:flex;height:20px}:host ::ng-deep .ngs-date-range-input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep input{resize:none;font-size:var(--input-font-size);line-height:var(--input-line-height)}:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select .ngs-select-placeholder{opacity:0!important;color:transparent!important}:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input::placeholder{opacity:0!important;color:transparent!important}:host .ngs-form-field-prefix,:host .ngs-form-field-icon-prefix,:host .ngs-form-field-icon-button-prefix,:host .ngs-form-field-suffix,:host .ngs-form-field-icon-suffix,:host .ngs-form-field-icon-button-suffix,:host .ngs-form-field-text-prefix,:host .ngs-form-field-text-suffix{display:flex;align-items:center}:host .ngs-form-field-prefix,:host .ngs-form-field-icon-prefix,:host .ngs-form-field-icon-button-prefix,:host .ngs-form-field-text-prefix{margin-right:.5rem}:host .ngs-form-field-suffix,:host .ngs-form-field-icon-suffix,:host .ngs-form-field-icon-button-suffix,:host .ngs-form-field-text-suffix{margin-left:.5rem}:host .ngs-form-field-text-prefix,:host .ngs-form-field-text-suffix{color:var(--ngs-form-field-label-color);white-space:nowrap;font-size:var(--input-font-size);line-height:var(--input-line-height);padding-top:var(--ngs-form-field-infix-padding-top);padding-bottom:var(--ngs-form-field-infix-padding-bottom)}:host .subscript-wrapper{margin-top:.25rem;padding:0 .5rem;font-size:.75rem;min-height:calc(var(--spacing, .25rem) * 5.5)}:host.ngs-form-field-subscript-hidden-if-empty .subscript-wrapper:empty{display:none}:host .ngs-form-field-error{display:none}:host .ngs-form-field-hint-wrapper{display:flex;justify-content:space-between;color:var(--ngs-form-field-label-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
196
+ }
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FormField, decorators: [{
198
+ type: Component,
199
+ args: [{ selector: 'ngs-form-field', exportAs: 'ngsFormField', imports: [], providers: [
200
+ {
201
+ provide: FORM_FIELD,
202
+ useExisting: FormField
203
+ }
204
+ ], host: {
205
+ 'class': 'ngs-form-field',
206
+ '[class.ngs-form-field-disabled]': 'control()?.disabled',
207
+ '[class.ngs-form-field-invalid]': 'control()?.errorState',
208
+ '[class.ngs-form-field-should-float]': 'shouldLabelFloat()',
209
+ '[class.ngs-form-field-has-label]': 'labelChild()',
210
+ '[class.ngs-form-field-empty]': 'control()?.empty',
211
+ '[class.ngs-form-field-focused]': 'control()?.focused',
212
+ '[class.ngs-form-field-subscript-hidden-if-empty]': 'subscriptHiddenIfEmpty()',
213
+ '[class.ngs-form-field-has-icon-prefix]': 'iconPrefixChildren().length > 0',
214
+ '[class.ngs-form-field-has-icon-button-prefix]': 'iconButtonPrefixChildren().length > 0',
215
+ '[class.ngs-form-field-has-icon-suffix]': 'iconSuffixChildren().length > 0',
216
+ '[class.ngs-form-field-has-icon-button-suffix]': 'iconButtonSuffixChildren().length > 0',
217
+ }, template: "<div class=\"ngs-form-field-wrapper\" #wrapper>\n <div class=\"ngs-form-field-container\" #container>\n @if (prefixChildren().length > 0) {\n <div class=\"ngs-form-field-prefix\">\n <ng-content select=\"[ngsPrefix]\"/>\n </div>\n }\n\n @if (iconPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-prefix\">\n <ng-content select=\"[ngsIconPrefix]\"/>\n </div>\n }\n\n @if (iconButtonPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-button-prefix\">\n <ng-content select=\"[ngsIconButtonPrefix]\"/>\n </div>\n }\n\n @if (textPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-text-prefix\">\n <ng-content select=\"[ngsTextPrefix]\"/>\n </div>\n }\n\n <div class=\"ngs-form-field-infix\">\n @if (labelChild()) {\n <label class=\"ngs-form-field-label\" [attr.for]=\"control()?.id\">\n <ng-content select=\"ngs-label\"/>\n\n @if (isRequired()) {\n <span class=\"ngs-form-field-required-marker\">*</span>\n }\n </label>\n }\n <ng-content/>\n </div>\n\n @if (textSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-text-suffix\">\n <ng-content select=\"[ngsTextSuffix]\"/>\n </div>\n }\n\n @if (iconButtonSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-button-suffix\">\n <ng-content select=\"[ngsIconButtonSuffix]\"/>\n </div>\n }\n\n @if (iconSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-suffix\">\n <ng-content select=\"[ngsIconSuffix]\"/>\n </div>\n }\n\n @if (suffixChildren().length > 0) {\n <div class=\"ngs-form-field-suffix\">\n <ng-content select=\"[ngsSuffix]\"/>\n </div>\n }\n </div>\n</div>\n\n<div class=\"subscript-wrapper\">\n @if (control()?.errorState && errorChildren().length > 0) {\n <ng-content select=\"ngs-error\"/>\n } @else if (hintChildren().length > 0) {\n <div class=\"ngs-form-field-hint-wrapper\">\n <ng-content select=\"ngs-hint\"/>\n </div>\n }\n</div>\n", styles: [":host{--ngs-form-field-color: var(--input-color);--ngs-form-field-border-color: var(--input-border-color);--ngs-form-field-border-width: 1px;--ngs-form-field-border-radius: calc(var(--spacing, .25rem) * 3);--ngs-form-field-padding-x: .75rem;--ngs-form-field-padding-y: 1.75rem;--ngs-form-field-bg: var(--color-surface);--ngs-form-field-disabled-bg: var(--color-surface-container-low);--ngs-form-field-label-color: var(--input-label-color);--ngs-form-field-error-color: var(--input-error);--ngs-form-field-container-min-height: 50px;--ngs-form-field-infix-min-height: 50px;--ngs-form-field-infix-padding-top: 23px;--ngs-form-field-infix-padding-bottom: 8px;display:block;width:var(--ngs-form-field-width, 100%)}:host.ngs-form-field-disabled{cursor:default}:host.ngs-form-field-disabled .ngs-form-field-container{background:var(--color-on-surface);border-color:var(--color-on-surface)}@supports (color: color-mix(in lab,red,red)){:host.ngs-form-field-disabled .ngs-form-field-container{background:color-mix(in srgb,var(--color-on-surface),transparent 95%)}}@supports (color: color-mix(in lab,red,red)){:host.ngs-form-field-disabled .ngs-form-field-container{border-color:color-mix(in srgb,var(--color-on-surface),transparent 90%)}}:host.ngs-form-field-disabled .ngs-form-field-label{color:var(--color-on-surface)}@supports (color: color-mix(in lab,red,red)){:host.ngs-form-field-disabled .ngs-form-field-label{color:color-mix(in srgb,var(--color-on-surface),transparent 62%)}}:host.ngs-form-field-disabled ::ng-deep input{color:var(--color-on-surface)}@supports (color: color-mix(in lab,red,red)){:host.ngs-form-field-disabled ::ng-deep input{color:color-mix(in srgb,var(--color-on-surface),transparent 62%)}}:host.ngs-form-field-focused .ngs-form-field-container{border-color:var(--input-outlined-border-focus);box-shadow:0 0 0 1px var(--input-outlined-border-focus)}:host.ngs-form-field-focused .ngs-form-field-label{color:var(--ngs-form-field-color)}:host.ngs-form-field-invalid .ngs-form-field-container{border-color:var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid.ngs-form-field-focused .ngs-form-field-container{box-shadow:0 0 0 1px var(--ngs-form-field-error-color)}:host.ngs-form-field-invalid .ngs-form-field-label{color:var(--ngs-form-field-error-color)}:host .ngs-form-field-wrapper{display:flex;flex-direction:column}:host .ngs-form-field-container{position:relative;border:var(--ngs-form-field-border-width) solid var(--ngs-form-field-border-color);border-radius:var(--ngs-form-field-border-radius);background:var(--ngs-form-field-bg);padding:0 var(--ngs-form-field-padding-x);transition:border-color .2s,box-shadow .2s;min-height:var(--ngs-form-field-container-min-height);display:flex;align-items:center}:host .ngs-form-field-container:has(.ngs-form-field-icon-prefix){padding-left:calc(var(--spacing, .25rem) * 2)}:host .ngs-form-field-container:has(.ngs-form-field-icon-button-prefix){padding-left:calc(var(--spacing, .25rem) * 1)}:host .ngs-form-field-container:has(.ngs-form-field-icon-suffix){padding-right:calc(var(--spacing, .25rem) * 2)}:host .ngs-form-field-container:has(.ngs-form-field-icon-button-suffix){padding-right:calc(var(--spacing, .25rem) * 1)}:host .ngs-form-field-infix{flex:1;position:relative;padding:var(--ngs-form-field-infix-padding-top) 0 var(--ngs-form-field-infix-padding-bottom) 0;min-width:0;min-height:var(--ngs-form-field-infix-min-height);display:flex;flex-direction:column;overflow:hidden}:host:not(.ngs-form-field-has-label) .ngs-form-field-infix{padding:8px 0;display:flex;justify-content:center}:host:not(.ngs-form-field-has-label) .ngs-form-field-text-prefix,:host:not(.ngs-form-field-has-label) .ngs-form-field-text-suffix{padding:8px 0}:host .ngs-form-field-label{position:absolute;left:0;transform:translateY(-50%);top:calc(var(--ngs-form-field-container-min-height) / 2);transform-origin:left top;font-size:var(--input-font-size);color:var(--ngs-form-field-label-color);transition:transform .2s ease,font-size .2s ease,color .2s ease,top .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:flex;align-items:center;gap:.125rem;pointer-events:none;z-index:1;-webkit-user-select:none;user-select:none}:host .ngs-form-field-required-marker{color:var(--ngs-form-field-error-color)}:host.ngs-form-field-should-float .ngs-form-field-label{top:4px;font-size:var(--input-label-float-font-size);transform:translateY(0)}:host ::ng-deep input{line-height:var(--input-line-height);outline:none!important;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep textarea{min-height:22px;line-height:var(--input-line-height);outline:none!important;text-align:var(--ngs-form-field-input-text-align, start)}:host ::ng-deep textarea[ngsTextareaAutoSize]{resize:none!important}:host ::ng-deep textarea::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep .ngs-input,:host ::ng-deep .ngs-chip-input,:host ::ng-deep .ngs-phone-input,:host ::ng-deep .ngs-number-input,:host ::ng-deep ngs-select{width:100%;border:none!important;background:transparent!important;padding:0!important;color:inherit;outline:none!important;display:block}:host ::ng-deep .ngs-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-chip-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-phone-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep .ngs-number-input:not(textarea):not(ngs-select):not(.ngs-chip-input),:host ::ng-deep ngs-select:not(textarea):not(ngs-select):not(.ngs-chip-input){height:20px}:host ::ng-deep .ngs-input::placeholder,:host ::ng-deep .ngs-chip-input::placeholder,:host ::ng-deep .ngs-phone-input::placeholder,:host ::ng-deep .ngs-number-input::placeholder,:host ::ng-deep ngs-select::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep ngs-chip-grid:empty{display:none}:host ::ng-deep ngs-chip-grid{margin:calc(var(--spacing, .25rem) * 1) 0}:host ::ng-deep .ngs-date-range-input{width:100%;border:none!important;background:transparent!important;padding:0!important;font-size:var(--input-font-size);line-height:var(--input-line-height);color:inherit;outline:none!important;display:flex;height:20px}:host ::ng-deep .ngs-date-range-input::placeholder{color:var(--ngs-form-field-label-color);transition:opacity .2s}:host ::ng-deep input{resize:none;font-size:var(--input-font-size);line-height:var(--input-line-height)}:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-chip-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-phone-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-number-input .ngs-select-placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select::placeholder,:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep ngs-select .ngs-select-placeholder{opacity:0!important;color:transparent!important}:host.ngs-form-field-has-label:not(.ngs-form-field-should-float) ::ng-deep .ngs-date-range-input::placeholder{opacity:0!important;color:transparent!important}:host .ngs-form-field-prefix,:host .ngs-form-field-icon-prefix,:host .ngs-form-field-icon-button-prefix,:host .ngs-form-field-suffix,:host .ngs-form-field-icon-suffix,:host .ngs-form-field-icon-button-suffix,:host .ngs-form-field-text-prefix,:host .ngs-form-field-text-suffix{display:flex;align-items:center}:host .ngs-form-field-prefix,:host .ngs-form-field-icon-prefix,:host .ngs-form-field-icon-button-prefix,:host .ngs-form-field-text-prefix{margin-right:.5rem}:host .ngs-form-field-suffix,:host .ngs-form-field-icon-suffix,:host .ngs-form-field-icon-button-suffix,:host .ngs-form-field-text-suffix{margin-left:.5rem}:host .ngs-form-field-text-prefix,:host .ngs-form-field-text-suffix{color:var(--ngs-form-field-label-color);white-space:nowrap;font-size:var(--input-font-size);line-height:var(--input-line-height);padding-top:var(--ngs-form-field-infix-padding-top);padding-bottom:var(--ngs-form-field-infix-padding-bottom)}:host .subscript-wrapper{margin-top:.25rem;padding:0 .5rem;font-size:.75rem;min-height:calc(var(--spacing, .25rem) * 5.5)}:host.ngs-form-field-subscript-hidden-if-empty .subscript-wrapper:empty{display:none}:host .ngs-form-field-error{display:none}:host .ngs-form-field-hint-wrapper{display:flex;justify-content:space-between;color:var(--ngs-form-field-label-color)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
218
+ }], propDecorators: { subscriptHiddenIfEmpty: [{ type: i0.Input, args: [{ isSignal: true, alias: "subscriptHiddenIfEmpty", required: false }] }], wrapper: [{ type: i0.ViewChild, args: ['wrapper', { isSignal: true }] }], container: [{ type: i0.ViewChild, args: ['container', { isSignal: true }] }], control: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FormFieldControl), { isSignal: true }] }], labelChild: [{ type: i0.ContentChild, args: [i0.forwardRef(() => Label), { isSignal: true }] }], prefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Prefix), { isSignal: true }] }], iconPrefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconPrefix), { isSignal: true }] }], iconButtonPrefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconButtonPrefix), { isSignal: true }] }], textPrefixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TextPrefix), { isSignal: true }] }], suffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Suffix), { isSignal: true }] }], iconSuffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconSuffix), { isSignal: true }] }], iconButtonSuffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => IconButtonSuffix), { isSignal: true }] }], textSuffixChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TextSuffix), { isSignal: true }] }], hintChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Hint), { isSignal: true }] }], errorChildren: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Error), { isSignal: true }] }], _onClick: [{
219
+ type: HostListener,
220
+ args: ['click', ['$event']]
221
+ }] } });
222
+
223
+ const FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken('FORM_FIELD_DEFAULT_OPTIONS');
224
+
225
+ /**
226
+ * Generated bundle index. Do not edit.
227
+ */
228
+
229
+ export { Error, FORM_FIELD, FORM_FIELD_DEFAULT_OPTIONS, FormField, FormFieldControl, Hint, IconButtonPrefix, IconButtonSuffix, IconPrefix, IconSuffix, Label, Prefix, Suffix, TextPrefix, TextSuffix };
230
+ //# sourceMappingURL=ngstarter-ui-components-form-field.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngstarter-ui-components-form-field.mjs","sources":["../../../projects/components/form-field/src/label/label.ts","../../../projects/components/form-field/src/label/label.html","../../../projects/components/form-field/src/form-field-control.ts","../../../projects/components/form-field/src/hint/hint.ts","../../../projects/components/form-field/src/hint/hint.html","../../../projects/components/form-field/src/error/error.ts","../../../projects/components/form-field/src/error/error.html","../../../projects/components/form-field/src/prefix-suffix/prefix-suffix.ts","../../../projects/components/form-field/src/form-field-token.ts","../../../projects/components/form-field/src/form-field/form-field.ts","../../../projects/components/form-field/src/form-field/form-field.html","../../../projects/components/form-field/src/form-field/form-field-errors.ts","../../../projects/components/form-field/ngstarter-ui-components-form-field.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-label',\n templateUrl: './label.html',\n styleUrl: './label.scss',\n host: {\n 'class': 'ngs-label',\n }\n})\nexport class Label {\n}\n","<ng-content/>\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class FormFieldControl<T> {\n abstract value: T | null;\n abstract readonly stateChanges: any;\n abstract readonly id: string;\n abstract readonly placeholder: string | undefined;\n abstract readonly ngControl: any;\n abstract readonly focused: boolean;\n abstract readonly empty: boolean;\n abstract readonly shouldLabelFloat: boolean;\n abstract readonly required: boolean;\n abstract readonly disabled: boolean;\n abstract readonly errorState: boolean;\n abstract focus(): void;\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-hint',\n standalone: true,\n templateUrl: './hint.html',\n styleUrl: './hint.scss',\n host: {\n 'class': 'ngs-hint',\n '[class.ngs-hint-end]': 'align() === \"end\"',\n }\n})\nexport class Hint {\n align = input<'start' | 'end'>('start');\n}\n","<ng-content />\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-error',\n standalone: true,\n templateUrl: './error.html',\n styleUrl: './error.scss',\n host: {\n 'class': 'ngs-error',\n 'role': 'alert',\n }\n})\nexport class Error {}\n","<ng-content />\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsPrefix]',\n})\nexport class Prefix {}\n\n@Directive({\n selector: '[ngsTextPrefix]',\n})\nexport class TextPrefix {}\n\n@Directive({\n selector: '[ngsIconPrefix]',\n})\nexport class IconPrefix {}\n\n@Directive({\n selector: '[ngsIconButtonPrefix]',\n})\nexport class IconButtonPrefix {}\n\n@Directive({\n selector: '[ngsSuffix]',\n})\nexport class Suffix {}\n\n@Directive({\n selector: '[ngsTextSuffix]',\n})\nexport class TextSuffix {}\n\n@Directive({\n selector: '[ngsIconSuffix]',\n})\nexport class IconSuffix {}\n\n@Directive({\n selector: '[ngsIconButtonSuffix]',\n})\nexport class IconButtonSuffix {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FORM_FIELD = new InjectionToken<any>('FORM_FIELD');\n","import {\n booleanAttribute,\n Component,\n contentChild,\n contentChildren,\n ElementRef,\n HostListener,\n inject,\n input,\n viewChild,\n computed,\n} from '@angular/core';\nimport { FormFieldControl } from '../form-field-control';\nimport { Label } from '../label/label';\nimport { FORM_FIELD } from '../form-field-token';\nimport { Prefix, Suffix, TextPrefix, TextSuffix, IconPrefix, IconButtonPrefix, IconSuffix, IconButtonSuffix } from '../prefix-suffix/prefix-suffix';\nimport { Hint } from '../hint/hint';\nimport { Error } from '../error/error';\n\n@Component({\n selector: 'ngs-form-field',\n exportAs: 'ngsFormField',\n templateUrl: './form-field.html',\n styleUrl: './form-field.scss',\n imports: [],\n providers: [\n {\n provide: FORM_FIELD,\n useExisting: FormField\n }\n ],\n host: {\n 'class': 'ngs-form-field',\n '[class.ngs-form-field-disabled]': 'control()?.disabled',\n '[class.ngs-form-field-invalid]': 'control()?.errorState',\n '[class.ngs-form-field-should-float]': 'shouldLabelFloat()',\n '[class.ngs-form-field-has-label]': 'labelChild()',\n '[class.ngs-form-field-empty]': 'control()?.empty',\n '[class.ngs-form-field-focused]': 'control()?.focused',\n '[class.ngs-form-field-subscript-hidden-if-empty]': 'subscriptHiddenIfEmpty()',\n '[class.ngs-form-field-has-icon-prefix]': 'iconPrefixChildren().length > 0',\n '[class.ngs-form-field-has-icon-button-prefix]': 'iconButtonPrefixChildren().length > 0',\n '[class.ngs-form-field-has-icon-suffix]': 'iconSuffixChildren().length > 0',\n '[class.ngs-form-field-has-icon-button-suffix]': 'iconButtonSuffixChildren().length > 0',\n }\n})\nexport class FormField {\n subscriptHiddenIfEmpty = input(false, {\n transform: booleanAttribute\n });\n elementRef = inject(ElementRef);\n wrapper = viewChild.required<ElementRef>('wrapper');\n container = viewChild.required<ElementRef>('container');\n control = contentChild(FormFieldControl);\n labelChild = contentChild(Label);\n prefixChildren = contentChildren(Prefix);\n iconPrefixChildren = contentChildren(IconPrefix);\n iconButtonPrefixChildren = contentChildren(IconButtonPrefix);\n textPrefixChildren = contentChildren(TextPrefix);\n suffixChildren = contentChildren(Suffix);\n iconSuffixChildren = contentChildren(IconSuffix);\n iconButtonSuffixChildren = contentChildren(IconButtonSuffix);\n textSuffixChildren = contentChildren(TextSuffix);\n hintChildren = contentChildren(Hint);\n errorChildren = contentChildren(Error);\n isRequired = computed(() => {\n const control = this.control();\n if (!control) {\n return false;\n }\n\n if (control.required) {\n return true;\n }\n\n const ngControl = control.ngControl;\n if (ngControl && ngControl.control && ngControl.control.validator) {\n const validator = ngControl.control.validator({} as any);\n if (validator && validator['required']) {\n return true;\n }\n }\n\n return false;\n });\n\n shouldLabelFloat(): boolean {\n return !!this.control()?.shouldLabelFloat;\n }\n\n @HostListener('click', ['$event'])\n protected _onClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const wrapper = this.wrapper().nativeElement;\n const isInsideWrapper = wrapper.contains(target);\n\n if (!isInsideWrapper) {\n return;\n }\n\n const isIconButton = !!target.closest('.ngs-icon-button') || !!target.closest('[ngsIconButton]');\n const isToggle = !!target.closest('ngs-datepicker-toggle') || !!target.closest('ngs-date-range-picker');\n\n if (this.control()?.focused || isIconButton || isToggle) {\n return;\n }\n\n this.focus();\n event.stopPropagation();\n }\n\n focus(): void {\n const control = this.control();\n if (control && !control.disabled) {\n control.focus();\n }\n }\n}\n","<div class=\"ngs-form-field-wrapper\" #wrapper>\n <div class=\"ngs-form-field-container\" #container>\n @if (prefixChildren().length > 0) {\n <div class=\"ngs-form-field-prefix\">\n <ng-content select=\"[ngsPrefix]\"/>\n </div>\n }\n\n @if (iconPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-prefix\">\n <ng-content select=\"[ngsIconPrefix]\"/>\n </div>\n }\n\n @if (iconButtonPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-button-prefix\">\n <ng-content select=\"[ngsIconButtonPrefix]\"/>\n </div>\n }\n\n @if (textPrefixChildren().length > 0) {\n <div class=\"ngs-form-field-text-prefix\">\n <ng-content select=\"[ngsTextPrefix]\"/>\n </div>\n }\n\n <div class=\"ngs-form-field-infix\">\n @if (labelChild()) {\n <label class=\"ngs-form-field-label\" [attr.for]=\"control()?.id\">\n <ng-content select=\"ngs-label\"/>\n\n @if (isRequired()) {\n <span class=\"ngs-form-field-required-marker\">*</span>\n }\n </label>\n }\n <ng-content/>\n </div>\n\n @if (textSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-text-suffix\">\n <ng-content select=\"[ngsTextSuffix]\"/>\n </div>\n }\n\n @if (iconButtonSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-button-suffix\">\n <ng-content select=\"[ngsIconButtonSuffix]\"/>\n </div>\n }\n\n @if (iconSuffixChildren().length > 0) {\n <div class=\"ngs-form-field-icon-suffix\">\n <ng-content select=\"[ngsIconSuffix]\"/>\n </div>\n }\n\n @if (suffixChildren().length > 0) {\n <div class=\"ngs-form-field-suffix\">\n <ng-content select=\"[ngsSuffix]\"/>\n </div>\n }\n </div>\n</div>\n\n<div class=\"subscript-wrapper\">\n @if (control()?.errorState && errorChildren().length > 0) {\n <ng-content select=\"ngs-error\"/>\n } @else if (hintChildren().length > 0) {\n <div class=\"ngs-form-field-hint-wrapper\">\n <ng-content select=\"ngs-hint\"/>\n </div>\n }\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport interface FormFieldDefaultOptions {\n appearance?: 'fill' | 'outline';\n color?: string;\n hideRequiredMarker?: boolean;\n floatLabel?: 'always' | 'auto';\n subscriptHiddenIfEmpty?: boolean;\n}\n\nexport const FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken<FormFieldDefaultOptions>(\n 'FORM_FIELD_DEFAULT_OPTIONS'\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, viewChild, Component } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import { Autocomplete, AutocompleteTrigger } from '@ngstarter-ui/components/autocomplete';
6
+ import { Option } from '@ngstarter-ui/components/option';
7
+ import { ChipGrid, ChipInput, ChipRemove, ChipRow } from '@ngstarter-ui/components/chips';
8
+ import { ENTER, COMMA } from '@angular/cdk/keycodes';
9
+ import { Error, FormField, Hint, Label } from '@ngstarter-ui/components/form-field';
10
+ import { Icon } from '@ngstarter-ui/components/icon';
11
+ import { startWith, tap, debounceTime, distinctUntilChanged, switchMap, of } from 'rxjs';
12
+ import { ProgressSpinner } from '@ngstarter-ui/components/spinner';
13
+ import { AsyncPipe } from '@angular/common';
14
+ import { HttpClient, HttpParams } from '@angular/common/http';
15
+
16
+ class AutocompleteManyField {
17
+ httpClient = inject(HttpClient);
18
+ control = input.required(...(ngDevMode ? [{ debugName: "control" }] : /* istanbul ignore next */ []));
19
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
20
+ separatorKeysCodes = [ENTER, COMMA];
21
+ chipsCtrl = new FormControl('');
22
+ input = viewChild.required('input');
23
+ value = [];
24
+ filteredOptions$;
25
+ isLoading = false;
26
+ ngOnInit() {
27
+ this.filteredOptions$ = this.chipsCtrl.valueChanges.pipe(startWith(''), tap(() => this.isLoading = true), debounceTime(300), distinctUntilChanged(), switchMap((query) => {
28
+ if (!query || !query.trim()) {
29
+ return of([]);
30
+ }
31
+ const params = new HttpParams().set('query', query || '');
32
+ return this.httpClient.get(this.config().payload?.['autocompleteUrl'], {
33
+ params
34
+ });
35
+ }), tap(() => this.isLoading = false));
36
+ }
37
+ getErrorMessage() {
38
+ const errors = this.control().errors;
39
+ if (!errors) {
40
+ return '';
41
+ }
42
+ const errorKey = Object.keys(errors)[0];
43
+ const validator = this.config().validators?.find((v) => v.type === errorKey);
44
+ return validator?.message || 'Некорректное значение';
45
+ }
46
+ get options() {
47
+ return this.config()?.payload?.['options'] || [];
48
+ }
49
+ get bindValue() {
50
+ return this.config().bindValue || 'id';
51
+ }
52
+ get bindName() {
53
+ return this.config().bindName || 'name';
54
+ }
55
+ add(event) {
56
+ const name = (event.value || '').trim();
57
+ const hasValue = this.value.find(v => v[this.bindName].toLowerCase() === name.toLowerCase());
58
+ if (name && !hasValue) {
59
+ this.value.push({
60
+ [this.bindValue]: null,
61
+ [this.bindName]: name,
62
+ });
63
+ }
64
+ event.chipInput.clear();
65
+ this.chipsCtrl.setValue(null);
66
+ this.isLoading = false;
67
+ this.calculateControlValue();
68
+ }
69
+ remove(chip) {
70
+ const index = this.value.indexOf(chip);
71
+ if (index >= 0) {
72
+ this.value.splice(index, 1);
73
+ this.calculateControlValue();
74
+ }
75
+ }
76
+ onSelected(event) {
77
+ const hasValue = this.value.find(v => v[this.bindName].toLowerCase() === event.option.value[this.bindName].toLowerCase());
78
+ if (!hasValue) {
79
+ this.value.push(event.option.value);
80
+ }
81
+ this.input().nativeElement.value = '';
82
+ this.chipsCtrl.setValue(null);
83
+ this.calculateControlValue();
84
+ this.isLoading = false;
85
+ }
86
+ calculateControlValue() {
87
+ const value = this.value.map(v => {
88
+ const itemValue = v[this.bindValue];
89
+ if (itemValue) {
90
+ return {
91
+ [this.bindValue]: itemValue,
92
+ };
93
+ }
94
+ return v;
95
+ });
96
+ this.control().setValue(value);
97
+ }
98
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AutocompleteManyField, deps: [], target: i0.ɵɵFactoryTarget.Component });
99
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: AutocompleteManyField, isStandalone: true, selector: "ngs-autocomplete-many-field", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (control() && config()) {\n <ngs-form-field>\n <ngs-label>{{ config().label }}</ngs-label>\n <ngs-chip-grid #chipGrid>\n @for (option of value; track option) {\n <ngs-chip-row (removed)=\"remove(option)\">\n {{ option[bindName] }}\n <button ngsChipRemove>\n <ngs-icon name=\"fluent:dismiss-circle-24-regular\"/>\n </button>\n </ngs-chip-row>\n }\n </ngs-chip-grid>\n <input [placeholder]=\"config().placeholder\"\n #input\n maxlength=\"30\"\n [formControl]=\"chipsCtrl\"\n [ngsChipInputFor]=\"chipGrid\"\n [ngsAutocomplete]=\"autocomplete\"\n [ngsChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (chipInputTokenEnd)=\"add($event)\">\n @if (isLoading) {\n <div class=\"loader\">\n <ngs-progress-spinner\n mode=\"indeterminate\"\n [diameter]=\"20\"/>\n </div>\n }\n <ngs-autocomplete #autocomplete=\"ngsAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track option) {\n <ngs-option [value]=\"option\">{{ option[bindName] }}</ngs-option>\n }\n\n @if (!(filteredOptions$ | async)?.length && !isLoading && chipsCtrl.value) {\n <ngs-option disabled>\n No search results found.\n </ngs-option>\n }\n </ngs-autocomplete>\n <ngs-hint>{{ config().hint }}</ngs-hint>\n @if (control().invalid && control().touched) {\n <ngs-error>{{ getErrorMessage() }}</ngs-error>\n }\n </ngs-form-field>\n}\n", styles: [":host{display:block}:host ngs-form-field{width:100%}:host .loader{position:absolute;right:0;top:50%;transform:translateY(-50%)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "component", type: Autocomplete, selector: "ngs-autocomplete", inputs: ["aria-label", "aria-labelledby", "autoActiveFirstOption", "autoSelectActiveOption", "class", "disableRipple", "displayWith", "hideSingleSelectionIndicator", "panelWidth", "requireSelection"], outputs: ["closed", "opened", "optionActivated", "optionSelected"], exportAs: ["ngsAutocomplete"] }, { kind: "directive", type: AutocompleteTrigger, selector: "[ngsAutocomplete]", inputs: ["ngsAutocomplete"], exportAs: ["ngsAutocompleteTrigger"] }, { kind: "component", type: ChipGrid, selector: "ngs-chip-grid", inputs: ["id", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "directive", type: ChipInput, selector: "input[ngsChipInputFor]", inputs: ["ngsChipInputFor", "ngsChipInputSeparatorKeyCodes", "ngsChipInputAddOnBlur"], outputs: ["chipInputTokenEnd"] }, { kind: "directive", type: ChipRemove, selector: "ngs-chip-remove, [ngsChipRemove]" }, { kind: "component", type: ChipRow, selector: "ngs-chip-row", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: Error, selector: "ngs-error" }, { kind: "component", type: FormField, selector: "ngs-form-field", inputs: ["subscriptHiddenIfEmpty"], exportAs: ["ngsFormField"] }, { kind: "component", type: Hint, selector: "ngs-hint", inputs: ["align"] }, { kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }, { kind: "component", type: Label, selector: "ngs-label" }, { kind: "component", type: Option, selector: "ngs-option", inputs: ["value", "disabled", "selected"], outputs: ["onSelectionChange"], exportAs: ["ngsOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ProgressSpinner, selector: "ngs-progress-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["ngsProgressSpinner"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AutocompleteManyField, decorators: [{
102
+ type: Component,
103
+ args: [{ selector: 'ngs-autocomplete-many-field', imports: [
104
+ FormsModule,
105
+ Autocomplete,
106
+ AutocompleteTrigger,
107
+ ChipGrid,
108
+ ChipInput,
109
+ ChipRemove,
110
+ ChipRow,
111
+ Error,
112
+ FormField,
113
+ Hint,
114
+ Icon,
115
+ Label,
116
+ Option,
117
+ ReactiveFormsModule,
118
+ ProgressSpinner,
119
+ AsyncPipe
120
+ ], template: "@if (control() && config()) {\n <ngs-form-field>\n <ngs-label>{{ config().label }}</ngs-label>\n <ngs-chip-grid #chipGrid>\n @for (option of value; track option) {\n <ngs-chip-row (removed)=\"remove(option)\">\n {{ option[bindName] }}\n <button ngsChipRemove>\n <ngs-icon name=\"fluent:dismiss-circle-24-regular\"/>\n </button>\n </ngs-chip-row>\n }\n </ngs-chip-grid>\n <input [placeholder]=\"config().placeholder\"\n #input\n maxlength=\"30\"\n [formControl]=\"chipsCtrl\"\n [ngsChipInputFor]=\"chipGrid\"\n [ngsAutocomplete]=\"autocomplete\"\n [ngsChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (chipInputTokenEnd)=\"add($event)\">\n @if (isLoading) {\n <div class=\"loader\">\n <ngs-progress-spinner\n mode=\"indeterminate\"\n [diameter]=\"20\"/>\n </div>\n }\n <ngs-autocomplete #autocomplete=\"ngsAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track option) {\n <ngs-option [value]=\"option\">{{ option[bindName] }}</ngs-option>\n }\n\n @if (!(filteredOptions$ | async)?.length && !isLoading && chipsCtrl.value) {\n <ngs-option disabled>\n No search results found.\n </ngs-option>\n }\n </ngs-autocomplete>\n <ngs-hint>{{ config().hint }}</ngs-hint>\n @if (control().invalid && control().touched) {\n <ngs-error>{{ getErrorMessage() }}</ngs-error>\n }\n </ngs-form-field>\n}\n", styles: [":host{display:block}:host ngs-form-field{width:100%}:host .loader{position:absolute;right:0;top:50%;transform:translateY(-50%)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
121
+ }], propDecorators: { control: [{ type: i0.Input, args: [{ isSignal: true, alias: "control", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], input: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }] } });
122
+
123
+ export { AutocompleteManyField };
124
+ //# sourceMappingURL=ngstarter-ui-components-form-renderer-autocomplete-many-field-BKQVlZHV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngstarter-ui-components-form-renderer-autocomplete-many-field-BKQVlZHV.mjs","sources":["../../../projects/components/form-renderer/src/fields/autocomplete-many-field/autocomplete-many-field.ts","../../../projects/components/form-renderer/src/fields/autocomplete-many-field/autocomplete-many-field.html"],"sourcesContent":["import { Component, ElementRef, inject, input, OnInit, viewChild } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n Autocomplete,\n AutocompleteSelectedEvent,\n AutocompleteTrigger\n} from '@ngstarter-ui/components/autocomplete';\nimport { Option } from '@ngstarter-ui/components/option';\nimport { ChipGrid, ChipInput, ChipInputEvent, ChipRemove, ChipRow } from '@ngstarter-ui/components/chips';\nimport { ComponentConfig } from '../../models/form-config.model';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { Error, FormField, Hint, Label } from '@ngstarter-ui/components/form-field';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { catchError, debounceTime, distinctUntilChanged, Observable, of, startWith, switchMap, tap } from 'rxjs';\nimport { ProgressSpinner } from '@ngstarter-ui/components/spinner';\nimport { AsyncPipe } from '@angular/common';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\n@Component({\n selector: 'ngs-autocomplete-many-field',\n imports: [\n FormsModule,\n Autocomplete,\n AutocompleteTrigger,\n ChipGrid,\n ChipInput,\n ChipRemove,\n ChipRow,\n Error,\n FormField,\n Hint,\n Icon,\n Label,\n Option,\n ReactiveFormsModule,\n ProgressSpinner,\n AsyncPipe\n ],\n templateUrl: './autocomplete-many-field.html',\n styleUrl: './autocomplete-many-field.scss'\n})\nexport class AutocompleteManyField implements OnInit {\n private httpClient = inject(HttpClient);\n\n control = input.required<FormControl>();\n config = input.required<ComponentConfig>();\n\n readonly separatorKeysCodes: number[] = [ENTER, COMMA];\n readonly chipsCtrl = new FormControl('');\n readonly input = viewChild.required<ElementRef<HTMLInputElement>>('input');\n readonly value: any[] = [];\n\n filteredOptions$!: Observable<any[]>;\n isLoading = false;\n\n ngOnInit() {\n this.filteredOptions$ = this.chipsCtrl.valueChanges.pipe(\n startWith(''),\n tap(() => this.isLoading = true),\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((query: any) => {\n if (!query || !query.trim()) {\n return of([]);\n }\n const params = new HttpParams().set('query', query || '');\n return this.httpClient.get<any[]>(this.config().payload?.['autocompleteUrl'], {\n params\n });\n }),\n tap(() => this.isLoading = false)\n );\n }\n\n getErrorMessage(): string {\n const errors = this.control().errors;\n\n if (!errors) {\n return '';\n }\n\n const errorKey = Object.keys(errors)[0];\n const validator = this.config().validators?.find((v: any) => v.type === errorKey);\n return validator?.message || 'Некорректное значение';\n }\n\n get options() {\n return this.config()?.payload?.['options'] || [];\n }\n\n get bindValue() {\n return this.config().bindValue || 'id';\n }\n\n get bindName() {\n return this.config().bindName || 'name';\n }\n\n add(event: ChipInputEvent): void {\n const name = (event.value || '').trim();\n const hasValue = this.value.find(\n v => v[this.bindName].toLowerCase() === name.toLowerCase()\n );\n\n if (name && !hasValue) {\n this.value.push({\n [this.bindValue]: null,\n [this.bindName]: name,\n });\n }\n\n event.chipInput!.clear();\n this.chipsCtrl.setValue(null);\n this.isLoading = false;\n this.calculateControlValue();\n }\n\n remove(chip: any): void {\n const index = this.value.indexOf(chip);\n\n if (index >= 0) {\n this.value.splice(index, 1);\n this.calculateControlValue();\n }\n }\n\n onSelected(event: AutocompleteSelectedEvent): void {\n const hasValue = this.value.find(\n v => v[this.bindName].toLowerCase() === (event.option.value as any)[this.bindName].toLowerCase()\n );\n\n if (!hasValue) {\n this.value.push(event.option.value);\n }\n\n this.input().nativeElement.value = '';\n this.chipsCtrl.setValue(null);\n this.calculateControlValue();\n this.isLoading = false;\n }\n\n private calculateControlValue() {\n const value = this.value.map(v => {\n const itemValue = v[this.bindValue];\n\n if (itemValue) {\n return {\n [this.bindValue]: itemValue,\n };\n }\n\n return v;\n });\n this.control().setValue(value);\n }\n}\n","@if (control() && config()) {\n <ngs-form-field>\n <ngs-label>{{ config().label }}</ngs-label>\n <ngs-chip-grid #chipGrid>\n @for (option of value; track option) {\n <ngs-chip-row (removed)=\"remove(option)\">\n {{ option[bindName] }}\n <button ngsChipRemove>\n <ngs-icon name=\"fluent:dismiss-circle-24-regular\"/>\n </button>\n </ngs-chip-row>\n }\n </ngs-chip-grid>\n <input [placeholder]=\"config().placeholder\"\n #input\n maxlength=\"30\"\n [formControl]=\"chipsCtrl\"\n [ngsChipInputFor]=\"chipGrid\"\n [ngsAutocomplete]=\"autocomplete\"\n [ngsChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (chipInputTokenEnd)=\"add($event)\">\n @if (isLoading) {\n <div class=\"loader\">\n <ngs-progress-spinner\n mode=\"indeterminate\"\n [diameter]=\"20\"/>\n </div>\n }\n <ngs-autocomplete #autocomplete=\"ngsAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track option) {\n <ngs-option [value]=\"option\">{{ option[bindName] }}</ngs-option>\n }\n\n @if (!(filteredOptions$ | async)?.length && !isLoading && chipsCtrl.value) {\n <ngs-option disabled>\n No search results found.\n </ngs-option>\n }\n </ngs-autocomplete>\n <ngs-hint>{{ config().hint }}</ngs-hint>\n @if (control().invalid && control().touched) {\n <ngs-error>{{ getErrorMessage() }}</ngs-error>\n }\n </ngs-form-field>\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { ReactiveFormsModule } from '@angular/forms';
5
+ import { Checkbox } from '@ngstarter-ui/components/checkbox';
6
+
7
+ class CheckboxField {
8
+ control = input.required(...(ngDevMode ? [{ debugName: "control" }] : /* istanbul ignore next */ []));
9
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CheckboxField, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: CheckboxField, isStandalone: true, selector: "ngs-checkbox-field", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if(control() && config()) {\n <ngs-checkbox [formControl]=\"control()\">\n {{ config().label }}\n </ngs-checkbox>\n}\n", styles: [":host{display:block;margin-bottom:calc(var(--spacing, .25rem) * 3)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Checkbox, selector: "ngs-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["checkedChange", "disabledChange", "indeterminateChange", "change"], exportAs: ["ngsCheckbox"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CheckboxField, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'ngs-checkbox-field', imports: [
16
+ Checkbox,
17
+ ReactiveFormsModule
18
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if(control() && config()) {\n <ngs-checkbox [formControl]=\"control()\">\n {{ config().label }}\n </ngs-checkbox>\n}\n", styles: [":host{display:block;margin-bottom:calc(var(--spacing, .25rem) * 3)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
19
+ }], propDecorators: { control: [{ type: i0.Input, args: [{ isSignal: true, alias: "control", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }] } });
20
+
21
+ export { CheckboxField };
22
+ //# sourceMappingURL=ngstarter-ui-components-form-renderer-checkbox-field-CoyKdvhV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngstarter-ui-components-form-renderer-checkbox-field-CoyKdvhV.mjs","sources":["../../../projects/components/form-renderer/src/fields/checkbox-field/checkbox-field.ts","../../../projects/components/form-renderer/src/fields/checkbox-field/checkbox-field.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ComponentConfig } from '../../models/form-config.model';\nimport { Checkbox } from '@ngstarter-ui/components/checkbox';\n\n@Component({\n selector: 'ngs-checkbox-field',\n imports: [\n Checkbox,\n ReactiveFormsModule\n ],\n templateUrl: './checkbox-field.html',\n styleUrl: './checkbox-field.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxField {\n control = input.required<FormControl>();\n config = input.required<ComponentConfig>();\n}\n","@if(control() && config()) {\n <ngs-checkbox [formControl]=\"control()\">\n {{ config().label }}\n </ngs-checkbox>\n}\n"],"names":[],"mappings":";;;;;;MAea,aAAa,CAAA;AACxB,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAe;AACvC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAmB;uGAF/B,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf1B,8HAKA,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGI,QAAQ,yaACR,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMV,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACP,QAAQ;wBACR;qBACD,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8HAAA,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA;;;;;"}
@@ -0,0 +1,44 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { ReactiveFormsModule } from '@angular/forms';
5
+ import { Hint, Suffix, Error, Label, FormField } from '@ngstarter-ui/components/form-field';
6
+ import { DatepickerToggle, Datepicker, DatepickerInput, provideNativeDateAdapter } from '@ngstarter-ui/components/datepicker';
7
+ import { Input } from '@ngstarter-ui/components/input';
8
+
9
+ class DatepickerField {
10
+ control = input.required(...(ngDevMode ? [{ debugName: "control" }] : /* istanbul ignore next */ []));
11
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
12
+ getErrorMessage() {
13
+ const errors = this.control().errors;
14
+ if (!errors)
15
+ return '';
16
+ const errorKey = Object.keys(errors)[0];
17
+ const validator = this.config().validators?.find((v) => v.type === errorKey);
18
+ return validator?.message || 'Invalid value';
19
+ }
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DatepickerField, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: DatepickerField, isStandalone: true, selector: "ngs-datepicker-field", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
22
+ provideNativeDateAdapter()
23
+ ], exportAs: ["ngsDatepickerField"], ngImport: i0, template: "@if(control() && config()) {\n <ngs-form-field>\n <ngs-label>{{ config().label }}</ngs-label>\n <input ngsInput [ngsDatepicker]=\"picker\" [formControl]=\"control()\" readonly>\n <ngs-datepicker-toggle ngsSuffix [for]=\"picker\" />\n <ngs-datepicker #picker />\n <ngs-hint>{{ config().hint }}</ngs-hint>\n @if (control().invalid && control().touched) {\n <ngs-error>{{ getErrorMessage() }}</ngs-error>\n }\n </ngs-form-field>\n}\n", styles: [":host{display:block}:host ngs-form-field{width:100%}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Hint, selector: "ngs-hint", inputs: ["align"] }, { kind: "directive", type: Input, selector: "input[ngsInput], textarea[ngsInput]", inputs: ["id", "placeholder", "required", "disabled", "readonly", "errorStateMatcher"], exportAs: ["ngsInput"] }, { kind: "directive", type: Suffix, selector: "[ngsSuffix]" }, { kind: "component", type: DatepickerToggle, selector: "ngs-datepicker-toggle", inputs: ["for"], exportAs: ["ngsDatepickerToggle"] }, { kind: "component", type: Datepicker, selector: "ngs-datepicker", inputs: ["startAt", "calendarHeaderComponent", "quickPresets", "showQuickPresets"], exportAs: ["ngsDatepicker"] }, { kind: "component", type: Error, selector: "ngs-error" }, { kind: "component", type: Label, selector: "ngs-label" }, { kind: "component", type: FormField, selector: "ngs-form-field", inputs: ["subscriptHiddenIfEmpty"], exportAs: ["ngsFormField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: DatepickerInput, selector: "input[ngsDatepicker]", inputs: ["ngsDatepicker"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DatepickerField, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'ngs-datepicker-field', exportAs: 'ngsDatepickerField', providers: [
28
+ provideNativeDateAdapter()
29
+ ], imports: [
30
+ Hint,
31
+ Input,
32
+ Suffix,
33
+ DatepickerToggle,
34
+ Datepicker,
35
+ Error,
36
+ Label,
37
+ FormField,
38
+ ReactiveFormsModule,
39
+ DatepickerInput
40
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if(control() && config()) {\n <ngs-form-field>\n <ngs-label>{{ config().label }}</ngs-label>\n <input ngsInput [ngsDatepicker]=\"picker\" [formControl]=\"control()\" readonly>\n <ngs-datepicker-toggle ngsSuffix [for]=\"picker\" />\n <ngs-datepicker #picker />\n <ngs-hint>{{ config().hint }}</ngs-hint>\n @if (control().invalid && control().touched) {\n <ngs-error>{{ getErrorMessage() }}</ngs-error>\n }\n </ngs-form-field>\n}\n", styles: [":host{display:block}:host ngs-form-field{width:100%}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
41
+ }], propDecorators: { control: [{ type: i0.Input, args: [{ isSignal: true, alias: "control", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }] } });
42
+
43
+ export { DatepickerField };
44
+ //# sourceMappingURL=ngstarter-ui-components-form-renderer-datepicker-field-Bzc0TPO9.mjs.map