@sdcorejs/angular 19.1.5 → 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 (361) hide show
  1. package/README.md +12 -4
  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/preview/src/preview-pdf/pdf-worker-inline.generated.d.ts +7 -0
  29. package/components/query-bar/src/components/actions-bar/actions-bar.component.d.ts +6 -2
  30. package/components/query-bar/src/components/build-chip/build-chip.component.d.ts +4 -1
  31. package/components/query-bar/src/components/chip-popover/chip-popover.component.d.ts +8 -0
  32. package/components/query-bar/src/components/field-picker/field-picker.component.d.ts +2 -0
  33. package/components/query-bar/src/components/inline-chip/inline-chip.component.d.ts +2 -0
  34. package/components/query-bar/src/components/inline-value-chip/inline-value-chip.component.d.ts +3 -3
  35. package/components/query-bar/src/components/saved-filters-menu/saved-filters-menu.component.d.ts +9 -4
  36. package/components/query-bar/src/query-bar.component.d.ts +32 -5
  37. package/components/query-bar/src/query-bar.model.d.ts +15 -12
  38. package/components/query-builder/src/query-builder.component.d.ts +76 -39
  39. package/components/query-builder/src/query-builder.model.d.ts +59 -52
  40. package/components/query-builder/src/query-builder.serializer.d.ts +15 -6
  41. package/components/section/src/section.component.d.ts +3 -0
  42. package/components/side-drawer/src/body-scroll-lock.service.d.ts +10 -0
  43. package/components/splitter/src/splitter-handle/splitter-handle.component.d.ts +1 -0
  44. package/components/tab-router/index.d.ts +2 -1
  45. package/components/tab-router/src/actions/tab-router.action.d.ts +2 -2
  46. package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +2 -2
  47. package/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.d.ts +3 -3
  48. package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +3 -3
  49. package/components/tab-router/src/decorators/tab.decorator.d.ts +13 -1
  50. package/components/tab-router/src/events/tab-router.event.d.ts +3 -3
  51. package/components/tab-router/src/models/tab-router.model.d.ts +2 -2
  52. package/components/tab-router/src/pipes/tab-info.pipe.d.ts +2 -2
  53. package/components/tab-router/src/services/tab-router.service.d.ts +9 -9
  54. package/components/table/index.d.ts +1 -0
  55. package/components/table/src/components/config/config.component.d.ts +6 -1
  56. package/components/table/src/components/desktop-cell/view/view.component.d.ts +1 -0
  57. package/components/table/src/components/filter/external-filter/external-filter.component.d.ts +1 -1
  58. package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts +1 -1
  59. package/components/table/src/components/selector-action/action-filter.pipe.d.ts +8 -1
  60. package/components/table/src/components/selector-action/selector-action.component.d.ts +2 -0
  61. package/components/table/src/directives/index.d.ts +1 -0
  62. package/components/table/src/directives/sd-table-command-header-def.directive.d.ts +24 -0
  63. package/components/table/src/models/table-column.model.d.ts +30 -13
  64. package/components/table/src/models/table-item.model.d.ts +30 -1
  65. package/components/table/src/models/table-option-selector.model.d.ts +5 -4
  66. package/components/table/src/models/table-option.model.d.ts +12 -0
  67. package/components/table/src/pipes/sd-group.pipe.d.ts +6 -2
  68. package/components/table/src/services/table-export/table-export.service.d.ts +3 -1
  69. package/components/table/src/services/table-filter/table-filter.model.d.ts +15 -15
  70. package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
  71. package/components/table/src/services/table-format/table-format.service.d.ts +1 -1
  72. package/components/table/src/services/table-selection/selection-action.util.d.ts +24 -0
  73. package/components/table/src/services/table-selection/table-selection.util.d.ts +31 -0
  74. package/components/table/src/services/tree/tree.util.d.ts +3 -2
  75. package/components/table/src/table.component.d.ts +52 -6
  76. package/components/tree/src/tree-item-def.directive.d.ts +1 -1
  77. package/components/tree/src/tree.component.d.ts +16 -4
  78. package/components/tree/src/tree.model.d.ts +31 -25
  79. package/components/upload-file/src/configurations/upload-file.configuration.d.ts +2 -2
  80. package/components/upload-file/src/upload-file.component.d.ts +4 -1
  81. package/configurations/src/sd-core.configuration.d.ts +1 -2
  82. package/fesm2022/sdcorejs-angular-components-anchor.mjs +36 -12
  83. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  84. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +2 -2
  85. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
  86. package/fesm2022/sdcorejs-angular-components-badge.mjs +15 -2
  87. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  88. package/fesm2022/sdcorejs-angular-components-button.mjs +2 -2
  89. package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
  90. package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs +1 -1
  91. package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
  92. package/fesm2022/sdcorejs-angular-components-code-editor.mjs +3 -3
  93. package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
  94. package/fesm2022/sdcorejs-angular-components-data-state.mjs +3 -3
  95. package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -1
  96. package/fesm2022/sdcorejs-angular-components-editor.mjs +2 -2
  97. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  98. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +324 -192
  99. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  100. package/fesm2022/sdcorejs-angular-components-history.mjs +4 -4
  101. package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
  102. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +13 -5
  103. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  104. package/fesm2022/sdcorejs-angular-components-inform.mjs +3 -3
  105. package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
  106. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +164 -8
  107. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
  108. package/fesm2022/sdcorejs-angular-components-modal.mjs +30 -18
  109. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  110. package/fesm2022/sdcorejs-angular-components-org-chart.mjs +60 -13
  111. package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
  112. package/fesm2022/sdcorejs-angular-components-preview.mjs +58 -19
  113. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  114. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +192 -30
  115. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  116. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +187 -127
  117. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  118. package/fesm2022/sdcorejs-angular-components-section.mjs +16 -2
  119. package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
  120. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +83 -24
  121. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  122. package/fesm2022/sdcorejs-angular-components-splitter.mjs +57 -21
  123. package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
  124. package/fesm2022/sdcorejs-angular-components-stepper.mjs +2 -2
  125. package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
  126. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +68 -20
  127. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  128. package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -2
  129. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  130. package/fesm2022/sdcorejs-angular-components-table.mjs +556 -254
  131. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  132. package/fesm2022/sdcorejs-angular-components-tree.mjs +80 -17
  133. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  134. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +48 -13
  135. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  136. package/fesm2022/sdcorejs-angular-components.mjs +6 -1
  137. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  138. package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
  139. package/fesm2022/sdcorejs-angular-directives.mjs +45 -8
  140. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  141. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +40 -29
  142. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  143. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +5 -5
  144. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  145. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +67 -50
  146. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  147. package/fesm2022/sdcorejs-angular-forms-chip.mjs +57 -43
  148. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  149. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +233 -63
  150. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  151. package/fesm2022/sdcorejs-angular-forms-date.mjs +208 -41
  152. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  153. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +130 -26
  154. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  155. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +39 -15
  156. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -1
  157. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +16 -5
  158. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  159. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +24 -9
  160. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  161. package/fesm2022/sdcorejs-angular-forms-input.mjs +58 -10
  162. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  163. package/fesm2022/sdcorejs-angular-forms-models.mjs +279 -6
  164. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  165. package/fesm2022/sdcorejs-angular-forms-radio.mjs +4 -4
  166. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  167. package/fesm2022/sdcorejs-angular-forms-select.mjs +135 -37
  168. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  169. package/fesm2022/sdcorejs-angular-forms-switch.mjs +18 -3
  170. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  171. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +51 -62
  172. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  173. package/fesm2022/sdcorejs-angular-forms-time-range.mjs +57 -12
  174. package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -1
  175. package/fesm2022/sdcorejs-angular-forms-time.mjs +16 -5
  176. package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -1
  177. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +100 -9
  178. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -1
  179. package/fesm2022/sdcorejs-angular-forms.mjs +91 -46
  180. package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
  181. package/fesm2022/sdcorejs-angular-handlers.mjs +18 -3
  182. package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
  183. package/fesm2022/sdcorejs-angular-i18n.mjs +510 -68
  184. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  185. package/fesm2022/sdcorejs-angular-interceptors.mjs +87 -29
  186. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  187. package/fesm2022/sdcorejs-angular-modules-auth.mjs +25 -15
  188. package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
  189. package/fesm2022/sdcorejs-angular-modules-icon.mjs +2 -2
  190. package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
  191. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +32 -3
  192. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
  193. package/fesm2022/sdcorejs-angular-modules-layout.mjs +441 -135
  194. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  195. package/fesm2022/sdcorejs-angular-modules-permission.mjs +177 -40
  196. package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
  197. package/fesm2022/sdcorejs-angular-pipes.mjs +62 -28
  198. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  199. package/fesm2022/sdcorejs-angular-services-api.mjs +123 -13
  200. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  201. package/fesm2022/sdcorejs-angular-services-cache.mjs +53 -3
  202. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  203. package/fesm2022/sdcorejs-angular-services-confirm.mjs +25 -73
  204. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  205. package/fesm2022/sdcorejs-angular-services-excel.mjs +12 -10
  206. package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
  207. package/fesm2022/sdcorejs-angular-services-loading.mjs +75 -84
  208. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  209. package/fesm2022/sdcorejs-angular-services-notify.mjs +46 -5
  210. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  211. package/fesm2022/sdcorejs-angular-services-storage.mjs +4 -0
  212. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  213. package/fesm2022/sdcorejs-angular-services.mjs +0 -1
  214. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  215. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +225 -80
  216. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
  217. package/fesm2022/sdcorejs-angular-utilities-models.mjs +1 -63
  218. package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
  219. package/fesm2022/sdcorejs-angular.mjs +17 -10
  220. package/fesm2022/sdcorejs-angular.mjs.map +1 -1
  221. package/forms/autocomplete/src/autocomplete.component.d.ts +5 -2
  222. package/forms/chip-calendar/src/chip-calendar.component.d.ts +10 -0
  223. package/forms/date/src/date-input.util.d.ts +18 -0
  224. package/forms/date/src/date.component.d.ts +21 -3
  225. package/forms/date-range/src/date-range.component.d.ts +13 -2
  226. package/forms/datetime/src/datetime.component.d.ts +13 -2
  227. package/forms/entity-picker/src/entity-picker.component.d.ts +9 -3
  228. package/forms/input/src/input.component.d.ts +3 -0
  229. package/forms/input-color/src/input-color.component.d.ts +4 -0
  230. package/forms/input-number/src/input-number.component.d.ts +3 -0
  231. package/forms/models/index.d.ts +4 -0
  232. package/forms/models/src/sd-form-control-connector.d.ts +12 -0
  233. package/forms/models/src/sd-model-facing-control.d.ts +43 -0
  234. package/forms/models/src/sd-search.model.d.ts +1 -1
  235. package/forms/models/src/sd-selection-data.model.d.ts +1 -1
  236. package/forms/models/src/sd-strict-date-adapter.d.ts +26 -0
  237. package/forms/models/src/sd-temporal-transform.d.ts +31 -0
  238. package/forms/models/src/sd-timer-scope.d.ts +29 -0
  239. package/forms/select/src/select.component.d.ts +27 -4
  240. package/forms/src/forms.module.d.ts +22 -13
  241. package/forms/switch/src/switch.component.d.ts +5 -0
  242. package/forms/textarea/src/textarea.component.d.ts +5 -3
  243. package/forms/time-range/src/time-range.component.d.ts +22 -1
  244. package/forms/tree-select/src/tree-select.component.d.ts +36 -5
  245. package/i18n/src/en.d.ts +94 -10
  246. package/i18n/src/i18n.messages.d.ts +1 -1
  247. package/i18n/src/i18n.pipe.d.ts +3 -3
  248. package/i18n/src/i18n.service.d.ts +2 -1
  249. package/i18n/src/i18n.types.d.ts +0 -3
  250. package/interceptors/no-internet/no-internet.interceptor.d.ts +11 -1
  251. package/modules/auth/services/auth.model.d.ts +1 -1
  252. package/modules/keycloak/keycloak.service.d.ts +1 -0
  253. package/modules/layout/components/shared/menu-tree/menu-tree.component.d.ts +2 -0
  254. package/modules/layout/components/sidebar-mobile-v1/components/sidebar/sidebar.component.d.ts +3 -3
  255. package/modules/layout/components/sidebar-mobile-v1/main.component.d.ts +3 -3
  256. package/modules/layout/components/sidebar-mobile-v2/main.component.d.ts +3 -3
  257. package/modules/layout/components/sidebar-mobile-v3/main.component.d.ts +3 -3
  258. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +8 -3
  259. package/modules/layout/components/sidebar-v1/main.component.d.ts +3 -3
  260. package/modules/layout/components/sidebar-v2/main.component.d.ts +3 -3
  261. package/modules/layout/components/sidebar-v3/main.component.d.ts +3 -3
  262. package/modules/layout/index.d.ts +1 -0
  263. package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +5 -0
  264. package/modules/layout/modules/not-found/pages/root/root.component.d.ts +5 -0
  265. package/modules/layout/services/layout.service.d.ts +21 -0
  266. package/modules/layout/services/storage/storage.service.d.ts +52 -7
  267. package/modules/layout/utils/index.d.ts +1 -0
  268. package/modules/layout/utils/tab-name.util.d.ts +8 -0
  269. package/modules/permission/src/configurations/permission.configuration.d.ts +11 -0
  270. package/modules/permission/src/directives/permission.directive.d.ts +2 -1
  271. package/modules/permission/src/services/permission.service.d.ts +52 -1
  272. package/package.json +48 -33
  273. package/pipes/src/safe-html.pipe.d.ts +26 -4
  274. package/pipes/src/time-different.pipe.d.ts +1 -0
  275. package/public-api.d.ts +11 -10
  276. package/services/api/src/api-host.d.ts +15 -0
  277. package/services/api/src/api.model.d.ts +14 -0
  278. package/services/api/src/api.module.d.ts +6 -0
  279. package/services/cache/src/cache.model.d.ts +10 -0
  280. package/services/index.d.ts +0 -1
  281. package/services/notify/index.d.ts +1 -1
  282. package/utilities/extensions/index.d.ts +1 -5
  283. package/utilities/extensions/src/url-safety.d.ts +72 -0
  284. package/utilities/extensions/src/utility.extension.d.ts +9 -5
  285. package/utilities/models/index.d.ts +0 -10
  286. package/components/base/index.d.ts +0 -1
  287. package/components/base/src/base-secure.component.d.ts +0 -8
  288. package/components/document-builder/index.d.ts +0 -4
  289. package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +0 -15
  290. package/components/document-builder/src/components/header-footer-builder/plugins/page-number.plugin.d.ts +0 -4
  291. package/components/document-builder/src/components/index.d.ts +0 -1
  292. package/components/document-builder/src/document-builder.component.d.ts +0 -53
  293. package/components/document-builder/src/document-builder.config.d.ts +0 -21
  294. package/components/document-builder/src/document-builder.model.d.ts +0 -41
  295. package/components/document-builder/src/document-builder.utils.d.ts +0 -10
  296. package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +0 -9
  297. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +0 -44
  298. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +0 -57
  299. package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +0 -5
  300. package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +0 -4
  301. package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +0 -31
  302. package/components/document-builder/src/plugins/image-upload/image-upload.plugin.d.ts +0 -5
  303. package/components/document-builder/src/plugins/index.d.ts +0 -11
  304. package/components/document-builder/src/plugins/page-orientation/page-orientation.plugin.d.ts +0 -24
  305. package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +0 -14
  306. package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +0 -15
  307. package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +0 -25
  308. package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +0 -29
  309. package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +0 -35
  310. package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +0 -15
  311. package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +0 -15
  312. package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +0 -15
  313. package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +0 -15
  314. package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +0 -15
  315. package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +0 -15
  316. package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +0 -54
  317. package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +0 -27
  318. package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +0 -16
  319. package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +0 -25
  320. package/components/document-builder/src/plugins/paste-handler/index.d.ts +0 -35
  321. package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +0 -31
  322. package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +0 -31
  323. package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +0 -29
  324. package/components/document-builder/src/plugins/paste-handler/types.d.ts +0 -30
  325. package/components/document-builder/src/plugins/table-custom/index.d.ts +0 -34
  326. package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +0 -51
  327. package/components/table/src/pipes/selection-visible-select-all.pipe.d.ts +0 -9
  328. package/fesm2022/sdcorejs-angular-components-base.mjs +0 -23
  329. package/fesm2022/sdcorejs-angular-components-base.mjs.map +0 -1
  330. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +0 -5038
  331. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +0 -1
  332. package/fesm2022/sdcorejs-angular-models.mjs +0 -6
  333. package/fesm2022/sdcorejs-angular-models.mjs.map +0 -1
  334. package/fesm2022/sdcorejs-angular-services-docx.mjs +0 -291
  335. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +0 -1
  336. package/fesm2022/sdcorejs-angular-services-license.mjs +0 -97
  337. package/fesm2022/sdcorejs-angular-services-license.mjs.map +0 -1
  338. package/models/index.d.ts +0 -1
  339. package/models/src/language.model.d.ts +0 -2
  340. package/services/docx/index.d.ts +0 -1
  341. package/services/docx/src/lib/docx.model.d.ts +0 -9
  342. package/services/docx/src/lib/docx.service.d.ts +0 -14
  343. package/services/docx/src/lib/pandoc-core.d.ts +0 -11
  344. package/services/docx/src/public-api.d.ts +0 -2
  345. package/services/license/index.d.ts +0 -1
  346. package/services/license/src/license.service.d.ts +0 -9
  347. package/utilities/extensions/src/array.extension.d.ts +0 -1
  348. package/utilities/extensions/src/color.extension.d.ts +0 -5
  349. package/utilities/extensions/src/date.extension.d.ts +0 -1
  350. package/utilities/extensions/src/number.extension.d.ts +0 -1
  351. package/utilities/extensions/src/string.extension.d.ts +0 -50
  352. package/utilities/models/src/color.model.d.ts +0 -4
  353. package/utilities/models/src/empty.model.d.ts +0 -4
  354. package/utilities/models/src/filter.model.d.ts +0 -12
  355. package/utilities/models/src/maybe-async.model.d.ts +0 -10
  356. package/utilities/models/src/nested-key-of.model.d.ts +0 -4
  357. package/utilities/models/src/operator.model.d.ts +0 -13
  358. package/utilities/models/src/order.model.d.ts +0 -4
  359. package/utilities/models/src/paging.model.d.ts +0 -8
  360. package/utilities/models/src/pattern.model.d.ts +0 -21
  361. package/utilities/models/src/size.model.d.ts +0 -4
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Output serialization strategy for the temporal form controls (`<sd-date>`, `<sd-datetime>`,
3
+ * `<sd-date-range>`).
4
+ *
5
+ * This names how a committed value leaves the component — through `model` / `modelChange` /
6
+ * `sdChange` and the registered `FormGroup` field. It does **not** touch what the field displays,
7
+ * and it is **not** an Angular input-coercion `transform`.
8
+ */
9
+ export type SdTemporalValueTransform = 'ISOString' | 'UTCString';
10
+ /** Every supported strategy, derived from the strategy map so the two can never drift. */
11
+ export declare const SD_TEMPORAL_VALUE_TRANSFORMS: readonly SdTemporalValueTransform[];
12
+ export declare function sdIsTemporalValueTransform(value: unknown): value is SdTemporalValueTransform;
13
+ /**
14
+ * Serializes a committed value with the active strategy.
15
+ *
16
+ * Returns `null` for anything that is not a usable `Date`, so an invalid value can never reach a
17
+ * serializer and produce the string `"Invalid Date"`. Callers treat `null` as "keep the existing
18
+ * representation".
19
+ */
20
+ export declare function sdSerializeTemporalValue(value: Date | null | undefined, transform: SdTemporalValueTransform | null | undefined): string | null;
21
+ /** Local midnight of the given day. Date-only controls serialize this instant, never the raw value. */
22
+ export declare function sdLocalStartOfDay(value: Date): Date;
23
+ /**
24
+ * Parses the wire formats these transforms emit, so a component can read back its own output.
25
+ *
26
+ * Deliberately narrow: only ISO 8601 and the RFC-1123 shape `toUTCString()` produces are accepted.
27
+ * Handing the whole job to `new Date(text)` would make every loosely date-shaped string parse
28
+ * differently per browser, and would swallow the legacy canonical formats the components already
29
+ * parse with their own strict parsers. Returns `null` when the text is not one of these.
30
+ */
31
+ export declare function sdParseTransformedTemporal(value: unknown): Date | null;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @internal Macrotask timers owned by a component/directive injector.
3
+ *
4
+ * Every pending handle is cleared when the host is destroyed, so a deferred focus,
5
+ * panel-open or emit can never run against a torn-down view.
6
+ */
7
+ export interface ɵSdTimerScope {
8
+ /**
9
+ * `setTimeout` with the same observable timing, minus the leak: the handle is tracked
10
+ * and cleared on destroy. Scheduling after destroy is a no-op.
11
+ */
12
+ schedule(handler: () => void, delayMs?: number): void;
13
+ /** Cancels every pending timer without waiting for destroy. */
14
+ clear(): void;
15
+ /** Number of timers still pending. Test/diagnostics only. */
16
+ readonly pending: number;
17
+ }
18
+ /**
19
+ * @internal Creates a destroy-scoped timer bag. MUST be called from an injection context
20
+ * (class field initializer or constructor) because it resolves `DestroyRef`.
21
+ *
22
+ * why: gần như mọi form control đều hoãn focus / mở panel bằng `setTimeout(..., 100)` để chờ
23
+ * Material dựng xong DOM. Handle không được giữ lại nên callback vẫn chạy sau khi host view đã
24
+ * destroy — route đổi nhanh hoặc chip bị gỡ giữa lúc focus là đủ để `detectChanges()` ném
25
+ * `ViewDestroyedError`, hoặc để một output bắn ra sau khi consumer đã unsubscribe. Gom vào một
26
+ * scope duy nhất để nơi dùng chỉ cần đổi `setTimeout(fn, ms)` → `#timers.schedule(fn, ms)`,
27
+ * KHÔNG đổi độ trễ (đây là fix vòng đời, không phải fix hành vi).
28
+ */
29
+ export declare function ɵsdTimerScope(): ɵSdTimerScope;
@@ -12,6 +12,9 @@ import * as i0 from "@angular/core";
12
12
  export declare class SdSelect<T extends object | string | number = Record<string, unknown>> implements OnInit {
13
13
  #private;
14
14
  id: string;
15
+ /** why: id ổn định của <mat-error> để control trỏ `aria-describedby` sang — thông báo lỗi
16
+ * phải đọc được từ chính control, không chỉ hiện ra màn hình. */
17
+ readonly errorId: string;
15
18
  matInputRef: Signal<MatInput | undefined>;
16
19
  selectRef: Signal<MatSelect | undefined>;
17
20
  sdLabelTemplate: Signal<TemplateRef<any> | undefined>;
@@ -49,8 +52,8 @@ export declare class SdSelect<T extends object | string | number = Record<string
49
52
  label: import("@angular/core").InputSignal<string | undefined>;
50
53
  helperText: import("@angular/core").InputSignal<string | undefined>;
51
54
  placeholder: import("@angular/core").InputSignal<string | undefined>;
52
- valueField: import("@angular/core").InputSignal<T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_1 in keyof T_1 & string]: T_1[Key_1] extends string | number | boolean | Function | Date | null | undefined ? Key_1 : T_1[Key_1] extends any[] ? Key_1 : T_1[Key_1] extends object ? Key_1 | `${Key_1}.${T_1[Key_1] extends infer T_2 ? T_2 extends T_1[Key_1] ? T_2 extends object ? { [Key_2 in keyof T_2 & string]: T_2[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_2[Key_2] extends any[] ? Key_2 : T_2[Key_2] extends object ? Key_2 | `${Key_2}.${T_2[Key_2] extends infer T_3 ? T_3 extends T_2[Key_2] ? T_3 extends object ? { [Key_3 in keyof T_3 & string]: T_3[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_3[Key_3] extends any[] ? Key_3 : T_3[Key_3] extends object ? Key_3 : Key_3; }[keyof T_3 & string] : string : never : never}` : Key_2; }[keyof T_2 & string] : string : never : never}` : Key_1; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string>;
53
- displayField: import("@angular/core").InputSignal<T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_1 in keyof T_1 & string]: T_1[Key_1] extends string | number | boolean | Function | Date | null | undefined ? Key_1 : T_1[Key_1] extends any[] ? Key_1 : T_1[Key_1] extends object ? Key_1 | `${Key_1}.${T_1[Key_1] extends infer T_2 ? T_2 extends T_1[Key_1] ? T_2 extends object ? { [Key_2 in keyof T_2 & string]: T_2[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_2[Key_2] extends any[] ? Key_2 : T_2[Key_2] extends object ? Key_2 | `${Key_2}.${T_2[Key_2] extends infer T_3 ? T_3 extends T_2[Key_2] ? T_3 extends object ? { [Key_3 in keyof T_3 & string]: T_3[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_3[Key_3] extends any[] ? Key_3 : T_3[Key_3] extends object ? Key_3 : Key_3; }[keyof T_3 & string] : string : never : never}` : Key_2; }[keyof T_2 & string] : string : never : never}` : Key_1; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string>;
55
+ valueField: import("@angular/core").InputSignal<"" | (T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_1 in keyof T_1 & string]: T_1[Key_1] extends string | number | boolean | Function | Date | null | undefined ? Key_1 : T_1[Key_1] extends any[] ? Key_1 : T_1[Key_1] extends object ? Key_1 | `${Key_1}.${T_1[Key_1] extends infer T_2 ? T_2 extends T_1[Key_1] ? T_2 extends object ? { [Key_2 in keyof T_2 & string]: T_2[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_2[Key_2] extends any[] ? Key_2 : T_2[Key_2] extends object ? Key_2 | `${Key_2}.${T_2[Key_2] extends infer T_3 ? T_3 extends T_2[Key_2] ? T_3 extends object ? { [Key_3 in keyof T_3 & string]: T_3[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_3[Key_3] extends any[] ? Key_3 : T_3[Key_3] extends object ? Key_3 : Key_3; }[keyof T_3 & string] : string : never : never}` : Key_2; }[keyof T_2 & string] : string : never : never}` : Key_1; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string)>;
56
+ displayField: import("@angular/core").InputSignal<"" | (T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_1 in keyof T_1 & string]: T_1[Key_1] extends string | number | boolean | Function | Date | null | undefined ? Key_1 : T_1[Key_1] extends any[] ? Key_1 : T_1[Key_1] extends object ? Key_1 | `${Key_1}.${T_1[Key_1] extends infer T_2 ? T_2 extends T_1[Key_1] ? T_2 extends object ? { [Key_2 in keyof T_2 & string]: T_2[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_2[Key_2] extends any[] ? Key_2 : T_2[Key_2] extends object ? Key_2 | `${Key_2}.${T_2[Key_2] extends infer T_3 ? T_3 extends T_2[Key_2] ? T_3 extends object ? { [Key_3 in keyof T_3 & string]: T_3[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_3[Key_3] extends any[] ? Key_3 : T_3[Key_3] extends object ? Key_3 : Key_3; }[keyof T_3 & string] : string : never : never}` : Key_2; }[keyof T_2 & string] : string : never : never}` : Key_1; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string)>;
54
57
  disabledField: import("@angular/core").InputSignal<"" | (T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_1 in keyof T_1 & string]: T_1[Key_1] extends string | number | boolean | Function | Date | null | undefined ? Key_1 : T_1[Key_1] extends any[] ? Key_1 : T_1[Key_1] extends object ? Key_1 | `${Key_1}.${T_1[Key_1] extends infer T_2 ? T_2 extends T_1[Key_1] ? T_2 extends object ? { [Key_2 in keyof T_2 & string]: T_2[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_2[Key_2] extends any[] ? Key_2 : T_2[Key_2] extends object ? Key_2 | `${Key_2}.${T_2[Key_2] extends infer T_3 ? T_3 extends T_2[Key_2] ? T_3 extends object ? { [Key_3 in keyof T_3 & string]: T_3[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_3[Key_3] extends any[] ? Key_3 : T_3[Key_3] extends object ? Key_3 : Key_3; }[keyof T_3 & string] : string : never : never}` : Key_2; }[keyof T_2 & string] : string : never : never}` : Key_1; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string)>;
55
58
  cacheChecksum: import("@angular/core").InputSignal<any>;
56
59
  limit: import("@angular/core").InputSignal<number>;
@@ -62,6 +65,11 @@ export declare class SdSelect<T extends object | string | number = Record<string
62
65
  /** Display mode: `false` edit · `true` static view · `'inline'` view + click-to-edit (bare editor). */
63
66
  viewed: import("@angular/core").InputSignalWithTransform<SdViewed, SdViewedInput>;
64
67
  multiple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
68
+ /**
69
+ * Hiện option "Tất cả" đầu panel (chỉ multiple + items là mảng tĩnh/Signal — ẩn với
70
+ * SdSearch lazy vì dataset không xác định). Opt-in, default `false`.
71
+ */
72
+ showSelectAll: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
65
73
  /**
66
74
  * Whether the `viewed='inline'` text face shows a hover clear-× to empty the value.
67
75
  * Default `true`. Set `false` where the HOST owns removal (e.g. `<sd-query-bar>` chips,
@@ -86,7 +94,7 @@ export declare class SdSelect<T extends object | string | number = Record<string
86
94
  items: import("@angular/core").InputSignal<SdSearch | T[] | Signal<T[]> | null | undefined>;
87
95
  valueModel: import("@angular/core").ModelSignal<string | number | boolean | (string | number)[] | null | undefined>;
88
96
  sdChange: import("@angular/core").OutputEmitterRef<any>;
89
- sdSelection: import("@angular/core").OutputEmitterRef<SdSelectionData<any>>;
97
+ sdSelection: import("@angular/core").OutputEmitterRef<SdSelectionData<unknown>>;
90
98
  formControl: SdFormControl;
91
99
  inputControl: FormControl<string | null>;
92
100
  loading: import("@angular/core").WritableSignal<boolean>;
@@ -107,6 +115,15 @@ export declare class SdSelect<T extends object | string | number = Record<string
107
115
  normalizedValue: Signal<string | number | boolean | (string | number | boolean)[] | null | undefined>;
108
116
  filtered: Signal<boolean>;
109
117
  delayTime: Signal<0 | 500>;
118
+ /**
119
+ * Scope của "Tất cả": item enabled khớp search text hiện tại, tính trên MẢNG NGUỒN
120
+ * `actualItems()`.
121
+ */
122
+ readonly selectAllScope: Signal<T[]>;
123
+ /** Row "Tất cả" chỉ render khi opt-in + multiple + items tĩnh + scope có item để thao tác. */
124
+ readonly selectAllVisible: Signal<boolean>;
125
+ /** Trạng thái checkbox "Tất cả", tính trên items ENABLED trong scope (item disabled bỏ qua). */
126
+ readonly selectAllState: Signal<"checked" | "indeterminate" | "unchecked">;
110
127
  itemValue: (item: T) => unknown;
111
128
  itemDisplay: (item: T) => string;
112
129
  itemDisabled: (item: T) => boolean;
@@ -117,6 +134,12 @@ export declare class SdSelect<T extends object | string | number = Record<string
117
134
  constructor();
118
135
  ngOnInit(): void;
119
136
  onSelectionChange: (change: MatSelectChange) => void;
137
+ /**
138
+ * Toggle "Tất cả" theo scope hiện tại (items enabled khớp search):
139
+ * - Đang `checked` → BỎ chọn các value trong scope (giữ value ngoài scope, kể cả item disabled đã chọn).
140
+ * - Ngược lại → CHỌN THÊM toàn bộ scope, union với selection hiện có (additive khi đang search).
141
+ */
142
+ toggleSelectAll: () => void;
120
143
  reValidate: () => void;
121
144
  clear: ($event?: any) => void;
122
145
  onClick: () => void;
@@ -127,5 +150,5 @@ export declare class SdSelect<T extends object | string | number = Record<string
127
150
  open: () => void;
128
151
  onOpenedChange: (isOpened: boolean) => void;
129
152
  static ɵfac: i0.ɵɵFactoryDeclaration<SdSelect<any>, never>;
130
- static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect<any>, "sd-select", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": true; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": true; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "cacheChecksum": { "alias": "cacheChecksum"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "minWidthPanel": { "alias": "minWidthPanel"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "validator": { "alias": "validator"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["sdLabelTemplate", "sdValueTemplate", "sdSelectedTemplate", "itemDef", "sdViewDef", "footerActions"], ["[sdLabel]"], true, never>;
153
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect<any>, "sd-select", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "cacheChecksum": { "alias": "cacheChecksum"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "minWidthPanel": { "alias": "minWidthPanel"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "validator": { "alias": "validator"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["sdLabelTemplate", "sdValueTemplate", "sdSelectedTemplate", "itemDef", "sdViewDef", "footerActions"], ["[sdLabel]"], true, never>;
131
154
  }
@@ -1,18 +1,27 @@
1
1
  import * as i0 from "@angular/core";
2
- import * as i1 from "@sdcorejs/angular/forms/input";
3
- import * as i2 from "@sdcorejs/angular/forms/input-number";
4
- import * as i3 from "@sdcorejs/angular/forms/date";
5
- import * as i4 from "@sdcorejs/angular/forms/date-range";
6
- import * as i5 from "@sdcorejs/angular/forms/time";
7
- import * as i6 from "@sdcorejs/angular/forms/time-range";
8
- import * as i7 from "@sdcorejs/angular/forms/entity-picker";
9
- import * as i8 from "@sdcorejs/angular/forms/tree-select";
10
- import * as i9 from "@sdcorejs/angular/forms/select";
11
- import * as i10 from "@sdcorejs/angular/forms/autocomplete";
12
- import * as i11 from "@sdcorejs/angular/forms/radio";
13
- import * as i12 from "@sdcorejs/angular/forms/textarea";
2
+ import * as i1 from "@sdcorejs/angular/forms/label";
3
+ import * as i2 from "@sdcorejs/angular/forms/input";
4
+ import * as i3 from "@sdcorejs/angular/forms/input-color";
5
+ import * as i4 from "@sdcorejs/angular/forms/inline-text";
6
+ import * as i5 from "@sdcorejs/angular/forms/input-number";
7
+ import * as i6 from "@sdcorejs/angular/forms/date";
8
+ import * as i7 from "@sdcorejs/angular/forms/datetime";
9
+ import * as i8 from "@sdcorejs/angular/forms/date-range";
10
+ import * as i9 from "@sdcorejs/angular/forms/time";
11
+ import * as i10 from "@sdcorejs/angular/forms/time-range";
12
+ import * as i11 from "@sdcorejs/angular/forms/entity-picker";
13
+ import * as i12 from "@sdcorejs/angular/forms/tree-select";
14
+ import * as i13 from "@sdcorejs/angular/forms/select";
15
+ import * as i14 from "@sdcorejs/angular/forms/autocomplete";
16
+ import * as i15 from "@sdcorejs/angular/forms/switch";
17
+ import * as i16 from "@sdcorejs/angular/forms/radio";
18
+ import * as i17 from "@sdcorejs/angular/forms/textarea";
19
+ import * as i18 from "@sdcorejs/angular/forms/chip";
20
+ import * as i19 from "@sdcorejs/angular/forms/chip-calendar";
21
+ import * as i20 from "@sdcorejs/angular/forms/checkbox";
22
+ import * as i21 from "@sdcorejs/angular/forms/directives";
14
23
  export declare class SdFormsModule {
15
24
  static ɵfac: i0.ɵɵFactoryDeclaration<SdFormsModule, never>;
16
- static ɵmod: i0.ɵɵNgModuleDeclaration<SdFormsModule, never, [typeof i1.SdInput, typeof i2.SdInputNumber, typeof i3.SdDate, typeof i4.SdDateRange, typeof i5.SdTime, typeof i6.SdTimeRange, typeof i7.SdEntityPicker, typeof i8.SdTreeSelect, typeof i9.SdSelect, typeof i10.SdAutocomplete, typeof i11.SdRadio, typeof i12.SdTextarea], [typeof i1.SdInput, typeof i2.SdInputNumber, typeof i3.SdDate, typeof i4.SdDateRange, typeof i5.SdTime, typeof i6.SdTimeRange, typeof i7.SdEntityPicker, typeof i8.SdTreeSelect, typeof i9.SdSelect, typeof i10.SdAutocomplete, typeof i11.SdRadio, typeof i12.SdTextarea]>;
25
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SdFormsModule, never, [typeof i1.SdLabel, typeof i2.SdInput, typeof i3.SdInputColor, typeof i4.SdInlineText, typeof i5.SdInputNumber, typeof i6.SdDate, typeof i7.SdDatetime, typeof i8.SdDateRange, typeof i9.SdTime, typeof i10.SdTimeRange, typeof i11.SdEntityPicker, typeof i12.SdTreeSelect, typeof i13.SdSelect, typeof i14.SdAutocomplete, typeof i15.SdSwitch, typeof i16.SdRadio, typeof i17.SdTextarea, typeof i18.SdChip, typeof i19.SdChipCalendar, typeof i20.SdCheckbox, typeof i21.SdSuffixDefDirective, typeof i21.SdLabelDefDirective, typeof i21.SdViewDefDirective, typeof i21.SdItemDefDefDirective, typeof i13.SdSelectFooterActionDirective, typeof i11.SdEntityPickerSelectedTemplateDirective, typeof i11.SdEntityPickerRowTemplateDirective, typeof i11.SdEntityPickerDetailTemplateDirective, typeof i12.SdTreeSelectNodeTemplateDirective], [typeof i1.SdLabel, typeof i2.SdInput, typeof i3.SdInputColor, typeof i4.SdInlineText, typeof i5.SdInputNumber, typeof i6.SdDate, typeof i7.SdDatetime, typeof i8.SdDateRange, typeof i9.SdTime, typeof i10.SdTimeRange, typeof i11.SdEntityPicker, typeof i12.SdTreeSelect, typeof i13.SdSelect, typeof i14.SdAutocomplete, typeof i15.SdSwitch, typeof i16.SdRadio, typeof i17.SdTextarea, typeof i18.SdChip, typeof i19.SdChipCalendar, typeof i20.SdCheckbox, typeof i21.SdSuffixDefDirective, typeof i21.SdLabelDefDirective, typeof i21.SdViewDefDirective, typeof i21.SdItemDefDefDirective, typeof i13.SdSelectFooterActionDirective, typeof i11.SdEntityPickerSelectedTemplateDirective, typeof i11.SdEntityPickerRowTemplateDirective, typeof i11.SdEntityPickerDetailTemplateDirective, typeof i12.SdTreeSelectNodeTemplateDirective]>;
17
26
  static ɵinj: i0.ɵɵInjectorDeclaration<SdFormsModule>;
18
27
  }
@@ -25,6 +25,11 @@ export declare class SdSwitch implements OnInit, OnDestroy {
25
25
  readonly dataEmpty: import("@angular/core").Signal<"true" | "false">;
26
26
  readonly dataValue: import("@angular/core").Signal<string>;
27
27
  readonly dataRequired: import("@angular/core").Signal<"true" | "false">;
28
+ readonly errorMessage: import("@angular/core").Signal<string | undefined>;
29
+ /** Shared reactive form policy — `validationError` is already interaction-gated (touched/dirty). */
30
+ readonly connectorState: import("@angular/core").Signal<import("@sdcorejs/angular/forms/models").ɵSdFormControlConnectorState<boolean | null | undefined>>;
31
+ /** Message to render inline; `undefined` while untouched, or when `hideInlineError` is set. */
32
+ readonly visibleErrorMessage: import("@angular/core").Signal<string | undefined>;
28
33
  ngOnInit(): void;
29
34
  ngOnDestroy(): void;
30
35
  static ɵfac: i0.ɵɵFactoryDeclaration<SdSwitch, never>;
@@ -1,13 +1,16 @@
1
- import { AfterViewInit, ElementRef, OnDestroy, OnInit } from '@angular/core';
1
+ import { ElementRef, OnDestroy, OnInit } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
3
  import { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';
4
4
  import { SdLabelDefDirective, SdSuffixDefDirective, SdViewDefDirective } from '@sdcorejs/angular/forms/directives';
5
5
  import { SdCustomValidator, SdFormControl, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
6
6
  import { Size } from '@sdcorejs/utils/models';
7
7
  import * as i0 from "@angular/core";
8
- export declare class SdTextarea implements OnInit, AfterViewInit, OnDestroy {
8
+ export declare class SdTextarea implements OnInit, OnDestroy {
9
9
  #private;
10
10
  id: string;
11
+ /** why: id ổn định của <mat-error> để control trỏ `aria-describedby` sang — thông báo lỗi
12
+ * phải đọc được từ chính control, không chỉ hiện ra màn hình. */
13
+ readonly errorId: string;
11
14
  textareaRef: import("@angular/core").Signal<ElementRef<HTMLTextAreaElement> | undefined>;
12
15
  sdViewDef: import("@angular/core").Signal<SdViewDefDirective<any, any> | undefined>;
13
16
  sdLabelDef: import("@angular/core").Signal<SdLabelDefDirective | undefined>;
@@ -58,7 +61,6 @@ export declare class SdTextarea implements OnInit, AfterViewInit, OnDestroy {
58
61
  isFocused: boolean;
59
62
  constructor();
60
63
  ngOnInit(): void;
61
- ngAfterViewInit(): void;
62
64
  ngOnDestroy(): void;
63
65
  onFocus: () => void;
64
66
  onBlur: () => void;
@@ -60,8 +60,29 @@ export declare class SdTimeRange {
60
60
  readonly isReadonly: import("@angular/core").Signal<boolean>;
61
61
  readonly viewTemplate: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
62
62
  readonly displayValue: import("@angular/core").Signal<string>;
63
- readonly showClear: import("@angular/core").Signal<boolean>;
63
+ /**
64
+ * Endpoint invalid ĐÃ gate theo tương tác — CHỈ dùng cho hiển thị (message, `data-invalid`).
65
+ * `connectorState().invalid` của `sd-time` là `invalid && (touched || dirty)`.
66
+ */
64
67
  readonly endpointInvalid: import("@angular/core").Signal<boolean>;
68
+ /**
69
+ * Endpoint invalid THÔ — không gate theo tương tác. Dùng cho VALIDATOR của control tổng.
70
+ * why: endpoint không còn được đăng ký vào FormGroup của consumer, nên validity của chúng chỉ
71
+ * tới được form cha qua control tổng. Nếu đường đó cũng gate theo `touched || dirty` thì một
72
+ * endpoint invalid do ghi programmatic (chưa ai chạm vào) sẽ để form cha VALID — sai contract
73
+ * đã ghi trong `sd-time-range.md`.
74
+ * `formControl.invalid` là property thường nên tự nó không phát tín hiệu; đọc `connectorState()`
75
+ * một nhịp để computed có dependency reactive theo `events` của endpoint control.
76
+ */
77
+ readonly endpointInvalidRaw: import("@angular/core").Signal<boolean>;
78
+ /**
79
+ * Message đã gate theo tương tác — thứ template được phép hiển thị.
80
+ * why: `errorMessage()` thô bung lỗi ngay lần paint đầu với `[required]`, khi người dùng chưa
81
+ * chạm vào ô nào. `connectorState().validationError` gate theo control tổng; range còn có 2
82
+ * endpoint có thể invalid trong khi control tổng chưa dirty (text sai không tới được model tổng),
83
+ * nên phải cộng thêm nhánh endpoint — `endpointInvalid` tự nó đã gate theo touched/dirty.
84
+ */
85
+ readonly visibleError: import("@angular/core").Signal<string | undefined>;
65
86
  readonly dataDisabled: import("@angular/core").Signal<"true" | "false">;
66
87
  readonly dataInvalid: import("@angular/core").Signal<"true" | "false">;
67
88
  readonly dataEmpty: import("@angular/core").Signal<"true" | "false">;
@@ -1,8 +1,11 @@
1
1
  import { ElementRef, TemplateRef } from '@angular/core';
2
- import { FormGroup } from '@angular/forms';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { ErrorStateMatcher } from '@angular/material/core';
4
+ import { MatFormFieldAppearance } from '@angular/material/form-field';
3
5
  import { SdModal } from '@sdcorejs/angular/components/modal';
4
6
  import { SdTree, SdTreeComponentOption, SdTreeDataSource, SdTreeItem, SdTreeItemContext, SdTreeLoadErrorEvent, SdTreeOption, SdTreeSelectionEvent } from '@sdcorejs/angular/components/tree';
5
7
  import { SdFormControl, SdViewed, SdViewedInput, ɵSdFormControlParent } from '@sdcorejs/angular/forms/models';
8
+ import { Size } from '@sdcorejs/utils/models';
6
9
  import * as i0 from "@angular/core";
7
10
  export type SdTreeSelectModel<TKey> = TKey | TKey[] | null | undefined;
8
11
  export type SdTreeSelectTemplateContext<T> = SdTreeItemContext<T>;
@@ -14,18 +17,24 @@ export declare class SdTreeSelectNodeTemplateDirective<T> {
14
17
  }
15
18
  export declare class SdTreeSelect<T = unknown, TKey = string | number> {
16
19
  #private;
17
- readonly trigger: import("@angular/core").Signal<ElementRef<HTMLButtonElement> | undefined>;
20
+ readonly trigger: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
18
21
  readonly modal: import("@angular/core").Signal<SdModal | undefined>;
19
22
  readonly treeComponent: import("@angular/core").Signal<SdTree<T> | undefined>;
20
23
  readonly nodeTemplate: import("@angular/core").Signal<SdTreeSelectNodeTemplateDirective<any> | undefined>;
24
+ readonly errorId: string;
21
25
  readonly autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
22
26
  readonly autoId: import("@angular/core").Signal<string | undefined>;
23
27
  readonly name: import("@angular/core").InputSignal<string>;
24
28
  readonly form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, ɵSdFormControlParent>;
25
29
  readonly label: import("@angular/core").InputSignal<string | undefined>;
30
+ readonly helperText: import("@angular/core").InputSignal<string | undefined>;
26
31
  readonly placeholder: import("@angular/core").InputSignal<string | null | undefined>;
27
32
  readonly modalTitle: import("@angular/core").InputSignal<string | null | undefined>;
28
33
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
34
+ readonly size: import("@angular/core").InputSignal<Size>;
35
+ readonly appearanceInput: import("@angular/core").InputSignal<MatFormFieldAppearance | undefined>;
36
+ readonly appearance: import("@angular/core").Signal<MatFormFieldAppearance>;
37
+ readonly hideInlineError: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
29
38
  readonly items: import("@angular/core").InputSignal<SdTreeDataSource<SdTreeItem<T>>>;
30
39
  readonly tree: import("@angular/core").InputSignal<SdTreeOption<T>>;
31
40
  readonly valueField: import("@angular/core").InputSignal<(T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_1 in keyof T_1 & string]: T_1[Key_1] extends string | number | boolean | Function | Date | null | undefined ? Key_1 : T_1[Key_1] extends any[] ? Key_1 : T_1[Key_1] extends object ? Key_1 | `${Key_1}.${T_1[Key_1] extends infer T_2 ? T_2 extends T_1[Key_1] ? T_2 extends object ? { [Key_2 in keyof T_2 & string]: T_2[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_2[Key_2] extends any[] ? Key_2 : T_2[Key_2] extends object ? Key_2 | `${Key_2}.${T_2[Key_2] extends infer T_3 ? T_3 extends T_2[Key_2] ? T_3 extends object ? { [Key_3 in keyof T_3 & string]: T_3[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_3[Key_3] extends any[] ? Key_3 : T_3[Key_3] extends object ? Key_3 : Key_3; }[keyof T_3 & string] : string : never : never}` : Key_2; }[keyof T_2 & string] : string : never : never}` : Key_1; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string) | undefined>;
@@ -37,15 +46,36 @@ export declare class SdTreeSelect<T = unknown, TKey = string | number> {
37
46
  readonly multiple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
38
47
  readonly cascade: import("@angular/core").InputSignal<"independent" | "descendants">;
39
48
  readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
49
+ /** Component-local error text. Set it to force the control invalid and render the message. */
50
+ readonly inlineError: import("@angular/core").InputSignal<string | undefined>;
40
51
  readonly clearable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
41
52
  readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
42
53
  readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
43
54
  readonly viewed: import("@angular/core").InputSignalWithTransform<SdViewed, SdViewedInput>;
44
55
  readonly model: import("@angular/core").ModelSignal<SdTreeSelectModel<TKey>>;
45
56
  readonly sdChange: import("@angular/core").OutputEmitterRef<SdTreeSelectModel<TKey>>;
46
- readonly sdLoadError: import("@angular/core").OutputEmitterRef<SdTreeLoadErrorEvent<T>>;
57
+ readonly loadError: import("@angular/core").OutputEmitterRef<SdTreeLoadErrorEvent<T>>;
47
58
  readonly formControl: SdFormControl;
59
+ readonly errorMessage: import("@angular/core").Signal<string | undefined>;
48
60
  readonly connectorState: import("@angular/core").Signal<import("@sdcorejs/angular/forms/models").ɵSdFormControlConnectorState<SdTreeSelectModel<TKey>>>;
61
+ /** Interaction-gated validation message; `undefined` until the control is touched/dirty. */
62
+ readonly visibleErrorMessage: import("@angular/core").Signal<string | undefined>;
63
+ /**
64
+ * Text-only control backing the readonly trigger; `formControl` above holds the real keys.
65
+ *
66
+ * why: phải là một `FormControl` THẬT chứ không phải `[value]`. `MatInput.ngDoCheck` chỉ gọi
67
+ * `updateErrorState()` khi có `NgControl` — không có nó thì `errorState` đứng yên ở `false`, mà
68
+ * `<mat-error>`, viền đỏ và `aria-invalid` đều bám vào cờ đó, nên field bắt buộc bỏ trống lại im
69
+ * lặng y như bug cũ. Trạng thái disabled cũng chảy qua control này (MatInput tự đồng bộ
70
+ * `disabled` từ `ngControl` mỗi vòng CD, nên bind `[disabled]` trên template sẽ bị ghi đè).
71
+ */
72
+ readonly displayControl: FormControl<string>;
73
+ /**
74
+ * why: MatInput đã có `NgControl`, nhưng control đó là ô TEXT — nó không biết gì về `required`
75
+ * hay validator của tree-select. Matcher nối thẳng `errorState` của Material vào message đã gate
76
+ * theo tương tác của connector.
77
+ */
78
+ readonly errorStateMatcher: ErrorStateMatcher;
49
79
  readonly draftKeys: import("@angular/core").WritableSignal<TKey[]>;
50
80
  readonly modelKeys: import("@angular/core").Signal<TKey[]>;
51
81
  readonly effectivePlaceholder: import("@angular/core").Signal<string>;
@@ -55,7 +85,8 @@ export declare class SdTreeSelect<T = unknown, TKey = string | number> {
55
85
  readonly draftEntities: import("@angular/core").Signal<T[]>;
56
86
  readonly displayText: import("@angular/core").Signal<string>;
57
87
  readonly treeOption: import("@angular/core").Signal<SdTreeComponentOption<T>>;
58
- open(): void;
88
+ constructor();
89
+ open(event?: Event): void;
59
90
  applySelection(): void;
60
91
  cancel(): void;
61
92
  clear(event?: Event): void;
@@ -66,6 +97,6 @@ export declare class SdTreeSelect<T = unknown, TKey = string | number> {
66
97
  keyOf(item: T): TKey;
67
98
  displayEntity(item: T): string;
68
99
  static ɵfac: i0.ɵɵFactoryDeclaration<SdTreeSelect<any, any>, never>;
69
- static ɵcmp: i0.ɵɵComponentDeclaration<SdTreeSelect<any, any>, "sd-tree-select", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "modalTitle": { "alias": "modalTitle"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "keySelector": { "alias": "keySelector"; "required": false; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "disabledNode": { "alias": "disabledNode"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "cascade": { "alias": "cascade"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "sdChange": "sdChange"; "sdLoadError": "sdLoadError"; }, ["nodeTemplate"], never, true, never>;
100
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdTreeSelect<any, any>, "sd-tree-select", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "modalTitle": { "alias": "modalTitle"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "keySelector": { "alias": "keySelector"; "required": false; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "disabledNode": { "alias": "disabledNode"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "cascade": { "alias": "cascade"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "sdChange": "sdChange"; "loadError": "loadError"; }, ["nodeTemplate"], ["[sdLabel]"], true, never>;
70
101
  }
71
102
  export declare function normalizeTreeSelectKeys<TKey>(value: SdTreeSelectModel<TKey>, multiple: boolean): TKey[];
package/i18n/src/en.d.ts CHANGED
@@ -78,9 +78,6 @@ export declare const EN_MESSAGES: {
78
78
  readonly 'core.interceptor.no-internet.restored': "Connection restored.";
79
79
  readonly 'core.excel.cannot-read-file': "Could not read file content";
80
80
  readonly 'core.excel.no-sheet': "Excel file has no data sheet";
81
- readonly 'core.docx.invalid-format': "Invalid format. Please select a template in DOC or DOCX format";
82
- readonly 'core.docx.size-exceeded': "Template file size exceeds the supported limit. Please try again";
83
- readonly 'core.docx.convert-error': "An error occurred while converting the DOCX file";
84
81
  readonly 'core.notify.type.success': "Success";
85
82
  readonly 'core.notify.type.info': "Information";
86
83
  readonly 'core.notify.type.warning': "Warning";
@@ -177,7 +174,6 @@ export declare const EN_MESSAGES: {
177
174
  readonly 'core.form.time-range.step': "Times must align to a {step}-minute interval";
178
175
  readonly 'core.form.time-range.from': "From";
179
176
  readonly 'core.form.time-range.to': "To";
180
- readonly 'core.form.time-range.clear': "Clear time range";
181
177
  readonly 'core.form.time-spinner.hour': "Hour";
182
178
  readonly 'core.form.time-spinner.minute': "Minute";
183
179
  readonly 'core.form.time-spinner.second': "Second";
@@ -196,6 +192,7 @@ export declare const EN_MESSAGES: {
196
192
  readonly 'core.form.checkbox.checked': "Yes";
197
193
  readonly 'core.form.checkbox.unchecked': "No";
198
194
  readonly 'core.form.select.required': "Please enter information";
195
+ readonly 'core.form.select.selectAll': "All";
199
196
  readonly 'core.form.textarea.required': "Please enter information";
200
197
  readonly 'core.form.textarea.maxlength': "Maximum characters: {max}";
201
198
  readonly 'core.form.textarea.invalid-pattern': "Invalid format";
@@ -209,12 +206,6 @@ export declare const EN_MESSAGES: {
209
206
  readonly 'core.component.editor.image.max-width': "Image width {width}px exceeds the limit of {max}px";
210
207
  readonly 'core.component.editor.image.max-height': "Image height {height}px exceeds the limit of {max}px";
211
208
  readonly 'core.component.editor.image.max-per-selection': "You can select at most {max} images per selection";
212
- readonly 'core.component.document-builder.page-number.current': "Current page number";
213
- readonly 'core.component.document-builder.page-number.total': "Total pages";
214
- readonly 'core.component.document-builder.ck-comment.label': "Comment";
215
- readonly 'core.component.document-builder.ck-comment.text-too-long': "Text too long ({length} characters). Maximum {max} characters.";
216
- readonly 'core.component.document-builder.variable.not-allowed': "Adding variable to the text is not allowed";
217
- readonly 'core.component.document-builder.variable.invalid-data': "Invalid variable data";
218
209
  readonly 'core.component.form-builder.field-key': "Field key";
219
210
  readonly 'core.component.form-builder.display': "Display";
220
211
  readonly 'core.component.form-builder.general': "General";
@@ -228,6 +219,7 @@ export declare const EN_MESSAGES: {
228
219
  readonly 'core.component.form-builder.required-when': "Required when";
229
220
  readonly 'core.component.form-builder.confirm': "Confirm";
230
221
  readonly 'core.component.form-builder.delete': "Delete";
222
+ readonly 'core.component.form-builder.select-item': "Select to edit";
231
223
  readonly 'core.component.form-builder.save': "Save";
232
224
  readonly 'core.component.form-builder.hint': "Hint";
233
225
  readonly 'core.component.form-builder.parameter': "Parameters";
@@ -299,9 +291,13 @@ export declare const EN_MESSAGES: {
299
291
  readonly 'core.component.form-builder.display-label': "Display label";
300
292
  readonly 'core.component.form-builder.attribute': "Attribute";
301
293
  readonly 'core.component.form-builder.add-variable': "Add variable";
294
+ readonly 'core.component.form-builder.no-variable': "No variables yet. Add one to use it in condition expressions.";
295
+ readonly 'core.component.form-builder.no-validation': "No validations yet. Add one to show a warning or an error on a condition.";
302
296
  readonly 'core.component.form-builder.add-new': "Add new";
303
297
  readonly 'core.component.form-builder.detail': "Details";
304
298
  readonly 'core.component.form-builder.create-update': "Create/update";
299
+ readonly 'core.component.form-builder.update-row': "Update row";
300
+ readonly 'core.component.form-builder.add-row': "Add row";
305
301
  readonly 'core.component.form-builder.default': "Default";
306
302
  readonly 'core.component.form-builder.show-more': "Show more";
307
303
  readonly 'core.component.form-builder.show-less': "Show less";
@@ -458,6 +454,8 @@ export declare const EN_MESSAGES: {
458
454
  readonly 'core.component.table.choose-filter-hint': "Please choose a filter to start";
459
455
  readonly 'core.component.table.no-data': "No data";
460
456
  readonly 'core.component.table.export-excel': "Export Excel";
457
+ readonly 'core.component.table.exporting': "Exporting...{percent}%";
458
+ readonly 'core.component.table.export': "Export";
461
459
  readonly 'core.component.table.export-csv': "Export CSV";
462
460
  readonly 'core.component.table.showing': "Showing:";
463
461
  readonly 'core.component.table.paginator.first-page': "First page";
@@ -468,6 +466,8 @@ export declare const EN_MESSAGES: {
468
466
  readonly 'core.component.table.error-occurred': "An error occurred";
469
467
  readonly 'core.component.table.not-an-array': "Data is not an array";
470
468
  readonly 'core.component.table.config.confirm-reset': "Confirm reset all settings to defaults";
469
+ readonly 'core.component.table.config.drag-hint': "Drag the ⠿ handle to reorder columns";
470
+ readonly 'core.component.table.config.drag-handle': "Drag to reorder column";
471
471
  readonly 'core.component.table.popup-export.select-columns': "Please select columns to export";
472
472
  readonly 'core.component.table.selector-action.default-msg': "items selected";
473
473
  readonly 'core.component.tab-router.too-many-tabs': "You have opened too many tabs.";
@@ -496,6 +496,13 @@ export declare const EN_MESSAGES: {
496
496
  readonly 'core.module.layout.user.notification': "Notifications";
497
497
  readonly 'core.module.layout.sidebar.search': "Search";
498
498
  readonly 'core.module.layout.sidebar.toggle': "Toggle sidebar";
499
+ readonly 'core.module.layout.sidebar.menu-groups': "Menu groups";
500
+ readonly 'core.module.layout.sidebar.close-menu': "Close menu";
501
+ readonly 'core.module.layout.sidebar.search-in-group': "Search this group";
502
+ readonly 'core.module.layout.sidebar.primary-nav': "Primary navigation";
503
+ readonly 'core.module.layout.sidebar.more-menu': "More menus";
504
+ readonly 'core.module.layout.sidebar.more': "More";
505
+ readonly 'core.module.layout.sidebar.search-in-menu': "Search menus";
499
506
  readonly 'core.module.layout.greeting.hello': "Hello, {name}";
500
507
  readonly 'core.module.layout.weekday.0': "Sunday";
501
508
  readonly 'core.module.layout.weekday.1': "Monday";
@@ -512,6 +519,8 @@ export declare const EN_MESSAGES: {
512
519
  readonly 'core.module.layout.not-found.message': "The page you're looking for doesn't exist or has been removed. Please check the URL or go back to the home page to continue.";
513
520
  readonly 'core.module.layout.not-found.back': "Go back";
514
521
  readonly 'core.module.layout.home.tab-name': "Home";
522
+ readonly 'core.module.layout.not-found.tab-name': "Page Not Found";
523
+ readonly 'core.module.layout.forbidden.tab-name': "Access Denied";
515
524
  readonly 'core.module.layout.home.feature.data': "Data";
516
525
  readonly 'core.module.layout.home.feature.reports': "Reports";
517
526
  readonly 'core.module.layout.home.feature.users': "Users";
@@ -520,4 +529,79 @@ export declare const EN_MESSAGES: {
520
529
  readonly 'core.module.layout.home.feature.integration': "Integration";
521
530
  readonly 'core.module.layout.mock.user.full-name': "Demo User";
522
531
  readonly 'core.module.generic.generic-select.detail-link': "details";
532
+ readonly 'core.component.query-bar.search-placeholder': "Search...";
533
+ readonly 'core.component.query-bar.no-fields': "No fields configured";
534
+ readonly 'core.component.query-bar.add-filter': "Add filter";
535
+ readonly 'core.component.query-bar.clear-all': "Clear all ({count})";
536
+ readonly 'core.component.query-bar.search': "Search";
537
+ readonly 'core.component.query-bar.logic-operator': "Logic operator";
538
+ readonly 'core.component.query-bar.boolean.true': "Yes";
539
+ readonly 'core.component.query-bar.boolean.false': "No";
540
+ readonly 'core.component.query-bar.placeholder.value': "value";
541
+ readonly 'core.component.query-bar.placeholder.text': "type…";
542
+ readonly 'core.component.query-bar.placeholder.from-number': "From";
543
+ readonly 'core.component.query-bar.placeholder.to-number': "To";
544
+ readonly 'core.component.query-bar.placeholder.from-text': "from…";
545
+ readonly 'core.component.query-bar.placeholder.to-text': "to…";
546
+ readonly 'core.component.query-bar.swap-field': "Swap field";
547
+ readonly 'core.component.query-bar.placeholder.select-value': "Select value";
548
+ readonly 'core.component.query-bar.placeholder.enter-value': "Enter value";
549
+ readonly 'core.component.query-bar.loading-values': "Loading...";
550
+ readonly 'core.component.query-bar.field-empty': "No fields configured yet.";
551
+ readonly 'core.component.query-bar.saved-filters.tooltip': "Saved filters";
552
+ readonly 'core.component.query-bar.saved-filters.tooltip-disabled': "Requires [savedFiltersKey] to enable";
553
+ readonly 'core.component.query-bar.saved-filters.delete': "Delete filter";
554
+ readonly 'core.component.query-bar.saved-filters.empty': "No saved filters yet.";
555
+ readonly 'core.component.query-bar.saved-filters.save': "Save current filter";
556
+ readonly 'core.component.query-bar.saved-filters.name-label': "Filter name";
557
+ readonly 'core.component.query-builder.date-mode.absolute': "Specific date";
558
+ readonly 'core.component.query-builder.date-mode.now': "Today";
559
+ readonly 'core.component.query-builder.date-mode.relative': "Relative";
560
+ readonly 'core.component.query-builder.value-source.literal': "Enter a value";
561
+ readonly 'core.component.query-builder.value-source.field': "Compare with field";
562
+ readonly 'core.component.query-builder.relative.hour-previous': "hours ago";
563
+ readonly 'core.component.query-builder.relative.hour-next': "hours from now";
564
+ readonly 'core.component.query-builder.relative.day-previous': "days ago";
565
+ readonly 'core.component.query-builder.relative.day-next': "days from now";
566
+ readonly 'core.component.query-builder.relative.week-previous': "weeks ago";
567
+ readonly 'core.component.query-builder.relative.week-next': "weeks from now";
568
+ readonly 'core.component.query-builder.relative.month-previous': "months ago";
569
+ readonly 'core.component.query-builder.relative.month-next': "months from now";
570
+ readonly 'core.component.query-builder.relative.format': "{amount} {phrase}";
571
+ readonly 'core.component.query-builder.add': "Add";
572
+ readonly 'core.component.query-builder.add-node': "Add a condition or group";
573
+ readonly 'core.component.query-builder.condition': "Condition";
574
+ readonly 'core.component.query-builder.group': "Group";
575
+ readonly 'core.component.query-builder.remove-group': "Remove group";
576
+ readonly 'core.component.query-builder.remove-condition': "Remove condition";
577
+ readonly 'core.component.query-builder.empty': "No conditions yet";
578
+ readonly 'core.component.query-builder.select-field': "Select field";
579
+ readonly 'core.component.query-builder.value': "Value";
580
+ readonly 'core.component.query-builder.from': "From";
581
+ readonly 'core.component.query-builder.to': "To";
582
+ readonly 'core.component.query-builder.boolean.true': "Yes";
583
+ readonly 'core.component.query-builder.boolean.false': "No";
584
+ readonly 'core.component.tree.selected-count': "{count} item(s) selected";
585
+ readonly 'core.component.tree.expand': "Expand tree item";
586
+ readonly 'core.component.tree.collapse': "Collapse tree item";
587
+ readonly 'core.component.tree.retry-item': "Retry loading tree item";
588
+ readonly 'core.component.tree.load-error': "Unable to load tree data";
589
+ readonly 'core.directive.hover-copy.copied': "Copied";
590
+ readonly 'core.module.layout.sidebar.pinned': "Pinned";
591
+ readonly 'core.module.layout.sidebar.recent': "Recent";
592
+ readonly 'core.module.layout.sidebar.all-menu': "All menus";
593
+ readonly 'core.module.layout.menu.pin': "Pin {title}";
594
+ readonly 'core.module.layout.menu.unpin': "Unpin {title}";
595
+ readonly 'core.form.date.open-picker': "Open calendar";
596
+ readonly 'core.form.datetime.open-picker': "Open calendar";
597
+ readonly 'core.form.date-range.open-picker': "Open calendar";
598
+ readonly 'core.form.date-range.clear': "Clear date range";
599
+ readonly 'core.form.select.search': "Search";
600
+ readonly 'core.component.table.loading': "Loading table data";
601
+ readonly 'core.component.upload-file.loading': "Uploading file";
602
+ readonly 'core.component.import-excel.loading': "Loading data";
603
+ readonly 'core.component.upload-file.remove': "Remove file";
604
+ readonly 'core.component.upload-file.zoom': "Zoom image";
605
+ readonly 'core.component.upload-file.view-all': "View all images";
606
+ readonly 'core.component.form-builder.canvas': "Form design canvas";
523
607
  };
@@ -1,2 +1,2 @@
1
- import type { Language } from './i18n.types';
1
+ import type { Language } from '@sdcorejs/utils/models';
2
2
  export declare const I18N_MESSAGES: Record<Language, Readonly<Record<string, string>>>;
@@ -1,9 +1,9 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import { I18nParams } from './i18n.types';
3
3
  import * as i0 from "@angular/core";
4
- export declare class TranslatePipe implements PipeTransform {
4
+ export declare class SdTranslatePipe implements PipeTransform {
5
5
  #private;
6
6
  transform(key: string, params?: I18nParams): string;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<TranslatePipe, never>;
8
- static ɵpipe: i0.ɵɵPipeDeclaration<TranslatePipe, "translate", true>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdTranslatePipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<SdTranslatePipe, "sdTranslate", true>;
9
9
  }
@@ -1,5 +1,6 @@
1
1
  import { Signal } from '@angular/core';
2
- import { I18nParams, Language } from './i18n.types';
2
+ import { I18nParams } from './i18n.types';
3
+ import { Language } from '@sdcorejs/utils/models';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class I18nService {
5
6
  #private;