@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
@@ -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";
@@ -470,6 +466,8 @@ export declare const EN_MESSAGES: {
470
466
  readonly 'core.component.table.error-occurred': "An error occurred";
471
467
  readonly 'core.component.table.not-an-array': "Data is not an array";
472
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";
473
471
  readonly 'core.component.table.popup-export.select-columns': "Please select columns to export";
474
472
  readonly 'core.component.table.selector-action.default-msg': "items selected";
475
473
  readonly 'core.component.tab-router.too-many-tabs': "You have opened too many tabs.";
@@ -498,6 +496,13 @@ export declare const EN_MESSAGES: {
498
496
  readonly 'core.module.layout.user.notification': "Notifications";
499
497
  readonly 'core.module.layout.sidebar.search': "Search";
500
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";
501
506
  readonly 'core.module.layout.greeting.hello': "Hello, {name}";
502
507
  readonly 'core.module.layout.weekday.0': "Sunday";
503
508
  readonly 'core.module.layout.weekday.1': "Monday";
@@ -524,4 +529,79 @@ export declare const EN_MESSAGES: {
524
529
  readonly 'core.module.layout.home.feature.integration': "Integration";
525
530
  readonly 'core.module.layout.mock.user.full-name': "Demo User";
526
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";
527
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;
@@ -1,7 +1,4 @@
1
1
  import type { EN_MESSAGES } from './en';
2
- import { SUPPORTED_LANGUAGES, type Language } from '@sdcorejs/angular/models';
3
- export { SUPPORTED_LANGUAGES };
4
- export type { Language };
5
2
  export type I18nKey = keyof typeof EN_MESSAGES;
6
3
  export type I18nParams = Record<string, string | number>;
7
4
  /**
@@ -1,10 +1,20 @@
1
1
  import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
2
+ import { InjectionToken } from '@angular/core';
2
3
  import { Observable } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
5
+ /**
6
+ * URL dùng để dò kết nối khi một request trả về status 0.
7
+ *
8
+ * why: bản cũ hard-code `https://jsonplaceholder.typicode.com/todos/1`, không override được. Mọi
9
+ * app tiêu dùng thư viện đều ping một bên thứ ba lạ mỗi 3 giây khi mất mạng, và vì probe đi qua
10
+ * NGUYÊN chuỗi interceptor của app nên bất kỳ interceptor nào gắn header auth vô điều kiện đều
11
+ * rò token ra ngoài origin. Mặc định giờ là một đường dẫn same-origin; app đổi bằng cách provide
12
+ * lại token này (nên trỏ tới endpoint tĩnh, rẻ, không cần auth).
13
+ */
14
+ export declare const SD_NO_INTERNET_PROBE_URL: InjectionToken<string>;
4
15
  export declare class SdNoInternetInterceptor implements HttpInterceptor {
5
16
  #private;
6
17
  private snackBar;
7
- private injector;
8
18
  /** Inserted by Angular inject() migration for backwards compatibility */
9
19
  constructor(...args: unknown[]);
10
20
  intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
@@ -1,4 +1,4 @@
1
- export interface SdAuthInfo<T = any> {
1
+ export interface SdAuthInfo<T = unknown> {
2
2
  id?: string;
3
3
  username?: string;
4
4
  firstName?: string;
@@ -2,6 +2,7 @@ import Keycloak from 'keycloak-js';
2
2
  import { SdKeycloakTenantConfig } from './keycloak.configuration';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SdKeycloakService {
5
+ #private;
5
6
  keycloak: Keycloak;
6
7
  config: SdKeycloakTenantConfig;
7
8
  init(config: SdKeycloakTenantConfig): Promise<boolean>;
@@ -10,6 +10,8 @@ interface SdLayoutMenuTreeNode {
10
10
  isActive: boolean;
11
11
  isPinned: boolean;
12
12
  isPinVisible: boolean;
13
+ /** Accessible name of the pin toggle — already i18n-resolved with the menu title interpolated. */
14
+ pinLabel: string;
13
15
  }
14
16
  export declare class SdLayoutMenuTreeComponent {
15
17
  #private;
@@ -2,7 +2,7 @@ import { Params } from '@angular/router';
2
2
  import { SdLayoutUserInfo, SidebarConfigurationV1 } from '../../../../configurations';
3
3
  import { SdLayoutMenu } from '../../../../services';
4
4
  import * as i0 from "@angular/core";
5
- export declare class SidebarMobileOverlayComponent {
5
+ export declare class SdSidebarMobileOverlay {
6
6
  #private;
7
7
  isShowSidebar: import("@angular/core").InputSignal<boolean>;
8
8
  menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
@@ -30,6 +30,6 @@ export declare class SidebarMobileOverlayComponent {
30
30
  getQueryParams(menu: SdLayoutMenu): Params;
31
31
  onUserMenuOpened: () => void;
32
32
  onUserMenuClosed: () => void;
33
- static ɵfac: i0.ɵɵFactoryDeclaration<SidebarMobileOverlayComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<SidebarMobileOverlayComponent, "sd-sidebar-mobile-overlay", never, { "isShowSidebar": { "alias": "isShowSidebar"; "required": false; "isSignal": true; }; "menus": { "alias": "menus"; "required": true; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; }, { "showSideBar": "showSideBar"; "expandSideBar": "expandSideBar"; "popupUserMenuOpened": "popupUserMenuOpened"; "popupUserMenuClosed": "popupUserMenuClosed"; "titleMenuGroupChanged": "titleMenuGroupChanged"; }, never, never, true, never>;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdSidebarMobileOverlay, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdSidebarMobileOverlay, "sd-sidebar-mobile-overlay", never, { "isShowSidebar": { "alias": "isShowSidebar"; "required": false; "isSignal": true; }; "menus": { "alias": "menus"; "required": true; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; }, { "showSideBar": "showSideBar"; "expandSideBar": "expandSideBar"; "popupUserMenuOpened": "popupUserMenuOpened"; "popupUserMenuClosed": "popupUserMenuClosed"; "titleMenuGroupChanged": "titleMenuGroupChanged"; }, never, never, true, never>;
35
35
  }