@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 @@
1
+ {"version":3,"file":"ngstarter-ui-components-dialog.mjs","sources":["../../../projects/components/dialog/src/dialog-config.ts","../../../projects/components/dialog/src/dialog-ref.ts","../../../projects/components/dialog/src/dialog-container/dialog-container.ts","../../../projects/components/dialog/src/dialog-container/dialog-container.html","../../../projects/components/dialog/src/dialog.service.ts","../../../projects/components/dialog/src/dialog-title/dialog-title.ts","../../../projects/components/dialog/src/dialog-content/dialog-content.ts","../../../projects/components/dialog/src/dialog-actions/dialog-actions.ts","../../../projects/components/dialog/src/dialog-close.ts","../../../projects/components/dialog/ngstarter-ui-components-dialog.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport class DialogConfig<D = any> {\n data?: D | null = null;\n width?: string = '';\n height?: string = '';\n minWidth?: string | number;\n minHeight?: string | number;\n maxWidth?: string | number;\n maxHeight?: string | number;\n hasBackdrop?: boolean = true;\n backdropClass?: string | string[] = 'ngs-dialog-backdrop';\n panelClass?: string | string[] = '';\n disableClose?: boolean = false;\n autoFocus?: boolean | string = 'first-tabbable';\n restoreFocus?: boolean = true;\n ariaDescribedBy?: string | null = null;\n ariaLabelledBy?: string | null = null;\n ariaLabel?: string | null = null;\n role?: 'dialog' | 'alertdialog' = 'dialog';\n closeOnNavigation?: boolean = true;\n}\n\nexport const DIALOG_DATA = new InjectionToken<any>('DialogData');\nexport const DIALOG_DEFAULT_OPTIONS = new InjectionToken<DialogConfig>('DialogConfig');\n","import { Subject, Observable, filter, take } from 'rxjs';\nimport { DialogContainer } from './dialog-container/dialog-container';\n\nexport class DialogRef<T, R = any> {\n private readonly _afterClosed = new Subject<R | undefined>();\n private readonly _afterOpened = new Subject<void>();\n private readonly _backdropClick = new Subject<MouseEvent>();\n private readonly _keydownEvents = new Subject<KeyboardEvent>();\n\n componentInstance: T | null = null;\n disableClose: boolean | undefined;\n\n /** @internal */\n _cdkRef: any;\n\n /** @internal */\n _container: DialogContainer | undefined;\n\n private _isClosing = false;\n\n close(dialogResult?: R): void {\n if (this._isClosing) {\n return;\n }\n\n this._isClosing = true;\n\n if (this._container && this._cdkRef) {\n\n // Start exit animation for the container\n this._container._startExitAnimation();\n\n // Start exit animation for the backdrop\n const overlayRef = this._cdkRef.overlayRef;\n const backdropElement = overlayRef.backdropElement;\n if (backdropElement) {\n // Remove both classes that could be forcing opacity: 1\n backdropElement.classList.remove('ngs-dialog-backdrop-showing');\n backdropElement.classList.remove('cdk-overlay-backdrop-showing');\n }\n\n // Wait for the container animation to finish before destroying the overlay\n this._container._animationStateChanged\n .pipe(\n filter((event: any) => event.phaseName === 'done' && event.toState === 'exit'),\n take(1)\n )\n .subscribe(() => {\n this._finishClose(dialogResult);\n });\n\n // Fallback in case transitionend never fires (e.g. if opacity was already 0 or style didn't apply)\n setTimeout(() => {\n if (this._isClosing && this._cdkRef) {\n this._finishClose(dialogResult);\n }\n }, 250);\n\n return;\n }\n this._finishClose(dialogResult);\n }\n\n private _finishClose(dialogResult?: R): void {\n if (this._cdkRef) {\n const cdkRef = this._cdkRef;\n this._cdkRef = null;\n cdkRef.close(dialogResult);\n }\n this._afterClosed.next(dialogResult);\n this._afterClosed.complete();\n this._afterOpened.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n }\n\n afterClosed(): Observable<R | undefined> {\n return this._afterClosed.asObservable();\n }\n\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n\n backdropClick(): Observable<MouseEvent> {\n return this._backdropClick.asObservable();\n }\n\n keydownEvents(): Observable<KeyboardEvent> {\n return this._keydownEvents.asObservable();\n }\n\n __fireAfterOpened(): void {\n this._afterOpened.next();\n }\n\n __fireBackdropClick(event: MouseEvent): void {\n this._backdropClick.next(event);\n }\n\n __fireKeydownEvent(event: KeyboardEvent): void {\n this._keydownEvents.next(event);\n }\n}\n","import { ChangeDetectorRef, Component, EventEmitter, inject, viewChild, ElementRef, OnInit } from '@angular/core';\nimport { CdkDialogContainer, DialogModule } from '@angular/cdk/dialog';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\n\n@Component({\n selector: 'ngs-dialog-container',\n imports: [DialogModule],\n templateUrl: './dialog-container.html',\n styleUrls: ['./dialog-container.scss'],\n host: {\n 'class': 'ngs-dialog-container',\n '[class.ngs-dialog-container-enter]': '_animationState === \"enter\"',\n '[class.ngs-dialog-container-exit]': '_animationState === \"exit\"',\n '(transitionend)': '_onTransitionEnd($event)',\n },\n})\nexport class DialogContainer extends CdkDialogContainer implements OnInit {\n private readonly _cdr = inject(ChangeDetectorRef);\n\n override readonly _portalOutlet = viewChild(CdkPortalOutlet) as any;\n\n /** State of the dialog animation. */\n _animationState: 'void' | 'enter' | 'exit' = 'void';\n\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<any>();\n\n ngOnInit() {\n const config = this._config;\n if (config) {\n const element = (this as any)._elementRef.nativeElement;\n\n if (config.maxWidth) {\n element.style.setProperty('--ngs-dialog-container-max-width', this._formatValue(config.maxWidth));\n }\n\n if (config.minWidth) {\n element.style.setProperty('--ngs-dialog-container-min-width', this._formatValue(config.minWidth));\n }\n\n if (config.width) {\n element.style.setProperty('--ngs-dialog-container-max-width', 'none');\n }\n }\n }\n\n private _formatValue(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value;\n }\n\n _onTransitionEnd(event: TransitionEvent) {\n if (event.propertyName === 'opacity' && event.target === event.currentTarget) {\n this._animationStateChanged.emit({\n fromState: this._animationState === 'enter' ? 'void' : 'enter',\n toState: this._animationState,\n totalTime: 150,\n phaseName: 'done',\n } as any);\n }\n }\n\n /** Starts the dialog enter animation. */\n _startEnterAnimation(): void {\n this._animationState = 'enter';\n this._cdr.markForCheck();\n }\n\n /** Starts the dialog exit animation. */\n _startExitAnimation(): void {\n this._animationState = 'exit';\n this._cdr.markForCheck();\n }\n}\n","<ng-template cdkPortalOutlet />\n","import { Injectable, Injector, Type, TemplateRef, inject, StaticProvider } from '@angular/core';\nimport { Dialog as CdkDialog, DialogConfig as CdkDialogConfig, DialogRef as CdkDialogRef } from '@angular/cdk/dialog';\nimport { filter, take } from 'rxjs/operators';\nimport { DialogConfig, DIALOG_DATA, DIALOG_DEFAULT_OPTIONS } from './dialog-config';\nimport { DialogRef } from './dialog-ref';\nimport { DialogContainer } from './dialog-container/dialog-container';\nimport { ComponentType } from '@angular/cdk/portal';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Dialog {\n private readonly _cdkDialog = inject(CdkDialog);\n private readonly _injector = inject(Injector);\n private readonly _defaultOptions = inject(DIALOG_DEFAULT_OPTIONS, { optional: true });\n\n open<T, D = any, R = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: DialogConfig<D>\n ): DialogRef<T, R> {\n const dialogRef = new DialogRef<T, R>();\n const mergedConfig = { ...new DialogConfig(), ...this._defaultOptions, ...config };\n\n // Set default maxWidth if not specified and no width is set\n if (!mergedConfig.maxWidth && !mergedConfig.width) {\n mergedConfig.maxWidth = 560;\n }\n\n // Set default minWidth if not specified\n if (!mergedConfig.minWidth) {\n mergedConfig.minWidth = 280;\n }\n\n let container: DialogContainer | undefined;\n const cdkConfig: CdkDialogConfig<D, any, DialogContainer> = {\n ...mergedConfig,\n container: DialogContainer,\n panelClass: this._buildPanelClass(mergedConfig?.panelClass),\n backdropClass: this._buildBackdropClass(mergedConfig?.backdropClass),\n providers: (ref: any, config: any, _container: DialogContainer) => {\n container = _container;\n dialogRef._container = _container;\n return [\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config?.data }\n ];\n }\n };\n\n const cdkRef = this._cdkDialog.open(componentOrTemplateRef, cdkConfig as any);\n\n dialogRef.disableClose = mergedConfig?.disableClose;\n dialogRef._cdkRef = cdkRef;\n\n if (container) {\n container._animationStateChanged\n .pipe(\n filter((event: any) => event.phaseName === 'done' && event.toState === 'enter'),\n take(1)\n )\n .subscribe(() => {\n dialogRef.__fireAfterOpened();\n });\n\n // Use double rAF to ensure the browser has rendered the initial state (opacity: 0)\n // before we trigger the transition to opacity: 1.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (container) {\n container._startEnterAnimation();\n }\n\n const overlayRef = cdkRef.overlayRef;\n if (overlayRef.backdropElement) {\n overlayRef.backdropElement.classList.add('ngs-dialog-backdrop-showing');\n }\n });\n });\n }\n\n cdkRef.closed.subscribe(result => {\n if (dialogRef._cdkRef) {\n dialogRef._cdkRef = null;\n dialogRef.close(result as R);\n }\n });\n\n cdkRef.backdropClick.subscribe(event => {\n dialogRef.__fireBackdropClick(event);\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n\n cdkRef.keydownEvents.subscribe(event => {\n dialogRef.__fireKeydownEvent(event);\n if (event.key === 'Escape' && !dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n\n return dialogRef;\n }\n\n close<T, R>(dialogRef: DialogRef<T, R>, result?: R): void {\n dialogRef.close(result);\n }\n\n closeAll(): void {\n this._cdkDialog.closeAll();\n }\n\n private _buildPanelClass(panelClass: string | string[] | undefined): string[] {\n const classes = ['ngs-dialog-panel', 'overflow-hidden', 'flex', 'flex-col'];\n\n if (Array.isArray(panelClass)) {\n classes.push(...panelClass);\n } else if (panelClass) {\n classes.push(panelClass);\n }\n\n return classes;\n }\n\n private _buildBackdropClass(backdropClass: string | string[] | undefined): string[] {\n const classes: string[] = ['ngs-dialog-backdrop'];\n\n if (Array.isArray(backdropClass)) {\n classes.push(...backdropClass);\n } else if (backdropClass) {\n classes.push(backdropClass);\n }\n\n return classes;\n }\n}\n","import { Component, input, OnInit, inject } from '@angular/core';\nimport { DialogRef } from '../dialog-ref';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ngs-dialog-title, [ngs-dialog-title], [ngsDialogTitle]',\n exportAs: 'ngsDialogTitle',\n template: '<ng-content/>',\n styleUrl: './dialog-title.scss',\n host: {\n 'class': 'ngs-dialog-title',\n '[id]': 'id()',\n },\n})\nexport class DialogTitle implements OnInit {\n private _dialogRef = inject(DialogRef, { optional: true });\n\n id = input<string>(`ngs-dialog-title-${nextUniqueId++}`);\n\n ngOnInit() {\n if (this._dialogRef && !this._dialogRef.disableClose) {\n // Logic for ARIA if needed\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-dialog-content,[ngs-dialog-content],[ngsDialogContent]',\n styleUrl: './dialog-content.scss',\n template: '<ng-content/>',\n host: {\n 'class': 'ngs-dialog-content'\n }\n})\nexport class DialogContent {}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-dialog-actions, [ngs-dialog-actions], [ngsDialogActions]',\n styleUrl: './dialog-actions.scss',\n template: '<ng-content />',\n host: {\n 'class': 'ngs-dialog-actions',\n '[class.ngs-dialog-actions-align-center]': 'align() === \"center\"',\n '[class.ngs-dialog-actions-align-end]': 'align() === \"end\"',\n }\n})\nexport class DialogActions {\n align = input<'start' | 'center' | 'end'>('end');\n}\n","import { Directive, input, inject } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\nimport { Dialog } from './dialog.service';\n\n@Directive({\n selector: '[ngs-dialog-close], [ngsDialogClose]',\n exportAs: 'ngsDialogClose',\n standalone: true,\n host: {\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.type]': 'type()',\n '(click)': '_onClick()',\n }\n})\nexport class DialogClose {\n dialogResult = input<any>(undefined, {\n alias: 'ngs-dialog-close'\n });\n _dialogResult = input<any>(undefined, {\n alias: 'ngsDialogClose'\n });\n ariaLabel = input<string | null>(null);\n type = input<'submit' | 'button' | 'reset'>('button');\n\n private _dialogRef = inject(DialogRef, { optional: true });\n private _dialog = inject(Dialog);\n\n protected _onClick() {\n if (this._dialogRef) {\n this._dialog.close(this._dialogRef, this.dialogResult() || this._dialogResult());\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CdkDialog","filter","take"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, input, booleanAttribute } from '@angular/core';
3
+
4
+ class TextDivider {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TextDivider, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: TextDivider, isStandalone: true, selector: "ngs-text-divider", host: { classAttribute: "ngs-text-divider" }, exportAs: ["ngsTextDivider"], ngImport: i0, template: "<div class=\"line-start\"></div>\n<div class=\"text\">\n <ng-content/>\n</div>\n<div class=\"line-end\"></div>\n", styles: [":host{display:flex;width:100%;align-items:center;gap:calc(var(--spacing, .25rem) * 4);flex-wrap:nowrap}:host .text{white-space:nowrap}:host .line-start{position:relative;flex-grow:1}:host .line-start:before{content:\"\";position:absolute;height:1px;background:var(--color-border);top:50%;width:100%}:host .line-end{position:relative;flex-grow:1}:host .line-end:before{content:\"\";position:absolute;height:1px;background:var(--color-border);top:50%;width:100%}\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: TextDivider, decorators: [{
9
+ type: Component,
10
+ args: [{ selector: 'ngs-text-divider', exportAs: 'ngsTextDivider', host: {
11
+ 'class': 'ngs-text-divider',
12
+ }, template: "<div class=\"line-start\"></div>\n<div class=\"text\">\n <ng-content/>\n</div>\n<div class=\"line-end\"></div>\n", styles: [":host{display:flex;width:100%;align-items:center;gap:calc(var(--spacing, .25rem) * 4);flex-wrap:nowrap}:host .text{white-space:nowrap}:host .line-start{position:relative;flex-grow:1}:host .line-start:before{content:\"\";position:absolute;height:1px;background:var(--color-border);top:50%;width:100%}:host .line-end{position:relative;flex-grow:1}:host .line-end:before{content:\"\";position:absolute;height:1px;background:var(--color-border);top:50%;width:100%}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
13
+ }] });
14
+
15
+ class Divider {
16
+ /** Whether the divider is vertically aligned. */
17
+ vertical = input(false, { ...(ngDevMode ? { debugName: "vertical" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
18
+ /** Whether the divider is an inset divider. */
19
+ inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
20
+ fixedHeight = input(false, { ...(ngDevMode ? { debugName: "fixedHeight" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Divider, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: Divider, isStandalone: true, selector: "ngs-divider", inputs: { vertical: { classPropertyName: "vertical", publicName: "vertical", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, fixedHeight: { classPropertyName: "fixedHeight", publicName: "fixedHeight", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "separator" }, properties: { "attr.aria-orientation": "vertical() ? \"vertical\" : \"horizontal\"", "class.ngs-divider-vertical": "vertical()", "class.ngs-divider-horizontal": "!vertical()", "class.ngs-divider-inset": "inset()", "class.is-fixed-height": "fixedHeight()" }, classAttribute: "ngs-divider" }, exportAs: ["ngsDivider"], ngImport: i0, template: '', isInline: true, styles: [":host{--ngs-divider-vertical-fixed-height: calc(var(--spacing, .25rem) * 5);display:block;border-top-style:solid;border-top-color:var(--color-border);flex:none}:host.ngs-divider-horizontal{border-top-width:1px}:host.ngs-divider-horizontal.ngs-divider-inset{margin-left:80px}[dir=rtl] :host.ngs-divider-horizontal.ngs-divider-inset{margin-left:0;margin-right:80px}:host.ngs-divider-vertical{display:inline-block;border-top-width:0;border-right-style:solid;border-right-color:var(--color-border);border-right-width:1px;vertical-align:middle;height:100%}:host.ngs-divider-vertical.ngs-divider-inset{margin-top:8px;margin-bottom:8px}:host.ngs-divider-vertical.is-fixed-height:not([class*=h-]){height:var(--ngs-divider-vertical-fixed-height)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Divider, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'ngs-divider', exportAs: 'ngsDivider', template: '', host: {
27
+ 'role': 'separator',
28
+ 'class': 'ngs-divider',
29
+ '[attr.aria-orientation]': 'vertical() ? "vertical" : "horizontal"',
30
+ '[class.ngs-divider-vertical]': 'vertical()',
31
+ '[class.ngs-divider-horizontal]': '!vertical()',
32
+ '[class.ngs-divider-inset]': 'inset()',
33
+ '[class.is-fixed-height]': 'fixedHeight()',
34
+ }, styles: [":host{--ngs-divider-vertical-fixed-height: calc(var(--spacing, .25rem) * 5);display:block;border-top-style:solid;border-top-color:var(--color-border);flex:none}:host.ngs-divider-horizontal{border-top-width:1px}:host.ngs-divider-horizontal.ngs-divider-inset{margin-left:80px}[dir=rtl] :host.ngs-divider-horizontal.ngs-divider-inset{margin-left:0;margin-right:80px}:host.ngs-divider-vertical{display:inline-block;border-top-width:0;border-right-style:solid;border-right-color:var(--color-border);border-right-width:1px;vertical-align:middle;height:100%}:host.ngs-divider-vertical.ngs-divider-inset{margin-top:8px;margin-bottom:8px}:host.ngs-divider-vertical.is-fixed-height:not([class*=h-]){height:var(--ngs-divider-vertical-fixed-height)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
35
+ }], propDecorators: { vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], fixedHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "fixedHeight", required: false }] }] } });
36
+
37
+ /**
38
+ * Generated bundle index. Do not edit.
39
+ */
40
+
41
+ export { Divider, TextDivider };
42
+ //# sourceMappingURL=ngstarter-ui-components-divider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngstarter-ui-components-divider.mjs","sources":["../../../projects/components/divider/src/text-divider/text-divider.ts","../../../projects/components/divider/src/text-divider/text-divider.html","../../../projects/components/divider/src/divider/divider.ts","../../../projects/components/divider/ngstarter-ui-components-divider.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-text-divider',\n exportAs: 'ngsTextDivider',\n templateUrl: './text-divider.html',\n styleUrl: './text-divider.scss',\n host: {\n 'class': 'ngs-text-divider',\n }\n})\nexport class TextDivider {\n\n}\n","<div class=\"line-start\"></div>\n<div class=\"text\">\n <ng-content/>\n</div>\n<div class=\"line-end\"></div>\n","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-divider',\n exportAs: 'ngsDivider',\n template: '',\n styleUrl: './divider.scss',\n host: {\n 'role': 'separator',\n 'class': 'ngs-divider',\n '[attr.aria-orientation]': 'vertical() ? \"vertical\" : \"horizontal\"',\n '[class.ngs-divider-vertical]': 'vertical()',\n '[class.ngs-divider-horizontal]': '!vertical()',\n '[class.ngs-divider-inset]': 'inset()',\n '[class.is-fixed-height]': 'fixedHeight()',\n },\n})\nexport class Divider {\n /** Whether the divider is vertically aligned. */\n vertical = input(false, { transform: booleanAttribute });\n\n /** Whether the divider is an inset divider. */\n inset = input(false, { transform: booleanAttribute });\n\n fixedHeight = input(false, { transform: booleanAttribute });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAWa,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,wJCXxB,mHAKA,EAAA,MAAA,EAAA,CAAA,mhBAAA,CAAA,EAAA,CAAA;;2FDMa,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAClB,gBAAgB,EAAA,IAAA,EAGpB;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC5B,qBAAA,EAAA,QAAA,EAAA,mHAAA,EAAA,MAAA,EAAA,CAAA,mhBAAA,CAAA,EAAA;;;MEQU,OAAO,CAAA;;IAElB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAGxD,KAAK,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAErD,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;uGAPhD,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,g0BAZR,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wyBAAA,CAAA,EAAA,CAAA;;2FAYD,OAAO,EAAA,UAAA,EAAA,CAAA;kBAfnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,QAAA,EACb,YAAY,EAAA,QAAA,EACZ,EAAE,EAAA,IAAA,EAEN;AACJ,wBAAA,MAAM,EAAE,WAAW;AACnB,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,yBAAyB,EAAE,wCAAwC;AACnE,wBAAA,8BAA8B,EAAE,YAAY;AAC5C,wBAAA,gCAAgC,EAAE,aAAa;AAC/C,wBAAA,2BAA2B,EAAE,SAAS;AACtC,wBAAA,yBAAyB,EAAE,eAAe;AAC3C,qBAAA,EAAA,MAAA,EAAA,CAAA,wyBAAA,CAAA,EAAA;;;ACfH;;AAEG;;;;"}
@@ -0,0 +1,132 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, ViewContainerRef, DestroyRef, input, output, signal, viewChild, computed, effect, forwardRef, ChangeDetectionStrategy, ViewEncapsulation, Component, Directive } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { Overlay } from '@angular/cdk/overlay';
5
+ import { TemplatePortal } from '@angular/cdk/portal';
6
+ import { timer } from 'rxjs';
7
+
8
+ const DRAWER = new InjectionToken('DRAWER');
9
+
10
+ class Drawer {
11
+ overlay = inject(Overlay);
12
+ viewContainerRef = inject(ViewContainerRef);
13
+ destroyRef = inject(DestroyRef);
14
+ initialIsOpen = input(undefined, { ...(ngDevMode ? { debugName: "initialIsOpen" } : /* istanbul ignore next */ {}), alias: 'isOpen' });
15
+ showBackdrop = input(true, ...(ngDevMode ? [{ debugName: "showBackdrop" }] : /* istanbul ignore next */ []));
16
+ closed = output();
17
+ opened = output();
18
+ internalIsOpen = signal(false, ...(ngDevMode ? [{ debugName: "internalIsOpen" }] : /* istanbul ignore next */ []));
19
+ overlayRef = null;
20
+ portal = viewChild.required('portal');
21
+ _isOpen = computed(() => this.internalIsOpen(), ...(ngDevMode ? [{ debugName: "_isOpen" }] : /* istanbul ignore next */ []));
22
+ constructor() {
23
+ effect(() => {
24
+ const externalIsOpen = this.initialIsOpen();
25
+ if (externalIsOpen !== undefined) {
26
+ if (externalIsOpen) {
27
+ this.open();
28
+ }
29
+ else {
30
+ this.close();
31
+ }
32
+ }
33
+ });
34
+ }
35
+ ngOnDestroy() {
36
+ this.close();
37
+ }
38
+ open() {
39
+ if (this.internalIsOpen()) {
40
+ return;
41
+ }
42
+ if (!this.overlayRef) {
43
+ this.overlayRef = this.overlay.create({
44
+ hasBackdrop: this.showBackdrop(),
45
+ backdropClass: 'drawer-backdrop',
46
+ positionStrategy: this.overlay.position().global().right('0').top('0').bottom('0'),
47
+ scrollStrategy: this.overlay.scrollStrategies.block()
48
+ });
49
+ this.overlayRef.backdropClick().subscribe(() => {
50
+ this.close();
51
+ });
52
+ this.overlayRef.outsidePointerEvents().subscribe((event) => {
53
+ const target = event.target;
54
+ if (target.closest('.ngs-drawer-ignore-outside-click')) {
55
+ return;
56
+ }
57
+ this.close();
58
+ });
59
+ this.overlayRef.keydownEvents().subscribe(event => {
60
+ if (event.key === 'Escape') {
61
+ this.close();
62
+ }
63
+ });
64
+ }
65
+ const portal = new TemplatePortal(this.portal(), this.viewContainerRef);
66
+ this.overlayRef.attach(portal);
67
+ if (!this.showBackdrop()) {
68
+ this.overlayRef.hostElement.classList.add('pointer-events-none');
69
+ }
70
+ // Delay setting internalIsOpen to true to ensure the entry animation triggers
71
+ setTimeout(() => {
72
+ this.internalIsOpen.set(true);
73
+ });
74
+ this.opened.emit();
75
+ }
76
+ close() {
77
+ if (!this.internalIsOpen()) {
78
+ return;
79
+ }
80
+ this.internalIsOpen.set(false);
81
+ timer(150)
82
+ .pipe(takeUntilDestroyed(this.destroyRef))
83
+ .subscribe(() => {
84
+ if (this.overlayRef) {
85
+ this.overlayRef.detach();
86
+ this.overlayRef.dispose();
87
+ this.overlayRef = null;
88
+ }
89
+ this.closed.emit();
90
+ });
91
+ }
92
+ get isOpened() {
93
+ return this._isOpen();
94
+ }
95
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Drawer, deps: [], target: i0.ɵɵFactoryTarget.Component });
96
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: Drawer, isStandalone: true, selector: "ngs-drawer", inputs: { initialIsOpen: { classPropertyName: "initialIsOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, showBackdrop: { classPropertyName: "showBackdrop", publicName: "showBackdrop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", opened: "opened" }, providers: [
97
+ {
98
+ provide: DRAWER,
99
+ useExisting: forwardRef(() => Drawer),
100
+ }
101
+ ], viewQueries: [{ propertyName: "portal", first: true, predicate: ["portal"], descendants: true, isSignal: true }], exportAs: ["ngsDrawer"], ngImport: i0, template: "<ng-template #portal>\n <div\n class=\"ngs-drawer-container\"\n [class.open]=\"_isOpen()\">\n <div class=\"ngs-drawer-content\">\n <ng-content/>\n </div>\n </div>\n</ng-template>\n", styles: [".ngs-drawer-container{--ngs-drawer-transition-duration: .15s;--ngs-drawer-transition: cubic-bezier(.4,0,.2,1);position:fixed;z-index:1040;top:0;right:0;max-width:90vw;bottom:0;transform:translate(100%);visibility:hidden;display:flex;flex-direction:column;pointer-events:auto}.ngs-drawer-container.open{transform:translate(0);visibility:visible;transition:transform .3s var(--ngs-drawer-transition),visibility 0s linear 0s}.ngs-drawer-container:not(.open){transition:transform .2s var(--ngs-drawer-transition),visibility 0s linear .2s}.ngs-drawer-content{background:var(--color-surface-container-lowest);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;outline:var(--dropdown-border);margin:1.75rem;flex-grow:1;overflow:hidden;border-radius:1rem;border:1px solid transparent}.drawer-backdrop{background:var(--overlay-backdrop-bg);opacity:0;transition:opacity .15s cubic-bezier(.4,0,.2,1)}.drawer-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-overlay-pane.pointer-events-none{pointer-events:none!important}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
102
+ }
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Drawer, decorators: [{
104
+ type: Component,
105
+ args: [{ selector: 'ngs-drawer', exportAs: 'ngsDrawer', standalone: true, providers: [
106
+ {
107
+ provide: DRAWER,
108
+ useExisting: forwardRef(() => Drawer),
109
+ }
110
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #portal>\n <div\n class=\"ngs-drawer-container\"\n [class.open]=\"_isOpen()\">\n <div class=\"ngs-drawer-content\">\n <ng-content/>\n </div>\n </div>\n</ng-template>\n", styles: [".ngs-drawer-container{--ngs-drawer-transition-duration: .15s;--ngs-drawer-transition: cubic-bezier(.4,0,.2,1);position:fixed;z-index:1040;top:0;right:0;max-width:90vw;bottom:0;transform:translate(100%);visibility:hidden;display:flex;flex-direction:column;pointer-events:auto}.ngs-drawer-container.open{transform:translate(0);visibility:visible;transition:transform .3s var(--ngs-drawer-transition),visibility 0s linear 0s}.ngs-drawer-container:not(.open){transition:transform .2s var(--ngs-drawer-transition),visibility 0s linear .2s}.ngs-drawer-content{background:var(--color-surface-container-lowest);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;outline:var(--dropdown-border);margin:1.75rem;flex-grow:1;overflow:hidden;border-radius:1rem;border:1px solid transparent}.drawer-backdrop{background:var(--overlay-backdrop-bg);opacity:0;transition:opacity .15s cubic-bezier(.4,0,.2,1)}.drawer-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-overlay-pane.pointer-events-none{pointer-events:none!important}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
111
+ }], ctorParameters: () => [], propDecorators: { initialIsOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }], showBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBackdrop", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], opened: [{ type: i0.Output, args: ["opened"] }], portal: [{ type: i0.ViewChild, args: ['portal', { isSignal: true }] }] } });
112
+
113
+ class DrawerIgnoreOutsideClickDirective {
114
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DrawerIgnoreOutsideClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
115
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.4", type: DrawerIgnoreOutsideClickDirective, isStandalone: true, selector: "[ngsDrawerIgnoreOutsideClick]", host: { classAttribute: "ngs-drawer-ignore-outside-click" }, ngImport: i0 });
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DrawerIgnoreOutsideClickDirective, decorators: [{
118
+ type: Directive,
119
+ args: [{
120
+ selector: '[ngsDrawerIgnoreOutsideClick]',
121
+ host: {
122
+ 'class': 'ngs-drawer-ignore-outside-click'
123
+ }
124
+ }]
125
+ }] });
126
+
127
+ /**
128
+ * Generated bundle index. Do not edit.
129
+ */
130
+
131
+ export { DRAWER, Drawer, DrawerIgnoreOutsideClickDirective };
132
+ //# sourceMappingURL=ngstarter-ui-components-drawer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngstarter-ui-components-drawer.mjs","sources":["../../../projects/components/drawer/src/types.ts","../../../projects/components/drawer/src/drawer/drawer.ts","../../../projects/components/drawer/src/drawer/drawer.html","../../../projects/components/drawer/src/drawer-ignore-outside-click.directive.ts","../../../projects/components/drawer/ngstarter-ui-components-drawer.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DRAWER = new InjectionToken('DRAWER');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n forwardRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n Signal,\n TemplateRef,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DRAWER } from '../types';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { timer } from 'rxjs';\n\n@Component({\n selector: 'ngs-drawer',\n exportAs: 'ngsDrawer',\n templateUrl: './drawer.html',\n styleUrl: './drawer.scss',\n standalone: true,\n providers: [\n {\n provide: DRAWER,\n useExisting: forwardRef(() => Drawer),\n }\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Drawer implements OnDestroy {\n private overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n private destroyRef = inject(DestroyRef);\n\n readonly initialIsOpen = input<boolean | undefined>(undefined, { alias: 'isOpen' });\n readonly showBackdrop = input(true);\n\n readonly closed = output<void>();\n readonly opened = output<void>();\n\n private internalIsOpen: WritableSignal<boolean> = signal(false);\n private overlayRef: OverlayRef | null = null;\n protected portal = viewChild.required<TemplateRef<any>>('portal');\n\n protected _isOpen: Signal<boolean> = computed(() => this.internalIsOpen());\n\n constructor() {\n effect(() => {\n const externalIsOpen = this.initialIsOpen();\n if (externalIsOpen !== undefined) {\n if (externalIsOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.close();\n }\n\n open(): void {\n if (this.internalIsOpen()) {\n return;\n }\n\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n hasBackdrop: this.showBackdrop(),\n backdropClass: 'drawer-backdrop',\n positionStrategy: this.overlay.position().global().right('0').top('0').bottom('0'),\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n\n this.overlayRef.backdropClick().subscribe(() => {\n this.close();\n });\n\n this.overlayRef.outsidePointerEvents().subscribe((event: MouseEvent) => {\n const target = event.target as HTMLElement;\n\n if (target.closest('.ngs-drawer-ignore-outside-click')) {\n return;\n }\n\n this.close();\n });\n\n this.overlayRef.keydownEvents().subscribe(event => {\n if (event.key === 'Escape') {\n this.close();\n }\n });\n }\n\n const portal = new TemplatePortal(this.portal(), this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n if (!this.showBackdrop()) {\n this.overlayRef.hostElement.classList.add('pointer-events-none');\n }\n\n // Delay setting internalIsOpen to true to ensure the entry animation triggers\n setTimeout(() => {\n this.internalIsOpen.set(true);\n });\n\n this.opened.emit();\n }\n\n close(): void {\n if (!this.internalIsOpen()) {\n return;\n }\n\n this.internalIsOpen.set(false);\n\n timer(150)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n this.closed.emit();\n });\n }\n\n get isOpened(): boolean {\n return this._isOpen();\n }\n}\n","<ng-template #portal>\n <div\n class=\"ngs-drawer-container\"\n [class.open]=\"_isOpen()\">\n <div class=\"ngs-drawer-content\">\n <ng-content/>\n </div>\n </div>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsDrawerIgnoreOutsideClick]',\n host: {\n 'class': 'ngs-drawer-ignore-outside-click'\n }\n})\nexport class DrawerIgnoreOutsideClickDirective {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,245 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, LOCALE_ID, input, output, signal, Component, ElementRef, ViewContainerRef, Injector, DestroyRef, Directive } from '@angular/core';
3
+ import { Skeleton } from '@ngstarter-ui/components/skeleton';
4
+ import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
5
+ import { Directionality } from '@angular/cdk/bidi';
6
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
+ import { _getEventTarget } from '@angular/cdk/platform';
8
+ import { TemplatePortal } from '@angular/cdk/portal';
9
+ import { PositionManager } from '@ngstarter-ui/components/overlay';
10
+
11
+ const EMOJI_PICKER_TRIGGER_FOR = new InjectionToken('EMOJI_PICKER_TRIGGER_FOR');
12
+
13
+ const loadedEmoji = new Map();
14
+ const loadGroups = (language) => {
15
+ const imports = {
16
+ en: import('emojibase-data/en/messages.json'),
17
+ bn: import('emojibase-data/bn/messages.json'),
18
+ da: import('emojibase-data/da/messages.json'),
19
+ de: import('emojibase-data/de/messages.json'),
20
+ es: import('emojibase-data/es/messages.json'),
21
+ et: import('emojibase-data/et/messages.json'),
22
+ fi: import('emojibase-data/fi/messages.json'),
23
+ fr: import('emojibase-data/fr/messages.json'),
24
+ hi: import('emojibase-data/hi/messages.json'),
25
+ hu: import('emojibase-data/hu/messages.json'),
26
+ it: import('emojibase-data/it/messages.json'),
27
+ ja: import('emojibase-data/ja/messages.json'),
28
+ ko: import('emojibase-data/ko/messages.json'),
29
+ lt: import('emojibase-data/lt/messages.json'),
30
+ ms: import('emojibase-data/ms/messages.json'),
31
+ nb: import('emojibase-data/nb/messages.json'),
32
+ nl: import('emojibase-data/nl/messages.json'),
33
+ pl: import('emojibase-data/pl/messages.json'),
34
+ pt: import('emojibase-data/pt/messages.json'),
35
+ ru: import('emojibase-data/ru/messages.json'),
36
+ sv: import('emojibase-data/sv/messages.json'),
37
+ th: import('emojibase-data/th/messages.json'),
38
+ uk: import('emojibase-data/uk/messages.json'),
39
+ vi: import('emojibase-data/vi/messages.json'),
40
+ zh: import('emojibase-data/zh/messages.json'),
41
+ };
42
+ if (imports[language]) {
43
+ return imports[language];
44
+ }
45
+ return imports['en'];
46
+ };
47
+ const loadData = (language) => {
48
+ const imports = {
49
+ en: import('emojibase-data/en/data.json').then(m => m.default),
50
+ bn: import('emojibase-data/bn/data.json').then(m => m.default),
51
+ da: import('emojibase-data/da/data.json').then(m => m.default),
52
+ de: import('emojibase-data/de/data.json').then(m => m.default),
53
+ es: import('emojibase-data/es/data.json').then(m => m.default),
54
+ et: import('emojibase-data/et/data.json').then(m => m.default),
55
+ fi: import('emojibase-data/fi/data.json').then(m => m.default),
56
+ fr: import('emojibase-data/fr/data.json').then(m => m.default),
57
+ hi: import('emojibase-data/hi/data.json').then(m => m.default),
58
+ hu: import('emojibase-data/hu/data.json').then(m => m.default),
59
+ it: import('emojibase-data/it/data.json').then(m => m.default),
60
+ ja: import('emojibase-data/ja/data.json').then(m => m.default),
61
+ ko: import('emojibase-data/ko/data.json').then(m => m.default),
62
+ lt: import('emojibase-data/lt/data.json').then(m => m.default),
63
+ ms: import('emojibase-data/ms/data.json').then(m => m.default),
64
+ nb: import('emojibase-data/nb/data.json').then(m => m.default),
65
+ nl: import('emojibase-data/nl/data.json').then(m => m.default),
66
+ pl: import('emojibase-data/pl/data.json').then(m => m.default),
67
+ pt: import('emojibase-data/pt/data.json').then(m => m.default),
68
+ ru: import('emojibase-data/ru/data.json').then(m => m.default),
69
+ sv: import('emojibase-data/sv/data.json').then(m => m.default),
70
+ th: import('emojibase-data/th/data.json').then(m => m.default),
71
+ uk: import('emojibase-data/uk/data.json').then(m => m.default),
72
+ vi: import('emojibase-data/vi/data.json').then(m => m.default),
73
+ zh: import('emojibase-data/zh/data.json').then(m => m.default),
74
+ };
75
+ if (imports[language]) {
76
+ return imports[language];
77
+ }
78
+ return imports['en'];
79
+ };
80
+ class EmojiPicker {
81
+ _trigger = inject(EMOJI_PICKER_TRIGGER_FOR, { optional: true });
82
+ _localeId = inject(LOCALE_ID);
83
+ language = input('', ...(ngDevMode ? [{ debugName: "language" }] : /* istanbul ignore next */ []));
84
+ selectEmojiLabel = input('Select an emoji...', ...(ngDevMode ? [{ debugName: "selectEmojiLabel" }] : /* istanbul ignore next */ []));
85
+ emojiSelected = output();
86
+ loaded = signal(false, ...(ngDevMode ? [{ debugName: "loaded" }] : /* istanbul ignore next */ []));
87
+ groups = signal([], ...(ngDevMode ? [{ debugName: "groups" }] : /* istanbul ignore next */ []));
88
+ _hoveredEmoji = signal(null, ...(ngDevMode ? [{ debugName: "_hoveredEmoji" }] : /* istanbul ignore next */ []));
89
+ _skeletonEmoji = signal(Array(42).fill(1).map((x, y) => x + y), ...(ngDevMode ? [{ debugName: "_skeletonEmoji" }] : /* istanbul ignore next */ []));
90
+ async ngOnInit() {
91
+ let language = this.language();
92
+ if (!language) {
93
+ language = this._localeId.split('-')[0];
94
+ }
95
+ if (loadedEmoji.has(language)) {
96
+ this.groups.set(loadedEmoji.get(language)?.groups);
97
+ }
98
+ else {
99
+ const groupsSubgroups = await loadGroups(language);
100
+ const data = await loadData(language);
101
+ const groups = [];
102
+ const groupKeyMap = new Map();
103
+ groupsSubgroups.groups.forEach((group, index) => {
104
+ if (group.key === 'component') {
105
+ return;
106
+ }
107
+ groupKeyMap.set(group.key, index);
108
+ });
109
+ groupsSubgroups.groups.forEach((group) => {
110
+ if (group.key === 'component') {
111
+ return;
112
+ }
113
+ const emoji = data.filter((emoji) => {
114
+ if (emoji.emoji === '🫩') {
115
+ return false;
116
+ }
117
+ return emoji.group === groupKeyMap.get(group.key);
118
+ });
119
+ groups.push({
120
+ name: group.message,
121
+ emoji
122
+ });
123
+ });
124
+ this.groups.set(groups);
125
+ loadedEmoji.set(this.language(), { groups });
126
+ }
127
+ this.loaded.set(true);
128
+ }
129
+ select(emoji) {
130
+ this.emojiSelected.emit(emoji.emoji);
131
+ if (this._trigger) {
132
+ this._trigger.api.close();
133
+ }
134
+ }
135
+ hoverEmoji(emoji) {
136
+ this._hoveredEmoji.set(emoji);
137
+ }
138
+ onMouseLeave() {
139
+ this._hoveredEmoji.set(null);
140
+ }
141
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: EmojiPicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: EmojiPicker, isStandalone: true, selector: "ngs-emoji-picker", inputs: { language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, selectEmojiLabel: { classPropertyName: "selectEmojiLabel", publicName: "selectEmojiLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { emojiSelected: "emojiSelected" }, host: { classAttribute: "ngs-emoji-picker" }, exportAs: ["ngsEmojiPicker"], ngImport: i0, template: "@if (loaded()) {\n <dl class=\"list\" (mouseleave)=\"onMouseLeave()\">\n @for (group of groups(); track group) {\n <dt class=\"px-2\">{{ group.name }}</dt>\n <dd>\n <div class=\"emoji-container\">\n @for (emoji of group.emoji; track emoji) {\n <button class=\"button\"\n (click)=\"select(emoji)\"\n (mouseover)=\"hoverEmoji(emoji)\">\n {{ emoji.emoji }}\n </button>\n }\n </div>\n </dd>\n }\n </dl>\n <div class=\"hovered-emoji\">\n @if (_hoveredEmoji()) {\n <span class=\"emoji-preview\">{{ _hoveredEmoji().emoji }}</span>\n <span class=\"emoji-label\">{{ _hoveredEmoji().label }}</span>\n } @else {\n <span class=\"select-message\">{{ selectEmojiLabel() }}</span>\n }\n </div>\n} @else {\n <div class=\"list\">\n <ngs-skeleton class=\"h-3 skeleton-heading my-2\"/>\n <div class=\"skeleton-list\">\n @for (block of _skeletonEmoji(); track block) {\n <ngs-skeleton class=\"size-8 rounded-sm\"/>\n }\n </div>\n </div>\n <div class=\"hovered-emoji\">\n <ngs-skeleton class=\"h-4 w-full\"/>\n </div>\n}\n", styles: [":host{--ngs-emoji-picker-border: none;--ngs-emoji-picker-shadow: var(--dropdown-shadow);--ngs-emoji-picker-border-radius: var(--dropdown-radius);--ngs-emoji-picker-bg: var(--dropdown-bg);--ngs-emoji-picker-margin: calc(var(--spacing, .25rem) * 2.5);--ngs-emoji-picker-list-width: 278px;--ngs-emoji-picker-list-height: 260px;display:block;width:var(--ngs-emoji-picker-list-width);background:var(--ngs-emoji-picker-bg);border-radius:var(--ngs-emoji-picker-border-radius);border:var(--ngs-emoji-picker-border);box-shadow:var(--ngs-emoji-picker-shadow);animation:.15s ngs-emoji-picker-animation;margin:var(--ngs-emoji-picker-margin) 0;outline:var(--ngs-menu-border, var(--dropdown-border))}:host ngs-skeleton{--ngs-skeleton-from-bg: var(--color-surface-container-high);--ngs-skeleton-to-bg: var(--color-surface-container-highest)}:host .list{padding:calc(var(--spacing, .25rem) * 0) calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 2);height:var(--ngs-emoji-picker-list-height);overflow-x:hidden;overflow-y:auto}:host .hovered-emoji{height:calc(var(--spacing, .25rem) * 11);display:flex;padding:0 calc(var(--spacing, .25rem) * 4);align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-top:1px solid var(--color-subtle)}:host .emoji-preview{font-size:1.25rem}:host .emoji-label,:host .select-message{font-size:.75rem}:host .select-message{color:var(--color-neutral-500)}:host dt{position:sticky;top:0;left:0;right:0;height:calc(var(--spacing, .25rem) * 10);display:flex;align-items:center;font-weight:600;font-size:.875rem;background:var(--ngs-emoji-picker-bg)}:host .skeleton-list,:host .emoji-container{display:flex;flex-wrap:wrap}:host .skeleton-list{align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 2)}:host .button{display:flex;width:calc(var(--spacing, .25rem) * 9);height:calc(var(--spacing, .25rem) * 9);flex:none;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--radius-lg, .5rem);font-size:var(--text-2xl, 1.5rem);line-height:var(--tw-leading, var(--text-2xl--line-height, calc(2 / 1.5)))}:host .button:hover{background:var(--color-surface-container-highest)}:host .skeleton-button{flex:none}@keyframes ngs-emoji-picker-animation{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}:host-context(html.dark) ngs-skeleton{--ngs-skeleton-from-bg: var(--color-surface-container-low);--ngs-skeleton-to-bg: var(--color-surface-container-lowest)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Skeleton, selector: "ngs-skeleton", inputs: ["roundedFull"], exportAs: ["ngsSkeleton"] }] });
143
+ }
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: EmojiPicker, decorators: [{
145
+ type: Component,
146
+ args: [{ selector: 'ngs-emoji-picker', exportAs: 'ngsEmojiPicker', imports: [
147
+ Skeleton
148
+ ], host: {
149
+ 'class': 'ngs-emoji-picker',
150
+ }, template: "@if (loaded()) {\n <dl class=\"list\" (mouseleave)=\"onMouseLeave()\">\n @for (group of groups(); track group) {\n <dt class=\"px-2\">{{ group.name }}</dt>\n <dd>\n <div class=\"emoji-container\">\n @for (emoji of group.emoji; track emoji) {\n <button class=\"button\"\n (click)=\"select(emoji)\"\n (mouseover)=\"hoverEmoji(emoji)\">\n {{ emoji.emoji }}\n </button>\n }\n </div>\n </dd>\n }\n </dl>\n <div class=\"hovered-emoji\">\n @if (_hoveredEmoji()) {\n <span class=\"emoji-preview\">{{ _hoveredEmoji().emoji }}</span>\n <span class=\"emoji-label\">{{ _hoveredEmoji().label }}</span>\n } @else {\n <span class=\"select-message\">{{ selectEmojiLabel() }}</span>\n }\n </div>\n} @else {\n <div class=\"list\">\n <ngs-skeleton class=\"h-3 skeleton-heading my-2\"/>\n <div class=\"skeleton-list\">\n @for (block of _skeletonEmoji(); track block) {\n <ngs-skeleton class=\"size-8 rounded-sm\"/>\n }\n </div>\n </div>\n <div class=\"hovered-emoji\">\n <ngs-skeleton class=\"h-4 w-full\"/>\n </div>\n}\n", styles: [":host{--ngs-emoji-picker-border: none;--ngs-emoji-picker-shadow: var(--dropdown-shadow);--ngs-emoji-picker-border-radius: var(--dropdown-radius);--ngs-emoji-picker-bg: var(--dropdown-bg);--ngs-emoji-picker-margin: calc(var(--spacing, .25rem) * 2.5);--ngs-emoji-picker-list-width: 278px;--ngs-emoji-picker-list-height: 260px;display:block;width:var(--ngs-emoji-picker-list-width);background:var(--ngs-emoji-picker-bg);border-radius:var(--ngs-emoji-picker-border-radius);border:var(--ngs-emoji-picker-border);box-shadow:var(--ngs-emoji-picker-shadow);animation:.15s ngs-emoji-picker-animation;margin:var(--ngs-emoji-picker-margin) 0;outline:var(--ngs-menu-border, var(--dropdown-border))}:host ngs-skeleton{--ngs-skeleton-from-bg: var(--color-surface-container-high);--ngs-skeleton-to-bg: var(--color-surface-container-highest)}:host .list{padding:calc(var(--spacing, .25rem) * 0) calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 2);height:var(--ngs-emoji-picker-list-height);overflow-x:hidden;overflow-y:auto}:host .hovered-emoji{height:calc(var(--spacing, .25rem) * 11);display:flex;padding:0 calc(var(--spacing, .25rem) * 4);align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-top:1px solid var(--color-subtle)}:host .emoji-preview{font-size:1.25rem}:host .emoji-label,:host .select-message{font-size:.75rem}:host .select-message{color:var(--color-neutral-500)}:host dt{position:sticky;top:0;left:0;right:0;height:calc(var(--spacing, .25rem) * 10);display:flex;align-items:center;font-weight:600;font-size:.875rem;background:var(--ngs-emoji-picker-bg)}:host .skeleton-list,:host .emoji-container{display:flex;flex-wrap:wrap}:host .skeleton-list{align-items:center;justify-content:center;gap:calc(var(--spacing, .25rem) * 2)}:host .button{display:flex;width:calc(var(--spacing, .25rem) * 9);height:calc(var(--spacing, .25rem) * 9);flex:none;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--radius-lg, .5rem);font-size:var(--text-2xl, 1.5rem);line-height:var(--tw-leading, var(--text-2xl--line-height, calc(2 / 1.5)))}:host .button:hover{background:var(--color-surface-container-highest)}:host .skeleton-button{flex:none}@keyframes ngs-emoji-picker-animation{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}:host-context(html.dark) ngs-skeleton{--ngs-skeleton-from-bg: var(--color-surface-container-low);--ngs-skeleton-to-bg: var(--color-surface-container-lowest)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
151
+ }], propDecorators: { language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], selectEmojiLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectEmojiLabel", required: false }] }], emojiSelected: [{ type: i0.Output, args: ["emojiSelected"] }] } });
152
+
153
+ class EmojiPickerTriggerForDirective {
154
+ _overlay = inject(Overlay);
155
+ _elementRef = inject(ElementRef);
156
+ _directionality = inject(Directionality, { optional: true });
157
+ _viewContainerRef = inject(ViewContainerRef);
158
+ _injector = inject(Injector);
159
+ _overlayRef = null;
160
+ _destroyRef = inject(DestroyRef);
161
+ for = input.required({ ...(ngDevMode ? { debugName: "for" } : /* istanbul ignore next */ {}), alias: 'ngsEmojiPickerTriggerFor' });
162
+ position = input('below-start', ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
163
+ opened = output();
164
+ closed = output();
165
+ get api() {
166
+ return {
167
+ close: () => this._close()
168
+ };
169
+ }
170
+ _onClick(event) {
171
+ event.stopPropagation();
172
+ event.preventDefault();
173
+ this.opened.emit();
174
+ this._overlayRef = this._overlay.create(this._getOverlayConfig());
175
+ this._overlayRef.attach(this._getPopoverContentPortal());
176
+ this._subscribeToOutsideClicks();
177
+ }
178
+ _close() {
179
+ this.closed.emit();
180
+ this._overlayRef?.detach();
181
+ }
182
+ _subscribeToOutsideClicks() {
183
+ if (this._overlayRef) {
184
+ this._overlayRef
185
+ .outsidePointerEvents()
186
+ .pipe(takeUntilDestroyed(this._destroyRef))
187
+ .subscribe(event => {
188
+ const target = _getEventTarget(event);
189
+ const element = this._elementRef.nativeElement;
190
+ if (target !== element && !element.contains(target)) {
191
+ this._close();
192
+ }
193
+ });
194
+ }
195
+ }
196
+ _getPopoverContentPortal() {
197
+ const injector = Injector.create({
198
+ providers: [
199
+ {
200
+ provide: EMOJI_PICKER_TRIGGER_FOR,
201
+ useValue: this,
202
+ }
203
+ ],
204
+ parent: this._injector
205
+ });
206
+ return new TemplatePortal(this.for(), this._viewContainerRef, null, injector);
207
+ }
208
+ _getOverlayConfig() {
209
+ return new OverlayConfig({
210
+ positionStrategy: this._getOverlayPositionStrategy(),
211
+ scrollStrategy: this._overlay.scrollStrategies.reposition(),
212
+ direction: this._directionality || undefined
213
+ });
214
+ }
215
+ _getOverlayPositionStrategy() {
216
+ return this._overlay
217
+ .position()
218
+ .flexibleConnectedTo(this._elementRef)
219
+ .setOrigin(this._elementRef)
220
+ .withGrowAfterOpen()
221
+ .withPositions(this._getOverlayPositions());
222
+ }
223
+ _getOverlayPositions() {
224
+ return (new PositionManager()).build(this.position());
225
+ }
226
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: EmojiPickerTriggerForDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
227
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.4", type: EmojiPickerTriggerForDirective, isStandalone: true, selector: "[ngsEmojiPickerTriggerFor]", inputs: { for: { classPropertyName: "for", publicName: "ngsEmojiPickerTriggerFor", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "click": "_onClick($event)" } }, exportAs: ["ngsEmojiPickerTriggerFor"], ngImport: i0 });
228
+ }
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: EmojiPickerTriggerForDirective, decorators: [{
230
+ type: Directive,
231
+ args: [{
232
+ selector: '[ngsEmojiPickerTriggerFor]',
233
+ exportAs: 'ngsEmojiPickerTriggerFor',
234
+ host: {
235
+ '(click)': '_onClick($event)'
236
+ }
237
+ }]
238
+ }], propDecorators: { for: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngsEmojiPickerTriggerFor", required: true }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
239
+
240
+ /**
241
+ * Generated bundle index. Do not edit.
242
+ */
243
+
244
+ export { EmojiPicker, EmojiPickerTriggerForDirective };
245
+ //# sourceMappingURL=ngstarter-ui-components-emoji-picker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngstarter-ui-components-emoji-picker.mjs","sources":["../../../projects/components/emoji-picker/src/types.ts","../../../projects/components/emoji-picker/src/emoji-picker/emoji-picker.ts","../../../projects/components/emoji-picker/src/emoji-picker/emoji-picker.html","../../../projects/components/emoji-picker/src/emoji-picker-trigger-for.directive.ts","../../../projects/components/emoji-picker/ngstarter-ui-components-emoji-picker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const EMOJI_PICKER_TRIGGER_FOR = new InjectionToken('EMOJI_PICKER_TRIGGER_FOR');\n","import { Component, inject, input, LOCALE_ID, OnInit, output, signal } from '@angular/core';\nimport { EMOJI_PICKER_TRIGGER_FOR } from '../types';\nimport { Skeleton } from '@ngstarter-ui/components/skeleton';\n\nconst loadedEmoji = new Map<string, { groups: any[] }>();\nconst loadGroups = (language: string) => {\n const imports: any = {\n en: import('emojibase-data/en/messages.json'),\n bn: import('emojibase-data/bn/messages.json'),\n da: import('emojibase-data/da/messages.json'),\n de: import('emojibase-data/de/messages.json'),\n es: import('emojibase-data/es/messages.json'),\n et: import('emojibase-data/et/messages.json'),\n fi: import('emojibase-data/fi/messages.json'),\n fr: import('emojibase-data/fr/messages.json'),\n hi: import('emojibase-data/hi/messages.json'),\n hu: import('emojibase-data/hu/messages.json'),\n it: import('emojibase-data/it/messages.json'),\n ja: import('emojibase-data/ja/messages.json'),\n ko: import('emojibase-data/ko/messages.json'),\n lt: import('emojibase-data/lt/messages.json'),\n ms: import('emojibase-data/ms/messages.json'),\n nb: import('emojibase-data/nb/messages.json'),\n nl: import('emojibase-data/nl/messages.json'),\n pl: import('emojibase-data/pl/messages.json'),\n pt: import('emojibase-data/pt/messages.json'),\n ru: import('emojibase-data/ru/messages.json'),\n sv: import('emojibase-data/sv/messages.json'),\n th: import('emojibase-data/th/messages.json'),\n uk: import('emojibase-data/uk/messages.json'),\n vi: import('emojibase-data/vi/messages.json'),\n zh: import('emojibase-data/zh/messages.json'),\n };\n\n if (imports[language]) {\n return imports[language];\n }\n\n return imports['en'];\n}\n\nconst loadData = (language: string) => {\n const imports: any = {\n en: import('emojibase-data/en/data.json').then(m => m.default),\n bn: import('emojibase-data/bn/data.json').then(m => m.default),\n da: import('emojibase-data/da/data.json').then(m => m.default),\n de: import('emojibase-data/de/data.json').then(m => m.default),\n es: import('emojibase-data/es/data.json').then(m => m.default),\n et: import('emojibase-data/et/data.json').then(m => m.default),\n fi: import('emojibase-data/fi/data.json').then(m => m.default),\n fr: import('emojibase-data/fr/data.json').then(m => m.default),\n hi: import('emojibase-data/hi/data.json').then(m => m.default),\n hu: import('emojibase-data/hu/data.json').then(m => m.default),\n it: import('emojibase-data/it/data.json').then(m => m.default),\n ja: import('emojibase-data/ja/data.json').then(m => m.default),\n ko: import('emojibase-data/ko/data.json').then(m => m.default),\n lt: import('emojibase-data/lt/data.json').then(m => m.default),\n ms: import('emojibase-data/ms/data.json').then(m => m.default),\n nb: import('emojibase-data/nb/data.json').then(m => m.default),\n nl: import('emojibase-data/nl/data.json').then(m => m.default),\n pl: import('emojibase-data/pl/data.json').then(m => m.default),\n pt: import('emojibase-data/pt/data.json').then(m => m.default),\n ru: import('emojibase-data/ru/data.json').then(m => m.default),\n sv: import('emojibase-data/sv/data.json').then(m => m.default),\n th: import('emojibase-data/th/data.json').then(m => m.default),\n uk: import('emojibase-data/uk/data.json').then(m => m.default),\n vi: import('emojibase-data/vi/data.json').then(m => m.default),\n zh: import('emojibase-data/zh/data.json').then(m => m.default),\n };\n\n if (imports[language]) {\n return imports[language];\n }\n\n return imports['en'];\n}\n\n@Component({\n selector: 'ngs-emoji-picker',\n exportAs: 'ngsEmojiPicker',\n templateUrl: './emoji-picker.html',\n styleUrl: './emoji-picker.scss',\n imports: [\n Skeleton\n ],\n host: {\n 'class': 'ngs-emoji-picker',\n }\n})\nexport class EmojiPicker implements OnInit {\n private _trigger = inject<any>(EMOJI_PICKER_TRIGGER_FOR, { optional: true });\n private _localeId = inject(LOCALE_ID);\n\n language = input('');\n selectEmojiLabel = input('Select an emoji...');\n\n readonly emojiSelected = output<string>();\n\n protected loaded = signal(false);\n protected groups = signal<any[]>([]);\n protected _hoveredEmoji = signal<any>(null);\n protected _skeletonEmoji = signal(Array(42).fill(1).map((x, y) => x + y));\n\n async ngOnInit() {\n let language: string = this.language();\n\n if (!language) {\n language = this._localeId.split('-')[0];\n }\n\n if (loadedEmoji.has(language)) {\n this.groups.set(loadedEmoji.get(language)?.groups as any);\n } else {\n const groupsSubgroups = await loadGroups(language);\n const data = await loadData(language);\n const groups: any[] = [];\n const groupKeyMap = new Map<string, number>();\n groupsSubgroups.groups.forEach((group: any, index: number ) => {\n if (group.key === 'component') {\n return;\n }\n\n groupKeyMap.set(group.key, index);\n });\n groupsSubgroups.groups.forEach((group: any) => {\n if (group.key === 'component') {\n return;\n }\n\n const emoji: any[] = data.filter((emoji: any) => {\n if (emoji.emoji === '🫩') {\n return false;\n }\n\n return emoji.group === groupKeyMap.get(group.key);\n });\n groups.push({\n name: group.message,\n emoji\n });\n });\n this.groups.set(groups);\n loadedEmoji.set(this.language(), { groups });\n }\n\n this.loaded.set(true);\n }\n\n select(emoji: any) {\n this.emojiSelected.emit(emoji.emoji);\n\n if (this._trigger) {\n this._trigger.api.close();\n }\n }\n\n hoverEmoji(emoji: any) {\n this._hoveredEmoji.set(emoji);\n }\n\n onMouseLeave() {\n this._hoveredEmoji.set(null);\n }\n}\n","@if (loaded()) {\n <dl class=\"list\" (mouseleave)=\"onMouseLeave()\">\n @for (group of groups(); track group) {\n <dt class=\"px-2\">{{ group.name }}</dt>\n <dd>\n <div class=\"emoji-container\">\n @for (emoji of group.emoji; track emoji) {\n <button class=\"button\"\n (click)=\"select(emoji)\"\n (mouseover)=\"hoverEmoji(emoji)\">\n {{ emoji.emoji }}\n </button>\n }\n </div>\n </dd>\n }\n </dl>\n <div class=\"hovered-emoji\">\n @if (_hoveredEmoji()) {\n <span class=\"emoji-preview\">{{ _hoveredEmoji().emoji }}</span>\n <span class=\"emoji-label\">{{ _hoveredEmoji().label }}</span>\n } @else {\n <span class=\"select-message\">{{ selectEmojiLabel() }}</span>\n }\n </div>\n} @else {\n <div class=\"list\">\n <ngs-skeleton class=\"h-3 skeleton-heading my-2\"/>\n <div class=\"skeleton-list\">\n @for (block of _skeletonEmoji(); track block) {\n <ngs-skeleton class=\"size-8 rounded-sm\"/>\n }\n </div>\n </div>\n <div class=\"hovered-emoji\">\n <ngs-skeleton class=\"h-4 w-full\"/>\n </div>\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef, forwardRef,\n inject,\n Injector,\n input,\n output,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { PopoverPosition } from '@ngstarter-ui/components/popover';\nimport {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef\n} from '@angular/cdk/overlay';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { PositionManager } from '@ngstarter-ui/components/overlay';\nimport { EMOJI_PICKER_TRIGGER_FOR } from './types';\n\n@Directive({\n selector: '[ngsEmojiPickerTriggerFor]',\n exportAs: 'ngsEmojiPickerTriggerFor',\n host: {\n '(click)': '_onClick($event)'\n }\n})\nexport class EmojiPickerTriggerForDirective {\n private _overlay = inject(Overlay);\n private _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private _directionality = inject(Directionality, { optional: true });\n private _viewContainerRef = inject(ViewContainerRef);\n private _injector = inject(Injector);\n private _overlayRef: OverlayRef | null = null;\n private _destroyRef = inject(DestroyRef);\n\n for = input.required<TemplateRef<any>>({\n alias: 'ngsEmojiPickerTriggerFor'\n });\n\n position = input<PopoverPosition>('below-start');\n\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n get api() {\n return {\n close: () => this._close()\n }\n }\n\n protected _onClick(event: Event) {\n event.stopPropagation();\n event.preventDefault();\n\n this.opened.emit();\n this._overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef.attach(this._getPopoverContentPortal());\n this._subscribeToOutsideClicks();\n }\n\n private _close() {\n this.closed.emit();\n this._overlayRef!?.detach();\n }\n\n private _subscribeToOutsideClicks() {\n if (this._overlayRef) {\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(event => {\n const target = _getEventTarget(event) as Element;\n const element = this._elementRef.nativeElement;\n\n if (target !== element && !element.contains(target)) {\n this._close();\n }\n })\n ;\n }\n }\n\n private _getPopoverContentPortal() {\n const injector = Injector.create({\n providers: [\n {\n provide: EMOJI_PICKER_TRIGGER_FOR,\n useValue: this,\n }\n ],\n parent: this._injector\n });\n return new TemplatePortal(\n this.for(),\n this._viewContainerRef,\n null,\n injector\n );\n }\n\n private _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPositionStrategy(),\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\n direction: this._directionality || undefined\n });\n }\n\n private _getOverlayPositionStrategy(): FlexibleConnectedPositionStrategy {\n return this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .setOrigin(this._elementRef)\n .withGrowAfterOpen()\n .withPositions(this._getOverlayPositions())\n ;\n }\n\n private _getOverlayPositions(): ConnectedPosition[] {\n return (new PositionManager()).build(this.position());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}