@sdcorejs/angular 19.1.6 → 19.2.1

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 (374) 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/api-contract-builder/index.d.ts +8 -0
  7. package/components/api-contract-builder/src/api-contract-builder.component.d.ts +123 -0
  8. package/components/api-contract-builder/src/api-contract.configuration.d.ts +41 -0
  9. package/components/api-contract-builder/src/api-contract.expression.d.ts +43 -0
  10. package/components/api-contract-builder/src/api-contract.model.d.ts +167 -0
  11. package/components/api-contract-builder/src/api-contract.samples.d.ts +25 -0
  12. package/components/api-contract-builder/src/api-contract.schema.d.ts +126 -0
  13. package/components/api-contract-builder/src/api-contract.serializer.d.ts +17 -0
  14. package/components/api-contract-builder/src/api-contract.validation.d.ts +12 -0
  15. package/components/api-contract-builder/src/components/api-contract-diagnostic-list.component.d.ts +18 -0
  16. package/components/api-contract-builder/src/components/api-contract-node-drawer.component.d.ts +130 -0
  17. package/components/api-contract-builder/src/components/api-contract-node-editor.component.d.ts +35 -0
  18. package/components/api-contract-builder/src/components/api-contract-node-summary.component.d.ts +41 -0
  19. package/components/api-contract-builder/src/components/api-contract-record-editor.component.d.ts +36 -0
  20. package/components/api-contract-builder/src/components/api-contract-source-editor.component.d.ts +86 -0
  21. package/components/api-contract-builder/src/components/api-contract-suggestion.model.d.ts +17 -0
  22. package/components/badge/src/badge.component.d.ts +2 -0
  23. package/components/ckeditor-styles/src/ckeditor-styles.component.d.ts +1 -1
  24. package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +2 -1
  25. package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +3 -1
  26. package/components/form-generic/src/components/form-render/components/item/components/checkbox/checkbox.component.d.ts +34 -0
  27. package/components/form-generic/src/components/form-render/components/item/components/index.d.ts +1 -0
  28. package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +6 -1
  29. package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +1 -1
  30. package/components/form-generic/src/configurations/form.configuration.d.ts +1 -1
  31. package/components/form-generic/src/models/form-generic-component.model.d.ts +8 -8
  32. package/components/form-generic/src/models/form-generic-definition-selection.model.d.ts +5 -5
  33. package/components/form-generic/src/models/form-generic-expression.model.d.ts +12 -12
  34. package/components/form-generic/src/models/index.d.ts +1 -0
  35. package/components/form-generic/src/services/form-generic.service.d.ts +2 -2
  36. package/components/import-excel/src/import-excel.component.d.ts +1 -0
  37. package/components/index.d.ts +7 -1
  38. package/components/mini-editor/src/mini-editor.model.d.ts +1 -1
  39. package/components/modal/src/modal.component.d.ts +3 -2
  40. package/components/modal-resizable/src/modal-resizable.component.d.ts +92 -0
  41. package/components/modal-resizable/src/modal-resizable.registry.d.ts +22 -0
  42. package/components/org-chart/src/org-chart.component.d.ts +6 -0
  43. package/components/preview/src/preview-image/preview-image.component.d.ts +1 -0
  44. package/components/query-bar/src/components/actions-bar/actions-bar.component.d.ts +6 -2
  45. package/components/query-bar/src/components/build-chip/build-chip.component.d.ts +4 -1
  46. package/components/query-bar/src/components/chip-popover/chip-popover.component.d.ts +8 -0
  47. package/components/query-bar/src/components/field-picker/field-picker.component.d.ts +2 -0
  48. package/components/query-bar/src/components/inline-chip/inline-chip.component.d.ts +2 -0
  49. package/components/query-bar/src/components/inline-value-chip/inline-value-chip.component.d.ts +3 -3
  50. package/components/query-bar/src/components/saved-filters-menu/saved-filters-menu.component.d.ts +9 -4
  51. package/components/query-bar/src/query-bar.component.d.ts +32 -5
  52. package/components/query-bar/src/query-bar.model.d.ts +15 -12
  53. package/components/query-builder/src/query-builder.component.d.ts +76 -39
  54. package/components/query-builder/src/query-builder.model.d.ts +59 -52
  55. package/components/query-builder/src/query-builder.serializer.d.ts +15 -6
  56. package/components/section/src/section.component.d.ts +5 -0
  57. package/components/side-drawer/src/body-scroll-lock.service.d.ts +10 -0
  58. package/components/splitter/src/splitter-handle/splitter-handle.component.d.ts +1 -0
  59. package/components/tab-router/index.d.ts +2 -1
  60. package/components/tab-router/src/actions/tab-router.action.d.ts +2 -2
  61. package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +2 -2
  62. package/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.d.ts +3 -3
  63. package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +3 -3
  64. package/components/tab-router/src/decorators/tab.decorator.d.ts +13 -1
  65. package/components/tab-router/src/events/tab-router.event.d.ts +3 -3
  66. package/components/tab-router/src/models/tab-router.model.d.ts +2 -2
  67. package/components/tab-router/src/pipes/tab-info.pipe.d.ts +2 -2
  68. package/components/tab-router/src/services/tab-router.service.d.ts +9 -9
  69. package/components/table/index.d.ts +1 -0
  70. package/components/table/src/components/config/config.component.d.ts +6 -1
  71. package/components/table/src/components/desktop-cell/view/view.component.d.ts +1 -0
  72. package/components/table/src/components/filter/external-filter/external-filter.component.d.ts +1 -1
  73. package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts +1 -1
  74. package/components/table/src/components/selector-action/action-filter.pipe.d.ts +8 -1
  75. package/components/table/src/components/selector-action/selector-action.component.d.ts +2 -0
  76. package/components/table/src/directives/index.d.ts +1 -0
  77. package/components/table/src/directives/sd-table-command-header-def.directive.d.ts +24 -0
  78. package/components/table/src/models/table-column.model.d.ts +30 -13
  79. package/components/table/src/models/table-item.model.d.ts +30 -1
  80. package/components/table/src/models/table-option-selector.model.d.ts +5 -4
  81. package/components/table/src/models/table-option.model.d.ts +12 -0
  82. package/components/table/src/pipes/sd-group.pipe.d.ts +6 -2
  83. package/components/table/src/services/table-filter/table-filter.model.d.ts +15 -15
  84. package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
  85. package/components/table/src/services/table-format/table-format.service.d.ts +1 -1
  86. package/components/table/src/services/table-selection/selection-action.util.d.ts +24 -0
  87. package/components/table/src/services/table-selection/table-selection.util.d.ts +31 -0
  88. package/components/table/src/services/tree/tree.util.d.ts +3 -2
  89. package/components/table/src/table.component.d.ts +51 -5
  90. package/components/tree/src/tree-item-def.directive.d.ts +1 -1
  91. package/components/tree/src/tree.component.d.ts +16 -4
  92. package/components/tree/src/tree.model.d.ts +31 -25
  93. package/components/upload-file/src/configurations/upload-file.configuration.d.ts +2 -2
  94. package/components/upload-file/src/upload-file.component.d.ts +4 -1
  95. package/configurations/src/sd-core.configuration.d.ts +1 -2
  96. package/fesm2022/sdcorejs-angular-components-anchor.mjs +36 -12
  97. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  98. package/fesm2022/sdcorejs-angular-components-api-contract-builder.mjs +3411 -0
  99. package/fesm2022/sdcorejs-angular-components-api-contract-builder.mjs.map +1 -0
  100. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +2 -2
  101. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
  102. package/fesm2022/sdcorejs-angular-components-badge.mjs +27 -2
  103. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  104. package/fesm2022/sdcorejs-angular-components-button.mjs +2 -2
  105. package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
  106. package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs +1 -1
  107. package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
  108. package/fesm2022/sdcorejs-angular-components-code-editor.mjs +3 -3
  109. package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
  110. package/fesm2022/sdcorejs-angular-components-data-state.mjs +3 -3
  111. package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -1
  112. package/fesm2022/sdcorejs-angular-components-editor.mjs +2 -2
  113. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  114. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +324 -192
  115. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  116. package/fesm2022/sdcorejs-angular-components-history.mjs +4 -4
  117. package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
  118. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +13 -5
  119. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  120. package/fesm2022/sdcorejs-angular-components-inform.mjs +3 -3
  121. package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
  122. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +164 -8
  123. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
  124. package/fesm2022/sdcorejs-angular-components-modal.mjs +30 -18
  125. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  126. package/fesm2022/sdcorejs-angular-components-operator.mjs +2 -2
  127. package/fesm2022/sdcorejs-angular-components-operator.mjs.map +1 -1
  128. package/fesm2022/sdcorejs-angular-components-org-chart.mjs +60 -13
  129. package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
  130. package/fesm2022/sdcorejs-angular-components-preview.mjs +27 -17
  131. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  132. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +192 -30
  133. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  134. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +187 -127
  135. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  136. package/fesm2022/sdcorejs-angular-components-section.mjs +33 -2
  137. package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
  138. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +83 -24
  139. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  140. package/fesm2022/sdcorejs-angular-components-splitter.mjs +57 -21
  141. package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
  142. package/fesm2022/sdcorejs-angular-components-stepper.mjs +2 -2
  143. package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
  144. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +68 -20
  145. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  146. package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -2
  147. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  148. package/fesm2022/sdcorejs-angular-components-table.mjs +555 -267
  149. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  150. package/fesm2022/sdcorejs-angular-components-tree.mjs +80 -17
  151. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  152. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +48 -13
  153. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  154. package/fesm2022/sdcorejs-angular-components.mjs +7 -1
  155. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  156. package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
  157. package/fesm2022/sdcorejs-angular-directives.mjs +45 -8
  158. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  159. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +40 -29
  160. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  161. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +5 -5
  162. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  163. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +67 -50
  164. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  165. package/fesm2022/sdcorejs-angular-forms-chip.mjs +57 -43
  166. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  167. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +231 -60
  168. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  169. package/fesm2022/sdcorejs-angular-forms-date.mjs +95 -23
  170. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  171. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +130 -26
  172. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  173. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +39 -15
  174. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -1
  175. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +16 -5
  176. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  177. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +24 -9
  178. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  179. package/fesm2022/sdcorejs-angular-forms-input.mjs +58 -10
  180. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  181. package/fesm2022/sdcorejs-angular-forms-models.mjs +227 -6
  182. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  183. package/fesm2022/sdcorejs-angular-forms-radio.mjs +4 -4
  184. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  185. package/fesm2022/sdcorejs-angular-forms-select.mjs +135 -37
  186. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  187. package/fesm2022/sdcorejs-angular-forms-switch.mjs +18 -3
  188. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  189. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +51 -62
  190. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  191. package/fesm2022/sdcorejs-angular-forms-time-range.mjs +57 -12
  192. package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -1
  193. package/fesm2022/sdcorejs-angular-forms-time.mjs +16 -5
  194. package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -1
  195. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +100 -9
  196. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -1
  197. package/fesm2022/sdcorejs-angular-forms.mjs +91 -46
  198. package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
  199. package/fesm2022/sdcorejs-angular-handlers.mjs +18 -3
  200. package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
  201. package/fesm2022/sdcorejs-angular-i18n.mjs +895 -68
  202. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  203. package/fesm2022/sdcorejs-angular-interceptors.mjs +87 -29
  204. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  205. package/fesm2022/sdcorejs-angular-modules-auth.mjs +25 -15
  206. package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
  207. package/fesm2022/sdcorejs-angular-modules-icon.mjs +2 -2
  208. package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
  209. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +32 -3
  210. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
  211. package/fesm2022/sdcorejs-angular-modules-layout.mjs +342 -111
  212. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  213. package/fesm2022/sdcorejs-angular-modules-permission.mjs +177 -40
  214. package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
  215. package/fesm2022/sdcorejs-angular-pipes.mjs +62 -28
  216. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  217. package/fesm2022/sdcorejs-angular-services-api.mjs +123 -13
  218. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  219. package/fesm2022/sdcorejs-angular-services-cache.mjs +53 -3
  220. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  221. package/fesm2022/sdcorejs-angular-services-confirm.mjs +25 -73
  222. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  223. package/fesm2022/sdcorejs-angular-services-excel.mjs +12 -10
  224. package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
  225. package/fesm2022/sdcorejs-angular-services-loading.mjs +75 -84
  226. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  227. package/fesm2022/sdcorejs-angular-services-notify.mjs +46 -5
  228. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  229. package/fesm2022/sdcorejs-angular-services-storage.mjs +4 -0
  230. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  231. package/fesm2022/sdcorejs-angular-services.mjs +0 -1
  232. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  233. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +225 -80
  234. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
  235. package/fesm2022/sdcorejs-angular-utilities-models.mjs +1 -63
  236. package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
  237. package/fesm2022/sdcorejs-angular.mjs +17 -10
  238. package/fesm2022/sdcorejs-angular.mjs.map +1 -1
  239. package/forms/autocomplete/src/autocomplete.component.d.ts +5 -2
  240. package/forms/chip-calendar/src/chip-calendar.component.d.ts +10 -0
  241. package/forms/date/src/date.component.d.ts +13 -2
  242. package/forms/date-range/src/date-range.component.d.ts +13 -2
  243. package/forms/datetime/src/datetime.component.d.ts +13 -2
  244. package/forms/entity-picker/src/entity-picker.component.d.ts +9 -3
  245. package/forms/input/src/input.component.d.ts +3 -0
  246. package/forms/input-color/src/input-color.component.d.ts +4 -0
  247. package/forms/input-number/src/input-number.component.d.ts +3 -0
  248. package/forms/models/index.d.ts +3 -0
  249. package/forms/models/src/sd-form-control-connector.d.ts +12 -0
  250. package/forms/models/src/sd-model-facing-control.d.ts +43 -0
  251. package/forms/models/src/sd-search.model.d.ts +1 -1
  252. package/forms/models/src/sd-selection-data.model.d.ts +1 -1
  253. package/forms/models/src/sd-temporal-transform.d.ts +31 -0
  254. package/forms/models/src/sd-timer-scope.d.ts +29 -0
  255. package/forms/select/src/select.component.d.ts +27 -4
  256. package/forms/src/forms.module.d.ts +22 -13
  257. package/forms/switch/src/switch.component.d.ts +5 -0
  258. package/forms/textarea/src/textarea.component.d.ts +5 -3
  259. package/forms/time-range/src/time-range.component.d.ts +22 -1
  260. package/forms/tree-select/src/tree-select.component.d.ts +36 -5
  261. package/i18n/src/en.d.ts +170 -10
  262. package/i18n/src/i18n.messages.d.ts +1 -1
  263. package/i18n/src/i18n.pipe.d.ts +3 -3
  264. package/i18n/src/i18n.service.d.ts +2 -1
  265. package/i18n/src/i18n.types.d.ts +0 -3
  266. package/interceptors/no-internet/no-internet.interceptor.d.ts +11 -1
  267. package/modules/auth/services/auth.model.d.ts +1 -1
  268. package/modules/keycloak/keycloak.service.d.ts +1 -0
  269. package/modules/layout/components/shared/menu-tree/menu-tree.component.d.ts +2 -0
  270. package/modules/layout/components/sidebar-mobile-v1/components/sidebar/sidebar.component.d.ts +3 -3
  271. package/modules/layout/components/sidebar-mobile-v1/main.component.d.ts +3 -3
  272. package/modules/layout/components/sidebar-mobile-v2/main.component.d.ts +3 -3
  273. package/modules/layout/components/sidebar-mobile-v3/main.component.d.ts +3 -3
  274. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +16 -3
  275. package/modules/layout/components/sidebar-v1/main.component.d.ts +3 -3
  276. package/modules/layout/components/sidebar-v2/main.component.d.ts +3 -3
  277. package/modules/layout/components/sidebar-v3/main.component.d.ts +3 -3
  278. package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +5 -0
  279. package/modules/layout/modules/not-found/pages/root/root.component.d.ts +5 -0
  280. package/modules/layout/services/layout.service.d.ts +21 -0
  281. package/modules/layout/services/storage/storage.service.d.ts +52 -7
  282. package/modules/permission/src/configurations/permission.configuration.d.ts +11 -0
  283. package/modules/permission/src/directives/permission.directive.d.ts +2 -1
  284. package/modules/permission/src/services/permission.service.d.ts +52 -1
  285. package/package.json +40 -29
  286. package/pipes/src/safe-html.pipe.d.ts +26 -4
  287. package/pipes/src/time-different.pipe.d.ts +1 -0
  288. package/public-api.d.ts +11 -10
  289. package/services/api/src/api-host.d.ts +15 -0
  290. package/services/api/src/api.model.d.ts +14 -0
  291. package/services/api/src/api.module.d.ts +6 -0
  292. package/services/cache/src/cache.model.d.ts +10 -0
  293. package/services/index.d.ts +0 -1
  294. package/services/notify/index.d.ts +1 -1
  295. package/utilities/extensions/index.d.ts +1 -5
  296. package/utilities/extensions/src/url-safety.d.ts +72 -0
  297. package/utilities/extensions/src/utility.extension.d.ts +9 -5
  298. package/utilities/models/index.d.ts +0 -10
  299. package/components/base/index.d.ts +0 -1
  300. package/components/base/src/base-secure.component.d.ts +0 -8
  301. package/components/document-builder/index.d.ts +0 -4
  302. package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +0 -15
  303. package/components/document-builder/src/components/header-footer-builder/plugins/page-number.plugin.d.ts +0 -4
  304. package/components/document-builder/src/components/index.d.ts +0 -1
  305. package/components/document-builder/src/document-builder.component.d.ts +0 -53
  306. package/components/document-builder/src/document-builder.config.d.ts +0 -21
  307. package/components/document-builder/src/document-builder.model.d.ts +0 -41
  308. package/components/document-builder/src/document-builder.utils.d.ts +0 -10
  309. package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +0 -9
  310. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +0 -44
  311. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +0 -57
  312. package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +0 -5
  313. package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +0 -4
  314. package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +0 -31
  315. package/components/document-builder/src/plugins/image-upload/image-upload.plugin.d.ts +0 -5
  316. package/components/document-builder/src/plugins/index.d.ts +0 -11
  317. package/components/document-builder/src/plugins/page-orientation/page-orientation.plugin.d.ts +0 -24
  318. package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +0 -14
  319. package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +0 -15
  320. package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +0 -25
  321. package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +0 -29
  322. package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +0 -35
  323. package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +0 -15
  324. package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +0 -15
  325. package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +0 -15
  326. package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +0 -15
  327. package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +0 -15
  328. package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +0 -15
  329. package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +0 -54
  330. package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +0 -27
  331. package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +0 -16
  332. package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +0 -25
  333. package/components/document-builder/src/plugins/paste-handler/index.d.ts +0 -35
  334. package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +0 -31
  335. package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +0 -31
  336. package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +0 -29
  337. package/components/document-builder/src/plugins/paste-handler/types.d.ts +0 -30
  338. package/components/document-builder/src/plugins/table-custom/index.d.ts +0 -34
  339. package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +0 -51
  340. package/components/table/src/pipes/selection-visible-select-all.pipe.d.ts +0 -9
  341. package/fesm2022/sdcorejs-angular-components-base.mjs +0 -23
  342. package/fesm2022/sdcorejs-angular-components-base.mjs.map +0 -1
  343. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +0 -5038
  344. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +0 -1
  345. package/fesm2022/sdcorejs-angular-models.mjs +0 -6
  346. package/fesm2022/sdcorejs-angular-models.mjs.map +0 -1
  347. package/fesm2022/sdcorejs-angular-services-docx.mjs +0 -291
  348. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +0 -1
  349. package/fesm2022/sdcorejs-angular-services-license.mjs +0 -97
  350. package/fesm2022/sdcorejs-angular-services-license.mjs.map +0 -1
  351. package/models/index.d.ts +0 -1
  352. package/models/src/language.model.d.ts +0 -2
  353. package/services/docx/index.d.ts +0 -1
  354. package/services/docx/src/lib/docx.model.d.ts +0 -9
  355. package/services/docx/src/lib/docx.service.d.ts +0 -14
  356. package/services/docx/src/lib/pandoc-core.d.ts +0 -11
  357. package/services/docx/src/public-api.d.ts +0 -2
  358. package/services/license/index.d.ts +0 -1
  359. package/services/license/src/license.service.d.ts +0 -9
  360. package/utilities/extensions/src/array.extension.d.ts +0 -1
  361. package/utilities/extensions/src/color.extension.d.ts +0 -5
  362. package/utilities/extensions/src/date.extension.d.ts +0 -1
  363. package/utilities/extensions/src/number.extension.d.ts +0 -1
  364. package/utilities/extensions/src/string.extension.d.ts +0 -50
  365. package/utilities/models/src/color.model.d.ts +0 -4
  366. package/utilities/models/src/empty.model.d.ts +0 -4
  367. package/utilities/models/src/filter.model.d.ts +0 -12
  368. package/utilities/models/src/maybe-async.model.d.ts +0 -10
  369. package/utilities/models/src/nested-key-of.model.d.ts +0 -4
  370. package/utilities/models/src/operator.model.d.ts +0 -13
  371. package/utilities/models/src/order.model.d.ts +0 -4
  372. package/utilities/models/src/paging.model.d.ts +0 -8
  373. package/utilities/models/src/pattern.model.d.ts +0 -21
  374. 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";
@@ -136,6 +133,8 @@ export declare const EN_MESSAGES: {
136
133
  readonly 'core.form.tree-select.cancel': "Cancel";
137
134
  readonly 'core.form.tree-select.apply': "Apply";
138
135
  readonly 'core.component.tree.retry': "Retry";
136
+ readonly 'core.component.section.expand': "Expand {title}";
137
+ readonly 'core.component.section.collapse': "Collapse {title}";
139
138
  readonly 'core.service.unsaved-changes.message': "You have unsaved changes. Discard them and continue?";
140
139
  readonly 'core.component.job-progress.status.idle': "Ready";
141
140
  readonly 'core.component.job-progress.status.queued': "Queued";
@@ -177,7 +176,6 @@ export declare const EN_MESSAGES: {
177
176
  readonly 'core.form.time-range.step': "Times must align to a {step}-minute interval";
178
177
  readonly 'core.form.time-range.from': "From";
179
178
  readonly 'core.form.time-range.to': "To";
180
- readonly 'core.form.time-range.clear': "Clear time range";
181
179
  readonly 'core.form.time-spinner.hour': "Hour";
182
180
  readonly 'core.form.time-spinner.minute': "Minute";
183
181
  readonly 'core.form.time-spinner.second': "Second";
@@ -196,6 +194,7 @@ export declare const EN_MESSAGES: {
196
194
  readonly 'core.form.checkbox.checked': "Yes";
197
195
  readonly 'core.form.checkbox.unchecked': "No";
198
196
  readonly 'core.form.select.required': "Please enter information";
197
+ readonly 'core.form.select.selectAll': "All";
199
198
  readonly 'core.form.textarea.required': "Please enter information";
200
199
  readonly 'core.form.textarea.maxlength': "Maximum characters: {max}";
201
200
  readonly 'core.form.textarea.invalid-pattern': "Invalid format";
@@ -209,12 +208,6 @@ export declare const EN_MESSAGES: {
209
208
  readonly 'core.component.editor.image.max-width': "Image width {width}px exceeds the limit of {max}px";
210
209
  readonly 'core.component.editor.image.max-height': "Image height {height}px exceeds the limit of {max}px";
211
210
  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
211
  readonly 'core.component.form-builder.field-key': "Field key";
219
212
  readonly 'core.component.form-builder.display': "Display";
220
213
  readonly 'core.component.form-builder.general': "General";
@@ -228,6 +221,7 @@ export declare const EN_MESSAGES: {
228
221
  readonly 'core.component.form-builder.required-when': "Required when";
229
222
  readonly 'core.component.form-builder.confirm': "Confirm";
230
223
  readonly 'core.component.form-builder.delete': "Delete";
224
+ readonly 'core.component.form-builder.select-item': "Select to edit";
231
225
  readonly 'core.component.form-builder.save': "Save";
232
226
  readonly 'core.component.form-builder.hint': "Hint";
233
227
  readonly 'core.component.form-builder.parameter': "Parameters";
@@ -299,9 +293,13 @@ export declare const EN_MESSAGES: {
299
293
  readonly 'core.component.form-builder.display-label': "Display label";
300
294
  readonly 'core.component.form-builder.attribute': "Attribute";
301
295
  readonly 'core.component.form-builder.add-variable': "Add variable";
296
+ readonly 'core.component.form-builder.no-variable': "No variables yet. Add one to use it in condition expressions.";
297
+ readonly 'core.component.form-builder.no-validation': "No validations yet. Add one to show a warning or an error on a condition.";
302
298
  readonly 'core.component.form-builder.add-new': "Add new";
303
299
  readonly 'core.component.form-builder.detail': "Details";
304
300
  readonly 'core.component.form-builder.create-update': "Create/update";
301
+ readonly 'core.component.form-builder.update-row': "Update row";
302
+ readonly 'core.component.form-builder.add-row': "Add row";
305
303
  readonly 'core.component.form-builder.default': "Default";
306
304
  readonly 'core.component.form-builder.show-more': "Show more";
307
305
  readonly 'core.component.form-builder.show-less': "Show less";
@@ -470,6 +468,8 @@ export declare const EN_MESSAGES: {
470
468
  readonly 'core.component.table.error-occurred': "An error occurred";
471
469
  readonly 'core.component.table.not-an-array': "Data is not an array";
472
470
  readonly 'core.component.table.config.confirm-reset': "Confirm reset all settings to defaults";
471
+ readonly 'core.component.table.config.drag-hint': "Drag the ⠿ handle to reorder columns";
472
+ readonly 'core.component.table.config.drag-handle': "Drag to reorder column";
473
473
  readonly 'core.component.table.popup-export.select-columns': "Please select columns to export";
474
474
  readonly 'core.component.table.selector-action.default-msg': "items selected";
475
475
  readonly 'core.component.tab-router.too-many-tabs': "You have opened too many tabs.";
@@ -498,6 +498,13 @@ export declare const EN_MESSAGES: {
498
498
  readonly 'core.module.layout.user.notification': "Notifications";
499
499
  readonly 'core.module.layout.sidebar.search': "Search";
500
500
  readonly 'core.module.layout.sidebar.toggle': "Toggle sidebar";
501
+ readonly 'core.module.layout.sidebar.menu-groups': "Menu groups";
502
+ readonly 'core.module.layout.sidebar.close-menu': "Close menu";
503
+ readonly 'core.module.layout.sidebar.search-in-group': "Search this group";
504
+ readonly 'core.module.layout.sidebar.primary-nav': "Primary navigation";
505
+ readonly 'core.module.layout.sidebar.more-menu': "More menus";
506
+ readonly 'core.module.layout.sidebar.more': "More";
507
+ readonly 'core.module.layout.sidebar.search-in-menu': "Search menus";
501
508
  readonly 'core.module.layout.greeting.hello': "Hello, {name}";
502
509
  readonly 'core.module.layout.weekday.0': "Sunday";
503
510
  readonly 'core.module.layout.weekday.1': "Monday";
@@ -524,4 +531,157 @@ export declare const EN_MESSAGES: {
524
531
  readonly 'core.module.layout.home.feature.integration': "Integration";
525
532
  readonly 'core.module.layout.mock.user.full-name': "Demo User";
526
533
  readonly 'core.module.generic.generic-select.detail-link': "details";
534
+ readonly 'core.component.query-bar.search-placeholder': "Search...";
535
+ readonly 'core.component.query-bar.no-fields': "No fields configured";
536
+ readonly 'core.component.query-bar.add-filter': "Add filter";
537
+ readonly 'core.component.query-bar.clear-all': "Clear all ({count})";
538
+ readonly 'core.component.query-bar.search': "Search";
539
+ readonly 'core.component.query-bar.logic-operator': "Logic operator";
540
+ readonly 'core.component.query-bar.boolean.true': "Yes";
541
+ readonly 'core.component.query-bar.boolean.false': "No";
542
+ readonly 'core.component.query-bar.placeholder.value': "value";
543
+ readonly 'core.component.query-bar.placeholder.text': "type…";
544
+ readonly 'core.component.query-bar.placeholder.from-number': "From";
545
+ readonly 'core.component.query-bar.placeholder.to-number': "To";
546
+ readonly 'core.component.query-bar.placeholder.from-text': "from…";
547
+ readonly 'core.component.query-bar.placeholder.to-text': "to…";
548
+ readonly 'core.component.query-bar.swap-field': "Swap field";
549
+ readonly 'core.component.query-bar.placeholder.select-value': "Select value";
550
+ readonly 'core.component.query-bar.placeholder.enter-value': "Enter value";
551
+ readonly 'core.component.query-bar.loading-values': "Loading...";
552
+ readonly 'core.component.query-bar.field-empty': "No fields configured yet.";
553
+ readonly 'core.component.query-bar.saved-filters.tooltip': "Saved filters";
554
+ readonly 'core.component.query-bar.saved-filters.tooltip-disabled': "Requires [savedFiltersKey] to enable";
555
+ readonly 'core.component.query-bar.saved-filters.delete': "Delete filter";
556
+ readonly 'core.component.query-bar.saved-filters.empty': "No saved filters yet.";
557
+ readonly 'core.component.query-bar.saved-filters.save': "Save current filter";
558
+ readonly 'core.component.query-bar.saved-filters.name-label': "Filter name";
559
+ readonly 'core.component.query-builder.date-mode.absolute': "Specific date";
560
+ readonly 'core.component.query-builder.date-mode.now': "Today";
561
+ readonly 'core.component.query-builder.date-mode.relative': "Relative";
562
+ readonly 'core.component.query-builder.value-source.literal': "Enter a value";
563
+ readonly 'core.component.query-builder.value-source.field': "Compare with field";
564
+ readonly 'core.component.query-builder.relative.hour-previous': "hours ago";
565
+ readonly 'core.component.query-builder.relative.hour-next': "hours from now";
566
+ readonly 'core.component.query-builder.relative.day-previous': "days ago";
567
+ readonly 'core.component.query-builder.relative.day-next': "days from now";
568
+ readonly 'core.component.query-builder.relative.week-previous': "weeks ago";
569
+ readonly 'core.component.query-builder.relative.week-next': "weeks from now";
570
+ readonly 'core.component.query-builder.relative.month-previous': "months ago";
571
+ readonly 'core.component.query-builder.relative.month-next': "months from now";
572
+ readonly 'core.component.query-builder.relative.format': "{amount} {phrase}";
573
+ readonly 'core.component.query-builder.add': "Add";
574
+ readonly 'core.component.query-builder.add-node': "Add a condition or group";
575
+ readonly 'core.component.query-builder.condition': "Condition";
576
+ readonly 'core.component.query-builder.group': "Group";
577
+ readonly 'core.component.query-builder.remove-group': "Remove group";
578
+ readonly 'core.component.query-builder.remove-condition': "Remove condition";
579
+ readonly 'core.component.query-builder.empty': "No conditions yet";
580
+ readonly 'core.component.query-builder.select-field': "Select field";
581
+ readonly 'core.component.query-builder.value': "Value";
582
+ readonly 'core.component.query-builder.from': "From";
583
+ readonly 'core.component.query-builder.to': "To";
584
+ readonly 'core.component.query-builder.boolean.true': "Yes";
585
+ readonly 'core.component.query-builder.boolean.false': "No";
586
+ readonly 'core.component.api-contract-builder.steps': "Contract steps";
587
+ readonly 'core.component.api-contract-builder.step.general': "General";
588
+ readonly 'core.component.api-contract-builder.step.input': "Input schema";
589
+ readonly 'core.component.api-contract-builder.step.request': "Request";
590
+ readonly 'core.component.api-contract-builder.step.response': "Response";
591
+ readonly 'core.component.api-contract-builder.step.output': "Output";
592
+ readonly 'core.component.api-contract-builder.step.review': "Review";
593
+ readonly 'core.component.api-contract-builder.empty.contract': "No contract yet";
594
+ readonly 'core.component.api-contract-builder.create-contract': "Create a contract";
595
+ readonly 'core.component.api-contract-builder.contract.code': "Contract code";
596
+ readonly 'core.component.api-contract-builder.contract.name': "Name";
597
+ readonly 'core.component.api-contract-builder.contract.description': "Description";
598
+ readonly 'core.component.api-contract-builder.contract.version': "Contract version";
599
+ readonly 'core.component.api-contract-builder.node.name': "Name";
600
+ readonly 'core.component.api-contract-builder.node.type': "Type";
601
+ readonly 'core.component.api-contract-builder.node.required': "Required";
602
+ readonly 'core.component.api-contract-builder.node.label': "Label";
603
+ readonly 'core.component.api-contract-builder.node.description': "Description";
604
+ readonly 'core.component.api-contract-builder.node.transform': "Temporal transform";
605
+ readonly 'core.component.api-contract-builder.node.items': "Item schema";
606
+ readonly 'core.component.api-contract-builder.node.remove': "Remove";
607
+ readonly 'core.component.api-contract-builder.node.empty': "No properties yet";
608
+ readonly 'core.component.api-contract-builder.node.add-property': "Add property";
609
+ readonly 'core.component.api-contract-builder.node.duplicate-key': "This name is already used by a sibling";
610
+ readonly 'core.component.api-contract-builder.node.confirm-remove': "Remove \"{name}\" and every field inside it?";
611
+ readonly 'core.component.api-contract-builder.node.confirm-type': "Changing the type discards the nested fields. Continue?";
612
+ readonly 'core.component.api-contract-builder.confirm.yes': "Yes";
613
+ readonly 'core.component.api-contract-builder.confirm.no': "No";
614
+ readonly 'core.component.api-contract-builder.required.true': "Yes";
615
+ readonly 'core.component.api-contract-builder.required.false': "No";
616
+ readonly 'core.component.api-contract-builder.field.required': "Required";
617
+ readonly 'core.component.api-contract-builder.transform.none': "None";
618
+ readonly 'core.component.api-contract-builder.mapping.mode': "Value";
619
+ readonly 'core.component.api-contract-builder.mapping.mode.source': "From source";
620
+ readonly 'core.component.api-contract-builder.mapping.mode.static': "Static value";
621
+ readonly 'core.component.api-contract-builder.mapping.mode.advanced': "Advanced";
622
+ readonly 'core.component.api-contract-builder.mapping.mode.nested': "Map each field";
623
+ readonly 'core.component.api-contract-builder.mapping.source': "Source expression";
624
+ readonly 'core.component.api-contract-builder.mapping.value': "Static value";
625
+ readonly 'core.component.api-contract-builder.mapping.sensitive': "sensitive";
626
+ readonly 'core.component.api-contract-builder.drawer.add-title': "Add field";
627
+ readonly 'core.component.api-contract-builder.drawer.edit-title': "Edit field";
628
+ readonly 'core.component.api-contract-builder.drawer.save': "Save";
629
+ readonly 'core.component.api-contract-builder.drawer.cancel': "Cancel";
630
+ readonly 'core.component.api-contract-builder.drawer.discard-confirm': "Discard unsaved changes?";
631
+ readonly 'core.component.api-contract-builder.summary.unmapped': "unmapped";
632
+ readonly 'core.component.api-contract-builder.summary.field-count': "{count} field(s)";
633
+ readonly 'core.component.api-contract-builder.node.name-required': "The field name cannot be empty";
634
+ readonly 'core.component.api-contract-builder.boolean.true': "True";
635
+ readonly 'core.component.api-contract-builder.boolean.false': "False";
636
+ readonly 'core.component.api-contract-builder.request.method': "Method";
637
+ readonly 'core.component.api-contract-builder.request.url': "URL";
638
+ readonly 'core.component.api-contract-builder.request.path': "Path parameters";
639
+ readonly 'core.component.api-contract-builder.request.query': "Query parameters";
640
+ readonly 'core.component.api-contract-builder.request.headers': "Headers";
641
+ readonly 'core.component.api-contract-builder.request.body': "Body";
642
+ readonly 'core.component.api-contract-builder.request.add-body': "Add a body";
643
+ readonly 'core.component.api-contract-builder.request.remove-body': "Remove the body";
644
+ readonly 'core.component.api-contract-builder.request.add-entry': "Add";
645
+ readonly 'core.component.api-contract-builder.response.status': "Success status codes";
646
+ readonly 'core.component.api-contract-builder.response.status-hint': "Comma separated, for example 200, 201";
647
+ readonly 'core.component.api-contract-builder.response.headers': "Response headers";
648
+ readonly 'core.component.api-contract-builder.response.body': "Response body";
649
+ readonly 'core.component.api-contract-builder.response.add-body': "Add a body";
650
+ readonly 'core.component.api-contract-builder.response.remove-body': "Remove the body";
651
+ readonly 'core.component.api-contract-builder.output.schema': "Output schema";
652
+ readonly 'core.component.api-contract-builder.output.use-response': "Use a response field as the output";
653
+ readonly 'core.component.api-contract-builder.output.fields': "Fields available to consumers";
654
+ readonly 'core.component.api-contract-builder.output.no-fields': "No leaf field yet";
655
+ readonly 'core.component.api-contract-builder.review.valid': "The contract is valid";
656
+ readonly 'core.component.api-contract-builder.review.errors': "{count} error(s)";
657
+ readonly 'core.component.api-contract-builder.review.warnings': "{count} warning(s)";
658
+ readonly 'core.component.api-contract-builder.review.json': "Contract JSON";
659
+ readonly 'core.component.api-contract-builder.empty.path': "No path parameter yet";
660
+ readonly 'core.component.api-contract-builder.empty.query': "No query parameter yet";
661
+ readonly 'core.component.api-contract-builder.empty.headers': "No header yet";
662
+ readonly 'core.component.api-contract-builder.empty.body': "No body declared";
663
+ readonly 'core.component.api-contract-builder.empty.section': "This section is missing from the contract";
664
+ readonly 'core.component.tree.selected-count': "{count} item(s) selected";
665
+ readonly 'core.component.tree.expand': "Expand tree item";
666
+ readonly 'core.component.tree.collapse': "Collapse tree item";
667
+ readonly 'core.component.tree.retry-item': "Retry loading tree item";
668
+ readonly 'core.component.tree.load-error': "Unable to load tree data";
669
+ readonly 'core.directive.hover-copy.copied': "Copied";
670
+ readonly 'core.module.layout.sidebar.pinned': "Pinned";
671
+ readonly 'core.module.layout.sidebar.recent': "Recent";
672
+ readonly 'core.module.layout.sidebar.all-menu': "All menus";
673
+ readonly 'core.module.layout.menu.pin': "Pin {title}";
674
+ readonly 'core.module.layout.menu.unpin': "Unpin {title}";
675
+ readonly 'core.form.date.open-picker': "Open calendar";
676
+ readonly 'core.form.datetime.open-picker': "Open calendar";
677
+ readonly 'core.form.date-range.open-picker': "Open calendar";
678
+ readonly 'core.form.date-range.clear': "Clear date range";
679
+ readonly 'core.form.select.search': "Search";
680
+ readonly 'core.component.table.loading': "Loading table data";
681
+ readonly 'core.component.upload-file.loading': "Uploading file";
682
+ readonly 'core.component.import-excel.loading': "Loading data";
683
+ readonly 'core.component.upload-file.remove': "Remove file";
684
+ readonly 'core.component.upload-file.zoom': "Zoom image";
685
+ readonly 'core.component.upload-file.view-all': "View all images";
686
+ readonly 'core.component.form-builder.canvas': "Form design canvas";
527
687
  };
@@ -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
  }