@ngstarter-ui/components 1.0.28 → 1.0.31

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 (230) hide show
  1. package/fesm2022/ngstarter-ui-components-action-required.mjs +2 -2
  2. package/fesm2022/ngstarter-ui-components-action-required.mjs.map +1 -1
  3. package/fesm2022/ngstarter-ui-components-alert.mjs +2 -2
  4. package/fesm2022/ngstarter-ui-components-alert.mjs.map +1 -1
  5. package/fesm2022/ngstarter-ui-components-announcement.mjs +2 -2
  6. package/fesm2022/ngstarter-ui-components-announcement.mjs.map +1 -1
  7. package/fesm2022/ngstarter-ui-components-autocomplete.mjs +2 -2
  8. package/fesm2022/ngstarter-ui-components-autocomplete.mjs.map +1 -1
  9. package/fesm2022/ngstarter-ui-components-avatar.mjs +8 -8
  10. package/fesm2022/ngstarter-ui-components-avatar.mjs.map +1 -1
  11. package/fesm2022/ngstarter-ui-components-badge.mjs +2 -2
  12. package/fesm2022/ngstarter-ui-components-badge.mjs.map +1 -1
  13. package/fesm2022/ngstarter-ui-components-block-loader.mjs +2 -2
  14. package/fesm2022/ngstarter-ui-components-block-loader.mjs.map +1 -1
  15. package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs +2 -2
  16. package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs.map +1 -1
  17. package/fesm2022/ngstarter-ui-components-button-toggle.mjs +4 -4
  18. package/fesm2022/ngstarter-ui-components-button-toggle.mjs.map +1 -1
  19. package/fesm2022/ngstarter-ui-components-button.mjs +2 -2
  20. package/fesm2022/ngstarter-ui-components-button.mjs.map +1 -1
  21. package/fesm2022/ngstarter-ui-components-card.mjs +2 -2
  22. package/fesm2022/ngstarter-ui-components-card.mjs.map +1 -1
  23. package/fesm2022/ngstarter-ui-components-checkbox.mjs +2 -2
  24. package/fesm2022/ngstarter-ui-components-checkbox.mjs.map +1 -1
  25. package/fesm2022/ngstarter-ui-components-chips.mjs +21 -7
  26. package/fesm2022/ngstarter-ui-components-chips.mjs.map +1 -1
  27. package/fesm2022/ngstarter-ui-components-code-highlighter.mjs +2 -2
  28. package/fesm2022/ngstarter-ui-components-code-highlighter.mjs.map +1 -1
  29. package/fesm2022/ngstarter-ui-components-color-picker.mjs +2 -2
  30. package/fesm2022/ngstarter-ui-components-color-picker.mjs.map +1 -1
  31. package/fesm2022/ngstarter-ui-components-color-switcher.mjs +2 -2
  32. package/fesm2022/ngstarter-ui-components-color-switcher.mjs.map +1 -1
  33. package/fesm2022/ngstarter-ui-components-command-bar.mjs +2 -2
  34. package/fesm2022/ngstarter-ui-components-command-bar.mjs.map +1 -1
  35. package/fesm2022/ngstarter-ui-components-comment-editor.mjs +6 -6
  36. package/fesm2022/ngstarter-ui-components-comment-editor.mjs.map +1 -1
  37. package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs → ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs} +4 -4
  38. package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs.map → ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs.map} +1 -1
  39. package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs → ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs} +2 -2
  40. package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs.map → ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs.map} +1 -1
  41. package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs → ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs} +4 -4
  42. package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs.map → ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs.map} +1 -1
  43. package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs → ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs} +4 -4
  44. package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs.map → ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs.map} +1 -1
  45. package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs → ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs} +4 -4
  46. package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs.map → ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs.map} +1 -1
  47. package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs} +15 -15
  48. package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs.map → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs.map} +1 -1
  49. package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs → ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs} +4 -4
  50. package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs.map → ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs.map} +1 -1
  51. package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs → ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs} +4 -4
  52. package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs.map → ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs.map} +1 -1
  53. package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs → ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs} +6 -6
  54. package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs.map → ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs.map} +1 -1
  55. package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs → ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs} +2 -2
  56. package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs.map → ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs.map} +1 -1
  57. package/fesm2022/ngstarter-ui-components-content-editor.mjs +1 -1
  58. package/fesm2022/ngstarter-ui-components-content-fade.mjs +2 -2
  59. package/fesm2022/ngstarter-ui-components-content-fade.mjs.map +1 -1
  60. package/fesm2022/ngstarter-ui-components-cookie-popup.mjs +2 -2
  61. package/fesm2022/ngstarter-ui-components-cookie-popup.mjs.map +1 -1
  62. package/fesm2022/ngstarter-ui-components-core.mjs +137 -34
  63. package/fesm2022/ngstarter-ui-components-core.mjs.map +1 -1
  64. package/fesm2022/ngstarter-ui-components-country-select.mjs +2 -2
  65. package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
  66. package/fesm2022/ngstarter-ui-components-data-view.mjs +2 -2
  67. package/fesm2022/ngstarter-ui-components-data-view.mjs.map +1 -1
  68. package/fesm2022/ngstarter-ui-components-datepicker.mjs +10 -10
  69. package/fesm2022/ngstarter-ui-components-datepicker.mjs.map +1 -1
  70. package/fesm2022/ngstarter-ui-components-dialog.mjs +8 -8
  71. package/fesm2022/ngstarter-ui-components-dialog.mjs.map +1 -1
  72. package/fesm2022/ngstarter-ui-components-divider.mjs +4 -4
  73. package/fesm2022/ngstarter-ui-components-divider.mjs.map +1 -1
  74. package/fesm2022/ngstarter-ui-components-drawer.mjs +2 -2
  75. package/fesm2022/ngstarter-ui-components-drawer.mjs.map +1 -1
  76. package/fesm2022/ngstarter-ui-components-emoji-picker.mjs +2 -2
  77. package/fesm2022/ngstarter-ui-components-emoji-picker.mjs.map +1 -1
  78. package/fesm2022/ngstarter-ui-components-empty-state.mjs +4 -4
  79. package/fesm2022/ngstarter-ui-components-empty-state.mjs.map +1 -1
  80. package/fesm2022/ngstarter-ui-components-expand.mjs +2 -2
  81. package/fesm2022/ngstarter-ui-components-expand.mjs.map +1 -1
  82. package/fesm2022/ngstarter-ui-components-expansion.mjs +2 -2
  83. package/fesm2022/ngstarter-ui-components-expansion.mjs.map +1 -1
  84. package/fesm2022/ngstarter-ui-components-filter-builder.mjs +2 -2
  85. package/fesm2022/ngstarter-ui-components-filter-builder.mjs.map +1 -1
  86. package/fesm2022/ngstarter-ui-components-form-field.mjs +4 -4
  87. package/fesm2022/ngstarter-ui-components-form-field.mjs.map +1 -1
  88. package/fesm2022/{ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs → ngstarter-ui-components-form-renderer-divider-content-D8Sffofu.mjs} +3 -3
  89. package/fesm2022/{ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs.map → ngstarter-ui-components-form-renderer-divider-content-D8Sffofu.mjs.map} +1 -1
  90. package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs → ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs} +3 -3
  91. package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs.map → ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs.map} +1 -1
  92. package/fesm2022/ngstarter-ui-components-form-renderer.mjs +2 -2
  93. package/fesm2022/ngstarter-ui-components-gauge.mjs +2 -2
  94. package/fesm2022/ngstarter-ui-components-gauge.mjs.map +1 -1
  95. package/fesm2022/ngstarter-ui-components-grid.mjs +2 -2
  96. package/fesm2022/ngstarter-ui-components-grid.mjs.map +1 -1
  97. package/fesm2022/ngstarter-ui-components-guided-tour.mjs +4 -4
  98. package/fesm2022/ngstarter-ui-components-guided-tour.mjs.map +1 -1
  99. package/fesm2022/ngstarter-ui-components-image-placeholder.mjs +2 -2
  100. package/fesm2022/ngstarter-ui-components-image-placeholder.mjs.map +1 -1
  101. package/fesm2022/ngstarter-ui-components-image-resizer.mjs +2 -2
  102. package/fesm2022/ngstarter-ui-components-image-resizer.mjs.map +1 -1
  103. package/fesm2022/ngstarter-ui-components-image-viewer.mjs +2 -2
  104. package/fesm2022/ngstarter-ui-components-image-viewer.mjs.map +1 -1
  105. package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs +2 -2
  106. package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs.map +1 -1
  107. package/fesm2022/ngstarter-ui-components-incidents.mjs +2 -2
  108. package/fesm2022/ngstarter-ui-components-incidents.mjs.map +1 -1
  109. package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs +2 -2
  110. package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs.map +1 -1
  111. package/fesm2022/ngstarter-ui-components-kanban-board.mjs +2 -2
  112. package/fesm2022/ngstarter-ui-components-kanban-board.mjs.map +1 -1
  113. package/fesm2022/ngstarter-ui-components-kbd.mjs +2 -2
  114. package/fesm2022/ngstarter-ui-components-kbd.mjs.map +1 -1
  115. package/fesm2022/ngstarter-ui-components-list.mjs +10 -10
  116. package/fesm2022/ngstarter-ui-components-list.mjs.map +1 -1
  117. package/fesm2022/ngstarter-ui-components-logo.mjs +8 -8
  118. package/fesm2022/ngstarter-ui-components-logo.mjs.map +1 -1
  119. package/fesm2022/ngstarter-ui-components-menu.mjs +8 -8
  120. package/fesm2022/ngstarter-ui-components-menu.mjs.map +1 -1
  121. package/fesm2022/ngstarter-ui-components-micro-chart.mjs +10 -10
  122. package/fesm2022/ngstarter-ui-components-micro-chart.mjs.map +1 -1
  123. package/fesm2022/ngstarter-ui-components-navigation.mjs +8 -8
  124. package/fesm2022/ngstarter-ui-components-navigation.mjs.map +1 -1
  125. package/fesm2022/ngstarter-ui-components-notifications.mjs +8 -8
  126. package/fesm2022/ngstarter-ui-components-notifications.mjs.map +1 -1
  127. package/fesm2022/ngstarter-ui-components-number-input.mjs +2 -2
  128. package/fesm2022/ngstarter-ui-components-number-input.mjs.map +1 -1
  129. package/fesm2022/ngstarter-ui-components-option.mjs +2 -2
  130. package/fesm2022/ngstarter-ui-components-option.mjs.map +1 -1
  131. package/fesm2022/ngstarter-ui-components-paginator.mjs +2 -2
  132. package/fesm2022/ngstarter-ui-components-paginator.mjs.map +1 -1
  133. package/fesm2022/ngstarter-ui-components-password-strength.mjs +2 -2
  134. package/fesm2022/ngstarter-ui-components-password-strength.mjs.map +1 -1
  135. package/fesm2022/ngstarter-ui-components-phone-input.mjs +2 -2
  136. package/fesm2022/ngstarter-ui-components-phone-input.mjs.map +1 -1
  137. package/fesm2022/ngstarter-ui-components-popover.mjs +2 -2
  138. package/fesm2022/ngstarter-ui-components-popover.mjs.map +1 -1
  139. package/fesm2022/ngstarter-ui-components-progress-bar.mjs +2 -2
  140. package/fesm2022/ngstarter-ui-components-progress-bar.mjs.map +1 -1
  141. package/fesm2022/ngstarter-ui-components-radio-card.mjs +4 -4
  142. package/fesm2022/ngstarter-ui-components-radio-card.mjs.map +1 -1
  143. package/fesm2022/ngstarter-ui-components-radio.mjs +2 -2
  144. package/fesm2022/ngstarter-ui-components-radio.mjs.map +1 -1
  145. package/fesm2022/ngstarter-ui-components-rail-nav.mjs +4 -4
  146. package/fesm2022/ngstarter-ui-components-rail-nav.mjs.map +1 -1
  147. package/fesm2022/ngstarter-ui-components-resizable-container.mjs +2 -2
  148. package/fesm2022/ngstarter-ui-components-resizable-container.mjs.map +1 -1
  149. package/fesm2022/ngstarter-ui-components-screen-loader.mjs +2 -2
  150. package/fesm2022/ngstarter-ui-components-screen-loader.mjs.map +1 -1
  151. package/fesm2022/ngstarter-ui-components-scroll-spy.mjs +6 -6
  152. package/fesm2022/ngstarter-ui-components-scroll-spy.mjs.map +1 -1
  153. package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs +2 -2
  154. package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs.map +1 -1
  155. package/fesm2022/ngstarter-ui-components-segmented.mjs +2 -2
  156. package/fesm2022/ngstarter-ui-components-segmented.mjs.map +1 -1
  157. package/fesm2022/ngstarter-ui-components-select.mjs +8 -8
  158. package/fesm2022/ngstarter-ui-components-select.mjs.map +1 -1
  159. package/fesm2022/ngstarter-ui-components-side-panel.mjs +2 -2
  160. package/fesm2022/ngstarter-ui-components-side-panel.mjs.map +1 -1
  161. package/fesm2022/ngstarter-ui-components-sidebar.mjs +14 -14
  162. package/fesm2022/ngstarter-ui-components-sidebar.mjs.map +1 -1
  163. package/fesm2022/ngstarter-ui-components-sidenav.mjs +4 -4
  164. package/fesm2022/ngstarter-ui-components-sidenav.mjs.map +1 -1
  165. package/fesm2022/ngstarter-ui-components-signature-pad.mjs +2 -2
  166. package/fesm2022/ngstarter-ui-components-signature-pad.mjs.map +1 -1
  167. package/fesm2022/ngstarter-ui-components-skeleton.mjs +2 -2
  168. package/fesm2022/ngstarter-ui-components-skeleton.mjs.map +1 -1
  169. package/fesm2022/ngstarter-ui-components-slide-toggle.mjs +2 -2
  170. package/fesm2022/ngstarter-ui-components-slide-toggle.mjs.map +1 -1
  171. package/fesm2022/ngstarter-ui-components-slider.mjs +2 -2
  172. package/fesm2022/ngstarter-ui-components-slider.mjs.map +1 -1
  173. package/fesm2022/ngstarter-ui-components-snack-bar.mjs +2 -2
  174. package/fesm2022/ngstarter-ui-components-snack-bar.mjs.map +1 -1
  175. package/fesm2022/ngstarter-ui-components-spinner.mjs +2 -2
  176. package/fesm2022/ngstarter-ui-components-spinner.mjs.map +1 -1
  177. package/fesm2022/ngstarter-ui-components-splash-screen.mjs +2 -2
  178. package/fesm2022/ngstarter-ui-components-splash-screen.mjs.map +1 -1
  179. package/fesm2022/ngstarter-ui-components-split.mjs +2 -2
  180. package/fesm2022/ngstarter-ui-components-split.mjs.map +1 -1
  181. package/fesm2022/ngstarter-ui-components-stepper.mjs +2 -2
  182. package/fesm2022/ngstarter-ui-components-stepper.mjs.map +1 -1
  183. package/fesm2022/ngstarter-ui-components-suggestions.mjs +4 -4
  184. package/fesm2022/ngstarter-ui-components-suggestions.mjs.map +1 -1
  185. package/fesm2022/ngstarter-ui-components-tab-panel.mjs +2 -2
  186. package/fesm2022/ngstarter-ui-components-tab-panel.mjs.map +1 -1
  187. package/fesm2022/ngstarter-ui-components-table.mjs +6 -6
  188. package/fesm2022/ngstarter-ui-components-table.mjs.map +1 -1
  189. package/fesm2022/ngstarter-ui-components-tabs.mjs +6 -6
  190. package/fesm2022/ngstarter-ui-components-tabs.mjs.map +1 -1
  191. package/fesm2022/ngstarter-ui-components-text-editor.mjs +10 -10
  192. package/fesm2022/ngstarter-ui-components-text-editor.mjs.map +1 -1
  193. package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs +2 -2
  194. package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs.map +1 -1
  195. package/fesm2022/ngstarter-ui-components-tiles.mjs +2 -2
  196. package/fesm2022/ngstarter-ui-components-tiles.mjs.map +1 -1
  197. package/fesm2022/ngstarter-ui-components-timeline.mjs +2 -2
  198. package/fesm2022/ngstarter-ui-components-timeline.mjs.map +1 -1
  199. package/fesm2022/ngstarter-ui-components-timepicker.mjs +2 -2
  200. package/fesm2022/ngstarter-ui-components-timepicker.mjs.map +1 -1
  201. package/fesm2022/ngstarter-ui-components-toolbar.mjs +4 -4
  202. package/fesm2022/ngstarter-ui-components-toolbar.mjs.map +1 -1
  203. package/fesm2022/ngstarter-ui-components-tooltip.mjs +2 -2
  204. package/fesm2022/ngstarter-ui-components-tooltip.mjs.map +1 -1
  205. package/fesm2022/ngstarter-ui-components-upload.mjs +10 -10
  206. package/fesm2022/ngstarter-ui-components-upload.mjs.map +1 -1
  207. package/fesm2022/ngstarter-ui-components-video-viewer.mjs +2 -2
  208. package/fesm2022/ngstarter-ui-components-video-viewer.mjs.map +1 -1
  209. package/package.json +15 -3
  210. package/schematics/collection.json +10 -0
  211. package/schematics/migrations.json +11 -0
  212. package/schematics/ng-add/index.d.ts +6 -0
  213. package/schematics/ng-add/index.js +14 -0
  214. package/schematics/ng-add/index.js.map +1 -0
  215. package/schematics/ng-add/schema.json +17 -0
  216. package/schematics/ng-update/index.d.ts +6 -0
  217. package/schematics/ng-update/index.js +14 -0
  218. package/schematics/ng-update/index.js.map +1 -0
  219. package/schematics/ng-update/schema.json +17 -0
  220. package/schematics/utils.d.ts +8 -0
  221. package/schematics/utils.js +400 -0
  222. package/schematics/utils.js.map +1 -0
  223. package/styles/_common.scss +84 -390
  224. package/styles/_global.scss +12 -12
  225. package/styles/_tokens.scss +1043 -0
  226. package/styles/themes/compact.scss +9 -0
  227. package/styles/themes/enterprise.scss +349 -0
  228. package/styles/themes/modern.scss +352 -0
  229. package/types/ngstarter-ui-components-chips.d.ts +9 -4
  230. package/types/ngstarter-ui-components-core.d.ts +41 -5
@@ -25,13 +25,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
25
25
 
26
26
  class EmptyStateIcon {
27
27
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: EmptyStateIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: EmptyStateIcon, isStandalone: true, selector: "ngs-empty-state-icon", host: { classAttribute: "ngs-empty-state-icon" }, exportAs: ["ngsEmptyStateIcon"], ngImport: i0, template: "<ng-content/>\n", styles: [":host{display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8);width:calc(var(--spacing, .25rem) * 40);height:calc(var(--spacing, .25rem) * 40);background:var(--color-surface-container);border-radius:calc(infinity * 1px);margin-bottom:calc(var(--spacing, .25rem) * 6)}:host ::ng-deep ngs-icon{--icon-size: calc(var(--spacing, .25rem) * 28)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
28
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: EmptyStateIcon, isStandalone: true, selector: "ngs-empty-state-icon", host: { classAttribute: "ngs-empty-state-icon" }, exportAs: ["ngsEmptyStateIcon"], ngImport: i0, template: "<ng-content/>\n", styles: [":host{display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8);width:calc(var(--spacing, .25rem) * 40);height:calc(var(--spacing, .25rem) * 40);background:var(--ngs-color-surface-container);border-radius:calc(infinity * 1px);margin-bottom:calc(var(--spacing, .25rem) * 6)}:host ::ng-deep ngs-icon{--icon-size: calc(var(--spacing, .25rem) * 28)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29
29
  }
30
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: EmptyStateIcon, decorators: [{
31
31
  type: Component,
32
32
  args: [{ selector: 'ngs-empty-state-icon', exportAs: 'ngsEmptyStateIcon', host: {
33
33
  'class': 'ngs-empty-state-icon'
34
- }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content/>\n", styles: [":host{display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8);width:calc(var(--spacing, .25rem) * 40);height:calc(var(--spacing, .25rem) * 40);background:var(--color-surface-container);border-radius:calc(infinity * 1px);margin-bottom:calc(var(--spacing, .25rem) * 6)}:host ::ng-deep ngs-icon{--icon-size: calc(var(--spacing, .25rem) * 28)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
34
+ }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content/>\n", styles: [":host{display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8);width:calc(var(--spacing, .25rem) * 40);height:calc(var(--spacing, .25rem) * 40);background:var(--ngs-color-surface-container);border-radius:calc(infinity * 1px);margin-bottom:calc(var(--spacing, .25rem) * 6)}:host ::ng-deep ngs-icon{--icon-size: calc(var(--spacing, .25rem) * 28)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
35
35
  }] });
36
36
 
37
37
  class EmptyStateTitle {
@@ -47,13 +47,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
47
47
 
48
48
  class EmptyStateContent {
49
49
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: EmptyStateContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
50
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: EmptyStateContent, isStandalone: true, selector: "ngs-empty-state-content", host: { classAttribute: "ngs-empty-state-content" }, exportAs: ["ngsEmptyStateContent"], ngImport: i0, template: "<ng-content/>\n", styles: [":host{display:block;font-size:.875rem;color:var(--color-neutral-600)}:host-context(html.dark){color:var(--color-neutral-500)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: EmptyStateContent, isStandalone: true, selector: "ngs-empty-state-content", host: { classAttribute: "ngs-empty-state-content" }, exportAs: ["ngsEmptyStateContent"], ngImport: i0, template: "<ng-content/>\n", styles: [":host{display:block;font-size:var(--ngs-font-size-sm);color:var(--ngs-color-neutral-600)}:host-context(html.dark){color:var(--ngs-color-neutral-500)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
51
51
  }
52
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: EmptyStateContent, decorators: [{
53
53
  type: Component,
54
54
  args: [{ selector: 'ngs-empty-state-content', exportAs: 'ngsEmptyStateContent', host: {
55
55
  'class': 'ngs-empty-state-content'
56
- }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content/>\n", styles: [":host{display:block;font-size:.875rem;color:var(--color-neutral-600)}:host-context(html.dark){color:var(--color-neutral-500)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
56
+ }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content/>\n", styles: [":host{display:block;font-size:var(--ngs-font-size-sm);color:var(--ngs-color-neutral-600)}:host-context(html.dark){color:var(--ngs-color-neutral-500)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
57
57
  }] });
58
58
 
59
59
  class EmptyStateActions {
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-empty-state.mjs","sources":["../../../projects/components/empty-state/src/empty-state/empty-state.ts","../../../projects/components/empty-state/src/empty-state/empty-state.html","../../../projects/components/empty-state/src/empty-state-image/empty-state-image.ts","../../../projects/components/empty-state/src/empty-state-image/empty-state-image.html","../../../projects/components/empty-state/src/empty-state-icon/empty-state-icon.ts","../../../projects/components/empty-state/src/empty-state-icon/empty-state-icon.html","../../../projects/components/empty-state/src/empty-state-title/empty-state-title.ts","../../../projects/components/empty-state/src/empty-state-title/empty-state-title.html","../../../projects/components/empty-state/src/empty-state-content/empty-state-content.ts","../../../projects/components/empty-state/src/empty-state-content/empty-state-content.html","../../../projects/components/empty-state/src/empty-state-actions/empty-state-actions.ts","../../../projects/components/empty-state/src/empty-state-actions/empty-state-actions.html","../../../projects/components/empty-state/ngstarter-ui-components-empty-state.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state',\n exportAs: 'ngsEmptyState',\n templateUrl: './empty-state.html',\n styleUrl: './empty-state.scss',\n host: {\n 'class': 'ngs-empty-state',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyState {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-image',\n exportAs: 'ngsEmptyStateImage',\n templateUrl: './empty-state-image.html',\n styleUrl: './empty-state-image.scss',\n host: {\n 'class': 'ngs-empty-state-image'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateImage {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-icon',\n exportAs: 'ngsEmptyStateIcon',\n templateUrl: './empty-state-icon.html',\n styleUrl: './empty-state-icon.scss',\n host: {\n 'class': 'ngs-empty-state-icon'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateIcon {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-title,[ngs-empty-state-title]',\n exportAs: 'ngsEmptyStateTitle',\n templateUrl: './empty-state-title.html',\n styleUrl: './empty-state-title.scss',\n host: {\n 'class': 'ngs-empty-state-title'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateTitle {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-content',\n exportAs: 'ngsEmptyStateContent',\n templateUrl: './empty-state-content.html',\n styleUrl: './empty-state-content.scss',\n host: {\n 'class': 'ngs-empty-state-content'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateContent {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-actions',\n exportAs: 'ngsEmptyStateActions',\n templateUrl: './empty-state-actions.html',\n styleUrl: './empty-state-actions.scss',\n host: {\n 'class': 'ngs-empty-state-actions'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateActions {}\n","<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-empty-state.mjs","sources":["../../../projects/components/empty-state/src/empty-state/empty-state.ts","../../../projects/components/empty-state/src/empty-state/empty-state.html","../../../projects/components/empty-state/src/empty-state-image/empty-state-image.ts","../../../projects/components/empty-state/src/empty-state-image/empty-state-image.html","../../../projects/components/empty-state/src/empty-state-icon/empty-state-icon.ts","../../../projects/components/empty-state/src/empty-state-icon/empty-state-icon.html","../../../projects/components/empty-state/src/empty-state-title/empty-state-title.ts","../../../projects/components/empty-state/src/empty-state-title/empty-state-title.html","../../../projects/components/empty-state/src/empty-state-content/empty-state-content.ts","../../../projects/components/empty-state/src/empty-state-content/empty-state-content.html","../../../projects/components/empty-state/src/empty-state-actions/empty-state-actions.ts","../../../projects/components/empty-state/src/empty-state-actions/empty-state-actions.html","../../../projects/components/empty-state/ngstarter-ui-components-empty-state.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state',\n exportAs: 'ngsEmptyState',\n templateUrl: './empty-state.html',\n styleUrl: './empty-state.scss',\n host: {\n 'class': 'ngs-empty-state',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyState {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-image',\n exportAs: 'ngsEmptyStateImage',\n templateUrl: './empty-state-image.html',\n styleUrl: './empty-state-image.scss',\n host: {\n 'class': 'ngs-empty-state-image'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateImage {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-icon',\n exportAs: 'ngsEmptyStateIcon',\n templateUrl: './empty-state-icon.html',\n styleUrl: './empty-state-icon.scss',\n host: {\n 'class': 'ngs-empty-state-icon'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateIcon {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-title,[ngs-empty-state-title]',\n exportAs: 'ngsEmptyStateTitle',\n templateUrl: './empty-state-title.html',\n styleUrl: './empty-state-title.scss',\n host: {\n 'class': 'ngs-empty-state-title'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateTitle {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-content',\n exportAs: 'ngsEmptyStateContent',\n templateUrl: './empty-state-content.html',\n styleUrl: './empty-state-content.scss',\n host: {\n 'class': 'ngs-empty-state-content'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateContent {}\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-empty-state-actions',\n exportAs: 'ngsEmptyStateActions',\n templateUrl: './empty-state-actions.html',\n styleUrl: './empty-state-actions.scss',\n host: {\n 'class': 'ngs-empty-state-actions'\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateActions {}\n","<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -38,14 +38,14 @@ class Expand {
38
38
  this.expandedChange.emit(this._expanded);
39
39
  }
40
40
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Expand, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Expand, isStandalone: true, selector: "ngs-expand", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, expandLabel: { classPropertyName: "expandLabel", publicName: "expandLabel", isSignal: true, isRequired: false, transformFunction: null }, collapseLabel: { classPropertyName: "collapseLabel", publicName: "collapseLabel", isSignal: true, isRequired: false, transformFunction: null }, showButtonIfExpanded: { classPropertyName: "showButtonIfExpanded", publicName: "showButtonIfExpanded", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandedChange: "expandedChange" }, host: { properties: { "class.is-expanded": "_expanded" }, classAttribute: "ngs-expand" }, exportAs: ["ngsExpand"], ngImport: i0, template: "<div class=\"content\">\n <ng-content/>\n</div>\n\n@if (showButtonIfExpanded()) {\n <button class=\"button\" (click)=\"api.toggle()\">\n @if (!_expanded) {\n {{ expandLabel() }}\n } @else {\n {{ collapseLabel() }}\n }\n </button>\n} @else if (!showButtonIfExpanded() && !_expanded) {\n <button class=\"button\" (click)=\"api.toggle()\">\n {{ expandLabel() }}\n </button>\n}\n", styles: [":host{--ngs-expand-fade-color: var(--color-background);--ngs-expand-button-bg: var(--color-surface-container);--ngs-expand-button-hover-bg: var(--color-surface-container-high);--ngs-expand-button-color: var(--color-on-surface);--ngs-expand-button-font-size: var(--text-tiny);--ngs-expand-button-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ngs-expand-button-border-radius: calc(infinity * 1px);--ngs-expand-button-padding: calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 4);--ngs-expand-button-hover-opacity: 90%;--ngs-expand-expanded-height: 300px;display:block;position:relative;max-height:var(--ngs-expand-expanded-height);overflow:hidden}:host .button{position:absolute;inset-inline-start:50%;bottom:calc(var(--spacing, .25rem) * 12);padding:var(--ngs-expand-button-padding);border-radius:var(--ngs-expand-button-border-radius);background:var(--ngs-expand-button-bg);display:flex;align-items:center;justify-content:center;z-index:2;transform:translate(-50%,50%);color:var(--ngs-expand-button-color);font-size:var(--ngs-expand-button-font-size);box-shadow:var(--ngs-expand-button-box-shadow)}:host .button:hover{cursor:pointer;opacity:var(--ngs-expand-button-hover-opacity);background:var(--ngs-expand-button-hover-bg)}:host .button:active{scale:.98}:host:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:50%;background:linear-gradient(transparent,var(--ngs-expand-fade-color));z-index:1}:host.is-expanded{max-height:max-content;overflow:auto}:host.is-expanded:after{display:none}:host.is-expanded .button{visibility:hidden}:host.is-expanded:hover .button{visibility:visible}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
41
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Expand, isStandalone: true, selector: "ngs-expand", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, expandLabel: { classPropertyName: "expandLabel", publicName: "expandLabel", isSignal: true, isRequired: false, transformFunction: null }, collapseLabel: { classPropertyName: "collapseLabel", publicName: "collapseLabel", isSignal: true, isRequired: false, transformFunction: null }, showButtonIfExpanded: { classPropertyName: "showButtonIfExpanded", publicName: "showButtonIfExpanded", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandedChange: "expandedChange" }, host: { properties: { "class.is-expanded": "_expanded" }, classAttribute: "ngs-expand" }, exportAs: ["ngsExpand"], ngImport: i0, template: "<div class=\"content\">\n <ng-content/>\n</div>\n\n@if (showButtonIfExpanded()) {\n <button class=\"button\" (click)=\"api.toggle()\">\n @if (!_expanded) {\n {{ expandLabel() }}\n } @else {\n {{ collapseLabel() }}\n }\n </button>\n} @else if (!showButtonIfExpanded() && !_expanded) {\n <button class=\"button\" (click)=\"api.toggle()\">\n {{ expandLabel() }}\n </button>\n}\n", styles: [":host{--ngs-expand-fade-color: var(--ngs-color-background);--ngs-expand-button-bg: var(--ngs-color-surface-container);--ngs-expand-button-hover-bg: var(--ngs-color-surface-container-high);--ngs-expand-button-color: var(--ngs-color-on-surface);--ngs-expand-button-font-size: var(--text-tiny);--ngs-expand-button-box-shadow: var(--ngs-shadow-md);--ngs-expand-button-border-radius: calc(infinity * 1px);--ngs-expand-button-padding: calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 4);--ngs-expand-button-hover-opacity: 90%;--ngs-expand-expanded-height: 300px;display:block;position:relative;max-height:var(--ngs-expand-expanded-height);overflow:hidden}:host .button{position:absolute;inset-inline-start:50%;bottom:calc(var(--spacing, .25rem) * 12);padding:var(--ngs-expand-button-padding);border-radius:var(--ngs-expand-button-border-radius);background:var(--ngs-expand-button-bg);display:flex;align-items:center;justify-content:center;z-index:2;transform:translate(-50%,50%);color:var(--ngs-expand-button-color);font-size:var(--ngs-expand-button-font-size);box-shadow:var(--ngs-expand-button-box-shadow)}:host .button:hover{cursor:pointer;opacity:var(--ngs-expand-button-hover-opacity);background:var(--ngs-expand-button-hover-bg)}:host .button:active{scale:.98}:host:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:50%;background:linear-gradient(transparent,var(--ngs-expand-fade-color));z-index:1}:host.is-expanded{max-height:max-content;overflow:auto}:host.is-expanded:after{display:none}:host.is-expanded .button{visibility:hidden}:host.is-expanded:hover .button{visibility:visible}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
42
42
  }
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Expand, decorators: [{
44
44
  type: Component,
45
45
  args: [{ selector: 'ngs-expand', exportAs: 'ngsExpand', host: {
46
46
  'class': 'ngs-expand',
47
47
  '[class.is-expanded]': '_expanded'
48
- }, template: "<div class=\"content\">\n <ng-content/>\n</div>\n\n@if (showButtonIfExpanded()) {\n <button class=\"button\" (click)=\"api.toggle()\">\n @if (!_expanded) {\n {{ expandLabel() }}\n } @else {\n {{ collapseLabel() }}\n }\n </button>\n} @else if (!showButtonIfExpanded() && !_expanded) {\n <button class=\"button\" (click)=\"api.toggle()\">\n {{ expandLabel() }}\n </button>\n}\n", styles: [":host{--ngs-expand-fade-color: var(--color-background);--ngs-expand-button-bg: var(--color-surface-container);--ngs-expand-button-hover-bg: var(--color-surface-container-high);--ngs-expand-button-color: var(--color-on-surface);--ngs-expand-button-font-size: var(--text-tiny);--ngs-expand-button-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ngs-expand-button-border-radius: calc(infinity * 1px);--ngs-expand-button-padding: calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 4);--ngs-expand-button-hover-opacity: 90%;--ngs-expand-expanded-height: 300px;display:block;position:relative;max-height:var(--ngs-expand-expanded-height);overflow:hidden}:host .button{position:absolute;inset-inline-start:50%;bottom:calc(var(--spacing, .25rem) * 12);padding:var(--ngs-expand-button-padding);border-radius:var(--ngs-expand-button-border-radius);background:var(--ngs-expand-button-bg);display:flex;align-items:center;justify-content:center;z-index:2;transform:translate(-50%,50%);color:var(--ngs-expand-button-color);font-size:var(--ngs-expand-button-font-size);box-shadow:var(--ngs-expand-button-box-shadow)}:host .button:hover{cursor:pointer;opacity:var(--ngs-expand-button-hover-opacity);background:var(--ngs-expand-button-hover-bg)}:host .button:active{scale:.98}:host:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:50%;background:linear-gradient(transparent,var(--ngs-expand-fade-color));z-index:1}:host.is-expanded{max-height:max-content;overflow:auto}:host.is-expanded:after{display:none}:host.is-expanded .button{visibility:hidden}:host.is-expanded:hover .button{visibility:visible}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
48
+ }, template: "<div class=\"content\">\n <ng-content/>\n</div>\n\n@if (showButtonIfExpanded()) {\n <button class=\"button\" (click)=\"api.toggle()\">\n @if (!_expanded) {\n {{ expandLabel() }}\n } @else {\n {{ collapseLabel() }}\n }\n </button>\n} @else if (!showButtonIfExpanded() && !_expanded) {\n <button class=\"button\" (click)=\"api.toggle()\">\n {{ expandLabel() }}\n </button>\n}\n", styles: [":host{--ngs-expand-fade-color: var(--ngs-color-background);--ngs-expand-button-bg: var(--ngs-color-surface-container);--ngs-expand-button-hover-bg: var(--ngs-color-surface-container-high);--ngs-expand-button-color: var(--ngs-color-on-surface);--ngs-expand-button-font-size: var(--text-tiny);--ngs-expand-button-box-shadow: var(--ngs-shadow-md);--ngs-expand-button-border-radius: calc(infinity * 1px);--ngs-expand-button-padding: calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 4);--ngs-expand-button-hover-opacity: 90%;--ngs-expand-expanded-height: 300px;display:block;position:relative;max-height:var(--ngs-expand-expanded-height);overflow:hidden}:host .button{position:absolute;inset-inline-start:50%;bottom:calc(var(--spacing, .25rem) * 12);padding:var(--ngs-expand-button-padding);border-radius:var(--ngs-expand-button-border-radius);background:var(--ngs-expand-button-bg);display:flex;align-items:center;justify-content:center;z-index:2;transform:translate(-50%,50%);color:var(--ngs-expand-button-color);font-size:var(--ngs-expand-button-font-size);box-shadow:var(--ngs-expand-button-box-shadow)}:host .button:hover{cursor:pointer;opacity:var(--ngs-expand-button-hover-opacity);background:var(--ngs-expand-button-hover-bg)}:host .button:active{scale:.98}:host:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:50%;background:linear-gradient(transparent,var(--ngs-expand-fade-color));z-index:1}:host.is-expanded{max-height:max-content;overflow:auto}:host.is-expanded:after{display:none}:host.is-expanded .button{visibility:hidden}:host.is-expanded:hover .button{visibility:visible}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
49
49
  }], ctorParameters: () => [], propDecorators: { expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], expandLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandLabel", required: false }] }], collapseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapseLabel", required: false }] }], showButtonIfExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "showButtonIfExpanded", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], expandedChange: [{ type: i0.Output, args: ["expandedChange"] }] } });
50
50
 
51
51
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-expand.mjs","sources":["../../../projects/components/expand/src/expand/expand.ts","../../../projects/components/expand/src/expand/expand.html","../../../projects/components/expand/ngstarter-ui-components-expand.ts"],"sourcesContent":["import { booleanAttribute, Component, effect, ElementRef, inject, input, output } from '@angular/core';\n\n@Component({\n selector: 'ngs-expand',\n exportAs: 'ngsExpand',\n templateUrl: './expand.html',\n styleUrl: './expand.scss',\n host: {\n 'class': 'ngs-expand',\n '[class.is-expanded]': '_expanded'\n }\n})\nexport class Expand {\n private _elementRef = inject(ElementRef);\n\n expanded = input(false, {\n transform: booleanAttribute\n });\n color = input('');\n expandLabel = input('Show more');\n collapseLabel = input('Show less');\n showButtonIfExpanded = input(false, {\n transform: booleanAttribute\n });\n height = input<string>('');\n\n readonly expandedChange = output<boolean>();\n\n protected _expanded = false;\n\n constructor() {\n effect(() => {\n this._expanded = this.expanded();\n (this._elementRef.nativeElement as HTMLElement).style.setProperty('--ngs-expand-fade-color', this.color(), 'important');\n (this._elementRef.nativeElement as HTMLElement).style.setProperty('--ngs-expand-expanded-height', this.height(), 'important');\n });\n }\n\n get api() {\n return {\n expand: () => this._expand(),\n collapse: () => this._collapse(),\n toggle: () => this._toggle()\n };\n }\n\n private _toggle() {\n this._expanded = !this._expanded;\n this.expandedChange.emit(this._expanded);\n }\n\n private _expand() {\n this._expanded = true;\n this.expandedChange.emit(this._expanded);\n }\n\n private _collapse() {\n this._expanded = false;\n this.expandedChange.emit(this._expanded);\n }\n}\n","<div class=\"content\">\n <ng-content/>\n</div>\n\n@if (showButtonIfExpanded()) {\n <button class=\"button\" (click)=\"api.toggle()\">\n @if (!_expanded) {\n {{ expandLabel() }}\n } @else {\n {{ collapseLabel() }}\n }\n </button>\n} @else if (!showButtonIfExpanded() && !_expanded) {\n <button class=\"button\" (click)=\"api.toggle()\">\n {{ expandLabel() }}\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAYa,MAAM,CAAA;AACT,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAExC,QAAQ,GAAG,KAAK,CAAC,KAAK,gFACpB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACF,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,WAAW,GAAG,KAAK,CAAC,WAAW,kFAAC;AAChC,IAAA,aAAa,GAAG,KAAK,CAAC,WAAW,oFAAC;IAClC,oBAAoB,GAAG,KAAK,CAAC,KAAK,4FAChC,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACF,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;IAEjB,cAAc,GAAG,MAAM,EAAW;IAEjC,SAAS,GAAG,KAAK;AAE3B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,aAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC;AACtH,YAAA,IAAI,CAAC,WAAW,CAAC,aAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC;AAC/H,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAI,GAAG,GAAA;QACL,OAAO;AACL,YAAA,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;AAChC,YAAA,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO;SAC3B;IACH;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;uGA/CW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,uiCCZnB,oZAiBA,EAAA,MAAA,EAAA,CAAA,mrDAAA,CAAA,EAAA,CAAA;;2FDLa,MAAM,EAAA,UAAA,EAAA,CAAA;kBAVlB,SAAS;+BACE,YAAY,EAAA,QAAA,EACZ,WAAW,EAAA,IAAA,EAGf;AACJ,wBAAA,OAAO,EAAE,YAAY;AACrB,wBAAA,qBAAqB,EAAE;AACxB,qBAAA,EAAA,QAAA,EAAA,oZAAA,EAAA,MAAA,EAAA,CAAA,mrDAAA,CAAA,EAAA;;;AEVH;;AAEG;;;;"}
1
+ {"version":3,"file":"ngstarter-ui-components-expand.mjs","sources":["../../../projects/components/expand/src/expand/expand.ts","../../../projects/components/expand/src/expand/expand.html","../../../projects/components/expand/ngstarter-ui-components-expand.ts"],"sourcesContent":["import { booleanAttribute, Component, effect, ElementRef, inject, input, output } from '@angular/core';\n\n@Component({\n selector: 'ngs-expand',\n exportAs: 'ngsExpand',\n templateUrl: './expand.html',\n styleUrl: './expand.scss',\n host: {\n 'class': 'ngs-expand',\n '[class.is-expanded]': '_expanded'\n }\n})\nexport class Expand {\n private _elementRef = inject(ElementRef);\n\n expanded = input(false, {\n transform: booleanAttribute\n });\n color = input('');\n expandLabel = input('Show more');\n collapseLabel = input('Show less');\n showButtonIfExpanded = input(false, {\n transform: booleanAttribute\n });\n height = input<string>('');\n\n readonly expandedChange = output<boolean>();\n\n protected _expanded = false;\n\n constructor() {\n effect(() => {\n this._expanded = this.expanded();\n (this._elementRef.nativeElement as HTMLElement).style.setProperty('--ngs-expand-fade-color', this.color(), 'important');\n (this._elementRef.nativeElement as HTMLElement).style.setProperty('--ngs-expand-expanded-height', this.height(), 'important');\n });\n }\n\n get api() {\n return {\n expand: () => this._expand(),\n collapse: () => this._collapse(),\n toggle: () => this._toggle()\n };\n }\n\n private _toggle() {\n this._expanded = !this._expanded;\n this.expandedChange.emit(this._expanded);\n }\n\n private _expand() {\n this._expanded = true;\n this.expandedChange.emit(this._expanded);\n }\n\n private _collapse() {\n this._expanded = false;\n this.expandedChange.emit(this._expanded);\n }\n}\n","<div class=\"content\">\n <ng-content/>\n</div>\n\n@if (showButtonIfExpanded()) {\n <button class=\"button\" (click)=\"api.toggle()\">\n @if (!_expanded) {\n {{ expandLabel() }}\n } @else {\n {{ collapseLabel() }}\n }\n </button>\n} @else if (!showButtonIfExpanded() && !_expanded) {\n <button class=\"button\" (click)=\"api.toggle()\">\n {{ expandLabel() }}\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAYa,MAAM,CAAA;AACT,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAExC,QAAQ,GAAG,KAAK,CAAC,KAAK,gFACpB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACF,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,WAAW,GAAG,KAAK,CAAC,WAAW,kFAAC;AAChC,IAAA,aAAa,GAAG,KAAK,CAAC,WAAW,oFAAC;IAClC,oBAAoB,GAAG,KAAK,CAAC,KAAK,4FAChC,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACF,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;IAEjB,cAAc,GAAG,MAAM,EAAW;IAEjC,SAAS,GAAG,KAAK;AAE3B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,aAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC;AACtH,YAAA,IAAI,CAAC,WAAW,CAAC,aAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC;AAC/H,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAI,GAAG,GAAA;QACL,OAAO;AACL,YAAA,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;AAChC,YAAA,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO;SAC3B;IACH;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;uGA/CW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,uiCCZnB,oZAiBA,EAAA,MAAA,EAAA,CAAA,ypDAAA,CAAA,EAAA,CAAA;;2FDLa,MAAM,EAAA,UAAA,EAAA,CAAA;kBAVlB,SAAS;+BACE,YAAY,EAAA,QAAA,EACZ,WAAW,EAAA,IAAA,EAGf;AACJ,wBAAA,OAAO,EAAE,YAAY;AACrB,wBAAA,qBAAqB,EAAE;AACxB,qBAAA,EAAA,QAAA,EAAA,oZAAA,EAAA,MAAA,EAAA,CAAA,ypDAAA,CAAA,EAAA;;;AEVH;;AAEG;;;;"}
@@ -48,7 +48,7 @@ class ExpansionPanel {
48
48
  return this.expanded() ? 'expanded' : 'collapsed';
49
49
  }
50
50
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ExpansionPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
51
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: ExpansionPanel, isStandalone: true, selector: "ngs-expansion-panel", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, hideToggle: { classPropertyName: "hideToggle", publicName: "hideToggle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange", opened: "opened", closed: "closed", expandedChange: "expandedChange" }, host: { properties: { "class.ngs-expanded": "expanded()", "class.ngs-expansion-panel-disabled": "disabled()", "attr.id": "id" }, classAttribute: "ngs-expansion-panel" }, exportAs: ["ngsExpansionPanel"], ngImport: i0, template: "<ng-content select=\"ngs-expansion-panel-header\"/>\n<div class=\"ngs-expansion-panel-content\"\n role=\"region\"\n [class.ngs-expanded]=\"expanded()\"\n [attr.id]=\"id\"\n [attr.aria-labelledby]=\"headerId\"\n [attr.aria-hidden]=\"!expanded()\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ngs-expansion-panel-body\">\n <ng-content/>\n </div>\n <ng-content select=\"ngs-action-row\"/>\n</div>\n", styles: [":host{--ngs-expansion-panel-background: var(--color-surface);--ngs-expansion-panel-color: var(--color-on-surface);--ngs-expansion-panel-divider-color: var(--color-subtle);--ngs-expansion-panel-disabled-color: var(--color-neutral-300);--ngs-expansion-panel-header-height: calc(var(--spacing, .25rem) * 14);--ngs-expansion-panel-header-expanded-height: calc(var(--spacing, .25rem) * 16);--ngs-expansion-panel-content-padding: 3px 24px 16px 24px;--ngs-expansion-panel-radius: .75rem;--ngs-expansion-panel-description-color: var(--color-on-surface-variant);margin-bottom:-1px}:host:first-of-type{border-top-left-radius:var(--ngs-expansion-panel-radius);border-top-right-radius:var(--ngs-expansion-panel-radius)}:host:last-of-type{border-bottom-left-radius:var(--ngs-expansion-panel-radius);border-bottom-right-radius:var(--ngs-expansion-panel-radius)}:host.ngs-expanded{border-top:1px solid var(--ngs-expansion-panel-divider-color, rgba(0, 0, 0, .12));border-bottom:1px solid var(--ngs-expansion-panel-divider-color, rgba(0, 0, 0, .12));border-radius:var(--ngs-expansion-panel-radius)}:host.ngs-expanded+ngs-expansion-panel{border-top-left-radius:var(--ngs-expansion-panel-radius);border-top-right-radius:var(--ngs-expansion-panel-radius)}:host{display:block;background:var(--ngs-expansion-panel-background);color:var(--ngs-expansion-panel-color);border:1px solid var(--ngs-expansion-panel-divider-color);overflow:hidden}:host.ngs-expanded{margin:16px 0}:host.ngs-expanded:first-of-type{margin-top:0}:host.ngs-expanded:last-of-type{margin-bottom:0}:host.ngs-expansion-panel-disabled{--ngs-expansion-panel-description-color: var(--ngs-expansion-panel-disabled-color);color:var(--ngs-expansion-panel-disabled-color);pointer-events:none}:host .ngs-expansion-panel-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows 225ms cubic-bezier(.4,0,.2,1);visibility:hidden;overflow:hidden;height:0}:host.ngs-expanded :host .ngs-expansion-panel-content{grid-template-rows:1fr;visibility:visible}:host .ngs-expansion-panel-content.ngs-expanded{grid-template-rows:1fr;visibility:visible;height:auto}:host .ngs-expansion-panel-content>div{overflow:hidden;min-height:0}:host .ngs-expansion-panel-body{padding:var(--ngs-expansion-panel-content-padding)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
51
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: ExpansionPanel, isStandalone: true, selector: "ngs-expansion-panel", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, hideToggle: { classPropertyName: "hideToggle", publicName: "hideToggle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange", opened: "opened", closed: "closed", expandedChange: "expandedChange" }, host: { properties: { "class.ngs-expanded": "expanded()", "class.ngs-expansion-panel-disabled": "disabled()", "attr.id": "id" }, classAttribute: "ngs-expansion-panel" }, exportAs: ["ngsExpansionPanel"], ngImport: i0, template: "<ng-content select=\"ngs-expansion-panel-header\"/>\n<div class=\"ngs-expansion-panel-content\"\n role=\"region\"\n [class.ngs-expanded]=\"expanded()\"\n [attr.id]=\"id\"\n [attr.aria-labelledby]=\"headerId\"\n [attr.aria-hidden]=\"!expanded()\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ngs-expansion-panel-body\">\n <ng-content/>\n </div>\n <ng-content select=\"ngs-action-row\"/>\n</div>\n", styles: [":host{--ngs-expansion-panel-background: var(--ngs-color-surface);--ngs-expansion-panel-color: var(--ngs-color-on-surface);--ngs-expansion-panel-divider-color: var(--ngs-color-subtle);--ngs-expansion-panel-disabled-color: var(--ngs-color-neutral-300);--ngs-expansion-panel-header-height: calc(var(--spacing, .25rem) * 14);--ngs-expansion-panel-header-expanded-height: calc(var(--spacing, .25rem) * 16);--ngs-expansion-panel-content-padding: 3px 24px 16px 24px;--ngs-expansion-panel-radius: var(--ngs-radius-xl);--ngs-expansion-panel-description-color: var(--ngs-color-on-surface-variant);margin-bottom:-1px}:host:first-of-type{border-top-left-radius:var(--ngs-expansion-panel-radius);border-top-right-radius:var(--ngs-expansion-panel-radius)}:host:last-of-type{border-bottom-left-radius:var(--ngs-expansion-panel-radius);border-bottom-right-radius:var(--ngs-expansion-panel-radius)}:host.ngs-expanded{border-top:1px solid var(--ngs-expansion-panel-divider-color, rgba(0, 0, 0, .12));border-bottom:1px solid var(--ngs-expansion-panel-divider-color, rgba(0, 0, 0, .12));border-radius:var(--ngs-expansion-panel-radius)}:host.ngs-expanded+ngs-expansion-panel{border-top-left-radius:var(--ngs-expansion-panel-radius);border-top-right-radius:var(--ngs-expansion-panel-radius)}:host{display:block;background:var(--ngs-expansion-panel-background);color:var(--ngs-expansion-panel-color);border:1px solid var(--ngs-expansion-panel-divider-color);overflow:hidden}:host.ngs-expanded{margin:16px 0}:host.ngs-expanded:first-of-type{margin-top:0}:host.ngs-expanded:last-of-type{margin-bottom:0}:host.ngs-expansion-panel-disabled{--ngs-expansion-panel-description-color: var(--ngs-expansion-panel-disabled-color);color:var(--ngs-expansion-panel-disabled-color);pointer-events:none}:host .ngs-expansion-panel-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows 225ms cubic-bezier(.4,0,.2,1);visibility:hidden;overflow:hidden;height:0}:host.ngs-expanded :host .ngs-expansion-panel-content{grid-template-rows:1fr;visibility:visible}:host .ngs-expansion-panel-content.ngs-expanded{grid-template-rows:1fr;visibility:visible;height:auto}:host .ngs-expansion-panel-content>div{overflow:hidden;min-height:0}:host .ngs-expansion-panel-body{padding:var(--ngs-expansion-panel-content-padding)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
52
52
  }
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ExpansionPanel, decorators: [{
54
54
  type: Component,
@@ -57,7 +57,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
57
57
  '[class.ngs-expanded]': 'expanded()',
58
58
  '[class.ngs-expansion-panel-disabled]': 'disabled()',
59
59
  '[attr.id]': 'id',
60
- }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"ngs-expansion-panel-header\"/>\n<div class=\"ngs-expansion-panel-content\"\n role=\"region\"\n [class.ngs-expanded]=\"expanded()\"\n [attr.id]=\"id\"\n [attr.aria-labelledby]=\"headerId\"\n [attr.aria-hidden]=\"!expanded()\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ngs-expansion-panel-body\">\n <ng-content/>\n </div>\n <ng-content select=\"ngs-action-row\"/>\n</div>\n", styles: [":host{--ngs-expansion-panel-background: var(--color-surface);--ngs-expansion-panel-color: var(--color-on-surface);--ngs-expansion-panel-divider-color: var(--color-subtle);--ngs-expansion-panel-disabled-color: var(--color-neutral-300);--ngs-expansion-panel-header-height: calc(var(--spacing, .25rem) * 14);--ngs-expansion-panel-header-expanded-height: calc(var(--spacing, .25rem) * 16);--ngs-expansion-panel-content-padding: 3px 24px 16px 24px;--ngs-expansion-panel-radius: .75rem;--ngs-expansion-panel-description-color: var(--color-on-surface-variant);margin-bottom:-1px}:host:first-of-type{border-top-left-radius:var(--ngs-expansion-panel-radius);border-top-right-radius:var(--ngs-expansion-panel-radius)}:host:last-of-type{border-bottom-left-radius:var(--ngs-expansion-panel-radius);border-bottom-right-radius:var(--ngs-expansion-panel-radius)}:host.ngs-expanded{border-top:1px solid var(--ngs-expansion-panel-divider-color, rgba(0, 0, 0, .12));border-bottom:1px solid var(--ngs-expansion-panel-divider-color, rgba(0, 0, 0, .12));border-radius:var(--ngs-expansion-panel-radius)}:host.ngs-expanded+ngs-expansion-panel{border-top-left-radius:var(--ngs-expansion-panel-radius);border-top-right-radius:var(--ngs-expansion-panel-radius)}:host{display:block;background:var(--ngs-expansion-panel-background);color:var(--ngs-expansion-panel-color);border:1px solid var(--ngs-expansion-panel-divider-color);overflow:hidden}:host.ngs-expanded{margin:16px 0}:host.ngs-expanded:first-of-type{margin-top:0}:host.ngs-expanded:last-of-type{margin-bottom:0}:host.ngs-expansion-panel-disabled{--ngs-expansion-panel-description-color: var(--ngs-expansion-panel-disabled-color);color:var(--ngs-expansion-panel-disabled-color);pointer-events:none}:host .ngs-expansion-panel-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows 225ms cubic-bezier(.4,0,.2,1);visibility:hidden;overflow:hidden;height:0}:host.ngs-expanded :host .ngs-expansion-panel-content{grid-template-rows:1fr;visibility:visible}:host .ngs-expansion-panel-content.ngs-expanded{grid-template-rows:1fr;visibility:visible;height:auto}:host .ngs-expansion-panel-content>div{overflow:hidden;min-height:0}:host .ngs-expansion-panel-body{padding:var(--ngs-expansion-panel-content-padding)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
60
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"ngs-expansion-panel-header\"/>\n<div class=\"ngs-expansion-panel-content\"\n role=\"region\"\n [class.ngs-expanded]=\"expanded()\"\n [attr.id]=\"id\"\n [attr.aria-labelledby]=\"headerId\"\n [attr.aria-hidden]=\"!expanded()\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ngs-expansion-panel-body\">\n <ng-content/>\n </div>\n <ng-content select=\"ngs-action-row\"/>\n</div>\n", styles: [":host{--ngs-expansion-panel-background: var(--ngs-color-surface);--ngs-expansion-panel-color: var(--ngs-color-on-surface);--ngs-expansion-panel-divider-color: var(--ngs-color-subtle);--ngs-expansion-panel-disabled-color: var(--ngs-color-neutral-300);--ngs-expansion-panel-header-height: calc(var(--spacing, .25rem) * 14);--ngs-expansion-panel-header-expanded-height: calc(var(--spacing, .25rem) * 16);--ngs-expansion-panel-content-padding: 3px 24px 16px 24px;--ngs-expansion-panel-radius: var(--ngs-radius-xl);--ngs-expansion-panel-description-color: var(--ngs-color-on-surface-variant);margin-bottom:-1px}:host:first-of-type{border-top-left-radius:var(--ngs-expansion-panel-radius);border-top-right-radius:var(--ngs-expansion-panel-radius)}:host:last-of-type{border-bottom-left-radius:var(--ngs-expansion-panel-radius);border-bottom-right-radius:var(--ngs-expansion-panel-radius)}:host.ngs-expanded{border-top:1px solid var(--ngs-expansion-panel-divider-color, rgba(0, 0, 0, .12));border-bottom:1px solid var(--ngs-expansion-panel-divider-color, rgba(0, 0, 0, .12));border-radius:var(--ngs-expansion-panel-radius)}:host.ngs-expanded+ngs-expansion-panel{border-top-left-radius:var(--ngs-expansion-panel-radius);border-top-right-radius:var(--ngs-expansion-panel-radius)}:host{display:block;background:var(--ngs-expansion-panel-background);color:var(--ngs-expansion-panel-color);border:1px solid var(--ngs-expansion-panel-divider-color);overflow:hidden}:host.ngs-expanded{margin:16px 0}:host.ngs-expanded:first-of-type{margin-top:0}:host.ngs-expanded:last-of-type{margin-bottom:0}:host.ngs-expansion-panel-disabled{--ngs-expansion-panel-description-color: var(--ngs-expansion-panel-disabled-color);color:var(--ngs-expansion-panel-disabled-color);pointer-events:none}:host .ngs-expansion-panel-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows 225ms cubic-bezier(.4,0,.2,1);visibility:hidden;overflow:hidden;height:0}:host.ngs-expanded :host .ngs-expansion-panel-content{grid-template-rows:1fr;visibility:visible}:host .ngs-expansion-panel-content.ngs-expanded{grid-template-rows:1fr;visibility:visible;height:auto}:host .ngs-expansion-panel-content>div{overflow:hidden;min-height:0}:host .ngs-expansion-panel-body{padding:var(--ngs-expansion-panel-content-padding)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
61
61
  }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }, { type: i0.Output, args: ["expandedChange"] }], hideToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideToggle", required: false }] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }], expandedChange: [{ type: i0.Output, args: ["expandedChange"] }] } });
62
62
 
63
63
  class Accordion {
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-expansion.mjs","sources":["../../../projects/components/expansion/src/expansion-panel/expansion-panel.ts","../../../projects/components/expansion/src/expansion-panel/expansion-panel.html","../../../projects/components/expansion/src/accordion/accordion.ts","../../../projects/components/expansion/src/accordion/accordion.html","../../../projects/components/expansion/src/expansion-panel-header/expansion-panel-header.ts","../../../projects/components/expansion/src/expansion-panel-header/expansion-panel-header.html","../../../projects/components/expansion/src/expansion-panel-title/expansion-panel-title.ts","../../../projects/components/expansion/src/expansion-panel-title/expansion-panel-title.html","../../../projects/components/expansion/src/expansion-panel-description/expansion-panel-description.ts","../../../projects/components/expansion/src/expansion-panel-description/expansion-panel-description.html","../../../projects/components/expansion/src/action-row/action-row.ts","../../../projects/components/expansion/src/action-row/action-row.html","../../../projects/components/expansion/ngstarter-ui-components-expansion.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n input,\n output,\n booleanAttribute,\n inject,\n Optional,\n SkipSelf,\n model\n} from '@angular/core';\nimport { Accordion } from '../accordion/accordion';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ngs-expansion-panel',\n exportAs: 'ngsExpansionPanel',\n standalone: true,\n templateUrl: './expansion-panel.html',\n styleUrl: './expansion-panel.scss',\n host: {\n 'class': 'ngs-expansion-panel',\n '[class.ngs-expanded]': 'expanded()',\n '[class.ngs-expansion-panel-disabled]': 'disabled()',\n '[attr.id]': 'id',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExpansionPanel {\n private _cdr = inject(ChangeDetectorRef);\n readonly accordion = inject(Accordion, { optional: true });\n\n disabled = input(false, {\n transform: booleanAttribute\n });\n\n expanded = model(false);\n\n hideToggle = input(false, {\n transform: booleanAttribute\n });\n\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly expandedChange = output<boolean>();\n\n readonly id = `ngs-expansion-panel-${nextId++}`;\n readonly headerId = `ngs-expansion-panel-header-${nextId++}`;\n\n toggle(): void {\n if (this.expanded()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (!this.expanded()) {\n this.expanded.set(true);\n this.opened.emit();\n this._emitExpansionChange();\n }\n }\n\n close(): void {\n if (this.expanded()) {\n this.expanded.set(false);\n this.closed.emit();\n this._emitExpansionChange();\n }\n }\n\n private _emitExpansionChange(): void {\n this.expandedChange.emit(this.expanded());\n this._cdr.markForCheck();\n }\n\n _getHideToggle(): boolean {\n return this.hideToggle() || (this.accordion?.hideToggle() ?? false);\n }\n\n _getExpandedState(): string {\n return this.expanded() ? 'expanded' : 'collapsed';\n }\n}\n","<ng-content select=\"ngs-expansion-panel-header\"/>\n<div class=\"ngs-expansion-panel-content\"\n role=\"region\"\n [class.ngs-expanded]=\"expanded()\"\n [attr.id]=\"id\"\n [attr.aria-labelledby]=\"headerId\"\n [attr.aria-hidden]=\"!expanded()\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ngs-expansion-panel-body\">\n <ng-content/>\n </div>\n <ng-content select=\"ngs-action-row\"/>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n booleanAttribute,\n AfterContentInit,\n OnDestroy,\n ChangeDetectorRef,\n inject,\n contentChildren\n} from '@angular/core';\nimport { outputToObservable, toObservable } from '@angular/core/rxjs-interop';\nimport { ExpansionPanel } from '../expansion-panel/expansion-panel';\nimport { merge, of, startWith, Subject, switchMap, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'ngs-accordion',\n exportAs: 'ngsAccordion',\n standalone: true,\n templateUrl: './accordion.html',\n styleUrl: './accordion.scss',\n host: {\n 'class': 'ngs-accordion not-prose',\n '[class.ngs-accordion-multi]': 'multi()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Accordion implements AfterContentInit, OnDestroy {\n private readonly _destroyed = new Subject<void>();\n readonly _cdr = inject(ChangeDetectorRef);\n\n /** Whether the accordion should allow multiple expanded panels at a time. */\n multi = input(false, {\n transform: booleanAttribute\n });\n\n /** Whether the expansion indicator should be hidden. */\n hideToggle = input(false, {\n transform: booleanAttribute\n });\n\n readonly _panels = contentChildren(ExpansionPanel, { descendants: true });\n private readonly _panels$ = toObservable(this._panels);\n\n ngAfterContentInit() {\n this._panels$.pipe(\n startWith(this._panels()),\n switchMap(panels => {\n if (panels.length === 0) {\n return of(null);\n }\n return merge(...panels.map(panel =>\n outputToObservable(panel.expandedChange).pipe(\n switchMap(expanded => {\n if (expanded && !this.multi()) {\n this._closeAllExcept(panel);\n }\n this._cdr.markForCheck();\n return of(null);\n })\n )\n ));\n }),\n takeUntil(this._destroyed)\n ).subscribe();\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n openAll(): void {\n if (this.multi()) {\n this._panels().forEach(p => p.open());\n this._cdr.markForCheck();\n }\n }\n\n closeAll(): void {\n this._panels().forEach(p => p.close());\n this._cdr.markForCheck();\n }\n\n private _closeAllExcept(panel: ExpansionPanel) {\n this._panels().forEach(p => {\n if (p !== panel) {\n p.close();\n }\n });\n this._cdr.markForCheck();\n }\n}\n","<ng-content />\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Host,\n input,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { ExpansionPanel } from '../expansion-panel/expansion-panel';\n\n@Component({\n selector: 'ngs-expansion-panel-header',\n standalone: true,\n templateUrl: './expansion-panel-header.html',\n styleUrl: './expansion-panel-header.scss',\n host: {\n 'class': 'ngs-expansion-panel-header',\n 'role': 'button',\n '[attr.id]': 'panel.headerId',\n '[attr.tabindex]': 'panel.disabled() ? -1 : 0',\n '[attr.aria-controls]': 'panel.id',\n '[attr.aria-expanded]': 'panel.expanded()',\n '[attr.aria-disabled]': 'panel.disabled()',\n '[class.ngs-expanded]': 'panel.expanded()',\n '(click)': '_toggle()',\n '(keydown.enter)': '_toggle()',\n '(keydown.space)': '_toggle()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExpansionPanelHeader {\n readonly panel = inject(ExpansionPanel);\n private _cdr = inject(ChangeDetectorRef);\n\n hideToggle = input(false, {\n transform: booleanAttribute\n });\n\n _toggle(): void {\n if (!this.panel.disabled()) {\n this.panel.toggle();\n this._cdr.markForCheck();\n\n if (this.panel.accordion) {\n this.panel.accordion._cdr.markForCheck();\n }\n }\n }\n\n _getExpandedState(): string {\n return this.panel._getExpandedState();\n }\n}\n","<span class=\"ngs-expansion-panel-header-content\">\n <ng-content select=\"ngs-panel-title\" />\n <ng-content select=\"ngs-panel-description\" />\n <ng-content />\n</span>\n\n@if (!hideToggle() && !panel._getHideToggle()) {\n <span class=\"ngs-expansion-indicator\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 -960 960 960\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M480-345 240-585l36-36 204 204 204-204 36 36-240 240Z\"></path>\n </svg>\n </span>\n} @else {\n <span class=\"ngs-expansion-indicator-placeholder\"></span>\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-expansion-panel-title',\n exportAs: 'ngsExpansionPanelTitle',\n templateUrl: './expansion-panel-title.html',\n styleUrl: './expansion-panel-title.scss',\n host: {\n 'class': 'ngs-expansion-panel-title'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExpansionPanelTitle { }\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-expansion-panel-description',\n exportAs: 'ngsExpansionPanelDescription',\n templateUrl: './expansion-panel-description.html',\n styleUrl: './expansion-panel-description.scss',\n host: {\n 'class': 'ngs-expansion-panel-description'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExpansionPanelDescription { }\n","<ng-content />\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-action-row',\n standalone: true,\n imports: [],\n templateUrl: './action-row.html',\n styleUrl: './action-row.scss',\n host: {\n 'class': 'ngs-action-row'\n }\n})\nexport class ActionRow {\n\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-expansion.mjs","sources":["../../../projects/components/expansion/src/expansion-panel/expansion-panel.ts","../../../projects/components/expansion/src/expansion-panel/expansion-panel.html","../../../projects/components/expansion/src/accordion/accordion.ts","../../../projects/components/expansion/src/accordion/accordion.html","../../../projects/components/expansion/src/expansion-panel-header/expansion-panel-header.ts","../../../projects/components/expansion/src/expansion-panel-header/expansion-panel-header.html","../../../projects/components/expansion/src/expansion-panel-title/expansion-panel-title.ts","../../../projects/components/expansion/src/expansion-panel-title/expansion-panel-title.html","../../../projects/components/expansion/src/expansion-panel-description/expansion-panel-description.ts","../../../projects/components/expansion/src/expansion-panel-description/expansion-panel-description.html","../../../projects/components/expansion/src/action-row/action-row.ts","../../../projects/components/expansion/src/action-row/action-row.html","../../../projects/components/expansion/ngstarter-ui-components-expansion.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n input,\n output,\n booleanAttribute,\n inject,\n Optional,\n SkipSelf,\n model\n} from '@angular/core';\nimport { Accordion } from '../accordion/accordion';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ngs-expansion-panel',\n exportAs: 'ngsExpansionPanel',\n standalone: true,\n templateUrl: './expansion-panel.html',\n styleUrl: './expansion-panel.scss',\n host: {\n 'class': 'ngs-expansion-panel',\n '[class.ngs-expanded]': 'expanded()',\n '[class.ngs-expansion-panel-disabled]': 'disabled()',\n '[attr.id]': 'id',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExpansionPanel {\n private _cdr = inject(ChangeDetectorRef);\n readonly accordion = inject(Accordion, { optional: true });\n\n disabled = input(false, {\n transform: booleanAttribute\n });\n\n expanded = model(false);\n\n hideToggle = input(false, {\n transform: booleanAttribute\n });\n\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly expandedChange = output<boolean>();\n\n readonly id = `ngs-expansion-panel-${nextId++}`;\n readonly headerId = `ngs-expansion-panel-header-${nextId++}`;\n\n toggle(): void {\n if (this.expanded()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (!this.expanded()) {\n this.expanded.set(true);\n this.opened.emit();\n this._emitExpansionChange();\n }\n }\n\n close(): void {\n if (this.expanded()) {\n this.expanded.set(false);\n this.closed.emit();\n this._emitExpansionChange();\n }\n }\n\n private _emitExpansionChange(): void {\n this.expandedChange.emit(this.expanded());\n this._cdr.markForCheck();\n }\n\n _getHideToggle(): boolean {\n return this.hideToggle() || (this.accordion?.hideToggle() ?? false);\n }\n\n _getExpandedState(): string {\n return this.expanded() ? 'expanded' : 'collapsed';\n }\n}\n","<ng-content select=\"ngs-expansion-panel-header\"/>\n<div class=\"ngs-expansion-panel-content\"\n role=\"region\"\n [class.ngs-expanded]=\"expanded()\"\n [attr.id]=\"id\"\n [attr.aria-labelledby]=\"headerId\"\n [attr.aria-hidden]=\"!expanded()\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ngs-expansion-panel-body\">\n <ng-content/>\n </div>\n <ng-content select=\"ngs-action-row\"/>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n booleanAttribute,\n AfterContentInit,\n OnDestroy,\n ChangeDetectorRef,\n inject,\n contentChildren\n} from '@angular/core';\nimport { outputToObservable, toObservable } from '@angular/core/rxjs-interop';\nimport { ExpansionPanel } from '../expansion-panel/expansion-panel';\nimport { merge, of, startWith, Subject, switchMap, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'ngs-accordion',\n exportAs: 'ngsAccordion',\n standalone: true,\n templateUrl: './accordion.html',\n styleUrl: './accordion.scss',\n host: {\n 'class': 'ngs-accordion not-prose',\n '[class.ngs-accordion-multi]': 'multi()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Accordion implements AfterContentInit, OnDestroy {\n private readonly _destroyed = new Subject<void>();\n readonly _cdr = inject(ChangeDetectorRef);\n\n /** Whether the accordion should allow multiple expanded panels at a time. */\n multi = input(false, {\n transform: booleanAttribute\n });\n\n /** Whether the expansion indicator should be hidden. */\n hideToggle = input(false, {\n transform: booleanAttribute\n });\n\n readonly _panels = contentChildren(ExpansionPanel, { descendants: true });\n private readonly _panels$ = toObservable(this._panels);\n\n ngAfterContentInit() {\n this._panels$.pipe(\n startWith(this._panels()),\n switchMap(panels => {\n if (panels.length === 0) {\n return of(null);\n }\n return merge(...panels.map(panel =>\n outputToObservable(panel.expandedChange).pipe(\n switchMap(expanded => {\n if (expanded && !this.multi()) {\n this._closeAllExcept(panel);\n }\n this._cdr.markForCheck();\n return of(null);\n })\n )\n ));\n }),\n takeUntil(this._destroyed)\n ).subscribe();\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n openAll(): void {\n if (this.multi()) {\n this._panels().forEach(p => p.open());\n this._cdr.markForCheck();\n }\n }\n\n closeAll(): void {\n this._panels().forEach(p => p.close());\n this._cdr.markForCheck();\n }\n\n private _closeAllExcept(panel: ExpansionPanel) {\n this._panels().forEach(p => {\n if (p !== panel) {\n p.close();\n }\n });\n this._cdr.markForCheck();\n }\n}\n","<ng-content />\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Host,\n input,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { ExpansionPanel } from '../expansion-panel/expansion-panel';\n\n@Component({\n selector: 'ngs-expansion-panel-header',\n standalone: true,\n templateUrl: './expansion-panel-header.html',\n styleUrl: './expansion-panel-header.scss',\n host: {\n 'class': 'ngs-expansion-panel-header',\n 'role': 'button',\n '[attr.id]': 'panel.headerId',\n '[attr.tabindex]': 'panel.disabled() ? -1 : 0',\n '[attr.aria-controls]': 'panel.id',\n '[attr.aria-expanded]': 'panel.expanded()',\n '[attr.aria-disabled]': 'panel.disabled()',\n '[class.ngs-expanded]': 'panel.expanded()',\n '(click)': '_toggle()',\n '(keydown.enter)': '_toggle()',\n '(keydown.space)': '_toggle()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExpansionPanelHeader {\n readonly panel = inject(ExpansionPanel);\n private _cdr = inject(ChangeDetectorRef);\n\n hideToggle = input(false, {\n transform: booleanAttribute\n });\n\n _toggle(): void {\n if (!this.panel.disabled()) {\n this.panel.toggle();\n this._cdr.markForCheck();\n\n if (this.panel.accordion) {\n this.panel.accordion._cdr.markForCheck();\n }\n }\n }\n\n _getExpandedState(): string {\n return this.panel._getExpandedState();\n }\n}\n","<span class=\"ngs-expansion-panel-header-content\">\n <ng-content select=\"ngs-panel-title\" />\n <ng-content select=\"ngs-panel-description\" />\n <ng-content />\n</span>\n\n@if (!hideToggle() && !panel._getHideToggle()) {\n <span class=\"ngs-expansion-indicator\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 -960 960 960\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M480-345 240-585l36-36 204 204 204-204 36 36-240 240Z\"></path>\n </svg>\n </span>\n} @else {\n <span class=\"ngs-expansion-indicator-placeholder\"></span>\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-expansion-panel-title',\n exportAs: 'ngsExpansionPanelTitle',\n templateUrl: './expansion-panel-title.html',\n styleUrl: './expansion-panel-title.scss',\n host: {\n 'class': 'ngs-expansion-panel-title'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExpansionPanelTitle { }\n","<ng-content/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-expansion-panel-description',\n exportAs: 'ngsExpansionPanelDescription',\n templateUrl: './expansion-panel-description.html',\n styleUrl: './expansion-panel-description.scss',\n host: {\n 'class': 'ngs-expansion-panel-description'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExpansionPanelDescription { }\n","<ng-content />\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-action-row',\n standalone: true,\n imports: [],\n templateUrl: './action-row.html',\n styleUrl: './action-row.scss',\n host: {\n 'class': 'ngs-action-row'\n }\n})\nexport class ActionRow {\n\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAcA,IAAI,MAAM,GAAG,CAAC;MAgBD,cAAc,CAAA;AACjB,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC/B,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE1D,QAAQ,GAAG,KAAK,CAAC,KAAK,gFACpB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;IAEvB,UAAU,GAAG,KAAK,CAAC,KAAK,kFACtB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IAEO,MAAM,GAAG,MAAM,EAAQ;IACvB,MAAM,GAAG,MAAM,EAAQ;IACvB,cAAc,GAAG,MAAM,EAAW;AAElC,IAAA,EAAE,GAAG,CAAA,oBAAA,EAAuB,MAAM,EAAE,EAAE;AACtC,IAAA,QAAQ,GAAG,CAAA,2BAAA,EAA8B,MAAM,EAAE,EAAE;IAE5D,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC1B;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,KAAK,CAAC;IACrE;IAEA,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,WAAW;IACnD;uGAxDW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,8xBC9B3B,qbAaA,EAAA,MAAA,EAAA,CAAA,szEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDiBa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,IAAA,EAGV;AACJ,wBAAA,OAAO,EAAE,qBAAqB;AAC9B,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,sCAAsC,EAAE,YAAY;AACpD,wBAAA,WAAW,EAAE,IAAI;qBAClB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qbAAA,EAAA,MAAA,EAAA,CAAA,szEAAA,CAAA,EAAA;;;MEDpC,SAAS,CAAA;AACH,IAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;AACxC,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;;IAGzC,KAAK,GAAG,KAAK,CAAC,KAAK,6EACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;;IAGF,UAAU,GAAG,KAAK,CAAC,KAAK,kFACtB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IAEO,OAAO,GAAG,eAAe,CAAC,cAAc,+EAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AACxD,IAAA,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;IAEtD,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EACzB,SAAS,CAAC,MAAM,IAAG;AACjB,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACjB;YACA,OAAO,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAC9B,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAC3C,SAAS,CAAC,QAAQ,IAAG;gBACnB,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AAC7B,oBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC7B;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACxB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,YAAA,CAAC,CAAC,CACH,CACF,CAAC;AACJ,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,EAAE;IACf;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC5B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QAC1B;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC1B;AAEQ,IAAA,eAAe,CAAC,KAAqB,EAAA;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAG;AACzB,YAAA,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,CAAC,CAAC,KAAK,EAAE;YACX;AACF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC1B;uGAhEW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAce,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzCnD,kBACA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FD0Ba,SAAS,EAAA,UAAA,EAAA,CAAA;kBAZrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,QAAA,EACf,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,IAAA,EAGV;AACJ,wBAAA,OAAO,EAAE,yBAAyB;AAClC,wBAAA,6BAA6B,EAAE,SAAS;qBACzC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA;AAgBZ,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,cAAc,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEV7D,oBAAoB,CAAA;AACtB,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAExC,UAAU,GAAG,KAAK,CAAC,KAAK,kFACtB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IAEF,OAAO,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAExB,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACxB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE;YAC1C;QACF;IACF;IAEA,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;IACvC;uGArBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,+pBC/BjC,2jBAeA,EAAA,MAAA,EAAA,CAAA,4/BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDgBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,SAAS;+BACE,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,IAAA,EAGV;AACJ,wBAAA,OAAO,EAAE,4BAA4B;AACrC,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,WAAW,EAAE,gBAAgB;AAC7B,wBAAA,iBAAiB,EAAE,2BAA2B;AAC9C,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,sBAAsB,EAAE,kBAAkB;AAC1C,wBAAA,sBAAsB,EAAE,kBAAkB;AAC1C,wBAAA,sBAAsB,EAAE,kBAAkB;AAC1C,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,iBAAiB,EAAE,WAAW;qBAC/B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2jBAAA,EAAA,MAAA,EAAA,CAAA,4/BAAA,CAAA,EAAA;;;MEjBpC,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,kLCZhC,iBACA,EAAA,MAAA,EAAA,CAAA,qIAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDWa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAC3B,wBAAwB,EAAA,IAAA,EAG5B;AACJ,wBAAA,OAAO,EAAE;qBACV,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,qIAAA,CAAA,EAAA;;;MEEpC,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,oMCZtC,kBACA,EAAA,MAAA,EAAA,CAAA,uNAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDWa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;+BACE,iCAAiC,EAAA,QAAA,EACjC,8BAA8B,EAAA,IAAA,EAGlC;AACJ,wBAAA,OAAO,EAAE;qBACV,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,uNAAA,CAAA,EAAA;;;MEEpC,SAAS,CAAA;uGAAT,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,sHCZtB,kBACA,EAAA,MAAA,EAAA,CAAA,sSAAA,CAAA,EAAA,CAAA;;2FDWa,SAAS,EAAA,UAAA,EAAA,CAAA;kBAVrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,IAAA,EAGL;AACJ,wBAAA,OAAO,EAAE;AACV,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,sSAAA,CAAA,EAAA;;;AEVH;;AAEG;;;;"}
@@ -312,7 +312,7 @@ class FilterBuilder {
312
312
  return result;
313
313
  }
314
314
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FilterBuilder, deps: [], target: i0.ɵɵFactoryTarget.Component });
315
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: FilterBuilder, isStandalone: true, selector: "ngs-filter-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, fieldDefs: { classPropertyName: "fieldDefs", publicName: "fieldDefs", isSignal: true, isRequired: false, transformFunction: null }, categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: false, transformFunction: null }, groupOperations: { classPropertyName: "groupOperations", publicName: "groupOperations", isSignal: true, isRequired: false, transformFunction: null }, customOperations: { classPropertyName: "customOperations", publicName: "customOperations", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChanged: "valueChanged" }, host: { classAttribute: "ngs-filter-builder" }, queries: [{ propertyName: "_customOperationDefs", predicate: FilterBuilderOperationDefDirective, isSignal: true }], viewQueries: [{ propertyName: "_prebuiltOperationDefs", predicate: FilterBuilderOperationDefDirective, descendants: true, isSignal: true }], exportAs: ["ngsFilterBuilder"], ngImport: i0, template: "@if (_isServer) {\n <ng-content/>\n}\n\n<ng-template #itemsTpl let-items>\n <div class=\"group\">\n @for (item of items; track item; let index = $index) {\n @if (_isGroup(item)) {\n <div class=\"flex items-center group-operations\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button [ngsMenuTriggerFor]=\"nestedGroupOperationsMenu\"\n #nestedGroupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName(item) }}\n </button>\n <div [ngsMenuTriggerFor]=\"addGroupMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n <ngs-menu #nestedGroupOperationsMenu=\"ngsMenu\">\n <div ngsMenuOptionGroup [(ngModel)]=\"item['logicalOperator']\">\n @for (groupOperation of groupOperations(); track groupOperation.id) {\n <ngs-option [value]=\"groupOperation.id\"\n (click)=\"nestedGroupOperationsMenuTrigger.closeMenu('click')\">{{ groupOperation.name }}\n </ngs-option>\n }\n </div>\n </ngs-menu>\n <ngs-menu #addGroupMenu=\"ngsMenu\">\n <button ngs-menu-item (click)=\"addCondition(item)\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup(item)\">Add Group</button>\n </ngs-menu>\n </div>\n @if (item['value'].length > 0) {\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item['value'] }\"/>\n }\n } @else if (_isCondition(item)) {\n <div class=\"condition\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button class=\"condition-field\"\n #fieldsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"fieldsMenu\">{{ getConditionField(item['value'][0])?.name }}\n </button>\n <button class=\"condition-operation\"\n #operationsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"operationsMenu\">\n <ng-template [ngTemplateOutlet]=\"getConditionOperation(item['value'][1])?.name\"/>\n </button>\n <div class=\"relative\">\n @if (editItem && editItem === item) {\n <div class=\"absolute start-0 top-0 -translate-y-1/2\">\n @switch (getFieldType(editItem)) {\n @case ('array') {\n @switch (editItem['value'][1]) {\n @case ('equals') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\"\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n @case ('isAnyOf') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\" multiple\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"_tempMultipleValue\"\n (closed)=\"selectClosed()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n }\n }\n @case ('number') {\n @switch (editItem['value'][1]) {\n @case ('isBetween') {\n <div class=\"flex gap-2 items-center\"\n ngsFocusElement (elementBlurred)=\"cancelEdit()\">\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n [(ngModel)]=\"item['value'][2][0]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n <div class=\"text-neutral-500\">&ndash;</div>\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput\n [(ngModel)]=\"item['value'][2][1]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n </div>\n }\n @default {\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n }\n @default {\n <ngs-form-field class=\"form-field\">\n <input type=\"text\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n </div>\n } @else {\n @if (item['value'][1] !== 'isBlank' && item['value'][1] !== 'isNotBlank') {\n @if (isValueNotEmpty(item)) {\n @if (getFieldType(item) === 'array') {\n @if (item['value'][1] === 'equals') {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n {{ getDataSourceItemNameById(item, item['value'][2]) }}\n </button>\n } @else {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n @for (dataSourceItemId of item['value'][2]; track dataSourceItemId; let last = $last) {\n <span>{{ getDataSourceItemNameById(item, dataSourceItemId) }}</span>\n @if (!last) {\n <span class=\"text-neutral-500\">|</span>\n }\n }\n </button>\n }\n } @else {\n @if (item['value'][1] === 'isBetween') {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2][0] }}</span>\n <span class=\"text-neutral-500\">&ndash;</span>\n <span>{{ item['value'][2][1] }}</span>\n </button>\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2] }}</span>\n </button>\n }\n }\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span i18n>&lt;enter a value&gt;</span>\n </button>\n }\n }\n }\n </div>\n </div>\n <ngs-menu #fieldsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][0]\">\n @for (fieldDef of fieldDefs(); track fieldDef) {\n <ngs-option [value]=\"fieldDef.dataField\"\n (click)=\"selectConditionField(item, fieldDef); fieldsMenuTrigger.closeMenu('click')\">{{ fieldDef.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n </ngs-menu>\n <ngs-menu #operationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][1]\">\n @for (operation of _operationDefs; track operation.id()) {\n <div [hidden]=\"!isOperationAllowedForCondition(item['value'][0], operation.id())\">\n <ngs-option [value]=\"operation.id()\"\n (click)=\"operationChanged(item, operation.id()); operationsMenuTrigger.closeMenu('click')\">\n <div class=\"flex items-center gap-3\">\n @if (operation.operationIcon()) {\n <ng-template [ngTemplateOutlet]=\"operationIconTemplateRef(operation)\"/>\n }\n <div>\n <ng-template [ngTemplateOutlet]=\"operationNameTemplateRef(operation)\"/>\n </div>\n </div>\n </ngs-option>\n </div>\n }\n </div>\n </ng-template>\n </ngs-menu>\n }\n }\n </div>\n</ng-template>\n\n<div class=\"group\">\n <div class=\"flex items-center group-operations\">\n <button [ngsMenuTriggerFor]=\"groupOperationsMenu\"\n #groupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName() }}\n </button>\n <div [ngsMenuTriggerFor]=\"addMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n </div>\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: _value }\"/>\n</div>\n\n<ngs-menu #groupOperationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [(ngModel)]=\"_logicalOperator\" (ngModelChange)=\"_emitChangeEvent()\">\n @for (operation of groupOperations(); track operation.id) {\n <ngs-option [value]=\"operation.id\"\n (click)=\"groupOperationsMenuTrigger.closeMenu('click')\">{{ operation.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n</ngs-menu>\n<ngs-menu #addMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <button ngs-menu-item (click)=\"addCondition()\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup()\">Add Group</button>\n </ng-template>\n</ngs-menu>\n\n<ng-container ngsFilterBuilderOperationDef=\"contains\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Contains</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"doesNotContain\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Does not contain</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"startsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Starts with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"endsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Ends with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"equals\" [allowedDataTypes]=\"['string', 'number', 'array', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"notEquals\" [allowedDataTypes]=\"['string', 'number', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Not equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isNotBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is not blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBetween\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is between</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isAnyOf\" [allowedDataTypes]=\"['array']\">\n <ng-template ngsFilterBuilderOperationName>Is any of</ng-template>\n</ng-container>\n", styles: [":host{--ngs-filter-builder-group-operations-gap: calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-group-operation-font-size: var(--text-tiny);--ngs-filter-builder-group-operation-color: var(--color-on-surface);--ngs-filter-builder-group-operation-bg: var(--color-surface-container);--ngs-filter-builder-group-operation-font-weight: 400;--ngs-filter-builder-group-operation-border-radius: .5rem;--ngs-filter-builder-group-operation-bpadding: 0 calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-group-operation-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-group-operation-hover-color: var(--color-on-surface);--ngs-filter-builder-group-operation-hover-bg: var(--color-surface-container-high);--ngs-filter-builder-group-operation-active-color: var(--color-on-surface);--ngs-filter-builder-group-operation-active-bg: var(--color-surface-container-highest);--ngs-filter-builder-group-operation-border: 1px solid var(--color-border);--ngs-filter-builder-group-add-color: var(--color-primary);--ngs-filter-builder-group-add-hover-color: var(--color-primary);--ngs-filter-builder-group-margin: 0;--ngs-filter-builder-group-padding: 0;--ngs-filter-builder-group-gap: calc(var(--spacing, .25rem) * 4);--ngs-filter-builder-condition-gap: calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-field-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-field-font-size: var(--text-tiny);--ngs-filter-builder-condition-field-color: var(--color-on-primary-container);--ngs-filter-builder-condition-field-bg: var(--color-primary-container);--ngs-filter-builder-condition-field-font-weight: 400;--ngs-filter-builder-condition-field-border-radius: .5rem;--ngs-filter-builder-condition-field-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-field-hover-color: var(--color-on-primary-container);--ngs-filter-builder-condition-field-hover-bg: var(--color-primary-400);--ngs-filter-builder-condition-field-active-color: var(--color-on-primary);--ngs-filter-builder-condition-field-active-bg: var(--color-primary);--ngs-filter-builder-condition-operation-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-operation-font-size: var(--text-tiny);--ngs-filter-builder-condition-operation-color: var(--color-on-secondary-container);--ngs-filter-builder-condition-operation-bg: var(--color-secondary-container);--ngs-filter-builder-condition-operation-font-weight: 400;--ngs-filter-builder-condition-operation-border-radius: .5rem;--ngs-filter-builder-condition-operation-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-operation-hover-color: var(--color-on-secondary-container);--ngs-filter-builder-condition-operation-hover-bg: var(--color-secondary-400);--ngs-filter-builder-condition-operation-active-color: var(--color-on-secondary);--ngs-filter-builder-condition-operation-active-bg: var(--color-secondary);--ngs-filter-builder-condition-value-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-value-font-size: var(--text-tiny);--ngs-filter-builder-condition-value-color: var(--color-on-surface);--ngs-filter-builder-condition-value-bg: var(--color-surface-container-high);--ngs-filter-builder-condition-value-font-weight: 400;--ngs-filter-builder-condition-value-border-radius: .5rem;--ngs-filter-builder-condition-value-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-value-hover-color: var(--color-on-surface);--ngs-filter-builder-condition-value-hover-bg: var(--color-surface-container-highest);--ngs-filter-builder-condition-remove-color: var(--color-error);--ngs-filter-builder-condition-remove-hover-color: var(--color-error);display:block}:host ::ng-deep .ngs-form-field-infix{--ngs-form-field-container-height: 46px !important;--ngs-form-field-container-vertical-padding: 12px !important}:host ::ng-deep .subscript-wrapper{display:none}:host .form-field{width:200px}:host .form-field-number{width:140px}:host .group-operations{gap:var(--ngs-filter-builder-group-operations-gap)}:host .group{margin:var(--ngs-filter-builder-group-margin);padding:var(--ngs-filter-builder-group-padding);display:flex;flex-direction:column;gap:var(--ngs-filter-builder-group-gap)}:host .group .group{margin-left:calc(var(--spacing, .25rem) * 4)}:host .icon:empty{display:none}:host .group-operation{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-group-operation-height);font-size:var(--ngs-filter-builder-group-operation-font-size);font-weight:var(--ngs-filter-builder-group-operation-font-weight);color:var(--ngs-filter-builder-group-operation-color);background:var(--ngs-filter-builder-group-operation-bg);border:var(--ngs-filter-builder-group-operation-border);border-radius:var(--ngs-filter-builder-group-operation-border-radius);padding:var(--ngs-filter-builder-group-operation-bpadding)}:host .group-operation:hover{color:var(--ngs-filter-builder-group-operation-hover-color);background:var(--ngs-filter-builder-group-operation-hover-bg)}:host .group-operation:active,:host .group-operation.active{color:var(--ngs-filter-builder-group-operation-active-color);background:var(--ngs-filter-builder-group-operation-active-bg)}:host .condition{display:flex;align-items:center;gap:var(--ngs-filter-builder-condition-gap)}:host .condition-field{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-field-height);font-size:var(--ngs-filter-builder-condition-field-font-size);font-weight:var(--ngs-filter-builder-condition-field-font-weight);color:var(--ngs-filter-builder-condition-field-color);background:var(--ngs-filter-builder-condition-field-bg);border-radius:var(--ngs-filter-builder-condition-field-border-radius);padding:var(--ngs-filter-builder-condition-field-bpadding)}:host .condition-field:hover{color:var(--ngs-filter-builder-condition-field-hover-color);background:var(--ngs-filter-builder-condition-field-hover-bg)}:host .add{line-height:0;color:var(--ngs-filter-builder-group-add-color);cursor:pointer}:host .add:hover{color:var(--ngs-filter-builder-group-add-hover-color)}:host .remove{line-height:0;color:var(--ngs-filter-builder-condition-remove-color);cursor:pointer}:host .remove:hover{color:var(--ngs-filter-builder-condition-remove-hover-color)}:host .condition-field:active,:host .condition-field.active{color:var(--ngs-filter-builder-condition-field-active-color);background:var(--ngs-filter-builder-condition-field-active-bg)}:host .condition-operation{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-operation-height);font-size:var(--ngs-filter-builder-condition-operation-font-size);font-weight:var(--ngs-filter-builder-condition-operation-font-weight);color:var(--ngs-filter-builder-condition-operation-color);background:var(--ngs-filter-builder-condition-operation-bg);border-radius:var(--ngs-filter-builder-condition-operation-border-radius);padding:var(--ngs-filter-builder-condition-operation-bpadding)}:host .condition-operation:hover{color:var(--ngs-filter-builder-condition-operation-hover-color);background:var(--ngs-filter-builder-condition-operation-hover-bg)}:host .condition-operation:active,:host .condition-operation.active{color:var(--ngs-filter-builder-condition-operation-active-color);background:var(--ngs-filter-builder-condition-operation-active-bg)}:host .condition-value{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-value-height);font-size:var(--ngs-filter-builder-condition-value-font-size);font-weight:var(--ngs-filter-builder-condition-value-font-weight);color:var(--ngs-filter-builder-condition-value-color);background:var(--ngs-filter-builder-condition-value-bg);border-radius:var(--ngs-filter-builder-condition-value-border-radius);padding:var(--ngs-filter-builder-condition-value-bpadding)}:host .condition-value:hover{color:var(--ngs-filter-builder-condition-value-hover-color);background:var(--ngs-filter-builder-condition-value-hover-bg)}:host-context(html.dark){--ngs-filter-builder-group-operation-color: var(--color-neutral-200);--ngs-filter-builder-group-operation-hover-bg: var(--color-neutral-600);--ngs-filter-builder-group-operation-active-bg: var(--color-neutral-650);--ngs-filter-builder-group-operation-hover-color: var(--color-neutral-100);--ngs-filter-builder-group-operation-active-color: var(--color-neutral-50)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }, { kind: "directive", type: MenuTrigger, selector: "[ngsMenuTriggerFor]", inputs: ["ngsMenuTriggerFor", "ngsMenuTriggerData", "ngsMenuDisabled", "xPosition", "yPosition", "ngsMenuTriggerRestoreFocus"], outputs: ["menuOpened", "menuClosed"], exportAs: ["ngsMenuTrigger"] }, { kind: "component", type: Menu, selector: "ngs-menu", inputs: ["role", "classList", "xPosition", "yPosition"], outputs: ["closed"], exportAs: ["ngsMenu"] }, { kind: "directive", type: MenuContent, selector: "[ngsMenuContent]" }, { kind: "directive", type: MenuOptionGroupDirective, selector: "[ngsMenuOptionGroup]", inputs: ["multiple"], outputs: ["valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MenuItem, selector: "ngs-menu-item, [ngs-menu-item]", inputs: ["disabled", "role", "selected"], outputs: ["_triggered"], exportAs: ["ngsMenuItem"] }, { kind: "component", type: FormField, selector: "ngs-form-field", inputs: ["subscriptHiddenIfEmpty"], exportAs: ["ngsFormField"] }, { kind: "component", type: Select, selector: "ngs-select", inputs: ["id", "placeholder", "disabled", "required", "multiple", "hideCheckIcon", "ariaLabel", "tabIndex", "aria-describedby", "value"], outputs: ["selectionChange", "opened", "closed", "valueChange"], exportAs: ["ngsSelect"] }, { kind: "component", type: Option, selector: "ngs-option", inputs: ["value", "disabled", "selected"], outputs: ["onSelectionChange"], exportAs: ["ngsOption"] }, { kind: "directive", type: AutoFocusDirective, selector: "[ngsAutoFocus]", inputs: ["ngsAutoFocus"], exportAs: ["ngsAutoFocus"] }, { kind: "directive", type: FocusElementDirective, selector: "[ngsFocusElement]", inputs: ["checkChildren"], outputs: ["elementFocused", "elementBlurred"], exportAs: ["ngsFocusElement"] }, { kind: "directive", type: Input, selector: "input[ngsInput], textarea[ngsInput]", inputs: ["id", "placeholder", "required", "disabled", "readonly", "errorStateMatcher"], exportAs: ["ngsInput"] }, { kind: "directive", type: FilterBuilderOperationDefDirective, selector: "[ngsFilterBuilderOperationDef]", inputs: ["ngsFilterBuilderOperationDef", "allowedDataTypes"] }, { kind: "directive", type: FilterBuilderOperationNameDirective, selector: "[ngsFilterBuilderOperationName]" }] });
315
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: FilterBuilder, isStandalone: true, selector: "ngs-filter-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, fieldDefs: { classPropertyName: "fieldDefs", publicName: "fieldDefs", isSignal: true, isRequired: false, transformFunction: null }, categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: false, transformFunction: null }, groupOperations: { classPropertyName: "groupOperations", publicName: "groupOperations", isSignal: true, isRequired: false, transformFunction: null }, customOperations: { classPropertyName: "customOperations", publicName: "customOperations", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChanged: "valueChanged" }, host: { classAttribute: "ngs-filter-builder" }, queries: [{ propertyName: "_customOperationDefs", predicate: FilterBuilderOperationDefDirective, isSignal: true }], viewQueries: [{ propertyName: "_prebuiltOperationDefs", predicate: FilterBuilderOperationDefDirective, descendants: true, isSignal: true }], exportAs: ["ngsFilterBuilder"], ngImport: i0, template: "@if (_isServer) {\n <ng-content/>\n}\n\n<ng-template #itemsTpl let-items>\n <div class=\"group\">\n @for (item of items; track item; let index = $index) {\n @if (_isGroup(item)) {\n <div class=\"flex items-center group-operations\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button [ngsMenuTriggerFor]=\"nestedGroupOperationsMenu\"\n #nestedGroupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName(item) }}\n </button>\n <div [ngsMenuTriggerFor]=\"addGroupMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n <ngs-menu #nestedGroupOperationsMenu=\"ngsMenu\">\n <div ngsMenuOptionGroup [(ngModel)]=\"item['logicalOperator']\">\n @for (groupOperation of groupOperations(); track groupOperation.id) {\n <ngs-option [value]=\"groupOperation.id\"\n (click)=\"nestedGroupOperationsMenuTrigger.closeMenu('click')\">{{ groupOperation.name }}\n </ngs-option>\n }\n </div>\n </ngs-menu>\n <ngs-menu #addGroupMenu=\"ngsMenu\">\n <button ngs-menu-item (click)=\"addCondition(item)\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup(item)\">Add Group</button>\n </ngs-menu>\n </div>\n @if (item['value'].length > 0) {\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item['value'] }\"/>\n }\n } @else if (_isCondition(item)) {\n <div class=\"condition\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button class=\"condition-field\"\n #fieldsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"fieldsMenu\">{{ getConditionField(item['value'][0])?.name }}\n </button>\n <button class=\"condition-operation\"\n #operationsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"operationsMenu\">\n <ng-template [ngTemplateOutlet]=\"getConditionOperation(item['value'][1])?.name\"/>\n </button>\n <div class=\"relative\">\n @if (editItem && editItem === item) {\n <div class=\"absolute start-0 top-0 -translate-y-1/2\">\n @switch (getFieldType(editItem)) {\n @case ('array') {\n @switch (editItem['value'][1]) {\n @case ('equals') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\"\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n @case ('isAnyOf') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\" multiple\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"_tempMultipleValue\"\n (closed)=\"selectClosed()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n }\n }\n @case ('number') {\n @switch (editItem['value'][1]) {\n @case ('isBetween') {\n <div class=\"flex gap-2 items-center\"\n ngsFocusElement (elementBlurred)=\"cancelEdit()\">\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n [(ngModel)]=\"item['value'][2][0]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n <div class=\"text-neutral-500\">&ndash;</div>\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput\n [(ngModel)]=\"item['value'][2][1]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n </div>\n }\n @default {\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n }\n @default {\n <ngs-form-field class=\"form-field\">\n <input type=\"text\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n </div>\n } @else {\n @if (item['value'][1] !== 'isBlank' && item['value'][1] !== 'isNotBlank') {\n @if (isValueNotEmpty(item)) {\n @if (getFieldType(item) === 'array') {\n @if (item['value'][1] === 'equals') {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n {{ getDataSourceItemNameById(item, item['value'][2]) }}\n </button>\n } @else {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n @for (dataSourceItemId of item['value'][2]; track dataSourceItemId; let last = $last) {\n <span>{{ getDataSourceItemNameById(item, dataSourceItemId) }}</span>\n @if (!last) {\n <span class=\"text-neutral-500\">|</span>\n }\n }\n </button>\n }\n } @else {\n @if (item['value'][1] === 'isBetween') {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2][0] }}</span>\n <span class=\"text-neutral-500\">&ndash;</span>\n <span>{{ item['value'][2][1] }}</span>\n </button>\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2] }}</span>\n </button>\n }\n }\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span i18n>&lt;enter a value&gt;</span>\n </button>\n }\n }\n }\n </div>\n </div>\n <ngs-menu #fieldsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][0]\">\n @for (fieldDef of fieldDefs(); track fieldDef) {\n <ngs-option [value]=\"fieldDef.dataField\"\n (click)=\"selectConditionField(item, fieldDef); fieldsMenuTrigger.closeMenu('click')\">{{ fieldDef.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n </ngs-menu>\n <ngs-menu #operationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][1]\">\n @for (operation of _operationDefs; track operation.id()) {\n <div [hidden]=\"!isOperationAllowedForCondition(item['value'][0], operation.id())\">\n <ngs-option [value]=\"operation.id()\"\n (click)=\"operationChanged(item, operation.id()); operationsMenuTrigger.closeMenu('click')\">\n <div class=\"flex items-center gap-3\">\n @if (operation.operationIcon()) {\n <ng-template [ngTemplateOutlet]=\"operationIconTemplateRef(operation)\"/>\n }\n <div>\n <ng-template [ngTemplateOutlet]=\"operationNameTemplateRef(operation)\"/>\n </div>\n </div>\n </ngs-option>\n </div>\n }\n </div>\n </ng-template>\n </ngs-menu>\n }\n }\n </div>\n</ng-template>\n\n<div class=\"group\">\n <div class=\"flex items-center group-operations\">\n <button [ngsMenuTriggerFor]=\"groupOperationsMenu\"\n #groupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName() }}\n </button>\n <div [ngsMenuTriggerFor]=\"addMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n </div>\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: _value }\"/>\n</div>\n\n<ngs-menu #groupOperationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [(ngModel)]=\"_logicalOperator\" (ngModelChange)=\"_emitChangeEvent()\">\n @for (operation of groupOperations(); track operation.id) {\n <ngs-option [value]=\"operation.id\"\n (click)=\"groupOperationsMenuTrigger.closeMenu('click')\">{{ operation.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n</ngs-menu>\n<ngs-menu #addMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <button ngs-menu-item (click)=\"addCondition()\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup()\">Add Group</button>\n </ng-template>\n</ngs-menu>\n\n<ng-container ngsFilterBuilderOperationDef=\"contains\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Contains</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"doesNotContain\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Does not contain</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"startsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Starts with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"endsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Ends with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"equals\" [allowedDataTypes]=\"['string', 'number', 'array', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"notEquals\" [allowedDataTypes]=\"['string', 'number', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Not equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isNotBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is not blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBetween\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is between</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isAnyOf\" [allowedDataTypes]=\"['array']\">\n <ng-template ngsFilterBuilderOperationName>Is any of</ng-template>\n</ng-container>\n", styles: [":host{--ngs-filter-builder-group-operations-gap: calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-group-operation-font-size: var(--text-tiny);--ngs-filter-builder-group-operation-color: var(--ngs-color-on-surface);--ngs-filter-builder-group-operation-bg: var(--ngs-color-surface-container);--ngs-filter-builder-group-operation-font-weight: 400;--ngs-filter-builder-group-operation-border-radius: var(--ngs-radius-lg);--ngs-filter-builder-group-operation-bpadding: 0 calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-group-operation-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-group-operation-hover-color: var(--ngs-color-on-surface);--ngs-filter-builder-group-operation-hover-bg: var(--ngs-color-surface-container-high);--ngs-filter-builder-group-operation-active-color: var(--ngs-color-on-surface);--ngs-filter-builder-group-operation-active-bg: var(--ngs-color-surface-container-highest);--ngs-filter-builder-group-operation-border: 1px solid var(--ngs-color-border);--ngs-filter-builder-group-add-color: var(--ngs-color-primary);--ngs-filter-builder-group-add-hover-color: var(--ngs-color-primary);--ngs-filter-builder-group-margin: 0;--ngs-filter-builder-group-padding: 0;--ngs-filter-builder-group-gap: calc(var(--spacing, .25rem) * 4);--ngs-filter-builder-condition-gap: calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-field-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-field-font-size: var(--text-tiny);--ngs-filter-builder-condition-field-color: var(--ngs-color-on-primary-container);--ngs-filter-builder-condition-field-bg: var(--ngs-color-primary-container);--ngs-filter-builder-condition-field-font-weight: 400;--ngs-filter-builder-condition-field-border-radius: var(--ngs-radius-lg);--ngs-filter-builder-condition-field-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-field-hover-color: var(--ngs-color-on-primary-container);--ngs-filter-builder-condition-field-hover-bg: var(--ngs-color-primary-400);--ngs-filter-builder-condition-field-active-color: var(--ngs-color-on-primary);--ngs-filter-builder-condition-field-active-bg: var(--ngs-color-primary);--ngs-filter-builder-condition-operation-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-operation-font-size: var(--text-tiny);--ngs-filter-builder-condition-operation-color: var(--ngs-color-on-secondary-container);--ngs-filter-builder-condition-operation-bg: var(--ngs-color-secondary-container);--ngs-filter-builder-condition-operation-font-weight: 400;--ngs-filter-builder-condition-operation-border-radius: var(--ngs-radius-lg);--ngs-filter-builder-condition-operation-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-operation-hover-color: var(--ngs-color-on-secondary-container);--ngs-filter-builder-condition-operation-hover-bg: var(--ngs-color-secondary-400);--ngs-filter-builder-condition-operation-active-color: var(--ngs-color-on-secondary);--ngs-filter-builder-condition-operation-active-bg: var(--ngs-color-secondary);--ngs-filter-builder-condition-value-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-value-font-size: var(--text-tiny);--ngs-filter-builder-condition-value-color: var(--ngs-color-on-surface);--ngs-filter-builder-condition-value-bg: var(--ngs-color-surface-container-high);--ngs-filter-builder-condition-value-font-weight: 400;--ngs-filter-builder-condition-value-border-radius: var(--ngs-radius-lg);--ngs-filter-builder-condition-value-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-value-hover-color: var(--ngs-color-on-surface);--ngs-filter-builder-condition-value-hover-bg: var(--ngs-color-surface-container-highest);--ngs-filter-builder-condition-remove-color: var(--ngs-color-danger);--ngs-filter-builder-condition-remove-hover-color: var(--ngs-color-danger);display:block}:host ::ng-deep .ngs-form-field-infix{--ngs-form-field-container-height: 46px !important;--ngs-form-field-container-vertical-padding: 12px !important}:host ::ng-deep .subscript-wrapper{display:none}:host .form-field{width:200px}:host .form-field-number{width:140px}:host .group-operations{gap:var(--ngs-filter-builder-group-operations-gap)}:host .group{margin:var(--ngs-filter-builder-group-margin);padding:var(--ngs-filter-builder-group-padding);display:flex;flex-direction:column;gap:var(--ngs-filter-builder-group-gap)}:host .group .group{margin-left:calc(var(--spacing, .25rem) * 4)}:host .icon:empty{display:none}:host .group-operation{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-group-operation-height);font-size:var(--ngs-filter-builder-group-operation-font-size);font-weight:var(--ngs-filter-builder-group-operation-font-weight);color:var(--ngs-filter-builder-group-operation-color);background:var(--ngs-filter-builder-group-operation-bg);border:var(--ngs-filter-builder-group-operation-border);border-radius:var(--ngs-filter-builder-group-operation-border-radius);padding:var(--ngs-filter-builder-group-operation-bpadding)}:host .group-operation:hover{color:var(--ngs-filter-builder-group-operation-hover-color);background:var(--ngs-filter-builder-group-operation-hover-bg)}:host .group-operation:active,:host .group-operation.active{color:var(--ngs-filter-builder-group-operation-active-color);background:var(--ngs-filter-builder-group-operation-active-bg)}:host .condition{display:flex;align-items:center;gap:var(--ngs-filter-builder-condition-gap)}:host .condition-field{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-field-height);font-size:var(--ngs-filter-builder-condition-field-font-size);font-weight:var(--ngs-filter-builder-condition-field-font-weight);color:var(--ngs-filter-builder-condition-field-color);background:var(--ngs-filter-builder-condition-field-bg);border-radius:var(--ngs-filter-builder-condition-field-border-radius);padding:var(--ngs-filter-builder-condition-field-bpadding)}:host .condition-field:hover{color:var(--ngs-filter-builder-condition-field-hover-color);background:var(--ngs-filter-builder-condition-field-hover-bg)}:host .add{line-height:0;color:var(--ngs-filter-builder-group-add-color);cursor:pointer}:host .add:hover{color:var(--ngs-filter-builder-group-add-hover-color)}:host .remove{line-height:0;color:var(--ngs-filter-builder-condition-remove-color);cursor:pointer}:host .remove:hover{color:var(--ngs-filter-builder-condition-remove-hover-color)}:host .condition-field:active,:host .condition-field.active{color:var(--ngs-filter-builder-condition-field-active-color);background:var(--ngs-filter-builder-condition-field-active-bg)}:host .condition-operation{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-operation-height);font-size:var(--ngs-filter-builder-condition-operation-font-size);font-weight:var(--ngs-filter-builder-condition-operation-font-weight);color:var(--ngs-filter-builder-condition-operation-color);background:var(--ngs-filter-builder-condition-operation-bg);border-radius:var(--ngs-filter-builder-condition-operation-border-radius);padding:var(--ngs-filter-builder-condition-operation-bpadding)}:host .condition-operation:hover{color:var(--ngs-filter-builder-condition-operation-hover-color);background:var(--ngs-filter-builder-condition-operation-hover-bg)}:host .condition-operation:active,:host .condition-operation.active{color:var(--ngs-filter-builder-condition-operation-active-color);background:var(--ngs-filter-builder-condition-operation-active-bg)}:host .condition-value{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-value-height);font-size:var(--ngs-filter-builder-condition-value-font-size);font-weight:var(--ngs-filter-builder-condition-value-font-weight);color:var(--ngs-filter-builder-condition-value-color);background:var(--ngs-filter-builder-condition-value-bg);border-radius:var(--ngs-filter-builder-condition-value-border-radius);padding:var(--ngs-filter-builder-condition-value-bpadding)}:host .condition-value:hover{color:var(--ngs-filter-builder-condition-value-hover-color);background:var(--ngs-filter-builder-condition-value-hover-bg)}:host-context(html.dark){--ngs-filter-builder-group-operation-color: var(--ngs-color-neutral-200);--ngs-filter-builder-group-operation-hover-bg: var(--ngs-color-neutral-600);--ngs-filter-builder-group-operation-active-bg: var(--ngs-color-neutral-650);--ngs-filter-builder-group-operation-hover-color: var(--ngs-color-neutral-100);--ngs-filter-builder-group-operation-active-color: var(--ngs-color-neutral-50)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }, { kind: "directive", type: MenuTrigger, selector: "[ngsMenuTriggerFor]", inputs: ["ngsMenuTriggerFor", "ngsMenuTriggerData", "ngsMenuDisabled", "xPosition", "yPosition", "ngsMenuTriggerRestoreFocus"], outputs: ["menuOpened", "menuClosed"], exportAs: ["ngsMenuTrigger"] }, { kind: "component", type: Menu, selector: "ngs-menu", inputs: ["role", "classList", "xPosition", "yPosition"], outputs: ["closed"], exportAs: ["ngsMenu"] }, { kind: "directive", type: MenuContent, selector: "[ngsMenuContent]" }, { kind: "directive", type: MenuOptionGroupDirective, selector: "[ngsMenuOptionGroup]", inputs: ["multiple"], outputs: ["valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MenuItem, selector: "ngs-menu-item, [ngs-menu-item]", inputs: ["disabled", "role", "selected"], outputs: ["_triggered"], exportAs: ["ngsMenuItem"] }, { kind: "component", type: FormField, selector: "ngs-form-field", inputs: ["subscriptHiddenIfEmpty"], exportAs: ["ngsFormField"] }, { kind: "component", type: Select, selector: "ngs-select", inputs: ["id", "placeholder", "disabled", "required", "multiple", "hideCheckIcon", "ariaLabel", "tabIndex", "aria-describedby", "value"], outputs: ["selectionChange", "opened", "closed", "valueChange"], exportAs: ["ngsSelect"] }, { kind: "component", type: Option, selector: "ngs-option", inputs: ["value", "disabled", "selected"], outputs: ["onSelectionChange"], exportAs: ["ngsOption"] }, { kind: "directive", type: AutoFocusDirective, selector: "[ngsAutoFocus]", inputs: ["ngsAutoFocus"], exportAs: ["ngsAutoFocus"] }, { kind: "directive", type: FocusElementDirective, selector: "[ngsFocusElement]", inputs: ["checkChildren"], outputs: ["elementFocused", "elementBlurred"], exportAs: ["ngsFocusElement"] }, { kind: "directive", type: Input, selector: "input[ngsInput], textarea[ngsInput]", inputs: ["id", "placeholder", "required", "disabled", "readonly", "errorStateMatcher"], exportAs: ["ngsInput"] }, { kind: "directive", type: FilterBuilderOperationDefDirective, selector: "[ngsFilterBuilderOperationDef]", inputs: ["ngsFilterBuilderOperationDef", "allowedDataTypes"] }, { kind: "directive", type: FilterBuilderOperationNameDirective, selector: "[ngsFilterBuilderOperationName]" }] });
316
316
  }
317
317
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FilterBuilder, decorators: [{
318
318
  type: Component,
@@ -335,7 +335,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
335
335
  FilterBuilderOperationNameDirective
336
336
  ], host: {
337
337
  'class': 'ngs-filter-builder'
338
- }, template: "@if (_isServer) {\n <ng-content/>\n}\n\n<ng-template #itemsTpl let-items>\n <div class=\"group\">\n @for (item of items; track item; let index = $index) {\n @if (_isGroup(item)) {\n <div class=\"flex items-center group-operations\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button [ngsMenuTriggerFor]=\"nestedGroupOperationsMenu\"\n #nestedGroupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName(item) }}\n </button>\n <div [ngsMenuTriggerFor]=\"addGroupMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n <ngs-menu #nestedGroupOperationsMenu=\"ngsMenu\">\n <div ngsMenuOptionGroup [(ngModel)]=\"item['logicalOperator']\">\n @for (groupOperation of groupOperations(); track groupOperation.id) {\n <ngs-option [value]=\"groupOperation.id\"\n (click)=\"nestedGroupOperationsMenuTrigger.closeMenu('click')\">{{ groupOperation.name }}\n </ngs-option>\n }\n </div>\n </ngs-menu>\n <ngs-menu #addGroupMenu=\"ngsMenu\">\n <button ngs-menu-item (click)=\"addCondition(item)\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup(item)\">Add Group</button>\n </ngs-menu>\n </div>\n @if (item['value'].length > 0) {\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item['value'] }\"/>\n }\n } @else if (_isCondition(item)) {\n <div class=\"condition\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button class=\"condition-field\"\n #fieldsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"fieldsMenu\">{{ getConditionField(item['value'][0])?.name }}\n </button>\n <button class=\"condition-operation\"\n #operationsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"operationsMenu\">\n <ng-template [ngTemplateOutlet]=\"getConditionOperation(item['value'][1])?.name\"/>\n </button>\n <div class=\"relative\">\n @if (editItem && editItem === item) {\n <div class=\"absolute start-0 top-0 -translate-y-1/2\">\n @switch (getFieldType(editItem)) {\n @case ('array') {\n @switch (editItem['value'][1]) {\n @case ('equals') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\"\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n @case ('isAnyOf') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\" multiple\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"_tempMultipleValue\"\n (closed)=\"selectClosed()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n }\n }\n @case ('number') {\n @switch (editItem['value'][1]) {\n @case ('isBetween') {\n <div class=\"flex gap-2 items-center\"\n ngsFocusElement (elementBlurred)=\"cancelEdit()\">\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n [(ngModel)]=\"item['value'][2][0]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n <div class=\"text-neutral-500\">&ndash;</div>\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput\n [(ngModel)]=\"item['value'][2][1]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n </div>\n }\n @default {\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n }\n @default {\n <ngs-form-field class=\"form-field\">\n <input type=\"text\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n </div>\n } @else {\n @if (item['value'][1] !== 'isBlank' && item['value'][1] !== 'isNotBlank') {\n @if (isValueNotEmpty(item)) {\n @if (getFieldType(item) === 'array') {\n @if (item['value'][1] === 'equals') {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n {{ getDataSourceItemNameById(item, item['value'][2]) }}\n </button>\n } @else {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n @for (dataSourceItemId of item['value'][2]; track dataSourceItemId; let last = $last) {\n <span>{{ getDataSourceItemNameById(item, dataSourceItemId) }}</span>\n @if (!last) {\n <span class=\"text-neutral-500\">|</span>\n }\n }\n </button>\n }\n } @else {\n @if (item['value'][1] === 'isBetween') {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2][0] }}</span>\n <span class=\"text-neutral-500\">&ndash;</span>\n <span>{{ item['value'][2][1] }}</span>\n </button>\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2] }}</span>\n </button>\n }\n }\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span i18n>&lt;enter a value&gt;</span>\n </button>\n }\n }\n }\n </div>\n </div>\n <ngs-menu #fieldsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][0]\">\n @for (fieldDef of fieldDefs(); track fieldDef) {\n <ngs-option [value]=\"fieldDef.dataField\"\n (click)=\"selectConditionField(item, fieldDef); fieldsMenuTrigger.closeMenu('click')\">{{ fieldDef.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n </ngs-menu>\n <ngs-menu #operationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][1]\">\n @for (operation of _operationDefs; track operation.id()) {\n <div [hidden]=\"!isOperationAllowedForCondition(item['value'][0], operation.id())\">\n <ngs-option [value]=\"operation.id()\"\n (click)=\"operationChanged(item, operation.id()); operationsMenuTrigger.closeMenu('click')\">\n <div class=\"flex items-center gap-3\">\n @if (operation.operationIcon()) {\n <ng-template [ngTemplateOutlet]=\"operationIconTemplateRef(operation)\"/>\n }\n <div>\n <ng-template [ngTemplateOutlet]=\"operationNameTemplateRef(operation)\"/>\n </div>\n </div>\n </ngs-option>\n </div>\n }\n </div>\n </ng-template>\n </ngs-menu>\n }\n }\n </div>\n</ng-template>\n\n<div class=\"group\">\n <div class=\"flex items-center group-operations\">\n <button [ngsMenuTriggerFor]=\"groupOperationsMenu\"\n #groupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName() }}\n </button>\n <div [ngsMenuTriggerFor]=\"addMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n </div>\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: _value }\"/>\n</div>\n\n<ngs-menu #groupOperationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [(ngModel)]=\"_logicalOperator\" (ngModelChange)=\"_emitChangeEvent()\">\n @for (operation of groupOperations(); track operation.id) {\n <ngs-option [value]=\"operation.id\"\n (click)=\"groupOperationsMenuTrigger.closeMenu('click')\">{{ operation.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n</ngs-menu>\n<ngs-menu #addMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <button ngs-menu-item (click)=\"addCondition()\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup()\">Add Group</button>\n </ng-template>\n</ngs-menu>\n\n<ng-container ngsFilterBuilderOperationDef=\"contains\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Contains</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"doesNotContain\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Does not contain</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"startsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Starts with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"endsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Ends with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"equals\" [allowedDataTypes]=\"['string', 'number', 'array', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"notEquals\" [allowedDataTypes]=\"['string', 'number', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Not equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isNotBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is not blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBetween\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is between</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isAnyOf\" [allowedDataTypes]=\"['array']\">\n <ng-template ngsFilterBuilderOperationName>Is any of</ng-template>\n</ng-container>\n", styles: [":host{--ngs-filter-builder-group-operations-gap: calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-group-operation-font-size: var(--text-tiny);--ngs-filter-builder-group-operation-color: var(--color-on-surface);--ngs-filter-builder-group-operation-bg: var(--color-surface-container);--ngs-filter-builder-group-operation-font-weight: 400;--ngs-filter-builder-group-operation-border-radius: .5rem;--ngs-filter-builder-group-operation-bpadding: 0 calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-group-operation-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-group-operation-hover-color: var(--color-on-surface);--ngs-filter-builder-group-operation-hover-bg: var(--color-surface-container-high);--ngs-filter-builder-group-operation-active-color: var(--color-on-surface);--ngs-filter-builder-group-operation-active-bg: var(--color-surface-container-highest);--ngs-filter-builder-group-operation-border: 1px solid var(--color-border);--ngs-filter-builder-group-add-color: var(--color-primary);--ngs-filter-builder-group-add-hover-color: var(--color-primary);--ngs-filter-builder-group-margin: 0;--ngs-filter-builder-group-padding: 0;--ngs-filter-builder-group-gap: calc(var(--spacing, .25rem) * 4);--ngs-filter-builder-condition-gap: calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-field-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-field-font-size: var(--text-tiny);--ngs-filter-builder-condition-field-color: var(--color-on-primary-container);--ngs-filter-builder-condition-field-bg: var(--color-primary-container);--ngs-filter-builder-condition-field-font-weight: 400;--ngs-filter-builder-condition-field-border-radius: .5rem;--ngs-filter-builder-condition-field-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-field-hover-color: var(--color-on-primary-container);--ngs-filter-builder-condition-field-hover-bg: var(--color-primary-400);--ngs-filter-builder-condition-field-active-color: var(--color-on-primary);--ngs-filter-builder-condition-field-active-bg: var(--color-primary);--ngs-filter-builder-condition-operation-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-operation-font-size: var(--text-tiny);--ngs-filter-builder-condition-operation-color: var(--color-on-secondary-container);--ngs-filter-builder-condition-operation-bg: var(--color-secondary-container);--ngs-filter-builder-condition-operation-font-weight: 400;--ngs-filter-builder-condition-operation-border-radius: .5rem;--ngs-filter-builder-condition-operation-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-operation-hover-color: var(--color-on-secondary-container);--ngs-filter-builder-condition-operation-hover-bg: var(--color-secondary-400);--ngs-filter-builder-condition-operation-active-color: var(--color-on-secondary);--ngs-filter-builder-condition-operation-active-bg: var(--color-secondary);--ngs-filter-builder-condition-value-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-value-font-size: var(--text-tiny);--ngs-filter-builder-condition-value-color: var(--color-on-surface);--ngs-filter-builder-condition-value-bg: var(--color-surface-container-high);--ngs-filter-builder-condition-value-font-weight: 400;--ngs-filter-builder-condition-value-border-radius: .5rem;--ngs-filter-builder-condition-value-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-value-hover-color: var(--color-on-surface);--ngs-filter-builder-condition-value-hover-bg: var(--color-surface-container-highest);--ngs-filter-builder-condition-remove-color: var(--color-error);--ngs-filter-builder-condition-remove-hover-color: var(--color-error);display:block}:host ::ng-deep .ngs-form-field-infix{--ngs-form-field-container-height: 46px !important;--ngs-form-field-container-vertical-padding: 12px !important}:host ::ng-deep .subscript-wrapper{display:none}:host .form-field{width:200px}:host .form-field-number{width:140px}:host .group-operations{gap:var(--ngs-filter-builder-group-operations-gap)}:host .group{margin:var(--ngs-filter-builder-group-margin);padding:var(--ngs-filter-builder-group-padding);display:flex;flex-direction:column;gap:var(--ngs-filter-builder-group-gap)}:host .group .group{margin-left:calc(var(--spacing, .25rem) * 4)}:host .icon:empty{display:none}:host .group-operation{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-group-operation-height);font-size:var(--ngs-filter-builder-group-operation-font-size);font-weight:var(--ngs-filter-builder-group-operation-font-weight);color:var(--ngs-filter-builder-group-operation-color);background:var(--ngs-filter-builder-group-operation-bg);border:var(--ngs-filter-builder-group-operation-border);border-radius:var(--ngs-filter-builder-group-operation-border-radius);padding:var(--ngs-filter-builder-group-operation-bpadding)}:host .group-operation:hover{color:var(--ngs-filter-builder-group-operation-hover-color);background:var(--ngs-filter-builder-group-operation-hover-bg)}:host .group-operation:active,:host .group-operation.active{color:var(--ngs-filter-builder-group-operation-active-color);background:var(--ngs-filter-builder-group-operation-active-bg)}:host .condition{display:flex;align-items:center;gap:var(--ngs-filter-builder-condition-gap)}:host .condition-field{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-field-height);font-size:var(--ngs-filter-builder-condition-field-font-size);font-weight:var(--ngs-filter-builder-condition-field-font-weight);color:var(--ngs-filter-builder-condition-field-color);background:var(--ngs-filter-builder-condition-field-bg);border-radius:var(--ngs-filter-builder-condition-field-border-radius);padding:var(--ngs-filter-builder-condition-field-bpadding)}:host .condition-field:hover{color:var(--ngs-filter-builder-condition-field-hover-color);background:var(--ngs-filter-builder-condition-field-hover-bg)}:host .add{line-height:0;color:var(--ngs-filter-builder-group-add-color);cursor:pointer}:host .add:hover{color:var(--ngs-filter-builder-group-add-hover-color)}:host .remove{line-height:0;color:var(--ngs-filter-builder-condition-remove-color);cursor:pointer}:host .remove:hover{color:var(--ngs-filter-builder-condition-remove-hover-color)}:host .condition-field:active,:host .condition-field.active{color:var(--ngs-filter-builder-condition-field-active-color);background:var(--ngs-filter-builder-condition-field-active-bg)}:host .condition-operation{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-operation-height);font-size:var(--ngs-filter-builder-condition-operation-font-size);font-weight:var(--ngs-filter-builder-condition-operation-font-weight);color:var(--ngs-filter-builder-condition-operation-color);background:var(--ngs-filter-builder-condition-operation-bg);border-radius:var(--ngs-filter-builder-condition-operation-border-radius);padding:var(--ngs-filter-builder-condition-operation-bpadding)}:host .condition-operation:hover{color:var(--ngs-filter-builder-condition-operation-hover-color);background:var(--ngs-filter-builder-condition-operation-hover-bg)}:host .condition-operation:active,:host .condition-operation.active{color:var(--ngs-filter-builder-condition-operation-active-color);background:var(--ngs-filter-builder-condition-operation-active-bg)}:host .condition-value{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-value-height);font-size:var(--ngs-filter-builder-condition-value-font-size);font-weight:var(--ngs-filter-builder-condition-value-font-weight);color:var(--ngs-filter-builder-condition-value-color);background:var(--ngs-filter-builder-condition-value-bg);border-radius:var(--ngs-filter-builder-condition-value-border-radius);padding:var(--ngs-filter-builder-condition-value-bpadding)}:host .condition-value:hover{color:var(--ngs-filter-builder-condition-value-hover-color);background:var(--ngs-filter-builder-condition-value-hover-bg)}:host-context(html.dark){--ngs-filter-builder-group-operation-color: var(--color-neutral-200);--ngs-filter-builder-group-operation-hover-bg: var(--color-neutral-600);--ngs-filter-builder-group-operation-active-bg: var(--color-neutral-650);--ngs-filter-builder-group-operation-hover-color: var(--color-neutral-100);--ngs-filter-builder-group-operation-active-color: var(--color-neutral-50)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
338
+ }, template: "@if (_isServer) {\n <ng-content/>\n}\n\n<ng-template #itemsTpl let-items>\n <div class=\"group\">\n @for (item of items; track item; let index = $index) {\n @if (_isGroup(item)) {\n <div class=\"flex items-center group-operations\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button [ngsMenuTriggerFor]=\"nestedGroupOperationsMenu\"\n #nestedGroupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName(item) }}\n </button>\n <div [ngsMenuTriggerFor]=\"addGroupMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n <ngs-menu #nestedGroupOperationsMenu=\"ngsMenu\">\n <div ngsMenuOptionGroup [(ngModel)]=\"item['logicalOperator']\">\n @for (groupOperation of groupOperations(); track groupOperation.id) {\n <ngs-option [value]=\"groupOperation.id\"\n (click)=\"nestedGroupOperationsMenuTrigger.closeMenu('click')\">{{ groupOperation.name }}\n </ngs-option>\n }\n </div>\n </ngs-menu>\n <ngs-menu #addGroupMenu=\"ngsMenu\">\n <button ngs-menu-item (click)=\"addCondition(item)\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup(item)\">Add Group</button>\n </ngs-menu>\n </div>\n @if (item['value'].length > 0) {\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item['value'] }\"/>\n }\n } @else if (_isCondition(item)) {\n <div class=\"condition\">\n <div class=\"remove\" (click)=\"removeCondition(index, items)\">\n <ngs-icon name=\"fluent:dismiss-24-regular\" class=\"font-icon\"/>\n </div>\n <button class=\"condition-field\"\n #fieldsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"fieldsMenu\">{{ getConditionField(item['value'][0])?.name }}\n </button>\n <button class=\"condition-operation\"\n #operationsMenuTrigger=\"ngsMenuTrigger\"\n [ngsMenuTriggerFor]=\"operationsMenu\">\n <ng-template [ngTemplateOutlet]=\"getConditionOperation(item['value'][1])?.name\"/>\n </button>\n <div class=\"relative\">\n @if (editItem && editItem === item) {\n <div class=\"absolute start-0 top-0 -translate-y-1/2\">\n @switch (getFieldType(editItem)) {\n @case ('array') {\n @switch (editItem['value'][1]) {\n @case ('equals') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\"\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n @case ('isAnyOf') {\n <ngs-form-field class=\"form-field\">\n <ngs-select placeholder=\"Select...\" multiple\n ngsAutoFocus\n (blur)=\"selectBlur($event)\"\n [(ngModel)]=\"_tempMultipleValue\"\n (closed)=\"selectClosed()\">\n @for (option of getOptions(editItem); track option.id) {\n <ngs-option [value]=\"option.id\">{{ option.name }}</ngs-option>\n }\n </ngs-select>\n </ngs-form-field>\n }\n }\n }\n @case ('number') {\n @switch (editItem['value'][1]) {\n @case ('isBetween') {\n <div class=\"flex gap-2 items-center\"\n ngsFocusElement (elementBlurred)=\"cancelEdit()\">\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n [(ngModel)]=\"item['value'][2][0]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n <div class=\"text-neutral-500\">&ndash;</div>\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput\n [(ngModel)]=\"item['value'][2][1]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n </div>\n }\n @default {\n <ngs-form-field class=\"form-field-number\">\n <input type=\"number\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n }\n @default {\n <ngs-form-field class=\"form-field\">\n <input type=\"text\" ngsInput ngsAutoFocus\n (blur)=\"cancelEdit()\"\n [(ngModel)]=\"item['value'][2]\"\n (ngModelChange)=\"_emitChangeEvent()\">\n </ngs-form-field>\n }\n }\n </div>\n } @else {\n @if (item['value'][1] !== 'isBlank' && item['value'][1] !== 'isNotBlank') {\n @if (isValueNotEmpty(item)) {\n @if (getFieldType(item) === 'array') {\n @if (item['value'][1] === 'equals') {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n {{ getDataSourceItemNameById(item, item['value'][2]) }}\n </button>\n } @else {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n @for (dataSourceItemId of item['value'][2]; track dataSourceItemId; let last = $last) {\n <span>{{ getDataSourceItemNameById(item, dataSourceItemId) }}</span>\n @if (!last) {\n <span class=\"text-neutral-500\">|</span>\n }\n }\n </button>\n }\n } @else {\n @if (item['value'][1] === 'isBetween') {\n <button class=\"condition-value flex items-center gap-2\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2][0] }}</span>\n <span class=\"text-neutral-500\">&ndash;</span>\n <span>{{ item['value'][2][1] }}</span>\n </button>\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span>{{ item['value'][2] }}</span>\n </button>\n }\n }\n } @else {\n <button class=\"condition-value\" (click)=\"modifyValue(item)\">\n <span i18n>&lt;enter a value&gt;</span>\n </button>\n }\n }\n }\n </div>\n </div>\n <ngs-menu #fieldsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][0]\">\n @for (fieldDef of fieldDefs(); track fieldDef) {\n <ngs-option [value]=\"fieldDef.dataField\"\n (click)=\"selectConditionField(item, fieldDef); fieldsMenuTrigger.closeMenu('click')\">{{ fieldDef.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n </ngs-menu>\n <ngs-menu #operationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [ngModel]=\"item['value'][1]\">\n @for (operation of _operationDefs; track operation.id()) {\n <div [hidden]=\"!isOperationAllowedForCondition(item['value'][0], operation.id())\">\n <ngs-option [value]=\"operation.id()\"\n (click)=\"operationChanged(item, operation.id()); operationsMenuTrigger.closeMenu('click')\">\n <div class=\"flex items-center gap-3\">\n @if (operation.operationIcon()) {\n <ng-template [ngTemplateOutlet]=\"operationIconTemplateRef(operation)\"/>\n }\n <div>\n <ng-template [ngTemplateOutlet]=\"operationNameTemplateRef(operation)\"/>\n </div>\n </div>\n </ngs-option>\n </div>\n }\n </div>\n </ng-template>\n </ngs-menu>\n }\n }\n </div>\n</ng-template>\n\n<div class=\"group\">\n <div class=\"flex items-center group-operations\">\n <button [ngsMenuTriggerFor]=\"groupOperationsMenu\"\n #groupOperationsMenuTrigger=\"ngsMenuTrigger\"\n class=\"group-operation\">\n {{ getSelectedGroupOperationName() }}\n </button>\n <div [ngsMenuTriggerFor]=\"addMenu\" class=\"add\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"font-icon\"/>\n </div>\n </div>\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: _value }\"/>\n</div>\n\n<ngs-menu #groupOperationsMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <div ngsMenuOptionGroup [(ngModel)]=\"_logicalOperator\" (ngModelChange)=\"_emitChangeEvent()\">\n @for (operation of groupOperations(); track operation.id) {\n <ngs-option [value]=\"operation.id\"\n (click)=\"groupOperationsMenuTrigger.closeMenu('click')\">{{ operation.name }}\n </ngs-option>\n }\n </div>\n </ng-template>\n</ngs-menu>\n<ngs-menu #addMenu=\"ngsMenu\">\n <ng-template ngsMenuContent>\n <button ngs-menu-item (click)=\"addCondition()\">Add Condition</button>\n <button ngs-menu-item (click)=\"addGroup()\">Add Group</button>\n </ng-template>\n</ngs-menu>\n\n<ng-container ngsFilterBuilderOperationDef=\"contains\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Contains</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"doesNotContain\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Does not contain</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"startsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Starts with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"endsWith\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Ends with</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"equals\" [allowedDataTypes]=\"['string', 'number', 'array', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"notEquals\" [allowedDataTypes]=\"['string', 'number', 'boolean']\">\n <ng-template ngsFilterBuilderOperationName>Not equals</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isLessThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is less then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThen\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isGreaterThenOrEqual\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is greater then or equal to</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isNotBlank\" [allowedDataTypes]=\"['string']\">\n <ng-template ngsFilterBuilderOperationName>Is not blank</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isBetween\" [allowedDataTypes]=\"['number']\">\n <ng-template ngsFilterBuilderOperationName>Is between</ng-template>\n</ng-container>\n<ng-container ngsFilterBuilderOperationDef=\"isAnyOf\" [allowedDataTypes]=\"['array']\">\n <ng-template ngsFilterBuilderOperationName>Is any of</ng-template>\n</ng-container>\n", styles: [":host{--ngs-filter-builder-group-operations-gap: calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-group-operation-font-size: var(--text-tiny);--ngs-filter-builder-group-operation-color: var(--ngs-color-on-surface);--ngs-filter-builder-group-operation-bg: var(--ngs-color-surface-container);--ngs-filter-builder-group-operation-font-weight: 400;--ngs-filter-builder-group-operation-border-radius: var(--ngs-radius-lg);--ngs-filter-builder-group-operation-bpadding: 0 calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-group-operation-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-group-operation-hover-color: var(--ngs-color-on-surface);--ngs-filter-builder-group-operation-hover-bg: var(--ngs-color-surface-container-high);--ngs-filter-builder-group-operation-active-color: var(--ngs-color-on-surface);--ngs-filter-builder-group-operation-active-bg: var(--ngs-color-surface-container-highest);--ngs-filter-builder-group-operation-border: 1px solid var(--ngs-color-border);--ngs-filter-builder-group-add-color: var(--ngs-color-primary);--ngs-filter-builder-group-add-hover-color: var(--ngs-color-primary);--ngs-filter-builder-group-margin: 0;--ngs-filter-builder-group-padding: 0;--ngs-filter-builder-group-gap: calc(var(--spacing, .25rem) * 4);--ngs-filter-builder-condition-gap: calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-field-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-field-font-size: var(--text-tiny);--ngs-filter-builder-condition-field-color: var(--ngs-color-on-primary-container);--ngs-filter-builder-condition-field-bg: var(--ngs-color-primary-container);--ngs-filter-builder-condition-field-font-weight: 400;--ngs-filter-builder-condition-field-border-radius: var(--ngs-radius-lg);--ngs-filter-builder-condition-field-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-field-hover-color: var(--ngs-color-on-primary-container);--ngs-filter-builder-condition-field-hover-bg: var(--ngs-color-primary-400);--ngs-filter-builder-condition-field-active-color: var(--ngs-color-on-primary);--ngs-filter-builder-condition-field-active-bg: var(--ngs-color-primary);--ngs-filter-builder-condition-operation-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-operation-font-size: var(--text-tiny);--ngs-filter-builder-condition-operation-color: var(--ngs-color-on-secondary-container);--ngs-filter-builder-condition-operation-bg: var(--ngs-color-secondary-container);--ngs-filter-builder-condition-operation-font-weight: 400;--ngs-filter-builder-condition-operation-border-radius: var(--ngs-radius-lg);--ngs-filter-builder-condition-operation-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-operation-hover-color: var(--ngs-color-on-secondary-container);--ngs-filter-builder-condition-operation-hover-bg: var(--ngs-color-secondary-400);--ngs-filter-builder-condition-operation-active-color: var(--ngs-color-on-secondary);--ngs-filter-builder-condition-operation-active-bg: var(--ngs-color-secondary);--ngs-filter-builder-condition-value-height: calc(var(--spacing, .25rem) * 7);--ngs-filter-builder-condition-value-font-size: var(--text-tiny);--ngs-filter-builder-condition-value-color: var(--ngs-color-on-surface);--ngs-filter-builder-condition-value-bg: var(--ngs-color-surface-container-high);--ngs-filter-builder-condition-value-font-weight: 400;--ngs-filter-builder-condition-value-border-radius: var(--ngs-radius-lg);--ngs-filter-builder-condition-value-bpadding: calc(var(--spacing, .25rem) * .5) calc(var(--spacing, .25rem) * 2);--ngs-filter-builder-condition-value-hover-color: var(--ngs-color-on-surface);--ngs-filter-builder-condition-value-hover-bg: var(--ngs-color-surface-container-highest);--ngs-filter-builder-condition-remove-color: var(--ngs-color-danger);--ngs-filter-builder-condition-remove-hover-color: var(--ngs-color-danger);display:block}:host ::ng-deep .ngs-form-field-infix{--ngs-form-field-container-height: 46px !important;--ngs-form-field-container-vertical-padding: 12px !important}:host ::ng-deep .subscript-wrapper{display:none}:host .form-field{width:200px}:host .form-field-number{width:140px}:host .group-operations{gap:var(--ngs-filter-builder-group-operations-gap)}:host .group{margin:var(--ngs-filter-builder-group-margin);padding:var(--ngs-filter-builder-group-padding);display:flex;flex-direction:column;gap:var(--ngs-filter-builder-group-gap)}:host .group .group{margin-left:calc(var(--spacing, .25rem) * 4)}:host .icon:empty{display:none}:host .group-operation{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-group-operation-height);font-size:var(--ngs-filter-builder-group-operation-font-size);font-weight:var(--ngs-filter-builder-group-operation-font-weight);color:var(--ngs-filter-builder-group-operation-color);background:var(--ngs-filter-builder-group-operation-bg);border:var(--ngs-filter-builder-group-operation-border);border-radius:var(--ngs-filter-builder-group-operation-border-radius);padding:var(--ngs-filter-builder-group-operation-bpadding)}:host .group-operation:hover{color:var(--ngs-filter-builder-group-operation-hover-color);background:var(--ngs-filter-builder-group-operation-hover-bg)}:host .group-operation:active,:host .group-operation.active{color:var(--ngs-filter-builder-group-operation-active-color);background:var(--ngs-filter-builder-group-operation-active-bg)}:host .condition{display:flex;align-items:center;gap:var(--ngs-filter-builder-condition-gap)}:host .condition-field{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-field-height);font-size:var(--ngs-filter-builder-condition-field-font-size);font-weight:var(--ngs-filter-builder-condition-field-font-weight);color:var(--ngs-filter-builder-condition-field-color);background:var(--ngs-filter-builder-condition-field-bg);border-radius:var(--ngs-filter-builder-condition-field-border-radius);padding:var(--ngs-filter-builder-condition-field-bpadding)}:host .condition-field:hover{color:var(--ngs-filter-builder-condition-field-hover-color);background:var(--ngs-filter-builder-condition-field-hover-bg)}:host .add{line-height:0;color:var(--ngs-filter-builder-group-add-color);cursor:pointer}:host .add:hover{color:var(--ngs-filter-builder-group-add-hover-color)}:host .remove{line-height:0;color:var(--ngs-filter-builder-condition-remove-color);cursor:pointer}:host .remove:hover{color:var(--ngs-filter-builder-condition-remove-hover-color)}:host .condition-field:active,:host .condition-field.active{color:var(--ngs-filter-builder-condition-field-active-color);background:var(--ngs-filter-builder-condition-field-active-bg)}:host .condition-operation{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-operation-height);font-size:var(--ngs-filter-builder-condition-operation-font-size);font-weight:var(--ngs-filter-builder-condition-operation-font-weight);color:var(--ngs-filter-builder-condition-operation-color);background:var(--ngs-filter-builder-condition-operation-bg);border-radius:var(--ngs-filter-builder-condition-operation-border-radius);padding:var(--ngs-filter-builder-condition-operation-bpadding)}:host .condition-operation:hover{color:var(--ngs-filter-builder-condition-operation-hover-color);background:var(--ngs-filter-builder-condition-operation-hover-bg)}:host .condition-operation:active,:host .condition-operation.active{color:var(--ngs-filter-builder-condition-operation-active-color);background:var(--ngs-filter-builder-condition-operation-active-bg)}:host .condition-value{display:flex;align-items:center;width:max-content;-webkit-user-select:none;user-select:none;cursor:pointer;height:var(--ngs-filter-builder-condition-value-height);font-size:var(--ngs-filter-builder-condition-value-font-size);font-weight:var(--ngs-filter-builder-condition-value-font-weight);color:var(--ngs-filter-builder-condition-value-color);background:var(--ngs-filter-builder-condition-value-bg);border-radius:var(--ngs-filter-builder-condition-value-border-radius);padding:var(--ngs-filter-builder-condition-value-bpadding)}:host .condition-value:hover{color:var(--ngs-filter-builder-condition-value-hover-color);background:var(--ngs-filter-builder-condition-value-hover-bg)}:host-context(html.dark){--ngs-filter-builder-group-operation-color: var(--ngs-color-neutral-200);--ngs-filter-builder-group-operation-hover-bg: var(--ngs-color-neutral-600);--ngs-filter-builder-group-operation-active-bg: var(--ngs-color-neutral-650);--ngs-filter-builder-group-operation-hover-color: var(--ngs-color-neutral-100);--ngs-filter-builder-group-operation-active-color: var(--ngs-color-neutral-50)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
339
339
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], fieldDefs: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldDefs", required: false }] }], categories: [{ type: i0.Input, args: [{ isSignal: true, alias: "categories", required: false }] }], groupOperations: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupOperations", required: false }] }], customOperations: [{ type: i0.Input, args: [{ isSignal: true, alias: "customOperations", required: false }] }], _prebuiltOperationDefs: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => FilterBuilderOperationDefDirective), { isSignal: true }] }], _customOperationDefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FilterBuilderOperationDefDirective), { isSignal: true }] }], valueChanged: [{ type: i0.Output, args: ["valueChanged"] }] } });
340
340
 
341
341
  /**