@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,152 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ElementRef, signal, DestroyRef, input, booleanAttribute, computed, effect, forwardRef, Directive } from '@angular/core';
3
+ import { NgControl, NgForm, FormGroupDirective } from '@angular/forms';
4
+ import { FormFieldControl } from '@ngstarter-ui/components/form-field';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import { ErrorStateMatcher, AUTOFOCUSABLE } from '@ngstarter-ui/components/core';
7
+
8
+ class Input {
9
+ elementRef = inject(ElementRef);
10
+ ngControl = inject(NgControl, { optional: true, self: true });
11
+ stateChanges = signal(undefined, ...(ngDevMode ? [{ debugName: "stateChanges" }] : /* istanbul ignore next */ []));
12
+ _destroyRef = inject(DestroyRef);
13
+ _defaultErrorStateMatcher = inject(ErrorStateMatcher);
14
+ _parentForm = inject(NgForm, { optional: true });
15
+ _parentFormGroup = inject(FormGroupDirective, { optional: true });
16
+ _id = input(`ngs-input-${nextUniqueId++}`, { ...(ngDevMode ? { debugName: "_id" } : /* istanbul ignore next */ {}), alias: 'id' });
17
+ get id() { return this._id(); }
18
+ _placeholder = input('', { ...(ngDevMode ? { debugName: "_placeholder" } : /* istanbul ignore next */ {}), alias: 'placeholder' });
19
+ get placeholder() { return this._placeholder(); }
20
+ _required = input(false, { ...(ngDevMode ? { debugName: "_required" } : /* istanbul ignore next */ {}), transform: booleanAttribute, alias: 'required' });
21
+ get required() { return this._required(); }
22
+ _disabled = input(false, { ...(ngDevMode ? { debugName: "_disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute, alias: 'disabled' });
23
+ get disabled() { return this._disabled(); }
24
+ readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
25
+ errorStateMatcher = input(...(ngDevMode ? [undefined, { debugName: "errorStateMatcher" }] : /* istanbul ignore next */ []));
26
+ _value = signal('', ...(ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []));
27
+ get value() {
28
+ return this._value();
29
+ }
30
+ set value(value) {
31
+ this._value.set(value);
32
+ this.elementRef.nativeElement.value = value;
33
+ }
34
+ focusedValue = false;
35
+ _focused = signal(false, ...(ngDevMode ? [{ debugName: "_focused" }] : /* istanbul ignore next */ []));
36
+ get focused() { return this._focused(); }
37
+ errorStateValue = false;
38
+ _errorState = signal(false, ...(ngDevMode ? [{ debugName: "_errorState" }] : /* istanbul ignore next */ []));
39
+ get errorState() { return this._errorState(); }
40
+ isRequired = computed(() => {
41
+ if (this._required()) {
42
+ return true;
43
+ }
44
+ const control = this.ngControl?.control;
45
+ if (control && control.validator) {
46
+ const validator = control.validator({});
47
+ if (validator && validator['required']) {
48
+ return true;
49
+ }
50
+ }
51
+ return false;
52
+ }, ...(ngDevMode ? [{ debugName: "isRequired" }] : /* istanbul ignore next */ []));
53
+ emptyValue = true;
54
+ _empty = computed(() => !this._value(), ...(ngDevMode ? [{ debugName: "_empty" }] : /* istanbul ignore next */ []));
55
+ get empty() { return this._empty(); }
56
+ shouldLabelFloatValue = false;
57
+ _shouldLabelFloat = computed(() => {
58
+ return !!this._value() || this._focused();
59
+ }, ...(ngDevMode ? [{ debugName: "_shouldLabelFloat" }] : /* istanbul ignore next */ []));
60
+ get shouldLabelFloat() { return this._shouldLabelFloat(); }
61
+ constructor() {
62
+ effect(() => {
63
+ this.focusedValue = this._focused();
64
+ this.errorStateValue = this._errorState();
65
+ this.emptyValue = this._empty();
66
+ this.shouldLabelFloatValue = this._shouldLabelFloat();
67
+ });
68
+ }
69
+ ngOnInit() {
70
+ this._value.set(this.elementRef.nativeElement.value);
71
+ this.ngControl?.statusChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
72
+ this.updateErrorState();
73
+ });
74
+ }
75
+ ngDoCheck() {
76
+ if (this._value() !== this.elementRef.nativeElement.value) {
77
+ this._value.set(this.elementRef.nativeElement.value);
78
+ }
79
+ this.updateErrorState();
80
+ }
81
+ updateErrorState() {
82
+ const oldState = this._errorState();
83
+ const parent = this._parentFormGroup || this._parentForm;
84
+ const matcher = this.errorStateMatcher() || this._defaultErrorStateMatcher;
85
+ const control = this.ngControl ? this.ngControl.control : null;
86
+ const newState = matcher.isErrorState(control, parent);
87
+ if (newState !== oldState) {
88
+ this._errorState.set(newState);
89
+ }
90
+ }
91
+ onFocus() {
92
+ this._focused.set(true);
93
+ }
94
+ onBlur() {
95
+ this._focused.set(false);
96
+ this.updateErrorState();
97
+ }
98
+ onInput(event) {
99
+ this._value.set(event.target.value);
100
+ }
101
+ focus() {
102
+ this.elementRef.nativeElement.focus();
103
+ }
104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Input, deps: [], target: i0.ɵɵFactoryTarget.Directive });
105
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.4", type: Input, isStandalone: true, selector: "input[ngsInput], textarea[ngsInput]", inputs: { _id: { classPropertyName: "_id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, _placeholder: { classPropertyName: "_placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, _required: { classPropertyName: "_required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focus": "onFocus()", "blur": "onBlur()", "input": "onInput($event)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "disabled": "disabled", "required": "required", "attr.readonly": "readonly() || null", "class.ngs-input-floating": "shouldLabelFloat" }, classAttribute: "ngs-input" }, providers: [
106
+ {
107
+ provide: FormFieldControl,
108
+ useExisting: forwardRef(() => Input)
109
+ },
110
+ {
111
+ provide: AUTOFOCUSABLE,
112
+ useExisting: forwardRef(() => Input)
113
+ }
114
+ ], exportAs: ["ngsInput"], ngImport: i0 });
115
+ }
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Input, decorators: [{
117
+ type: Directive,
118
+ args: [{
119
+ selector: 'input[ngsInput], textarea[ngsInput]',
120
+ exportAs: 'ngsInput',
121
+ host: {
122
+ 'class': 'ngs-input',
123
+ '[attr.id]': 'id',
124
+ '[attr.placeholder]': 'placeholder',
125
+ '[disabled]': 'disabled',
126
+ '[required]': 'required',
127
+ '[attr.readonly]': 'readonly() || null',
128
+ '[class.ngs-input-floating]': 'shouldLabelFloat',
129
+ '(focus)': 'onFocus()',
130
+ '(blur)': 'onBlur()',
131
+ '(input)': 'onInput($event)',
132
+ },
133
+ providers: [
134
+ {
135
+ provide: FormFieldControl,
136
+ useExisting: forwardRef(() => Input)
137
+ },
138
+ {
139
+ provide: AUTOFOCUSABLE,
140
+ useExisting: forwardRef(() => Input)
141
+ }
142
+ ]
143
+ }]
144
+ }], ctorParameters: () => [], propDecorators: { _id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], _placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], _required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], _disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], errorStateMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorStateMatcher", required: false }] }] } });
145
+ let nextUniqueId = 0;
146
+
147
+ /**
148
+ * Generated bundle index. Do not edit.
149
+ */
150
+
151
+ export { Input };
152
+ //# sourceMappingURL=ngstarter-ui-components-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngstarter-ui-components-input.mjs","sources":["../../../projects/components/input/src/input.ts","../../../projects/components/input/ngstarter-ui-components-input.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n booleanAttribute,\n inject,\n OnInit,\n DoCheck,\n input,\n signal,\n computed,\n effect,\n forwardRef,\n DestroyRef,\n} from '@angular/core';\nimport { NgControl, NgForm, FormGroupDirective } from '@angular/forms';\nimport { FormFieldControl } from '@ngstarter-ui/components/form-field';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AUTOFOCUSABLE, ErrorStateMatcher } from '@ngstarter-ui/components/core';\n\n@Directive({\n selector: 'input[ngsInput], textarea[ngsInput]',\n exportAs: 'ngsInput',\n host: {\n 'class': 'ngs-input',\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.readonly]': 'readonly() || null',\n '[class.ngs-input-floating]': 'shouldLabelFloat',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(input)': 'onInput($event)',\n },\n providers: [\n {\n provide: FormFieldControl,\n useExisting: forwardRef(() => Input)\n },\n {\n provide: AUTOFOCUSABLE,\n useExisting: forwardRef(() => Input)\n }\n ]\n})\nexport class Input implements OnInit, DoCheck, FormFieldControl<string> {\n protected elementRef = inject(ElementRef);\n readonly ngControl = inject(NgControl, { optional: true, self: true });\n readonly stateChanges = signal<void>(undefined);\n private _destroyRef = inject(DestroyRef);\n private _defaultErrorStateMatcher = inject(ErrorStateMatcher);\n private _parentForm = inject(NgForm, { optional: true });\n private _parentFormGroup = inject(FormGroupDirective, { optional: true });\n\n _id = input<string>(`ngs-input-${nextUniqueId++}`, { alias: 'id' });\n get id(): string { return this._id(); }\n _placeholder = input<string>('', { alias: 'placeholder' });\n get placeholder(): string { return this._placeholder(); }\n _required = input(false, { transform: booleanAttribute, alias: 'required' });\n get required(): boolean { return this._required(); }\n _disabled = input<boolean, any>(false, { transform: booleanAttribute, alias: 'disabled' });\n get disabled(): boolean { return this._disabled(); }\n readonly = input(false, { transform: booleanAttribute });\n\n errorStateMatcher = input<ErrorStateMatcher>();\n\n private _value = signal('');\n get value(): string {\n return this._value();\n }\n set value(value: string) {\n this._value.set(value);\n this.elementRef.nativeElement.value = value;\n }\n\n focusedValue = false;\n private _focused = signal(false);\n get focused(): boolean { return this._focused(); }\n\n errorStateValue = false;\n private _errorState = signal(false);\n get errorState(): boolean { return this._errorState(); }\n\n isRequired = computed(() => {\n if (this._required()) {\n return true;\n }\n\n const control = this.ngControl?.control;\n\n if (control && control.validator) {\n const validator = control.validator({} as any);\n\n if (validator && validator['required']) {\n return true;\n }\n }\n\n return false;\n });\n\n emptyValue = true;\n private _empty = computed(() => !this._value());\n get empty(): boolean { return this._empty(); }\n\n shouldLabelFloatValue = false;\n private _shouldLabelFloat = computed(() => {\n return !!this._value() || this._focused();\n });\n get shouldLabelFloat(): boolean { return this._shouldLabelFloat(); }\n\n constructor() {\n effect(() => {\n this.focusedValue = this._focused();\n this.errorStateValue = this._errorState();\n this.emptyValue = this._empty();\n this.shouldLabelFloatValue = this._shouldLabelFloat();\n });\n }\n\n ngOnInit() {\n this._value.set(this.elementRef.nativeElement.value);\n this.ngControl?.statusChanges?.pipe(\n takeUntilDestroyed(this._destroyRef)\n ).subscribe(() => {\n this.updateErrorState();\n });\n }\n\n ngDoCheck() {\n if (this._value() !== this.elementRef.nativeElement.value) {\n this._value.set(this.elementRef.nativeElement.value);\n }\n this.updateErrorState();\n }\n\n private updateErrorState() {\n const oldState = this._errorState();\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.errorStateMatcher() || this._defaultErrorStateMatcher;\n const control = this.ngControl ? this.ngControl.control as any : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this._errorState.set(newState);\n }\n }\n\n onFocus() {\n this._focused.set(true);\n }\n\n onBlur() {\n this._focused.set(false);\n this.updateErrorState();\n }\n\n onInput(event: Event) {\n this._value.set((event.target as HTMLInputElement).value);\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n\nlet nextUniqueId = 0;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, TemplateRef, Directive, contentChild, viewChild, ElementRef, Renderer2, DestroyRef, input, signal, output, Component } from '@angular/core';
3
+ import { moveItemInArray, transferArrayItem, CdkDrag, CdkDropList, CdkDropListGroup } from '@angular/cdk/drag-drop';
4
+ import { Icon } from '@ngstarter-ui/components/icon';
5
+ import { Ripple } from '@ngstarter-ui/components/core';
6
+ import { NgTemplateOutlet } from '@angular/common';
7
+ import { FormsModule } from '@angular/forms';
8
+ import { Menu, MenuItem, MenuTrigger } from '@ngstarter-ui/components/menu';
9
+ import { PanelContent, Panel, PanelHeader } from '@ngstarter-ui/components/panel';
10
+ import { fromEvent } from 'rxjs';
11
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
12
+ import { Button } from '@ngstarter-ui/components/button';
13
+
14
+ class KanbanItemDefDirective {
15
+ templateRef = inject(TemplateRef);
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: KanbanItemDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
17
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: KanbanItemDefDirective, isStandalone: true, selector: "[ngsKanbanItemDef]", ngImport: i0 });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: KanbanItemDefDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ selector: '[ngsKanbanItemDef]'
23
+ }]
24
+ }] });
25
+
26
+ class KanbanBoard {
27
+ _itemTplDef = contentChild.required(KanbanItemDefDirective);
28
+ _headerContainer = viewChild.required('headerContainer', { read: ElementRef });
29
+ _scrollContainer = viewChild.required('scrollContainer', { read: ElementRef });
30
+ _renderer = inject(Renderer2);
31
+ _destroyRef = inject(DestroyRef);
32
+ columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
33
+ colors = input([], ...(ngDevMode ? [{ debugName: "colors" }] : /* istanbul ignore next */ []));
34
+ _hasVerticalScroll = signal(false, ...(ngDevMode ? [{ debugName: "_hasVerticalScroll" }] : /* istanbul ignore next */ []));
35
+ columnEdit = output();
36
+ columnDelete = output();
37
+ itemAdd = output();
38
+ itemClick = output();
39
+ itemDropped = output();
40
+ itemSorted = output();
41
+ itemTransferred = output();
42
+ _startContainerXOffset = 0;
43
+ _itemXOffset = 0;
44
+ _itemWidth = 0;
45
+ isDraggingActive = false;
46
+ _autoScrollStarted = false;
47
+ ngOnInit() {
48
+ fromEvent(this._scrollContainer().nativeElement, 'scroll')
49
+ .pipe(takeUntilDestroyed(this._destroyRef))
50
+ .subscribe((event) => {
51
+ this.onScroll(event);
52
+ });
53
+ }
54
+ onDropped(event) {
55
+ this.itemDropped.emit(event);
56
+ if (event.previousContainer === event.container) {
57
+ this.itemSorted.emit({
58
+ previousIndex: event.previousIndex,
59
+ currentIndex: event.currentIndex
60
+ });
61
+ moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
62
+ }
63
+ else {
64
+ this.itemTransferred.emit({
65
+ previousContainerData: event.previousContainer.data,
66
+ currentContainerData: event.container.data,
67
+ previousIndex: event.previousIndex,
68
+ currentIndex: event.currentIndex
69
+ });
70
+ transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
71
+ }
72
+ }
73
+ onScroll(event) {
74
+ const target = event.target;
75
+ const headerContainerElement = this._headerContainer().nativeElement;
76
+ this._renderer.setStyle(headerContainerElement, 'transform', `translate(-${target.scrollLeft}px, 0)`);
77
+ this._hasVerticalScroll.set(target.scrollTop > 0);
78
+ }
79
+ onDragStarted(event, element) {
80
+ this.isDraggingActive = true;
81
+ }
82
+ onDragMoved(event) {
83
+ const space = 100;
84
+ const scrollContainer = this._scrollContainer().nativeElement;
85
+ const scrollContainerWidth = scrollContainer.getBoundingClientRect().width;
86
+ const itemOffsetXStart = this._startContainerXOffset + event.distance.x;
87
+ const itemOffsetXEnd = this._startContainerXOffset + event.distance.x + this._itemWidth;
88
+ if (!this._autoScrollStarted) {
89
+ if (itemOffsetXEnd + space >= scrollContainerWidth) {
90
+ this._autoScrollStarted = true;
91
+ scrollContainer.scroll({
92
+ left: scrollContainer.scrollLeft + this._itemWidth * 2,
93
+ behavior: 'smooth'
94
+ });
95
+ setTimeout(() => {
96
+ this._autoScrollStarted = false;
97
+ }, 500);
98
+ }
99
+ else if (itemOffsetXStart <= space && scrollContainer.scrollLeft > 0) {
100
+ this._autoScrollStarted = true;
101
+ scrollContainer.scroll({
102
+ left: scrollContainer.scrollLeft - this._itemWidth * 2,
103
+ behavior: 'smooth'
104
+ });
105
+ setTimeout(() => {
106
+ this._autoScrollStarted = false;
107
+ }, 500);
108
+ }
109
+ }
110
+ }
111
+ onDragEnded(event) {
112
+ this.isDraggingActive = false;
113
+ }
114
+ itemMousedown(event) {
115
+ const scrollContainerElement = this._scrollContainer().nativeElement;
116
+ let targetElement = event.target;
117
+ if (!targetElement.classList.contains('kanban-item')) {
118
+ targetElement = targetElement.closest('.kanban-item');
119
+ }
120
+ const targetRect = targetElement.getBoundingClientRect();
121
+ this._startContainerXOffset = targetRect.x - scrollContainerElement.getBoundingClientRect().x;
122
+ this._itemXOffset = event.clientX - targetRect.x;
123
+ this._itemWidth = targetRect.width;
124
+ }
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: KanbanBoard, deps: [], target: i0.ɵɵFactoryTarget.Component });
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: KanbanBoard, isStandalone: true, selector: "ngs-kanban-board", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { columnEdit: "columnEdit", columnDelete: "columnDelete", itemAdd: "itemAdd", itemClick: "itemClick", itemDropped: "itemDropped", itemSorted: "itemSorted", itemTransferred: "itemTransferred" }, host: { properties: { "class.is-dragging-active": "isDraggingActive" }, classAttribute: "ngs-kanban-board" }, queries: [{ propertyName: "_itemTplDef", first: true, predicate: KanbanItemDefDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_headerContainer", first: true, predicate: ["headerContainer"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "_scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, read: ElementRef, isSignal: true }], exportAs: ["ngsKanbanBoard"], ngImport: i0, template: "<ngs-panel class=\"h-full\">\n <ngs-panel-header class=\"header\">\n <div class=\"flex flex-nowrap h-full items-center header-container\" #headerContainer>\n @for (column of columns(); track column; let index = $index) {\n <div class=\"h-full header-column relative flex gap-2 items-center justify-between flex-none\">\n <div class=\"flex gap-2 items-center uppercase text-sm\">\n @if (column.color) {\n <div class=\"size-3 rounded-full\" [style.background-color]=\"column.color\"></div>\n }\n {{ column.name }} ({{ column.items.length }})\n </div>\n <div class=\"flex gap-0.5 items-center\">\n <button ngsIconButton (click)=\"itemAdd.emit()\">\n <ngs-icon name=\"fluent:add-24-regular\"/>\n </button>\n <button ngsIconButton [ngsMenuTriggerFor]=\"columnMenu\">\n <ngs-icon name=\"fluent:more-horizontal-24-regular\"/>\n </button>\n </div>\n\n @if (_hasVerticalScroll()) {\n <div class=\"h-px bg-surface-container absolute bottom-0 start-0 end-0\"></div>\n }\n\n <ngs-menu #columnMenu=\"ngsMenu\">\n <button ngs-menu-item (click)=\"columnEdit.emit(column)\">\n <ngs-icon name=\"fluent:share-24-regular\"/>\n <span>Edit</span>\n </button>\n <button ngs-menu-item (click)=\"columnDelete.emit({ column, index })\">\n <ngs-icon name=\"fluent:delete-24-regular\"/>\n <span>Delete</span>\n </button>\n </ngs-menu>\n </div>\n }\n </div>\n </ngs-panel-header>\n <ngs-panel-content class=\"relative overflow-hidden\">\n <div #scrollContainer\n class=\"scroll-container h-full absolute overflow-auto inset-0 flex body items-baseline\">\n <div #scrollContainerContent\n class=\"flex min-h-full flex-nowrap column\" cdkDropListGroup>\n @for (column of columns(); track column) {\n <div class=\"column-container bg-surface-container-low flex-none rounded-2xl p-3 min-h-full flex flex-col gap-3\"\n cdkDropList\n [cdkDropListData]=\"column.items\"\n (cdkDropListDropped)=\"onDropped($event)\">\n @for (item of column.items; track item) {\n <div #element\n class=\"kanban-item bg-surface-container-lowest flex-none rounded-2xl\n p-3 shadow-sm cursor-pointer hover:outline-2 hover:outline-primary\"\n cdkDrag [cdkDragData]=\"item\" ngsRipple\n (mousedown)=\"itemMousedown($event)\"\n (click)=\"itemClick.emit(item)\"\n (cdkDragStarted)=\"onDragStarted($event, element)\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (cdkDragEnded)=\"onDragEnded($event)\">\n <ng-container [ngTemplateOutlet]=\"_itemTplDef().templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, column }\"/>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </ngs-panel-content>\n</ngs-panel>\n", styles: [":host{--ngs-kanban-board-col-width: calc(var(--spacing, .25rem) * 72);--ngs-kanban-board-padding-x: calc(var(--spacing, .25rem) * 10);--ngs-kanban-board-column-gap: calc(var(--spacing, .25rem) * 5);height:100%}:host .header{padding:0 var(--ngs-kanban-board-padding-x);overflow:hidden}:host .header-container{gap:var(--ngs-kanban-board-column-gap)}:host .header-column{width:var(--ngs-kanban-board-col-width);flex:none}:host .body{gap:var(--ngs-kanban-board-column-gap);padding:0 var(--ngs-kanban-board-padding-x)}:host .column{padding-bottom:var(--ngs-kanban-board-column-gap);gap:var(--ngs-kanban-board-column-gap)}:host .column-container{width:var(--ngs-kanban-board-col-width);flex:none}:host .cdk-drag-placeholder{opacity:60%}:host.is-dragging-active .scroll-container{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host.is-dragging-active .kanban-item:hover{outline:none}.kanban-item.cdk-drag-preview{background:var(--color-surface-container-lowest);padding:calc(var(--spacing, .25rem) * 3);cursor:pointer;flex:none;box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a;border-radius:1rem}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }, { kind: "directive", type: Ripple, selector: "[ngsRipple]", inputs: ["ngsRippleColor", "ngsRippleUnbounded", "ngsRippleCentered", "ngsRippleRadius", "ngsRippleAnimation", "ngsRippleDisabled", "ngsRippleTrigger"], outputs: ["ngsRippleCenteredChange", "ngsRippleDisabledChange", "ngsRippleTriggerChange"], exportAs: ["ngsRipple"] }, { kind: "component", type: PanelContent, selector: "ngs-panel-content", exportAs: ["ngsPanelContent"] }, { kind: "component", type: Panel, selector: "ngs-panel", inputs: ["absolute"], exportAs: ["ngsPanel"] }, { kind: "component", type: PanelHeader, selector: "ngs-panel-header", inputs: ["autoHeight"], exportAs: ["ngsPanelHeader"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: Menu, selector: "ngs-menu", inputs: ["role", "classList", "xPosition", "yPosition"], outputs: ["closed"], exportAs: ["ngsMenu"] }, { kind: "component", type: MenuItem, selector: "ngs-menu-item, [ngs-menu-item]", inputs: ["disabled", "role", "selected"], outputs: ["_triggered"], exportAs: ["ngsMenuItem"] }, { kind: "directive", type: MenuTrigger, selector: "[ngsMenuTriggerFor]", inputs: ["ngsMenuTriggerFor", "ngsMenuTriggerData", "ngsMenuDisabled", "xPosition", "yPosition", "ngsMenuTriggerRestoreFocus"], outputs: ["menuOpened", "menuClosed"], exportAs: ["ngsMenuTrigger"] }, { kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }] });
127
+ }
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: KanbanBoard, decorators: [{
129
+ type: Component,
130
+ args: [{ selector: 'ngs-kanban-board', exportAs: 'ngsKanbanBoard', imports: [
131
+ CdkDrag,
132
+ CdkDropList,
133
+ CdkDropListGroup,
134
+ Icon,
135
+ Ripple,
136
+ PanelContent,
137
+ Panel,
138
+ PanelHeader,
139
+ NgTemplateOutlet,
140
+ FormsModule,
141
+ Menu,
142
+ MenuItem,
143
+ MenuTrigger,
144
+ Button
145
+ ], host: {
146
+ 'class': 'ngs-kanban-board',
147
+ '[class.is-dragging-active]': 'isDraggingActive'
148
+ }, template: "<ngs-panel class=\"h-full\">\n <ngs-panel-header class=\"header\">\n <div class=\"flex flex-nowrap h-full items-center header-container\" #headerContainer>\n @for (column of columns(); track column; let index = $index) {\n <div class=\"h-full header-column relative flex gap-2 items-center justify-between flex-none\">\n <div class=\"flex gap-2 items-center uppercase text-sm\">\n @if (column.color) {\n <div class=\"size-3 rounded-full\" [style.background-color]=\"column.color\"></div>\n }\n {{ column.name }} ({{ column.items.length }})\n </div>\n <div class=\"flex gap-0.5 items-center\">\n <button ngsIconButton (click)=\"itemAdd.emit()\">\n <ngs-icon name=\"fluent:add-24-regular\"/>\n </button>\n <button ngsIconButton [ngsMenuTriggerFor]=\"columnMenu\">\n <ngs-icon name=\"fluent:more-horizontal-24-regular\"/>\n </button>\n </div>\n\n @if (_hasVerticalScroll()) {\n <div class=\"h-px bg-surface-container absolute bottom-0 start-0 end-0\"></div>\n }\n\n <ngs-menu #columnMenu=\"ngsMenu\">\n <button ngs-menu-item (click)=\"columnEdit.emit(column)\">\n <ngs-icon name=\"fluent:share-24-regular\"/>\n <span>Edit</span>\n </button>\n <button ngs-menu-item (click)=\"columnDelete.emit({ column, index })\">\n <ngs-icon name=\"fluent:delete-24-regular\"/>\n <span>Delete</span>\n </button>\n </ngs-menu>\n </div>\n }\n </div>\n </ngs-panel-header>\n <ngs-panel-content class=\"relative overflow-hidden\">\n <div #scrollContainer\n class=\"scroll-container h-full absolute overflow-auto inset-0 flex body items-baseline\">\n <div #scrollContainerContent\n class=\"flex min-h-full flex-nowrap column\" cdkDropListGroup>\n @for (column of columns(); track column) {\n <div class=\"column-container bg-surface-container-low flex-none rounded-2xl p-3 min-h-full flex flex-col gap-3\"\n cdkDropList\n [cdkDropListData]=\"column.items\"\n (cdkDropListDropped)=\"onDropped($event)\">\n @for (item of column.items; track item) {\n <div #element\n class=\"kanban-item bg-surface-container-lowest flex-none rounded-2xl\n p-3 shadow-sm cursor-pointer hover:outline-2 hover:outline-primary\"\n cdkDrag [cdkDragData]=\"item\" ngsRipple\n (mousedown)=\"itemMousedown($event)\"\n (click)=\"itemClick.emit(item)\"\n (cdkDragStarted)=\"onDragStarted($event, element)\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (cdkDragEnded)=\"onDragEnded($event)\">\n <ng-container [ngTemplateOutlet]=\"_itemTplDef().templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, column }\"/>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </ngs-panel-content>\n</ngs-panel>\n", styles: [":host{--ngs-kanban-board-col-width: calc(var(--spacing, .25rem) * 72);--ngs-kanban-board-padding-x: calc(var(--spacing, .25rem) * 10);--ngs-kanban-board-column-gap: calc(var(--spacing, .25rem) * 5);height:100%}:host .header{padding:0 var(--ngs-kanban-board-padding-x);overflow:hidden}:host .header-container{gap:var(--ngs-kanban-board-column-gap)}:host .header-column{width:var(--ngs-kanban-board-col-width);flex:none}:host .body{gap:var(--ngs-kanban-board-column-gap);padding:0 var(--ngs-kanban-board-padding-x)}:host .column{padding-bottom:var(--ngs-kanban-board-column-gap);gap:var(--ngs-kanban-board-column-gap)}:host .column-container{width:var(--ngs-kanban-board-col-width);flex:none}:host .cdk-drag-placeholder{opacity:60%}:host.is-dragging-active .scroll-container{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host.is-dragging-active .kanban-item:hover{outline:none}.kanban-item.cdk-drag-preview{background:var(--color-surface-container-lowest);padding:calc(var(--spacing, .25rem) * 3);cursor:pointer;flex:none;box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a;border-radius:1rem}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
149
+ }], propDecorators: { _itemTplDef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KanbanItemDefDirective), { isSignal: true }] }], _headerContainer: [{ type: i0.ViewChild, args: ['headerContainer', { ...{ read: ElementRef }, isSignal: true }] }], _scrollContainer: [{ type: i0.ViewChild, args: ['scrollContainer', { ...{ read: ElementRef }, isSignal: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], colors: [{ type: i0.Input, args: [{ isSignal: true, alias: "colors", required: false }] }], columnEdit: [{ type: i0.Output, args: ["columnEdit"] }], columnDelete: [{ type: i0.Output, args: ["columnDelete"] }], itemAdd: [{ type: i0.Output, args: ["itemAdd"] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], itemDropped: [{ type: i0.Output, args: ["itemDropped"] }], itemSorted: [{ type: i0.Output, args: ["itemSorted"] }], itemTransferred: [{ type: i0.Output, args: ["itemTransferred"] }] } });
150
+
151
+ /**
152
+ * Generated bundle index. Do not edit.
153
+ */
154
+
155
+ export { KanbanBoard, KanbanItemDefDirective };
156
+ //# sourceMappingURL=ngstarter-ui-components-kanban-board.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngstarter-ui-components-kanban-board.mjs","sources":["../../../projects/components/kanban-board/src/kanban-item-def.directive.ts","../../../projects/components/kanban-board/src/kanban-board/kanban-board.ts","../../../projects/components/kanban-board/src/kanban-board/kanban-board.html","../../../projects/components/kanban-board/ngstarter-ui-components-kanban-board.ts"],"sourcesContent":["import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsKanbanItemDef]'\n})\nexport class KanbanItemDefDirective {\n readonly templateRef = inject(TemplateRef);\n}\n","import {\n Component,\n contentChild, DestroyRef,\n ElementRef,\n inject,\n input, OnInit,\n output,\n Renderer2,\n signal,\n viewChild\n} from '@angular/core';\nimport {\n CdkDrag,\n CdkDragDrop, CdkDragEnd, CdkDragMove, CdkDragStart,\n CdkDropList,\n CdkDropListGroup,\n moveItemInArray,\n transferArrayItem\n} from '@angular/cdk/drag-drop';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { Ripple } from '@ngstarter-ui/components/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Menu, MenuItem, MenuTrigger } from '@ngstarter-ui/components/menu';\nimport { PanelContent, Panel, PanelHeader } from '@ngstarter-ui/components/panel';\nimport { KanbanColumn, KanbanItem, KanbanItemSortedEvent, KanbanItemTransferredEvent } from '../types';\nimport { KanbanItemDefDirective } from '../kanban-item-def.directive';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Button } from '@ngstarter-ui/components/button';\n\n@Component({\n selector: 'ngs-kanban-board',\n exportAs: 'ngsKanbanBoard',\n imports: [\n CdkDrag,\n CdkDropList,\n CdkDropListGroup,\n Icon,\n\n Ripple,\n PanelContent,\n Panel,\n PanelHeader,\n NgTemplateOutlet,\n FormsModule,\n Menu,\n MenuItem,\n MenuTrigger,\n Button\n ],\n templateUrl: './kanban-board.html',\n styleUrl: './kanban-board.scss',\n host: {\n 'class': 'ngs-kanban-board',\n '[class.is-dragging-active]': 'isDraggingActive'\n }\n})\nexport class KanbanBoard<T extends KanbanColumn<K>, K extends KanbanItem> implements OnInit {\n protected _itemTplDef = contentChild.required(KanbanItemDefDirective);\n private _headerContainer = viewChild.required('headerContainer', { read: ElementRef });\n private _scrollContainer = viewChild.required('scrollContainer', { read: ElementRef });\n private _renderer = inject(Renderer2);\n private _destroyRef = inject(DestroyRef);\n\n columns = input<T[]>([]);\n colors = input<string[]>([]);\n\n protected _hasVerticalScroll = signal(false);\n\n readonly columnEdit = output<T>();\n readonly columnDelete = output<{ column: T, index: number }>();\n readonly itemAdd = output<void>();\n readonly itemClick = output<K>();\n readonly itemDropped = output<CdkDragDrop<K[]>>();\n readonly itemSorted = output<KanbanItemSortedEvent>();\n readonly itemTransferred = output<KanbanItemTransferredEvent<K>>();\n\n private _startContainerXOffset = 0;\n private _itemXOffset = 0;\n private _itemWidth = 0;\n protected isDraggingActive = false;\n private _autoScrollStarted = false;\n\n ngOnInit() {\n fromEvent(this._scrollContainer().nativeElement, 'scroll')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n this.onScroll(event);\n });\n }\n\n onDropped(event: CdkDragDrop<K[]>) {\n this.itemDropped.emit(event);\n\n if (event.previousContainer === event.container) {\n this.itemSorted.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex\n });\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n this.itemTransferred.emit({\n previousContainerData: event.previousContainer.data,\n currentContainerData: event.container.data,\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex\n });\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex,\n );\n }\n }\n\n onScroll(event: Event) {\n const target = event.target as HTMLElement;\n const headerContainerElement = this._headerContainer().nativeElement as HTMLElement;\n this._renderer.setStyle(headerContainerElement, 'transform', `translate(-${target.scrollLeft}px, 0)`);\n this._hasVerticalScroll.set(target.scrollTop > 0);\n }\n\n onDragStarted(event: CdkDragStart, element: HTMLElement) {\n this.isDraggingActive = true;\n }\n\n onDragMoved(event: CdkDragMove<K>) {\n const space = 100;\n const scrollContainer = this._scrollContainer().nativeElement as HTMLElement;\n const scrollContainerWidth = scrollContainer.getBoundingClientRect().width;\n const itemOffsetXStart = this._startContainerXOffset + event.distance.x;\n const itemOffsetXEnd = this._startContainerXOffset + event.distance.x + this._itemWidth;\n\n if (!this._autoScrollStarted) {\n if (itemOffsetXEnd + space >= scrollContainerWidth) {\n this._autoScrollStarted = true;\n scrollContainer.scroll({\n left: scrollContainer.scrollLeft + this._itemWidth * 2,\n behavior: 'smooth'\n });\n setTimeout(() => {\n this._autoScrollStarted = false;\n }, 500);\n } else if (itemOffsetXStart <= space && scrollContainer.scrollLeft > 0) {\n this._autoScrollStarted = true;\n scrollContainer.scroll({\n left: scrollContainer.scrollLeft - this._itemWidth * 2,\n behavior: 'smooth'\n });\n setTimeout(() => {\n this._autoScrollStarted = false;\n }, 500);\n }\n }\n }\n\n onDragEnded(event: CdkDragEnd) {\n this.isDraggingActive = false;\n }\n\n protected itemMousedown(event: MouseEvent) {\n const scrollContainerElement = this._scrollContainer().nativeElement as HTMLElement;\n let targetElement = event.target as Element;\n\n if (!targetElement.classList.contains('kanban-item')) {\n targetElement = targetElement.closest('.kanban-item') as HTMLElement;\n }\n\n const targetRect = targetElement.getBoundingClientRect();\n this._startContainerXOffset = targetRect.x - scrollContainerElement.getBoundingClientRect().x;\n this._itemXOffset = event.clientX - targetRect.x;\n this._itemWidth = targetRect.width;\n }\n}\n","<ngs-panel class=\"h-full\">\n <ngs-panel-header class=\"header\">\n <div class=\"flex flex-nowrap h-full items-center header-container\" #headerContainer>\n @for (column of columns(); track column; let index = $index) {\n <div class=\"h-full header-column relative flex gap-2 items-center justify-between flex-none\">\n <div class=\"flex gap-2 items-center uppercase text-sm\">\n @if (column.color) {\n <div class=\"size-3 rounded-full\" [style.background-color]=\"column.color\"></div>\n }\n {{ column.name }} ({{ column.items.length }})\n </div>\n <div class=\"flex gap-0.5 items-center\">\n <button ngsIconButton (click)=\"itemAdd.emit()\">\n <ngs-icon name=\"fluent:add-24-regular\"/>\n </button>\n <button ngsIconButton [ngsMenuTriggerFor]=\"columnMenu\">\n <ngs-icon name=\"fluent:more-horizontal-24-regular\"/>\n </button>\n </div>\n\n @if (_hasVerticalScroll()) {\n <div class=\"h-px bg-surface-container absolute bottom-0 start-0 end-0\"></div>\n }\n\n <ngs-menu #columnMenu=\"ngsMenu\">\n <button ngs-menu-item (click)=\"columnEdit.emit(column)\">\n <ngs-icon name=\"fluent:share-24-regular\"/>\n <span>Edit</span>\n </button>\n <button ngs-menu-item (click)=\"columnDelete.emit({ column, index })\">\n <ngs-icon name=\"fluent:delete-24-regular\"/>\n <span>Delete</span>\n </button>\n </ngs-menu>\n </div>\n }\n </div>\n </ngs-panel-header>\n <ngs-panel-content class=\"relative overflow-hidden\">\n <div #scrollContainer\n class=\"scroll-container h-full absolute overflow-auto inset-0 flex body items-baseline\">\n <div #scrollContainerContent\n class=\"flex min-h-full flex-nowrap column\" cdkDropListGroup>\n @for (column of columns(); track column) {\n <div class=\"column-container bg-surface-container-low flex-none rounded-2xl p-3 min-h-full flex flex-col gap-3\"\n cdkDropList\n [cdkDropListData]=\"column.items\"\n (cdkDropListDropped)=\"onDropped($event)\">\n @for (item of column.items; track item) {\n <div #element\n class=\"kanban-item bg-surface-container-lowest flex-none rounded-2xl\n p-3 shadow-sm cursor-pointer hover:outline-2 hover:outline-primary\"\n cdkDrag [cdkDragData]=\"item\" ngsRipple\n (mousedown)=\"itemMousedown($event)\"\n (click)=\"itemClick.emit(item)\"\n (cdkDragStarted)=\"onDragStarted($event, element)\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (cdkDragEnded)=\"onDragEnded($event)\">\n <ng-container [ngTemplateOutlet]=\"_itemTplDef().templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, column }\"/>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </ngs-panel-content>\n</ngs-panel>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component } from '@angular/core';
3
+
4
+ class Kbd {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Kbd, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: Kbd, isStandalone: true, selector: "ngs-kbd", host: { classAttribute: "ngs-kbd" }, exportAs: ["ngsKbd"], ngImport: i0, template: "<div class=\"content\">\n <ng-content/>\n</div>\n<span class=\"plus\">+</span>\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center}:host .content{display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;padding:calc(var(--spacing, .25rem) * 1.5);height:calc(var(--spacing, .25rem) * 6);border-radius:.5rem;background:var(--color-surface-container);min-width:calc(var(--spacing, .25rem) * 6);line-height:0;flex:none;gap:calc(var(--spacing, .25rem) * .5)}:host .plus{display:none;font-size:.75rem}:host-context(.ngs-kdb-group):not(:last-child) .plus{display:inline-flex;margin:0 calc(var(--spacing, .25rem) * 1)}\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: Kbd, decorators: [{
9
+ type: Component,
10
+ args: [{ selector: 'ngs-kbd', exportAs: 'ngsKbd', imports: [], host: {
11
+ 'class': 'ngs-kbd',
12
+ }, template: "<div class=\"content\">\n <ng-content/>\n</div>\n<span class=\"plus\">+</span>\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center}:host .content{display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;padding:calc(var(--spacing, .25rem) * 1.5);height:calc(var(--spacing, .25rem) * 6);border-radius:.5rem;background:var(--color-surface-container);min-width:calc(var(--spacing, .25rem) * 6);line-height:0;flex:none;gap:calc(var(--spacing, .25rem) * .5)}:host .plus{display:none;font-size:.75rem}:host-context(.ngs-kdb-group):not(:last-child) .plus{display:inline-flex;margin:0 calc(var(--spacing, .25rem) * 1)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
13
+ }] });
14
+
15
+ class KbdGroup {
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: KbdGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: KbdGroup, isStandalone: true, selector: "ngs-kbd-group", host: { classAttribute: "ngs-kdb-group" }, exportAs: ["ngsKbdGroup"], ngImport: i0, template: "<ng-content select=\"ngs-kbd\"/>\n", styles: [":host{display:inline-flex;align-items:center;-webkit-user-select:none;user-select:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: KbdGroup, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'ngs-kbd-group', exportAs: 'ngsKbdGroup', imports: [], host: {
22
+ 'class': 'ngs-kdb-group'
23
+ }, template: "<ng-content select=\"ngs-kbd\"/>\n", styles: [":host{display:inline-flex;align-items:center;-webkit-user-select:none;user-select:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
24
+ }] });
25
+
26
+ /**
27
+ * Generated bundle index. Do not edit.
28
+ */
29
+
30
+ export { Kbd, KbdGroup };
31
+ //# sourceMappingURL=ngstarter-ui-components-kbd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngstarter-ui-components-kbd.mjs","sources":["../../../projects/components/kbd/src/kbd/kbd.ts","../../../projects/components/kbd/src/kbd/kbd.html","../../../projects/components/kbd/src/kbd-group/kbd-group.ts","../../../projects/components/kbd/src/kbd-group/kbd-group.html","../../../projects/components/kbd/ngstarter-ui-components-kbd.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\n\n@Component({\n selector: 'ngs-kbd',\n exportAs: 'ngsKbd',\n imports: [],\n templateUrl: './kbd.html',\n styleUrl: './kbd.scss',\n host: {\n 'class': 'ngs-kbd',\n }\n})\nexport class Kbd {\n}\n","<div class=\"content\">\n <ng-content/>\n</div>\n<span class=\"plus\">+</span>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-kbd-group',\n exportAs: 'ngsKbdGroup',\n imports: [],\n templateUrl: './kbd-group.html',\n styleUrl: './kbd-group.scss',\n host: {\n 'class': 'ngs-kdb-group'\n }\n})\nexport class KbdGroup {\n\n}\n","<ng-content select=\"ngs-kbd\"/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAYa,GAAG,CAAA;uGAAH,GAAG,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAH,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,GAAG,8HCZhB,mFAIA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,CAAA;;2FDQa,GAAG,EAAA,UAAA,EAAA,CAAA;kBAVf,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,QAAA,EACT,QAAQ,EAAA,OAAA,EACT,EAAE,EAAA,IAAA,EAGL;AACJ,wBAAA,OAAO,EAAE,SAAS;AACnB,qBAAA,EAAA,QAAA,EAAA,mFAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;;;MEEU,QAAQ,CAAA;uGAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,+ICZrB,oCACA,EAAA,MAAA,EAAA,CAAA,8JAAA,CAAA,EAAA,CAAA;;2FDWa,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAVpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,QAAA,EACf,aAAa,EAAA,OAAA,EACd,EAAE,EAAA,IAAA,EAGL;AACJ,wBAAA,OAAO,EAAE;AACV,qBAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,8JAAA,CAAA,EAAA;;;AEVH;;AAEG;;;;"}