@sdcorejs/angular 19.1.6 → 19.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/README.md +10 -0
  2. package/assets/scss/core/menu.scss +18 -0
  3. package/assets/scss/core/utilities/_misc.scss +15 -0
  4. package/assets/scss/sd-core.scss +1 -0
  5. package/components/anchor/src/components/anchor/anchor.component.d.ts +3 -1
  6. package/components/badge/src/badge.component.d.ts +1 -0
  7. package/components/ckeditor-styles/src/ckeditor-styles.component.d.ts +1 -1
  8. package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +2 -1
  9. package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +3 -1
  10. package/components/form-generic/src/components/form-render/components/item/components/checkbox/checkbox.component.d.ts +34 -0
  11. package/components/form-generic/src/components/form-render/components/item/components/index.d.ts +1 -0
  12. package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +6 -1
  13. package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +1 -1
  14. package/components/form-generic/src/configurations/form.configuration.d.ts +1 -1
  15. package/components/form-generic/src/models/form-generic-component.model.d.ts +8 -8
  16. package/components/form-generic/src/models/form-generic-definition-selection.model.d.ts +5 -5
  17. package/components/form-generic/src/models/form-generic-expression.model.d.ts +12 -12
  18. package/components/form-generic/src/models/index.d.ts +1 -0
  19. package/components/form-generic/src/services/form-generic.service.d.ts +2 -2
  20. package/components/import-excel/src/import-excel.component.d.ts +1 -0
  21. package/components/index.d.ts +6 -1
  22. package/components/mini-editor/src/mini-editor.model.d.ts +1 -1
  23. package/components/modal/src/modal.component.d.ts +3 -2
  24. package/components/modal-resizable/src/modal-resizable.component.d.ts +92 -0
  25. package/components/modal-resizable/src/modal-resizable.registry.d.ts +22 -0
  26. package/components/org-chart/src/org-chart.component.d.ts +6 -0
  27. package/components/preview/src/preview-image/preview-image.component.d.ts +1 -0
  28. package/components/query-bar/src/components/actions-bar/actions-bar.component.d.ts +6 -2
  29. package/components/query-bar/src/components/build-chip/build-chip.component.d.ts +4 -1
  30. package/components/query-bar/src/components/chip-popover/chip-popover.component.d.ts +8 -0
  31. package/components/query-bar/src/components/field-picker/field-picker.component.d.ts +2 -0
  32. package/components/query-bar/src/components/inline-chip/inline-chip.component.d.ts +2 -0
  33. package/components/query-bar/src/components/inline-value-chip/inline-value-chip.component.d.ts +3 -3
  34. package/components/query-bar/src/components/saved-filters-menu/saved-filters-menu.component.d.ts +9 -4
  35. package/components/query-bar/src/query-bar.component.d.ts +32 -5
  36. package/components/query-bar/src/query-bar.model.d.ts +15 -12
  37. package/components/query-builder/src/query-builder.component.d.ts +76 -39
  38. package/components/query-builder/src/query-builder.model.d.ts +59 -52
  39. package/components/query-builder/src/query-builder.serializer.d.ts +15 -6
  40. package/components/section/src/section.component.d.ts +3 -0
  41. package/components/side-drawer/src/body-scroll-lock.service.d.ts +10 -0
  42. package/components/splitter/src/splitter-handle/splitter-handle.component.d.ts +1 -0
  43. package/components/tab-router/index.d.ts +2 -1
  44. package/components/tab-router/src/actions/tab-router.action.d.ts +2 -2
  45. package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +2 -2
  46. package/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.d.ts +3 -3
  47. package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +3 -3
  48. package/components/tab-router/src/decorators/tab.decorator.d.ts +13 -1
  49. package/components/tab-router/src/events/tab-router.event.d.ts +3 -3
  50. package/components/tab-router/src/models/tab-router.model.d.ts +2 -2
  51. package/components/tab-router/src/pipes/tab-info.pipe.d.ts +2 -2
  52. package/components/tab-router/src/services/tab-router.service.d.ts +9 -9
  53. package/components/table/index.d.ts +1 -0
  54. package/components/table/src/components/config/config.component.d.ts +6 -1
  55. package/components/table/src/components/desktop-cell/view/view.component.d.ts +1 -0
  56. package/components/table/src/components/filter/external-filter/external-filter.component.d.ts +1 -1
  57. package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts +1 -1
  58. package/components/table/src/components/selector-action/action-filter.pipe.d.ts +8 -1
  59. package/components/table/src/components/selector-action/selector-action.component.d.ts +2 -0
  60. package/components/table/src/directives/index.d.ts +1 -0
  61. package/components/table/src/directives/sd-table-command-header-def.directive.d.ts +24 -0
  62. package/components/table/src/models/table-column.model.d.ts +30 -13
  63. package/components/table/src/models/table-item.model.d.ts +30 -1
  64. package/components/table/src/models/table-option-selector.model.d.ts +5 -4
  65. package/components/table/src/models/table-option.model.d.ts +12 -0
  66. package/components/table/src/pipes/sd-group.pipe.d.ts +6 -2
  67. package/components/table/src/services/table-filter/table-filter.model.d.ts +15 -15
  68. package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
  69. package/components/table/src/services/table-format/table-format.service.d.ts +1 -1
  70. package/components/table/src/services/table-selection/selection-action.util.d.ts +24 -0
  71. package/components/table/src/services/table-selection/table-selection.util.d.ts +31 -0
  72. package/components/table/src/services/tree/tree.util.d.ts +3 -2
  73. package/components/table/src/table.component.d.ts +51 -5
  74. package/components/tree/src/tree-item-def.directive.d.ts +1 -1
  75. package/components/tree/src/tree.component.d.ts +16 -4
  76. package/components/tree/src/tree.model.d.ts +31 -25
  77. package/components/upload-file/src/configurations/upload-file.configuration.d.ts +2 -2
  78. package/components/upload-file/src/upload-file.component.d.ts +4 -1
  79. package/configurations/src/sd-core.configuration.d.ts +1 -2
  80. package/fesm2022/sdcorejs-angular-components-anchor.mjs +36 -12
  81. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  82. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +2 -2
  83. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
  84. package/fesm2022/sdcorejs-angular-components-badge.mjs +15 -2
  85. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  86. package/fesm2022/sdcorejs-angular-components-button.mjs +2 -2
  87. package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
  88. package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs +1 -1
  89. package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
  90. package/fesm2022/sdcorejs-angular-components-code-editor.mjs +3 -3
  91. package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
  92. package/fesm2022/sdcorejs-angular-components-data-state.mjs +3 -3
  93. package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -1
  94. package/fesm2022/sdcorejs-angular-components-editor.mjs +2 -2
  95. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  96. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +324 -192
  97. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  98. package/fesm2022/sdcorejs-angular-components-history.mjs +4 -4
  99. package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
  100. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +13 -5
  101. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  102. package/fesm2022/sdcorejs-angular-components-inform.mjs +3 -3
  103. package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
  104. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +164 -8
  105. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
  106. package/fesm2022/sdcorejs-angular-components-modal.mjs +30 -18
  107. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  108. package/fesm2022/sdcorejs-angular-components-org-chart.mjs +60 -13
  109. package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
  110. package/fesm2022/sdcorejs-angular-components-preview.mjs +27 -17
  111. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  112. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +192 -30
  113. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  114. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +187 -127
  115. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  116. package/fesm2022/sdcorejs-angular-components-section.mjs +16 -2
  117. package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
  118. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +83 -24
  119. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  120. package/fesm2022/sdcorejs-angular-components-splitter.mjs +57 -21
  121. package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
  122. package/fesm2022/sdcorejs-angular-components-stepper.mjs +2 -2
  123. package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
  124. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +68 -20
  125. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  126. package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -2
  127. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  128. package/fesm2022/sdcorejs-angular-components-table.mjs +541 -254
  129. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  130. package/fesm2022/sdcorejs-angular-components-tree.mjs +80 -17
  131. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  132. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +48 -13
  133. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  134. package/fesm2022/sdcorejs-angular-components.mjs +6 -1
  135. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  136. package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
  137. package/fesm2022/sdcorejs-angular-directives.mjs +45 -8
  138. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  139. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +40 -29
  140. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  141. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +5 -5
  142. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  143. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +67 -50
  144. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  145. package/fesm2022/sdcorejs-angular-forms-chip.mjs +57 -43
  146. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  147. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +231 -60
  148. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  149. package/fesm2022/sdcorejs-angular-forms-date.mjs +95 -23
  150. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  151. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +130 -26
  152. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  153. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +39 -15
  154. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -1
  155. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +16 -5
  156. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  157. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +24 -9
  158. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  159. package/fesm2022/sdcorejs-angular-forms-input.mjs +58 -10
  160. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  161. package/fesm2022/sdcorejs-angular-forms-models.mjs +227 -6
  162. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  163. package/fesm2022/sdcorejs-angular-forms-radio.mjs +4 -4
  164. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  165. package/fesm2022/sdcorejs-angular-forms-select.mjs +135 -37
  166. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  167. package/fesm2022/sdcorejs-angular-forms-switch.mjs +18 -3
  168. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  169. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +51 -62
  170. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  171. package/fesm2022/sdcorejs-angular-forms-time-range.mjs +57 -12
  172. package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -1
  173. package/fesm2022/sdcorejs-angular-forms-time.mjs +16 -5
  174. package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -1
  175. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +100 -9
  176. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -1
  177. package/fesm2022/sdcorejs-angular-forms.mjs +91 -46
  178. package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
  179. package/fesm2022/sdcorejs-angular-handlers.mjs +18 -3
  180. package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
  181. package/fesm2022/sdcorejs-angular-i18n.mjs +490 -68
  182. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  183. package/fesm2022/sdcorejs-angular-interceptors.mjs +87 -29
  184. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  185. package/fesm2022/sdcorejs-angular-modules-auth.mjs +25 -15
  186. package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
  187. package/fesm2022/sdcorejs-angular-modules-icon.mjs +2 -2
  188. package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
  189. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +32 -3
  190. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
  191. package/fesm2022/sdcorejs-angular-modules-layout.mjs +332 -111
  192. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  193. package/fesm2022/sdcorejs-angular-modules-permission.mjs +177 -40
  194. package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
  195. package/fesm2022/sdcorejs-angular-pipes.mjs +62 -28
  196. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  197. package/fesm2022/sdcorejs-angular-services-api.mjs +123 -13
  198. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  199. package/fesm2022/sdcorejs-angular-services-cache.mjs +53 -3
  200. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  201. package/fesm2022/sdcorejs-angular-services-confirm.mjs +25 -73
  202. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  203. package/fesm2022/sdcorejs-angular-services-excel.mjs +12 -10
  204. package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
  205. package/fesm2022/sdcorejs-angular-services-loading.mjs +75 -84
  206. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  207. package/fesm2022/sdcorejs-angular-services-notify.mjs +46 -5
  208. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  209. package/fesm2022/sdcorejs-angular-services-storage.mjs +4 -0
  210. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  211. package/fesm2022/sdcorejs-angular-services.mjs +0 -1
  212. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  213. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +225 -80
  214. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
  215. package/fesm2022/sdcorejs-angular-utilities-models.mjs +1 -63
  216. package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
  217. package/fesm2022/sdcorejs-angular.mjs +17 -10
  218. package/fesm2022/sdcorejs-angular.mjs.map +1 -1
  219. package/forms/autocomplete/src/autocomplete.component.d.ts +5 -2
  220. package/forms/chip-calendar/src/chip-calendar.component.d.ts +10 -0
  221. package/forms/date/src/date.component.d.ts +13 -2
  222. package/forms/date-range/src/date-range.component.d.ts +13 -2
  223. package/forms/datetime/src/datetime.component.d.ts +13 -2
  224. package/forms/entity-picker/src/entity-picker.component.d.ts +9 -3
  225. package/forms/input/src/input.component.d.ts +3 -0
  226. package/forms/input-color/src/input-color.component.d.ts +4 -0
  227. package/forms/input-number/src/input-number.component.d.ts +3 -0
  228. package/forms/models/index.d.ts +3 -0
  229. package/forms/models/src/sd-form-control-connector.d.ts +12 -0
  230. package/forms/models/src/sd-model-facing-control.d.ts +43 -0
  231. package/forms/models/src/sd-search.model.d.ts +1 -1
  232. package/forms/models/src/sd-selection-data.model.d.ts +1 -1
  233. package/forms/models/src/sd-temporal-transform.d.ts +31 -0
  234. package/forms/models/src/sd-timer-scope.d.ts +29 -0
  235. package/forms/select/src/select.component.d.ts +27 -4
  236. package/forms/src/forms.module.d.ts +22 -13
  237. package/forms/switch/src/switch.component.d.ts +5 -0
  238. package/forms/textarea/src/textarea.component.d.ts +5 -3
  239. package/forms/time-range/src/time-range.component.d.ts +22 -1
  240. package/forms/tree-select/src/tree-select.component.d.ts +36 -5
  241. package/i18n/src/en.d.ts +90 -10
  242. package/i18n/src/i18n.messages.d.ts +1 -1
  243. package/i18n/src/i18n.pipe.d.ts +3 -3
  244. package/i18n/src/i18n.service.d.ts +2 -1
  245. package/i18n/src/i18n.types.d.ts +0 -3
  246. package/interceptors/no-internet/no-internet.interceptor.d.ts +11 -1
  247. package/modules/auth/services/auth.model.d.ts +1 -1
  248. package/modules/keycloak/keycloak.service.d.ts +1 -0
  249. package/modules/layout/components/shared/menu-tree/menu-tree.component.d.ts +2 -0
  250. package/modules/layout/components/sidebar-mobile-v1/components/sidebar/sidebar.component.d.ts +3 -3
  251. package/modules/layout/components/sidebar-mobile-v1/main.component.d.ts +3 -3
  252. package/modules/layout/components/sidebar-mobile-v2/main.component.d.ts +3 -3
  253. package/modules/layout/components/sidebar-mobile-v3/main.component.d.ts +3 -3
  254. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +8 -3
  255. package/modules/layout/components/sidebar-v1/main.component.d.ts +3 -3
  256. package/modules/layout/components/sidebar-v2/main.component.d.ts +3 -3
  257. package/modules/layout/components/sidebar-v3/main.component.d.ts +3 -3
  258. package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +5 -0
  259. package/modules/layout/modules/not-found/pages/root/root.component.d.ts +5 -0
  260. package/modules/layout/services/layout.service.d.ts +21 -0
  261. package/modules/layout/services/storage/storage.service.d.ts +52 -7
  262. package/modules/permission/src/configurations/permission.configuration.d.ts +11 -0
  263. package/modules/permission/src/directives/permission.directive.d.ts +2 -1
  264. package/modules/permission/src/services/permission.service.d.ts +52 -1
  265. package/package.json +40 -33
  266. package/pipes/src/safe-html.pipe.d.ts +26 -4
  267. package/pipes/src/time-different.pipe.d.ts +1 -0
  268. package/public-api.d.ts +11 -10
  269. package/services/api/src/api-host.d.ts +15 -0
  270. package/services/api/src/api.model.d.ts +14 -0
  271. package/services/api/src/api.module.d.ts +6 -0
  272. package/services/cache/src/cache.model.d.ts +10 -0
  273. package/services/index.d.ts +0 -1
  274. package/services/notify/index.d.ts +1 -1
  275. package/utilities/extensions/index.d.ts +1 -5
  276. package/utilities/extensions/src/url-safety.d.ts +72 -0
  277. package/utilities/extensions/src/utility.extension.d.ts +9 -5
  278. package/utilities/models/index.d.ts +0 -10
  279. package/components/base/index.d.ts +0 -1
  280. package/components/base/src/base-secure.component.d.ts +0 -8
  281. package/components/document-builder/index.d.ts +0 -4
  282. package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +0 -15
  283. package/components/document-builder/src/components/header-footer-builder/plugins/page-number.plugin.d.ts +0 -4
  284. package/components/document-builder/src/components/index.d.ts +0 -1
  285. package/components/document-builder/src/document-builder.component.d.ts +0 -53
  286. package/components/document-builder/src/document-builder.config.d.ts +0 -21
  287. package/components/document-builder/src/document-builder.model.d.ts +0 -41
  288. package/components/document-builder/src/document-builder.utils.d.ts +0 -10
  289. package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +0 -9
  290. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +0 -44
  291. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +0 -57
  292. package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +0 -5
  293. package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +0 -4
  294. package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +0 -31
  295. package/components/document-builder/src/plugins/image-upload/image-upload.plugin.d.ts +0 -5
  296. package/components/document-builder/src/plugins/index.d.ts +0 -11
  297. package/components/document-builder/src/plugins/page-orientation/page-orientation.plugin.d.ts +0 -24
  298. package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +0 -14
  299. package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +0 -15
  300. package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +0 -25
  301. package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +0 -29
  302. package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +0 -35
  303. package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +0 -15
  304. package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +0 -15
  305. package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +0 -15
  306. package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +0 -15
  307. package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +0 -15
  308. package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +0 -15
  309. package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +0 -54
  310. package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +0 -27
  311. package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +0 -16
  312. package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +0 -25
  313. package/components/document-builder/src/plugins/paste-handler/index.d.ts +0 -35
  314. package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +0 -31
  315. package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +0 -31
  316. package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +0 -29
  317. package/components/document-builder/src/plugins/paste-handler/types.d.ts +0 -30
  318. package/components/document-builder/src/plugins/table-custom/index.d.ts +0 -34
  319. package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +0 -51
  320. package/components/table/src/pipes/selection-visible-select-all.pipe.d.ts +0 -9
  321. package/fesm2022/sdcorejs-angular-components-base.mjs +0 -23
  322. package/fesm2022/sdcorejs-angular-components-base.mjs.map +0 -1
  323. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +0 -5038
  324. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +0 -1
  325. package/fesm2022/sdcorejs-angular-models.mjs +0 -6
  326. package/fesm2022/sdcorejs-angular-models.mjs.map +0 -1
  327. package/fesm2022/sdcorejs-angular-services-docx.mjs +0 -291
  328. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +0 -1
  329. package/fesm2022/sdcorejs-angular-services-license.mjs +0 -97
  330. package/fesm2022/sdcorejs-angular-services-license.mjs.map +0 -1
  331. package/models/index.d.ts +0 -1
  332. package/models/src/language.model.d.ts +0 -2
  333. package/services/docx/index.d.ts +0 -1
  334. package/services/docx/src/lib/docx.model.d.ts +0 -9
  335. package/services/docx/src/lib/docx.service.d.ts +0 -14
  336. package/services/docx/src/lib/pandoc-core.d.ts +0 -11
  337. package/services/docx/src/public-api.d.ts +0 -2
  338. package/services/license/index.d.ts +0 -1
  339. package/services/license/src/license.service.d.ts +0 -9
  340. package/utilities/extensions/src/array.extension.d.ts +0 -1
  341. package/utilities/extensions/src/color.extension.d.ts +0 -5
  342. package/utilities/extensions/src/date.extension.d.ts +0 -1
  343. package/utilities/extensions/src/number.extension.d.ts +0 -1
  344. package/utilities/extensions/src/string.extension.d.ts +0 -50
  345. package/utilities/models/src/color.model.d.ts +0 -4
  346. package/utilities/models/src/empty.model.d.ts +0 -4
  347. package/utilities/models/src/filter.model.d.ts +0 -12
  348. package/utilities/models/src/maybe-async.model.d.ts +0 -10
  349. package/utilities/models/src/nested-key-of.model.d.ts +0 -4
  350. package/utilities/models/src/operator.model.d.ts +0 -13
  351. package/utilities/models/src/order.model.d.ts +0 -4
  352. package/utilities/models/src/paging.model.d.ts +0 -8
  353. package/utilities/models/src/pattern.model.d.ts +0 -21
  354. package/utilities/models/src/size.model.d.ts +0 -4
@@ -11,17 +11,21 @@ import * as i0 from "@angular/core";
11
11
  * immediately before Search so the user sees one filter-cluster on the right.
12
12
  */
13
13
  export declare class SdQueryActionsBar {
14
+ #private;
14
15
  readonly showLogicToggle: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
15
16
  readonly logic: import("@angular/core").ModelSignal<SdQueryLogic>;
16
17
  readonly filtersCount: import("@angular/core").InputSignal<number>;
17
18
  readonly showSavedFilters: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
18
19
  readonly savedFiltersKey: import("@angular/core").InputSignal<string | undefined>;
19
- readonly query: import("@angular/core").InputSignal<SdQuery<any>>;
20
- readonly applyFilter: import("@angular/core").OutputEmitterRef<SdSavedFilter<any>>;
20
+ readonly query: import("@angular/core").InputSignal<SdQuery<unknown>>;
21
+ readonly applyFilter: import("@angular/core").OutputEmitterRef<SdSavedFilter<unknown>>;
21
22
  readonly showClearAll: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
22
23
  readonly clear: import("@angular/core").OutputEmitterRef<void>;
23
24
  readonly canSearch: import("@angular/core").InputSignal<boolean>;
24
25
  readonly search: import("@angular/core").OutputEmitterRef<void>;
26
+ readonly logicGroupLabel: import("@angular/core").Signal<string>;
27
+ readonly clearAllLabel: import("@angular/core").Signal<string>;
28
+ readonly searchLabel: import("@angular/core").Signal<string>;
25
29
  setLogic(value: SdQueryLogic): void;
26
30
  static ɵfac: i0.ɵɵFactoryDeclaration<SdQueryActionsBar, never>;
27
31
  static ɵcmp: i0.ɵɵComponentDeclaration<SdQueryActionsBar, "sd-query-actions-bar", never, { "showLogicToggle": { "alias": "showLogicToggle"; "required": false; "isSignal": true; }; "logic": { "alias": "logic"; "required": false; "isSignal": true; }; "filtersCount": { "alias": "filtersCount"; "required": false; "isSignal": true; }; "showSavedFilters": { "alias": "showSavedFilters"; "required": false; "isSignal": true; }; "savedFiltersKey": { "alias": "savedFiltersKey"; "required": false; "isSignal": true; }; "query": { "alias": "query"; "required": false; "isSignal": true; }; "showClearAll": { "alias": "showClearAll"; "required": false; "isSignal": true; }; "canSearch": { "alias": "canSearch"; "required": false; "isSignal": true; }; }, { "logic": "logicChange"; "applyFilter": "applyFilter"; "clear": "clear"; "search": "search"; }, never, never, true, never>;
@@ -17,8 +17,11 @@ type Density = 'compact' | 'comfortable';
17
17
  * operator step, disabled badge in value step) + the per-type picker + × cancel.
18
18
  */
19
19
  export declare class SdQueryBuildChip {
20
+ #private;
21
+ readonly booleanTrueLabel: import("@angular/core").Signal<string>;
22
+ readonly booleanFalseLabel: import("@angular/core").Signal<string>;
20
23
  /** Current build state — drives every visual branch. */
21
- readonly building: import("@angular/core").InputSignal<BuildingChip<any>>;
24
+ readonly building: import("@angular/core").InputSignal<BuildingChip<unknown>>;
22
25
  /** Density preset — forwarded to the seamless chip + sizes the .c-token row. */
23
26
  readonly density: import("@angular/core").InputSignal<Density>;
24
27
  /** Operator set offered in the operator-step menu (parent's `allowedOperatorsFor(field)`). */
@@ -18,6 +18,14 @@ import * as i0 from "@angular/core";
18
18
  */
19
19
  export declare class SdQueryChipPopover {
20
20
  #private;
21
+ readonly swapFieldTooltip: import("@angular/core").Signal<string>;
22
+ readonly fromPlaceholder: import("@angular/core").Signal<string>;
23
+ readonly toPlaceholder: import("@angular/core").Signal<string>;
24
+ readonly booleanTrueLabel: import("@angular/core").Signal<string>;
25
+ readonly booleanFalseLabel: import("@angular/core").Signal<string>;
26
+ readonly selectValuePlaceholder: import("@angular/core").Signal<string>;
27
+ readonly enterValuePlaceholder: import("@angular/core").Signal<string>;
28
+ readonly loadingValuesLabel: import("@angular/core").Signal<string>;
21
29
  /** Resolved field of the currently editing chip — parent passes from `fieldByKey()`. */
22
30
  readonly field: import("@angular/core").InputSignal<SdQueryField | undefined>;
23
31
  /** The chip's current Filter — used by `seed()` for initial staging values. */
@@ -14,6 +14,8 @@ import * as i0 from "@angular/core";
14
14
  * chosen field through `(pick)`.
15
15
  */
16
16
  export declare class SdQueryFieldPicker {
17
+ #private;
18
+ readonly emptyLabel: import("@angular/core").Signal<string>;
17
19
  /** Field list shown in the menu (caller-supplied; rendered in input order). */
18
20
  readonly fields: import("@angular/core").InputSignal<SdQueryField[]>;
19
21
  /** Single key disabled with a trailing check — used in the chip-popover "Đổi field" flow. */
@@ -20,6 +20,8 @@ type Density = 'compact' | 'comfortable';
20
20
  */
21
21
  export declare class SdQueryInlineChip {
22
22
  #private;
23
+ readonly booleanTrueLabel: import("@angular/core").Signal<string>;
24
+ readonly booleanFalseLabel: import("@angular/core").Signal<string>;
23
25
  /** Resolved field — parent passes it (no lookup needed inside). */
24
26
  readonly field: import("@angular/core").InputSignal<SdQueryField>;
25
27
  /** The chip's Filter — used for `data` + `operator`. */
@@ -43,9 +43,9 @@ export declare class SdQueryInlineValueChip {
43
43
  readonly isBetween: import("@angular/core").Signal<boolean>;
44
44
  readonly isNoData: import("@angular/core").Signal<boolean>;
45
45
  readonly icon: import("@angular/core").Signal<string>;
46
- readonly ph: import("@angular/core").Signal<"giá trị" | "nhập…">;
47
- readonly phFrom: import("@angular/core").Signal<"Từ" | "từ…">;
48
- readonly phTo: import("@angular/core").Signal<"Đến" | "đến…">;
46
+ readonly ph: import("@angular/core").Signal<string>;
47
+ readonly phFrom: import("@angular/core").Signal<string>;
48
+ readonly phTo: import("@angular/core").Signal<string>;
49
49
  readonly hasValue: import("@angular/core").Signal<boolean>;
50
50
  readonly state: import("@angular/core").Signal<ChipState>;
51
51
  constructor();
@@ -17,19 +17,24 @@ import * as i0 from "@angular/core";
17
17
  */
18
18
  export declare class SdQuerySavedFiltersMenu {
19
19
  #private;
20
+ readonly tooltipLabel: import("@angular/core").Signal<string>;
21
+ readonly tooltipDisabledLabel: import("@angular/core").Signal<string>;
22
+ readonly deleteLabel: import("@angular/core").Signal<string>;
23
+ readonly emptyLabel: import("@angular/core").Signal<string>;
24
+ readonly saveLabel: import("@angular/core").Signal<string>;
20
25
  /** Namespace key used to scope localStorage. `undefined` → menu disabled. */
21
26
  readonly key: import("@angular/core").InputSignal<string | undefined>;
22
27
  /** Current query the host wants to snapshot when the user clicks "Save current". */
23
- readonly query: import("@angular/core").InputSignal<SdQuery<any>>;
28
+ readonly query: import("@angular/core").InputSignal<SdQuery<unknown>>;
24
29
  /** Fired when the user picks a saved filter from the list. */
25
- readonly apply: import("@angular/core").OutputEmitterRef<SdSavedFilter<any>>;
26
- readonly savedFilters: import("@angular/core").WritableSignal<SdSavedFilter<any>[]>;
30
+ readonly apply: import("@angular/core").OutputEmitterRef<SdSavedFilter<unknown>>;
31
+ readonly savedFilters: import("@angular/core").WritableSignal<SdSavedFilter<unknown>[]>;
27
32
  /**
28
33
  * Prompt for a name and append a snapshot of the current query as a new
29
34
  * saved filter. Public so the parent toolbar can wire its external "save"
30
35
  * button to this method without re-implementing persistence.
31
36
  */
32
- promptSave(): void;
37
+ promptSave(): Promise<void>;
33
38
  /** Apply a saved filter — host re-installs filters/logic/search via `(apply)`. */
34
39
  pick(filter: SdSavedFilter): void;
35
40
  /** Delete a saved filter by id. Stops propagation so the parent button doesn't fire `pick`. */
@@ -13,7 +13,7 @@ export declare class SdQueryBar {
13
13
  /** The extracted chip popover — owns operator+value staging + commit-on-close. */
14
14
  readonly chipPopover: import("@angular/core").Signal<SdQueryChipPopover | undefined>;
15
15
  /** Main option object. Prefer this API for new usage; individual inputs stay as a migration bridge. */
16
- readonly option: import("@angular/core").InputSignal<SdQueryBarOption<any> | undefined>;
16
+ readonly option: import("@angular/core").InputSignal<SdQueryBarOption<unknown> | undefined>;
17
17
  /** Prefix for auto-generated `data-autoid` on inner controls (chips, operator/value editors, buttons). */
18
18
  readonly autoIdInput: import("@angular/core").InputSignalWithTransform<string | undefined, string | null | undefined>;
19
19
  /** Available fields the user can filter by. Required for the field picker. */
@@ -54,7 +54,7 @@ export declare class SdQueryBar {
54
54
  * Snapshot of the current query — fed into `<sd-query-saved-filters-menu [query]>` so
55
55
  * saving a filter captures live filters/logic/search.
56
56
  */
57
- readonly currentQuery: import("@angular/core").Signal<SdQuery<any>>;
57
+ readonly currentQuery: import("@angular/core").Signal<SdQuery<unknown>>;
58
58
  /** Receive an applied filter from the saved-filters menu — re-install bar state + trigger apply. */
59
59
  onApplyFilter(saved: SdSavedFilter): void;
60
60
  /** Show AND/OR segmented toggle (renders only when there are ≥2 filters). */
@@ -64,9 +64,15 @@ export declare class SdQueryBar {
64
64
  /** Render the operator label on the chip face (default: hidden — operator only visible in popover). */
65
65
  readonly showOperatorOnChip: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
66
66
  /** Composite payload — emitted whenever filters / logic / search change. */
67
- readonly queryChange: import("@angular/core").OutputEmitterRef<SdQuery<any>>;
67
+ readonly queryChange: import("@angular/core").OutputEmitterRef<SdQuery<unknown>>;
68
68
  /** Fires when the user presses "Áp dụng" inside a chip popover — host should reload data. */
69
- readonly apply: import("@angular/core").OutputEmitterRef<SdQuery<any>>;
69
+ readonly apply: import("@angular/core").OutputEmitterRef<SdQuery<unknown>>;
70
+ /** Placeholder của ô tìm kiếm tự do bên trái. */
71
+ readonly searchPlaceholder: import("@angular/core").Signal<string>;
72
+ /** Tooltip nút "+" khi consumer chưa khai `fields`. */
73
+ readonly noFieldsLabel: import("@angular/core").Signal<string>;
74
+ /** Tooltip nút "+" ở trạng thái bình thường. */
75
+ readonly addFilterLabel: import("@angular/core").Signal<string>;
70
76
  /** Map of `field.key` → `SdQueryField` for fast lookup from filters[]. */
71
77
  readonly resolvedAutoId: import("@angular/core").Signal<string | undefined>;
72
78
  readonly resolvedFields: import("@angular/core").Signal<SdQueryField[]>;
@@ -96,13 +102,34 @@ export declare class SdQueryBar {
96
102
  * popover-mode chips read `multiple()` from the child popover directly.
97
103
  */
98
104
  multiple(op: Operator): boolean;
105
+ /**
106
+ * Stable track key of a filter row. Assigned lazily on first read.
107
+ *
108
+ * ⚠️ Hai ràng buộc với `filters`, đều là hợp đồng của consumer:
109
+ *
110
+ * 1. KHÔNG được chứa cùng một object `Filter` ở hai vị trí. Khoá theo identity nên hai vị trí sẽ
111
+ * cho hai track key trùng nhau và Angular ném NG0955. Đã thử khử trùng bằng hậu tố `$index`
112
+ * và HỎNG: Angular đánh giá biểu thức `track` trên CẢ collection cũ khi diff, nên một filter
113
+ * vừa bị xoá cho `indexOf === -1`, key đổi, và MỌI chip bị huỷ rồi dựng lại. Để Angular báo
114
+ * NG0955 là đúng — thông điệp của nó đã chỉ rõ vấn đề.
115
+ * 2. Object phải ỔN ĐỊNH giữa các lần change detection. Sinh lại object mới mỗi pass
116
+ * (vd `[option]="{ filters: buildFilters() }"`) sẽ khiến mọi chip nhận id mới mỗi pass và bị
117
+ * huỷ + dựng lại — tệ hơn cả `track $index` cũ.
118
+ */
119
+ rowId(filter: Filter): string;
99
120
  readonly iconFor: typeof sdQueryFieldIcon;
100
121
  /** Chip is "active" when it has a non-empty value OR a no-data operator (NULL/NOT_NULL). */
101
122
  isFilterActive(filter: Filter): boolean;
102
123
  /** Rendered value text on a chip. */
103
124
  chipValueText(filter: Filter): string;
104
125
  isNoDataOperator(op: Operator | string): boolean;
105
- readonly building: import("@angular/core").Signal<BuildingChip<any> | null>;
126
+ readonly building: import("@angular/core").Signal<BuildingChip<unknown> | null>;
127
+ /**
128
+ * Allowed operators of `field` — safe to call from a template binding: `sdQueryAllowedOperators`
129
+ * memo hoá theo object field nên ref trả về ổn định giữa các chu kỳ CD.
130
+ * why: `<sd-query-build-chip [allowedOperators]>` là OnPush; ref mới mỗi CD sẽ dirty child liên
131
+ * tục (bug class cấp-phát-mỗi-CD).
132
+ */
106
133
  allowedOperatorsFor(field: SdQueryField): Operator[];
107
134
  inlineAutoId(index: number, role: string): string;
108
135
  /** Entry point from the field picker — start building a chip for `field`. */
@@ -2,7 +2,7 @@ import { Signal } from '@angular/core';
2
2
  import { SdSearch } from '@sdcorejs/angular/forms/models';
3
3
  import { Filter, NestedKeyOf, Operator } from '@sdcorejs/utils/models';
4
4
  export type SdQueryFieldType = 'string' | 'number' | 'boolean' | 'date' | 'datetime' | 'values' | 'lazy-values';
5
- interface SdQueryFieldBase<T = any> {
5
+ interface SdQueryFieldBase<T = unknown> {
6
6
  /** Dot-notation field path (matches `Filter.field`). */
7
7
  key: NestedKeyOf<T>;
8
8
  /** Human-readable label shown on chip + field picker. */
@@ -27,10 +27,10 @@ interface SdQueryFieldBase<T = any> {
27
27
  /** Field is offered in picker but not interactive (read-only badge in chip). */
28
28
  disabled?: boolean;
29
29
  }
30
- export interface SdQueryFieldString<T = any> extends SdQueryFieldBase<T> {
30
+ export interface SdQueryFieldString<T = unknown> extends SdQueryFieldBase<T> {
31
31
  type: 'string';
32
32
  }
33
- export interface SdQueryFieldNumber<T = any> extends SdQueryFieldBase<T> {
33
+ export interface SdQueryFieldNumber<T = unknown> extends SdQueryFieldBase<T> {
34
34
  type: 'number';
35
35
  /** Bounds for the input control inside the chip popover. */
36
36
  min?: number;
@@ -38,13 +38,13 @@ export interface SdQueryFieldNumber<T = any> extends SdQueryFieldBase<T> {
38
38
  /** Step for the number input. */
39
39
  step?: number;
40
40
  }
41
- export interface SdQueryFieldBoolean<T = any> extends SdQueryFieldBase<T> {
41
+ export interface SdQueryFieldBoolean<T = unknown> extends SdQueryFieldBase<T> {
42
42
  type: 'boolean';
43
43
  /** Labels rendered for the true/false buttons. Default: "Có" / "Không". */
44
44
  trueLabel?: string;
45
45
  falseLabel?: string;
46
46
  }
47
- export interface SdQueryFieldDate<T = any> extends SdQueryFieldBase<T> {
47
+ export interface SdQueryFieldDate<T = unknown> extends SdQueryFieldBase<T> {
48
48
  type: 'date' | 'datetime';
49
49
  /** Restrict the picker calendar to this range. */
50
50
  min?: Date | string;
@@ -54,7 +54,7 @@ export interface SdQueryFieldDate<T = any> extends SdQueryFieldBase<T> {
54
54
  * Statically-known options (sync array, signal, or one-shot promise).
55
55
  * Mirrors `SdTableColumnValues.option`.
56
56
  */
57
- export interface SdQueryFieldValues<T = any, K = Record<string, any>> extends SdQueryFieldBase<T> {
57
+ export interface SdQueryFieldValues<T = unknown, K = Record<string, any>> extends SdQueryFieldBase<T> {
58
58
  type: 'values';
59
59
  option: {
60
60
  items: K[] | Signal<K[]> | (() => Promise<K[]>);
@@ -68,7 +68,7 @@ export interface SdQueryFieldValues<T = any, K = Record<string, any>> extends Sd
68
68
  * `{ type: 'SEARCH', searchText }` for live queries and `{ type: 'VALUE', value }` for
69
69
  * resolving chip-display labels of already-selected IDs.
70
70
  */
71
- export interface SdQueryFieldLazyValues<T = any, K = Record<string, any>> extends SdQueryFieldBase<T> {
71
+ export interface SdQueryFieldLazyValues<T = unknown, K = Record<string, any>> extends SdQueryFieldBase<T> {
72
72
  type: 'lazy-values';
73
73
  option: {
74
74
  search: SdSearch<K>;
@@ -76,16 +76,16 @@ export interface SdQueryFieldLazyValues<T = any, K = Record<string, any>> extend
76
76
  displayField: NestedKeyOf<K>;
77
77
  };
78
78
  }
79
- export type SdQueryField<T = any> = SdQueryFieldString<T> | SdQueryFieldNumber<T> | SdQueryFieldBoolean<T> | SdQueryFieldDate<T> | SdQueryFieldValues<T> | SdQueryFieldLazyValues<T>;
79
+ export type SdQueryField<T = unknown> = SdQueryFieldString<T> | SdQueryFieldNumber<T> | SdQueryFieldBoolean<T> | SdQueryFieldDate<T> | SdQueryFieldValues<T> | SdQueryFieldLazyValues<T>;
80
80
  export type SdQueryLogic = 'AND' | 'OR';
81
- export interface SdQuery<T = any> {
81
+ export interface SdQuery<T = unknown> {
82
82
  filters: Filter<T>[];
83
83
  /** Global connector between filters. Defaults to `'AND'`. */
84
84
  logic?: SdQueryLogic;
85
85
  /** Free-text search box (only present when `showSearch=true`). */
86
86
  search?: string;
87
87
  }
88
- export interface SdQueryBarOption<T = any> {
88
+ export interface SdQueryBarOption<T = unknown> {
89
89
  /** Prefix for auto-generated `data-autoid` on inner controls. */
90
90
  autoId?: string;
91
91
  /** Available fields the user can filter by. */
@@ -108,7 +108,7 @@ export interface SdQueryBarOption<T = any> {
108
108
  onApply?: (query: SdQuery<T>) => void;
109
109
  }
110
110
  /** Persisted bookmark of a query (filters + logic + search) — managed by `[savedFiltersKey]`. */
111
- export interface SdSavedFilter<T = any> {
111
+ export interface SdSavedFilter<T = unknown> {
112
112
  id: string;
113
113
  name: string;
114
114
  query: SdQuery<T>;
@@ -120,7 +120,7 @@ export interface SdSavedFilter<T = any> {
120
120
  * - 'operator' — operator menu open, waiting for the user to pick a condition
121
121
  * - 'value' — operator locked, value picker / seamless input is the focus
122
122
  */
123
- export interface BuildingChip<T = any> {
123
+ export interface BuildingChip<T = unknown> {
124
124
  field: SdQueryField<T>;
125
125
  operator?: Operator;
126
126
  step: 'operator' | 'value';
@@ -148,6 +148,9 @@ export declare function sdQueryDefaultOperator(field: SdQueryField): Operator;
148
148
  * - `operators === true` → full set for the type
149
149
  * - `operators` is an array → that array (deduped against the type set is the caller's job)
150
150
  * - otherwise (simple mode) → just the single default operator (no real choice)
151
+ *
152
+ * The returned array is referentially stable for a given `field` object, so it is safe to call
153
+ * straight from a template binding.
151
154
  */
152
155
  export declare function sdQueryAllowedOperators(field: SdQueryField): Operator[];
153
156
  /**
@@ -1,5 +1,5 @@
1
1
  import { Filter, Operator } from '@sdcorejs/utils/models';
2
- import { isQbGroup, QbComparisonMode, QbDateMode, QbGroup, QbRule, QbToken, QbValueSource, qbFieldIcon, SdQueryBuilderField, SdQueryBuilderFieldOption, SdQueryBuilderOption } from './query-builder.model';
2
+ import { sdIsQbGroup, SdQbComparisonMode, SdQbDateMode, SdQbGroup, SdQbRule, SdQbToken, SdQbValueSource, sdQbFieldIcon, SdQueryBuilderField, SdQueryBuilderFieldOption, SdQueryBuilderOption } from './query-builder.model';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
5
  * Visual filter / rule builder. Compose nested AND / OR groups of
@@ -17,7 +17,7 @@ export declare class SdQueryBuilder {
17
17
  /** `'edit'` (default) = interactive tree · `'view'` = read-only raw-query string. */
18
18
  readonly mode: import("@angular/core").InputSignal<"edit" | "view">;
19
19
  /** `value-only` = literal operands only · `value-or-field` = each rule may compare against another field. */
20
- readonly comparisonMode: import("@angular/core").InputSignal<QbComparisonMode>;
20
+ readonly comparisonMode: import("@angular/core").InputSignal<SdQbComparisonMode>;
21
21
  /** Disable all editing controls. */
22
22
  readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
23
23
  /** Prefix for `data-autoid` on inner controls (E2E selectors). */
@@ -28,42 +28,64 @@ export declare class SdQueryBuilder {
28
28
  readonly filters: import("@angular/core").ModelSignal<Filter[]>;
29
29
  /** Root group's logical connector. `[(rootLogic)]`. */
30
30
  readonly rootLogic: import("@angular/core").ModelSignal<"AND" | "OR">;
31
- readonly tree: import("@angular/core").Signal<QbGroup>;
31
+ readonly tree: import("@angular/core").Signal<SdQbGroup>;
32
32
  /** `field.key` → field, for fast lookup from a rule. */
33
33
  readonly resolvedFields: import("@angular/core").Signal<SdQueryBuilderField[]>;
34
34
  readonly resolvedMode: import("@angular/core").Signal<"edit" | "view">;
35
- readonly resolvedComparisonMode: import("@angular/core").Signal<QbComparisonMode>;
35
+ readonly resolvedComparisonMode: import("@angular/core").Signal<SdQbComparisonMode>;
36
36
  readonly resolvedDisabled: import("@angular/core").Signal<boolean>;
37
37
  readonly resolvedAutoId: import("@angular/core").Signal<string | undefined>;
38
38
  readonly fieldByKey: import("@angular/core").Signal<Record<string, SdQueryBuilderField>>;
39
39
  /** Stable option list for the date-mode select. */
40
- readonly dateModes: import("@sdcorejs/angular/components/query-builder").QbDateModeOption[];
40
+ readonly dateModes: import("@angular/core").Signal<{
41
+ display: string;
42
+ value: SdQbDateMode;
43
+ labelKey: string;
44
+ icon: string;
45
+ }[]>;
41
46
  /** Stable option list for the literal-vs-field operand select. */
42
- readonly valueSourceOptions: import("@sdcorejs/angular/components/query-builder").QbValueSourceOption[];
47
+ readonly valueSourceOptions: import("@angular/core").Signal<{
48
+ display: string;
49
+ value: SdQbValueSource;
50
+ labelKey: string;
51
+ icon: string;
52
+ }[]>;
43
53
  /** Stable combined unit×direction option list for the relative select. */
44
- readonly relativeUnitOptions: {
45
- value: string;
54
+ readonly relativeUnitOptions: import("@angular/core").Signal<{
46
55
  display: string;
47
- }[];
48
- /** View-mode token stream — recomputed from the emitted value. */
49
- readonly tokens: import("@angular/core").Signal<QbToken[]>;
56
+ value: string;
57
+ labelKey: string;
58
+ }[]>;
59
+ readonly selectFieldLabel: import("@angular/core").Signal<string>;
60
+ readonly valueLabel: import("@angular/core").Signal<string>;
61
+ readonly fromLabel: import("@angular/core").Signal<string>;
62
+ readonly toLabel: import("@angular/core").Signal<string>;
63
+ readonly addLabel: import("@angular/core").Signal<string>;
64
+ readonly addNodeLabel: import("@angular/core").Signal<string>;
65
+ readonly conditionLabel: import("@angular/core").Signal<string>;
66
+ readonly groupLabel: import("@angular/core").Signal<string>;
67
+ readonly removeGroupLabel: import("@angular/core").Signal<string>;
68
+ readonly removeConditionLabel: import("@angular/core").Signal<string>;
69
+ readonly emptyLabel: import("@angular/core").Signal<string>;
70
+ /** View-mode token stream — recomputed from the emitted value (and from the active language). */
71
+ readonly tokens: import("@angular/core").Signal<SdQbToken[]>;
50
72
  readonly isView: import("@angular/core").Signal<boolean>;
51
73
  /** Expose the type-guard to the template. */
52
- readonly isGroup: typeof isQbGroup;
74
+ readonly isGroup: typeof sdIsQbGroup;
53
75
  /** Resolve the leading icon for a field (own `icon` → per-type → `'tune'`) — used by the field picker. */
54
- readonly fieldIcon: typeof qbFieldIcon;
76
+ readonly fieldIcon: typeof sdQbFieldIcon;
55
77
  constructor();
56
78
  /** Switch a group's AND/OR connector and re-emit. No-op when disabled or unchanged. */
57
- setGroupLogic(group: QbGroup, logic: 'AND' | 'OR'): void;
79
+ setGroupLogic(group: SdQbGroup, logic: 'AND' | 'OR'): void;
58
80
  /** Open this group's "+" menu (closing any other open one). UI-only — does not emit. */
59
- toggleDropdown(group: QbGroup, event: Event): void;
81
+ toggleDropdown(group: SdQbGroup, event: Event): void;
60
82
  closeAllDropdowns(): void;
61
83
  /** Append a blank rule to `group`. */
62
- addRule(group: QbGroup): void;
84
+ addRule(group: SdQbGroup): void;
63
85
  /** Append a nested sub-group (seeded with one blank rule) to `group`. */
64
- addGroup(group: QbGroup): void;
86
+ addGroup(group: SdQbGroup): void;
65
87
  /** Remove the child at `index` from `parent` (a rule or a whole sub-group). */
66
- removeNode(parent: QbGroup, index: number): void;
88
+ removeNode(parent: SdQbGroup, index: number): void;
67
89
  /**
68
90
  * Point `rule` at a new field. Resets operator to the field's default and the value
69
91
  * to that operator's empty shape — the old operator/value rarely fit the new type.
@@ -72,46 +94,61 @@ export declare class SdQueryBuilder {
72
94
  * @param key - the chosen field key (from the field picker). Swap-only: a null / undefined
73
95
  * key is a no-op — the field can be changed but never cleared (issue #2).
74
96
  */
75
- setField(rule: QbRule, key: any): void;
97
+ setField(rule: SdQbRule, key: any): void;
76
98
  /** Change `rule`'s operator and reshape its value to fit the new operator (array / range / none). */
77
- setOperator(rule: QbRule, op: Operator | undefined): void;
99
+ setOperator(rule: SdQbRule, op: Operator | undefined): void;
78
100
  /** Set a single-value rule's value (coercing numeric fields to `number`). */
79
- setScalar(rule: QbRule, raw: any): void;
101
+ setScalar(rule: SdQbRule, raw: any): void;
80
102
  /** Set the lower bound of a BETWEEN rule's `{ from, to }` value. */
81
- setBetweenFrom(rule: QbRule, raw: any): void;
103
+ setBetweenFrom(rule: SdQbRule, raw: any): void;
82
104
  /** Set the upper bound of a BETWEEN rule's `{ from, to }` value. */
83
- setBetweenTo(rule: QbRule, raw: any): void;
84
- setValueSource(rule: QbRule, source: unknown): void;
85
- setCompareField(rule: QbRule, key: any): void;
105
+ setBetweenTo(rule: SdQbRule, raw: any): void;
106
+ setValueSource(rule: SdQbRule, source: unknown): void;
107
+ setCompareField(rule: SdQbRule, key: any): void;
86
108
  /** The field metadata for a rule's current `field` key (or undefined if unset). */
87
- fieldOf(rule: QbRule): SdQueryBuilderField | undefined;
109
+ fieldOf(rule: SdQbRule): SdQueryBuilderField | undefined;
88
110
  /** Operators allowed for a rule, derived from its field's type / override. */
89
- allowedOperators(rule: QbRule): Operator[];
111
+ allowedOperators(rule: SdQbRule): Operator[];
90
112
  /** Whether to render the operator picker — hidden when only one operator is allowed. */
91
- showOperatorSelector(rule: QbRule): boolean;
92
- compareFields(rule: QbRule): SdQueryBuilderField[];
93
- canCompareWithField(rule: QbRule): boolean;
94
- showValueSourceSelector(rule: QbRule): boolean;
95
- valueSourceOf(rule: QbRule): QbValueSource;
96
- isFieldSource(rule: QbRule): boolean;
113
+ showOperatorSelector(rule: SdQbRule): boolean;
114
+ compareFields(rule: SdQbRule): SdQueryBuilderField[];
115
+ canCompareWithField(rule: SdQbRule): boolean;
116
+ showValueSourceSelector(rule: SdQbRule): boolean;
117
+ valueSourceOf(rule: SdQbRule): SdQbValueSource;
118
+ isFieldSource(rule: SdQbRule): boolean;
97
119
  /** True for NULL / NOT_NULL — the template then renders no value editor. */
98
120
  isNoData(op: Operator | undefined): boolean;
99
121
  /** True for IN / NOT_IN — the template then renders a multi-select value editor. */
100
122
  isMulti(op: Operator | undefined): boolean;
101
123
  /** `[true/false]` option list for a boolean field's value select (stable reference). */
102
124
  booleanItems(field: SdQueryBuilderField): SdQueryBuilderFieldOption[];
125
+ /**
126
+ * Option list cho field `type:'values'`.
127
+ *
128
+ * why: template cũ bind thẳng `[items]="fieldOf(rule)!.values || []"`. `values` là OPTIONAL trên
129
+ * `SdQueryBuilderField`, nên với field khai thiếu `values`, nhánh `|| []` cấp phát một mảng MỚI
130
+ * mỗi lần change detection chạy — đúng nguyên nhân OOM đã ghi ở `#booleanOptionsByKey`:
131
+ * `sd-select` có `toObservable(items)` → `markForCheck()` → CD mới → mảng mới → lặp vô hạn.
132
+ *
133
+ * why: KHÔNG memo hoá qua `computed<Map>` snapshot. `field.values` vốn ĐÃ là mảng của consumer
134
+ * nên tự nó ổn định; snapshot vào Map chỉ thêm một tầng cache không bao giờ invalidate khi
135
+ * consumer nạp option bất đồng bộ bằng cách gán tại chỗ (`fields[0].values = loaded`) — reference
136
+ * `fields` không đổi nên `computed` giữ nguyên list cũ vĩnh viễn. Chỉ nhánh RỖNG cần hằng số
137
+ * dùng chung để tránh literal mới mỗi CD.
138
+ */
139
+ valueItems(field: SdQueryBuilderField): SdQueryBuilderFieldOption[];
103
140
  /** Current date-value mode of a rule, derived from its value (no separate state). */
104
- dateMode(rule: QbRule): QbDateMode;
141
+ dateMode(rule: SdQbRule): SdQbDateMode;
105
142
  /** Switch a date/datetime rule's value mode, reseeding the value for the new mode. */
106
- setDateMode(rule: QbRule, mode: unknown): void;
143
+ setDateMode(rule: SdQbRule, mode: unknown): void;
107
144
  /** Read the offset amount of a relative rule (default 1). */
108
- relativeAmount(rule: QbRule): number;
145
+ relativeAmount(rule: SdQbRule): number;
109
146
  /** Set the offset amount (clamped to an integer >= 1). */
110
- setRelativeAmount(rule: QbRule, raw: any): void;
147
+ setRelativeAmount(rule: SdQbRule, raw: any): void;
111
148
  /** Read the `'unit:direction'` token of a relative rule (default `'day:previous'`). */
112
- relativeUnitDirValue(rule: QbRule): string;
149
+ relativeUnitDirValue(rule: SdQbRule): string;
113
150
  /** Set the offset unit + direction from a `'unit:direction'` token. */
114
- setRelativeUnitDir(rule: QbRule, token: unknown): void;
151
+ setRelativeUnitDir(rule: SdQbRule, token: unknown): void;
115
152
  /** Build a `data-autoid` for an inner control under this builder's `autoId` prefix. */
116
153
  autoIdFor(suffix: string): string;
117
154
  static ɵfac: i0.ɵɵFactoryDeclaration<SdQueryBuilder, never>;