@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
@@ -1,71 +1,9 @@
1
- import { EMPTY_STR } from '@sdcorejs/utils/constants';
2
- export { EMPTY_STR, VALIDATION_PATTERNS } from '@sdcorejs/utils/constants';
3
- import { StringUtilities } from '@sdcorejs/utils/fns';
4
- import { resolveMaybeAsync, normalizeAsync } from '@sdcorejs/utils/models';
5
- export { normalizeAsync, resolveMaybeAsync } from '@sdcorejs/utils/models';
6
-
7
1
  const DefaultSdIconSet = 'material-icons-outlined';
8
2
  const DefaultSdMaterialIconSet = 'material-icons-outlined';
9
3
 
10
- // `name` và `errorMessage` chứa i18n KEY (không phải chuỗi đã dịch).
11
- /** @deprecated Use `VALIDATION_PATTERNS` from `@sdcorejs/utils/constants` instead. */
12
- const SdPatternCommons = [
13
- { type: 'EMAIL', name: 'core.validator.email.name', regex: StringUtilities.REGEX_EMAIL, errorMessage: 'core.validator.email.error' },
14
- { type: 'PHONE', name: 'core.validator.phone.name', regex: StringUtilities.REGEX_PHONE, errorMessage: 'core.validator.phone.error' },
15
- {
16
- type: 'PHONE_VN',
17
- name: 'core.validator.phone-vn.name',
18
- regex: StringUtilities.REGEX_VN_PHONE,
19
- errorMessage: 'core.validator.phone-vn.error',
20
- },
21
- { type: 'IDVN', name: 'core.validator.cccd.name', regex: StringUtilities.REGEX_VN_ID, errorMessage: 'core.validator.cccd.error' },
22
- {
23
- type: 'PASSPORT',
24
- name: 'core.validator.passport.name',
25
- regex: StringUtilities.REGEX_PASSPORT,
26
- errorMessage: 'core.validator.passport.error',
27
- },
28
- {
29
- type: 'IDVN_OR_PASSPORT',
30
- name: 'core.validator.id-vn.name',
31
- regex: StringUtilities.REGEX_VN_ID_OR_PASSPORT,
32
- errorMessage: 'core.validator.id-vn.error',
33
- },
34
- { type: 'TIME', name: 'core.validator.time.name', regex: StringUtilities.REGEX_TIME, errorMessage: 'core.validator.time.error' },
35
- ];
36
-
37
- /** @deprecated Use {@link EMPTY_STR} from `@sdcorejs/utils/constants` instead */
38
- const SD_EMPTY_STR = EMPTY_STR;
39
-
40
- /** @deprecated Use {@link resolveMaybeAsync} from `@sdcorejs/utils/models` instead */
41
- const SdResolveMaybeAsync = resolveMaybeAsync;
42
- /** @deprecated Use {@link normalizeAsync} from `@sdcorejs/utils/models` instead */
43
- const SdNormalizeAsync = normalizeAsync;
44
-
45
- // `display` chứa i18n KEY (không phải chuỗi đã dịch).
46
- // Consumer phải gọi i18n.t(display) trước khi render ra UI.
47
- // @deprecated Use `OPERATORS` from `@sdcorejs/utils/constants` instead.
48
- // Note: OPERATORS has translated display labels; SdOperators uses i18n keys.
49
- const SdOperators = [
50
- { value: 'EQUAL', symbol: '=', display: 'core.operator.equal.display' },
51
- { value: 'NOT_EQUAL', symbol: '≠', display: 'core.operator.not-equal.display' },
52
- { value: 'GREATER_THAN', symbol: '>', display: 'core.operator.greater-than.display' },
53
- { value: 'LESS_THAN', symbol: '<', display: 'core.operator.less-than.display' },
54
- { value: 'GREATER_OR_EQUAL', symbol: '≥', display: 'core.operator.greater-or-equal.display' },
55
- { value: 'LESS_OR_EQUAL', symbol: '≤', display: 'core.operator.less-or-equal.display' },
56
- { value: 'CONTAIN', symbol: 'join_inner', display: 'core.operator.contain.display' },
57
- { value: 'NOT_CONTAIN', symbol: 'join', display: 'core.operator.not-contain.display' },
58
- { value: 'START_WITH', symbol: 'line_start_circle', display: 'core.operator.start-with.display' },
59
- { value: 'END_WITH', symbol: 'line_end_circle', display: 'core.operator.end-with.display' },
60
- { value: 'IN', symbol: 'checklist_rtl', display: 'core.operator.in.display' },
61
- { value: 'NOT_IN', symbol: 'event_list', display: 'core.operator.not-in.display' },
62
- { value: 'NULL', symbol: 'motion_photos_off', display: 'core.operator.null.display' },
63
- { value: 'NOT_NULL', symbol: 'adjust', display: 'core.operator.not-null.display' },
64
- ];
65
-
66
4
  /**
67
5
  * Generated bundle index. Do not edit.
68
6
  */
69
7
 
70
- export { DefaultSdIconSet, DefaultSdMaterialIconSet, SD_EMPTY_STR, SdNormalizeAsync, SdOperators, SdPatternCommons, SdResolveMaybeAsync };
8
+ export { DefaultSdIconSet, DefaultSdMaterialIconSet };
71
9
  //# sourceMappingURL=sdcorejs-angular-utilities-models.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdcorejs-angular-utilities-models.mjs","sources":["../../../projects/sdcorejs-angular/utilities/models/src/icon.model.ts","../../../projects/sdcorejs-angular/utilities/models/src/pattern.model.ts","../../../projects/sdcorejs-angular/utilities/models/src/empty.model.ts","../../../projects/sdcorejs-angular/utilities/models/src/maybe-async.model.ts","../../../projects/sdcorejs-angular/utilities/models/src/operator.model.ts","../../../projects/sdcorejs-angular/utilities/models/sdcorejs-angular-utilities-models.ts"],"sourcesContent":["export type SdIconSet = 'material-icons' | 'material-icons-outlined' | 'material-icons-round' | 'material-icons-sharp' | 'lucide';\nexport type SdMaterialIconSet = Exclude<SdIconSet, 'lucide'>;\nexport const DefaultSdIconSet: SdIconSet = 'material-icons-outlined';\nexport const DefaultSdMaterialIconSet: SdMaterialIconSet = 'material-icons-outlined';\n","import type { ValidationPatternType, ValidationPattern } from '@sdcorejs/utils/models';\nimport { VALIDATION_PATTERNS } from '@sdcorejs/utils/constants';\nimport { StringUtilities } from '@sdcorejs/utils/fns';\nexport type { ValidationPatternType, ValidationPattern };\nexport { VALIDATION_PATTERNS };\n\n/**\n * @deprecated Use {@link ValidationPatternType} from `@sdcorejs/utils/models` instead.\n * Note: member names changed — PHONE_VN → VN_PHONE, IDVN → VN_ID, IDVN_OR_PASSPORT → VN_ID_OR_PASSPORT.\n */\nexport type SdPatternType = 'EMAIL' | 'PHONE' | 'PHONE_VN' | 'IDVN' | 'PASSPORT' | 'IDVN_OR_PASSPORT' | 'TIME';\n\n/**\n * @deprecated Use {@link ValidationPattern} from `@sdcorejs/utils/models` instead.\n * Note: `regex` field renamed to `pattern` to align with Angular `Validators.pattern()`.\n */\nexport interface SdPatternCommon {\n type: SdPatternType;\n name: string;\n regex: string;\n errorMessage: string;\n}\n\n// `name` và `errorMessage` chứa i18n KEY (không phải chuỗi đã dịch).\n/** @deprecated Use `VALIDATION_PATTERNS` from `@sdcorejs/utils/constants` instead. */\nexport const SdPatternCommons: SdPatternCommon[] = [\n { type: 'EMAIL', name: 'core.validator.email.name', regex: StringUtilities.REGEX_EMAIL, errorMessage: 'core.validator.email.error' },\n { type: 'PHONE', name: 'core.validator.phone.name', regex: StringUtilities.REGEX_PHONE, errorMessage: 'core.validator.phone.error' },\n {\n type: 'PHONE_VN',\n name: 'core.validator.phone-vn.name',\n regex: StringUtilities.REGEX_VN_PHONE,\n errorMessage: 'core.validator.phone-vn.error',\n },\n { type: 'IDVN', name: 'core.validator.cccd.name', regex: StringUtilities.REGEX_VN_ID, errorMessage: 'core.validator.cccd.error' },\n {\n type: 'PASSPORT',\n name: 'core.validator.passport.name',\n regex: StringUtilities.REGEX_PASSPORT,\n errorMessage: 'core.validator.passport.error',\n },\n {\n type: 'IDVN_OR_PASSPORT',\n name: 'core.validator.id-vn.name',\n regex: StringUtilities.REGEX_VN_ID_OR_PASSPORT,\n errorMessage: 'core.validator.id-vn.error',\n },\n { type: 'TIME', name: 'core.validator.time.name', regex: StringUtilities.REGEX_TIME, errorMessage: 'core.validator.time.error' },\n];\n","import { EMPTY_STR } from '@sdcorejs/utils/constants';\nexport { EMPTY_STR };\n\n/** @deprecated Use {@link EMPTY_STR} from `@sdcorejs/utils/constants` instead */\nexport const SD_EMPTY_STR = EMPTY_STR;\n","import type { MaybeAsync } from '@sdcorejs/utils/models';\nimport { resolveMaybeAsync, normalizeAsync } from '@sdcorejs/utils/models';\nexport type { MaybeAsync };\nexport { resolveMaybeAsync, normalizeAsync };\n\n/** @deprecated Use {@link MaybeAsync} from `@sdcorejs/utils/models` instead */\nexport type SdMaybeAsync<T> = MaybeAsync<T>;\n/** @deprecated Use {@link resolveMaybeAsync} from `@sdcorejs/utils/models` instead */\nexport const SdResolveMaybeAsync = resolveMaybeAsync;\n/** @deprecated Use {@link normalizeAsync} from `@sdcorejs/utils/models` instead */\nexport const SdNormalizeAsync = normalizeAsync;\n","import type { Operator, OperatorHasData, OperatorNoData } from '@sdcorejs/utils/models';\nexport type { Operator, OperatorHasData, OperatorNoData };\n\n/** @deprecated Use {@link Operator} from `@sdcorejs/utils/models` instead */\nexport type SdOperator = Operator;\n/** @deprecated Use {@link OperatorHasData} from `@sdcorejs/utils/models` instead */\nexport type SdOperatorHasData = OperatorHasData;\n/** @deprecated Use {@link OperatorNoData} from `@sdcorejs/utils/models` instead */\nexport type SdOperatorNoData = OperatorNoData;\n\n// `display` chứa i18n KEY (không phải chuỗi đã dịch).\n// Consumer phải gọi i18n.t(display) trước khi render ra UI.\n// @deprecated Use `OPERATORS` from `@sdcorejs/utils/constants` instead.\n// Note: OPERATORS has translated display labels; SdOperators uses i18n keys.\nexport const SdOperators: {\n value: Operator;\n symbol?: string;\n display: string;\n}[] = [\n { value: 'EQUAL', symbol: '=', display: 'core.operator.equal.display' },\n { value: 'NOT_EQUAL', symbol: '≠', display: 'core.operator.not-equal.display' },\n { value: 'GREATER_THAN', symbol: '>', display: 'core.operator.greater-than.display' },\n { value: 'LESS_THAN', symbol: '<', display: 'core.operator.less-than.display' },\n { value: 'GREATER_OR_EQUAL', symbol: '≥', display: 'core.operator.greater-or-equal.display' },\n { value: 'LESS_OR_EQUAL', symbol: '≤', display: 'core.operator.less-or-equal.display' },\n { value: 'CONTAIN', symbol: 'join_inner', display: 'core.operator.contain.display' },\n { value: 'NOT_CONTAIN', symbol: 'join', display: 'core.operator.not-contain.display' },\n { value: 'START_WITH', symbol: 'line_start_circle', display: 'core.operator.start-with.display' },\n { value: 'END_WITH', symbol: 'line_end_circle', display: 'core.operator.end-with.display' },\n { value: 'IN', symbol: 'checklist_rtl', display: 'core.operator.in.display' },\n { value: 'NOT_IN', symbol: 'event_list', display: 'core.operator.not-in.display' },\n { value: 'NULL', symbol: 'motion_photos_off', display: 'core.operator.null.display' },\n { value: 'NOT_NULL', symbol: 'adjust', display: 'core.operator.not-null.display' },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEO,MAAM,gBAAgB,GAAc;AACpC,MAAM,wBAAwB,GAAsB;;ACoB3D;AACA;AACO,MAAM,gBAAgB,GAAsB;AACjD,IAAA,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,4BAA4B,EAAE;AACpI,IAAA,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,4BAA4B,EAAE;AACpI,IAAA;AACE,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,8BAA8B;QACpC,KAAK,EAAE,eAAe,CAAC,cAAc;AACrC,QAAA,YAAY,EAAE,+BAA+B;AAC9C,KAAA;AACD,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,2BAA2B,EAAE;AACjI,IAAA;AACE,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,8BAA8B;QACpC,KAAK,EAAE,eAAe,CAAC,cAAc;AACrC,QAAA,YAAY,EAAE,+BAA+B;AAC9C,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,eAAe,CAAC,uBAAuB;AAC9C,QAAA,YAAY,EAAE,4BAA4B;AAC3C,KAAA;AACD,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,2BAA2B,EAAE;;;AC5ClI;AACO,MAAM,YAAY,GAAG;;ACG5B;AACO,MAAM,mBAAmB,GAAG;AACnC;AACO,MAAM,gBAAgB,GAAG;;ACAhC;AACA;AACA;AACA;AACO,MAAM,WAAW,GAIlB;IACJ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,6BAA6B,EAAE;IACvE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,iCAAiC,EAAE;IAC/E,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,oCAAoC,EAAE;IACrF,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,iCAAiC,EAAE;IAC/E,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,wCAAwC,EAAE;IAC7F,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,qCAAqC,EAAE;IACvF,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,+BAA+B,EAAE;IACpF,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mCAAmC,EAAE;IACtF,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,kCAAkC,EAAE;IACjG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,gCAAgC,EAAE;IAC3F,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,0BAA0B,EAAE;IAC7E,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,8BAA8B,EAAE;IAClF,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,4BAA4B,EAAE;IACrF,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,gCAAgC,EAAE;;;AChCpF;;AAEG;;;;"}
1
+ {"version":3,"file":"sdcorejs-angular-utilities-models.mjs","sources":["../../../projects/sdcorejs-angular/utilities/models/src/icon.model.ts","../../../projects/sdcorejs-angular/utilities/models/sdcorejs-angular-utilities-models.ts"],"sourcesContent":["export type SdIconSet = 'material-icons' | 'material-icons-outlined' | 'material-icons-round' | 'material-icons-sharp' | 'lucide';\nexport type SdMaterialIconSet = Exclude<SdIconSet, 'lucide'>;\nexport const DefaultSdIconSet: SdIconSet = 'material-icons-outlined';\nexport const DefaultSdMaterialIconSet: SdMaterialIconSet = 'material-icons-outlined';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAEO,MAAM,gBAAgB,GAAc;AACpC,MAAM,wBAAwB,GAAsB;;ACH3D;;AAEG;;;;"}
@@ -1,16 +1,23 @@
1
- import '@sdcorejs/angular/configurations';
2
- import '@sdcorejs/angular/utilities';
3
- import '@sdcorejs/angular/pipes';
4
- import '@sdcorejs/angular/directives';
5
- import '@sdcorejs/angular/services';
6
- import '@sdcorejs/angular/interceptors';
7
- import '@sdcorejs/angular/handlers';
8
- import '@sdcorejs/angular/components';
9
- import '@sdcorejs/angular/forms';
10
- import '@sdcorejs/angular/modules';
1
+ export * from '@sdcorejs/angular/configurations';
2
+ export * from '@sdcorejs/angular/i18n';
3
+ export * from '@sdcorejs/angular/utilities';
4
+ export * from '@sdcorejs/angular/pipes';
5
+ export * from '@sdcorejs/angular/directives';
6
+ export * from '@sdcorejs/angular/services';
7
+ export * from '@sdcorejs/angular/interceptors';
8
+ export * from '@sdcorejs/angular/handlers';
9
+ export * from '@sdcorejs/angular/components';
10
+ export * from '@sdcorejs/angular/forms';
11
+ export * from '@sdcorejs/angular/modules';
11
12
 
12
13
  /*
13
14
  * Public API Surface of sd-angular
15
+ *
16
+ * why: these were previously bare `import '...'` statements, which meant the primary
17
+ * entry point re-exported NOTHING — `import { SdButton } from '@sdcorejs/angular'`
18
+ * resolved to nothing for every symbol, and the built FESM bundle was 517 bytes with
19
+ * no `export` statement. Deep imports (`@sdcorejs/angular/components/button`) remain
20
+ * the recommended path for bundle size; this barrel exists so the root import works.
14
21
  */
15
22
 
16
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sdcorejs-angular.mjs","sources":["../../../projects/sdcorejs-angular/src/public-api.ts","../../../projects/sdcorejs-angular/src/sdcorejs-angular.ts"],"sourcesContent":["/*\n * Public API Surface of sd-angular\n */\nimport '@sdcorejs/angular/configurations';\nimport '@sdcorejs/angular/utilities';\nimport '@sdcorejs/angular/pipes';\nimport '@sdcorejs/angular/directives';\nimport '@sdcorejs/angular/services';\nimport '@sdcorejs/angular/interceptors';\nimport '@sdcorejs/angular/handlers';\nimport '@sdcorejs/angular/components';\nimport '@sdcorejs/angular/forms';\nimport '@sdcorejs/angular/modules';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;AAAA;;AAEG;;ACFH;;AAEG"}
1
+ {"version":3,"file":"sdcorejs-angular.mjs","sources":["../../../projects/sdcorejs-angular/src/public-api.ts","../../../projects/sdcorejs-angular/src/sdcorejs-angular.ts"],"sourcesContent":["/*\n * Public API Surface of sd-angular\n *\n * why: these were previously bare `import '...'` statements, which meant the primary\n * entry point re-exported NOTHING — `import { SdButton } from '@sdcorejs/angular'`\n * resolved to nothing for every symbol, and the built FESM bundle was 517 bytes with\n * no `export` statement. Deep imports (`@sdcorejs/angular/components/button`) remain\n * the recommended path for bundle size; this barrel exists so the root import works.\n */\nexport * from '@sdcorejs/angular/configurations';\nexport * from '@sdcorejs/angular/i18n';\nexport * from '@sdcorejs/angular/utilities';\nexport * from '@sdcorejs/angular/pipes';\nexport * from '@sdcorejs/angular/directives';\nexport * from '@sdcorejs/angular/services';\nexport * from '@sdcorejs/angular/interceptors';\nexport * from '@sdcorejs/angular/handlers';\nexport * from '@sdcorejs/angular/components';\nexport * from '@sdcorejs/angular/forms';\nexport * from '@sdcorejs/angular/modules';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;AAQG;;ACRH;;AAEG"}
@@ -12,9 +12,12 @@ declare class SdAutocompleteErrotStateMatcher implements ErrorStateMatcher {
12
12
  constructor(formControl: FormControl);
13
13
  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean;
14
14
  }
15
- export declare class SdAutocomplete<T = any> implements OnInit, OnDestroy {
15
+ export declare class SdAutocomplete<T = unknown> implements OnInit, OnDestroy {
16
16
  #private;
17
17
  id: string;
18
+ /** why: id ổn định của <mat-error> để control trỏ `aria-describedby` sang — thông báo lỗi
19
+ * phải đọc được từ chính control, không chỉ hiện ra màn hình. */
20
+ readonly errorId: string;
18
21
  inputRef: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
19
22
  autocompleteTrigger: import("@angular/core").Signal<MatAutocompleteTrigger | undefined>;
20
23
  sdLabelTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
@@ -71,7 +74,7 @@ export declare class SdAutocomplete<T = any> implements OnInit, OnDestroy {
71
74
  appearance: import("@angular/core").Signal<MatFormFieldAppearance>;
72
75
  valueModel: import("@angular/core").ModelSignal<string | number | null | undefined>;
73
76
  sdChange: import("@angular/core").OutputEmitterRef<string | number | null>;
74
- sdSelection: import("@angular/core").OutputEmitterRef<SdSelectionData<any>>;
77
+ sdSelection: import("@angular/core").OutputEmitterRef<SdSelectionData<unknown>>;
75
78
  readonly sdAdd: EventEmitter<void>;
76
79
  loading: import("@angular/core").WritableSignal<boolean>;
77
80
  isFocused: boolean;
@@ -16,6 +16,9 @@ declare class SdChipCalendarErrorStateMatcher implements ErrorStateMatcher {
16
16
  }
17
17
  export declare class SdChipCalendar implements AfterViewInit, OnDestroy {
18
18
  #private;
19
+ /** why: id ổn định của <mat-error> để ô nhập chip trỏ `aria-describedby` sang — thông báo
20
+ * lỗi phải đọc được từ chính control, không chỉ hiện ra màn hình. */
21
+ readonly errorId: string;
19
22
  menuTrigger: import("@angular/core").Signal<MatMenuTrigger | undefined>;
20
23
  calendar: import("@angular/core").Signal<MatCalendar<Date> | undefined>;
21
24
  autoIdInput: import("@angular/core").InputSignalWithTransform<string | undefined, string | null | undefined>;
@@ -64,6 +67,13 @@ export declare class SdChipCalendar implements AfterViewInit, OnDestroy {
64
67
  onRemove: (item: string) => void;
65
68
  onSelect: (event: MatAutocompleteSelectedEvent) => void;
66
69
  onClick: () => void;
70
+ /**
71
+ * why: khi `sdViewDef` đang hiển thị thì bên trong KHÔNG còn phần tử nào focus được, nên
72
+ * click là lối vào DUY NHẤT để chuyển sang chế độ sửa. Bàn phím phải mở được y hệt chuột
73
+ * → Enter/Space chạy chung handler. preventDefault chặn Space cuộn trang (hành vi mặc
74
+ * định của phần tử không phải <button>).
75
+ */
76
+ onViewKeydown: (event: Event) => void;
67
77
  onClear: (evt?: any) => void;
68
78
  onSelectDate: (date: Date | null) => void;
69
79
  onCloseCalendar: () => void;
@@ -3,7 +3,7 @@ import { FormGroup } from '@angular/forms';
3
3
  import { MatDatepicker, MatDatepickerInputEvent } from '@angular/material/datepicker';
4
4
  import { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';
5
5
  import { SdLabelDefDirective, SdViewDefDirective } from '@sdcorejs/angular/forms/directives';
6
- import { SdFormControl, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
6
+ import { SdFormControl, SdTemporalValueTransform, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
7
7
  import { Size } from '@sdcorejs/utils/models';
8
8
  import * as i0 from "@angular/core";
9
9
  type SdDateModelValue = string | number | Date | undefined | null;
@@ -15,6 +15,9 @@ type SdDateKeyupEvent = Event | {
15
15
  export declare class SdDate implements OnDestroy, OnInit {
16
16
  #private;
17
17
  id: string;
18
+ /** why: id ổn định của <mat-error> để control trỏ `aria-describedby` sang — thông báo lỗi
19
+ * phải đọc được từ chính control, không chỉ hiện ra màn hình. */
20
+ readonly errorId: string;
18
21
  inputRef: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
19
22
  datePicker: import("@angular/core").Signal<MatDatepicker<Date> | undefined>;
20
23
  sdLabelTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
@@ -67,11 +70,19 @@ export declare class SdDate implements OnDestroy, OnInit {
67
70
  maxInput: import("@angular/core").InputSignal<any>;
68
71
  maxDateInput: import("@angular/core").InputSignal<any>;
69
72
  resolvedMax: import("@angular/core").Signal<Date | null>;
73
+ /**
74
+ * Output serialization strategy for the committed value. Affects `model` / `modelChange` /
75
+ * `sdChange` and the registered form field only — the input keeps showing `dd/MM/yyyy`.
76
+ * Left unset, the component keeps emitting its canonical `yyyy/MM/dd` string.
77
+ */
78
+ transform: import("@angular/core").InputSignal<SdTemporalValueTransform | undefined>;
70
79
  valueModel: import("@angular/core").ModelSignal<SdDateModelValue>;
71
80
  sdChange: import("@angular/core").OutputEmitterRef<any>;
72
81
  sdFocus: import("@angular/core").OutputEmitterRef<void>;
73
82
  isMobileOrTablet: boolean;
74
83
  formControl: SdFormControl;
84
+ /** Control registered in the parent form while a `transform` is active; holds the public model. */
85
+ readonly modelControl: SdFormControl;
75
86
  isFocused: boolean;
76
87
  isValid?: boolean;
77
88
  ngOnInit(): void;
@@ -91,6 +102,6 @@ export declare class SdDate implements OnDestroy, OnInit {
91
102
  onChange: (event: MatDatepickerInputEvent<Date>) => void;
92
103
  clear: ($event: any) => void;
93
104
  static ɵfac: i0.ɵɵFactoryDeclaration<SdDate, never>;
94
- static ɵcmp: i0.ɵɵComponentDeclaration<SdDate, "sd-date", 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; }; "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; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "minInput": { "alias": "min"; "required": false; "isSignal": true; }; "minDateInput": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxInput": { "alias": "max"; "required": false; "isSignal": true; }; "maxDateInput": { "alias": "maxDate"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdFocus": "sdFocus"; }, ["sdLabelTemplate", "sdValueTemplate", "sdViewDef", "sdLabelDef"], ["[sdLabel]"], true, never>;
105
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdDate, "sd-date", 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; }; "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; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "minInput": { "alias": "min"; "required": false; "isSignal": true; }; "minDateInput": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxInput": { "alias": "max"; "required": false; "isSignal": true; }; "maxDateInput": { "alias": "maxDate"; "required": false; "isSignal": true; }; "transform": { "alias": "transform"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdFocus": "sdFocus"; }, ["sdLabelTemplate", "sdValueTemplate", "sdViewDef", "sdLabelDef"], ["[sdLabel]"], true, never>;
95
106
  }
96
107
  export {};
@@ -3,7 +3,7 @@ import { FormControl, FormGroup } from '@angular/forms';
3
3
  import { MatDatepickerInputEvent, MatDateRangePicker } from '@angular/material/datepicker';
4
4
  import { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';
5
5
  import { SdLabelDefDirective } from '@sdcorejs/angular/forms/directives';
6
- import { SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
6
+ import { SdTemporalValueTransform, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
7
7
  import { Size } from '@sdcorejs/utils/models';
8
8
  import * as i0 from "@angular/core";
9
9
  export interface SdDateRangeValue {
@@ -14,6 +14,9 @@ export declare class SdDateRange {
14
14
  #private;
15
15
  id1: string;
16
16
  id2: string;
17
+ /** why: id ổn định của <mat-error> để hai ô nhập trỏ `aria-describedby` sang — thông báo
18
+ * lỗi phải đọc được từ chính control, không chỉ hiện ra màn hình. */
19
+ readonly errorId: string;
17
20
  picker: import("@angular/core").Signal<MatDateRangePicker<Date> | undefined>;
18
21
  sdLabelDef: import("@angular/core").Signal<SdLabelDefDirective | undefined>;
19
22
  private cdRef;
@@ -67,12 +70,20 @@ export declare class SdDateRange {
67
70
  resolvedMin: import("@angular/core").Signal<Date | null>;
68
71
  maxInput: import("@angular/core").InputSignal<any>;
69
72
  resolvedMax: import("@angular/core").Signal<Date | null>;
73
+ /**
74
+ * Output serialization strategy applied to **each endpoint** of the committed range. Affects
75
+ * `model` / `modelChange` / `sdChange` and the registered form field only — the field keeps
76
+ * showing `dd/MM/yyyy → dd/MM/yyyy`. Left unset, endpoints stay canonical `yyyy/MM/dd` strings.
77
+ */
78
+ transform: import("@angular/core").InputSignal<SdTemporalValueTransform | undefined>;
70
79
  valueModel: import("@angular/core").ModelSignal<SdDateRangeValue | null | undefined>;
71
80
  sdChange: import("@angular/core").OutputEmitterRef<SdDateRangeValue | null | undefined>;
72
81
  isMobileOrTablet: boolean;
73
82
  formControl: FormControl<any>;
74
83
  control1: FormControl<any>;
75
84
  control2: FormControl<any>;
85
+ /** Control registered in the parent form while a `transform` is active; holds the public model. */
86
+ readonly modelControl: import("@sdcorejs/angular/forms/models").SdFormControl;
76
87
  constructor();
77
88
  onStartChange: (event: MatDatepickerInputEvent<Date>) => void;
78
89
  onEndChange: (event: MatDatepickerInputEvent<Date>) => void;
@@ -83,5 +94,5 @@ export declare class SdDateRange {
83
94
  onClosePicker: () => void;
84
95
  onOpenPicker: (event: MouseEvent) => void;
85
96
  static ɵfac: i0.ɵɵFactoryDeclaration<SdDateRange, never>;
86
- static ɵcmp: i0.ɵɵComponentDeclaration<SdDateRange, "sd-date-range", 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; }; "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; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "minInput": { "alias": "min"; "required": false; "isSignal": true; }; "maxInput": { "alias": "max"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; }, ["sdLabelDef", "sdValueTemplate"], never, true, never>;
97
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdDateRange, "sd-date-range", 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; }; "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; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "minInput": { "alias": "min"; "required": false; "isSignal": true; }; "maxInput": { "alias": "max"; "required": false; "isSignal": true; }; "transform": { "alias": "transform"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; }, ["sdLabelDef", "sdValueTemplate"], never, true, never>;
87
98
  }
@@ -2,13 +2,16 @@ import { ElementRef, OnDestroy, OnInit, TemplateRef } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
3
  import { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';
4
4
  import { SdViewDefDirective } from '@sdcorejs/angular/forms/directives';
5
- import { SdFormControl, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
5
+ import { SdFormControl, SdTemporalValueTransform, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
6
6
  import { Size } from '@sdcorejs/utils/models';
7
7
  import * as i0 from "@angular/core";
8
8
  type SdDatetimeModelValue = string | number | Date | undefined | null;
9
9
  export declare class SdDatetime implements OnDestroy, OnInit {
10
10
  #private;
11
11
  id: string;
12
+ /** why: id ổn định của <mat-error> để control trỏ `aria-describedby` sang — thông báo lỗi
13
+ * phải đọc được từ chính control, không chỉ hiện ra màn hình. */
14
+ readonly errorId: string;
12
15
  inputRef: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
13
16
  private readonly dateTimePicker;
14
17
  sdLabelTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
@@ -63,12 +66,20 @@ export declare class SdDatetime implements OnDestroy, OnInit {
63
66
  maxInput: import("@angular/core").InputSignal<any>;
64
67
  maxDateInput: import("@angular/core").InputSignal<any>;
65
68
  resolvedMax: import("@angular/core").Signal<Date | null>;
69
+ /**
70
+ * Output serialization strategy for the committed value. Affects `model` / `modelChange` /
71
+ * `sdChange` and the registered form field only — the field keeps displaying
72
+ * `dd/MM/yyyy HH:mm[:ss]` per `showSeconds`. Left unset, the canonical string is emitted.
73
+ */
74
+ transform: import("@angular/core").InputSignal<SdTemporalValueTransform | undefined>;
66
75
  valueModel: import("@angular/core").ModelSignal<SdDatetimeModelValue>;
67
76
  viewedDate: import("@angular/core").Signal<Date | null>;
68
77
  sdChange: import("@angular/core").OutputEmitterRef<any>;
69
78
  sdFocus: import("@angular/core").OutputEmitterRef<void>;
70
79
  isMobileOrTablet: boolean;
71
80
  formControl: SdFormControl;
81
+ /** Control registered in the parent form while a `transform` is active; holds the public model. */
82
+ readonly modelControl: SdFormControl;
72
83
  isFocused: boolean;
73
84
  isValid?: boolean;
74
85
  /** State popup — true khi picker package đang mở. */
@@ -94,6 +105,6 @@ export declare class SdDatetime implements OnDestroy, OnInit {
94
105
  onConfirmInput: (event: any) => void;
95
106
  clear: ($event: any) => void;
96
107
  static ɵfac: i0.ɵɵFactoryDeclaration<SdDatetime, never>;
97
- static ɵcmp: i0.ɵɵComponentDeclaration<SdDatetime, "sd-datetime", 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; }; "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; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "minInput": { "alias": "min"; "required": false; "isSignal": true; }; "minDateInput": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxInput": { "alias": "max"; "required": false; "isSignal": true; }; "maxDateInput": { "alias": "maxDate"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdFocus": "sdFocus"; }, ["sdLabelTemplate", "sdValueTemplate", "sdViewDef"], ["[sdLabel]"], true, never>;
108
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdDatetime, "sd-datetime", 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; }; "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; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "minInput": { "alias": "min"; "required": false; "isSignal": true; }; "minDateInput": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxInput": { "alias": "max"; "required": false; "isSignal": true; }; "maxDateInput": { "alias": "maxDate"; "required": false; "isSignal": true; }; "transform": { "alias": "transform"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdFocus": "sdFocus"; }, ["sdLabelTemplate", "sdValueTemplate", "sdViewDef"], ["[sdLabel]"], true, never>;
98
109
  }
99
110
  export {};
@@ -58,6 +58,7 @@ export declare class SdEntityPicker<T = unknown, TKey = string | number> {
58
58
  readonly selectedTemplate: import("@angular/core").Signal<SdEntityPickerSelectedTemplateDirective<any, any> | undefined>;
59
59
  readonly rowTemplate: import("@angular/core").Signal<SdEntityPickerRowTemplateDirective<any> | undefined>;
60
60
  readonly detailTemplate: import("@angular/core").Signal<SdEntityPickerDetailTemplateDirective<any, any> | undefined>;
61
+ readonly errorId: string;
61
62
  readonly autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
62
63
  readonly autoId: import("@angular/core").Signal<string | undefined>;
63
64
  readonly name: import("@angular/core").InputSignal<string>;
@@ -78,6 +79,8 @@ export declare class SdEntityPicker<T = unknown, TKey = string | number> {
78
79
  readonly disabledEntity: import("@angular/core").InputSignal<((item: T) => boolean) | undefined>;
79
80
  readonly multiple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
80
81
  readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
82
+ /** Component-local error text. Set it to force the control invalid and render the message. */
83
+ readonly inlineError: import("@angular/core").InputSignal<string | undefined>;
81
84
  readonly clearable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
82
85
  readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
83
86
  readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
@@ -86,11 +89,14 @@ export declare class SdEntityPicker<T = unknown, TKey = string | number> {
86
89
  readonly model: import("@angular/core").ModelSignal<SdEntityPickerModel<TKey>>;
87
90
  readonly sdChange: import("@angular/core").OutputEmitterRef<SdEntityPickerModel<TKey>>;
88
91
  readonly sdAdd: import("@angular/core").OutputEmitterRef<void>;
89
- readonly sdLoadError: import("@angular/core").OutputEmitterRef<unknown>;
92
+ readonly loadError: import("@angular/core").OutputEmitterRef<unknown>;
90
93
  readonly formControl: SdFormControl;
94
+ readonly errorMessage: import("@angular/core").Signal<string | undefined>;
91
95
  readonly connectorState: import("@angular/core").Signal<import("@sdcorejs/angular/forms/models").ɵSdFormControlConnectorState<SdEntityPickerModel<TKey>>>;
96
+ /** Interaction-gated validation message; `undefined` until the control is touched/dirty. */
97
+ readonly visibleErrorMessage: import("@angular/core").Signal<string | undefined>;
92
98
  readonly draftKeys: import("@angular/core").WritableSignal<TKey[]>;
93
- readonly loadError: import("@angular/core").WritableSignal<unknown>;
99
+ readonly loadErrorState: import("@angular/core").WritableSignal<unknown>;
94
100
  readonly loading: import("@angular/core").WritableSignal<boolean>;
95
101
  readonly hydrating: import("@angular/core").WritableSignal<boolean>;
96
102
  readonly query: import("@angular/core").WritableSignal<SdQuery<T>>;
@@ -118,6 +124,6 @@ export declare class SdEntityPicker<T = unknown, TKey = string | number> {
118
124
  keyOf(item: T): TKey;
119
125
  displayEntity(item: T): string;
120
126
  static ɵfac: i0.ɵɵFactoryDeclaration<SdEntityPicker<any, any>, never>;
121
- static ɵcmp: i0.ɵɵComponentDeclaration<SdEntityPicker<any, any>, "sd-entity-picker", 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; }; "provider": { "alias": "provider"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "queryFields": { "alias": "queryFields"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "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; }; "disabledEntity": { "alias": "disabledEntity"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "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; }; "addable": { "alias": "addable"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "sdChange": "sdChange"; "sdAdd": "sdAdd"; "sdLoadError": "sdLoadError"; }, ["selectedTemplate", "rowTemplate", "detailTemplate"], never, true, never>;
127
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdEntityPicker<any, any>, "sd-entity-picker", 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; }; "provider": { "alias": "provider"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "queryFields": { "alias": "queryFields"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "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; }; "disabledEntity": { "alias": "disabledEntity"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "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; }; "addable": { "alias": "addable"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "sdChange": "sdChange"; "sdAdd": "sdAdd"; "loadError": "loadError"; }, ["selectedTemplate", "rowTemplate", "detailTemplate"], never, true, never>;
122
128
  }
123
129
  export declare function normalizePickerKeys<TKey>(value: SdEntityPickerModel<TKey>, multiple: boolean): TKey[];
@@ -10,6 +10,9 @@ import * as i0 from "@angular/core";
10
10
  export declare class SdInput implements OnDestroy, OnInit, AfterViewInit {
11
11
  #private;
12
12
  id: string;
13
+ /** why: id ổn định của <mat-error> để `<input>` trỏ `aria-describedby` sang — thông báo lỗi
14
+ * phải đọc được từ chính control, không chỉ hiện ra màn hình. */
15
+ readonly errorId: string;
13
16
  control: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
14
17
  /** The inline primitive — only present when `viewed='inline'`; drives focus/blur in that mode. */
15
18
  inlineRef: import("@angular/core").Signal<SdInlineText | undefined>;
@@ -23,6 +23,10 @@ export declare class SdInputColor {
23
23
  readonly hideInlineError: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
24
24
  /** Display mode — forwarded to the inner `<sd-input>`. `'inline'` = borderless inline-edit; disabled `'inline'` → static. */
25
25
  readonly viewed: import("@angular/core").InputSignalWithTransform<SdViewed, SdViewedInput>;
26
+ /** `true` when `viewed === true` (static view — no editor, no picker). */
27
+ readonly isViewed: import("@angular/core").Signal<boolean>;
28
+ /** `true` when `viewed === 'inline'` and the control is still editable. */
29
+ readonly isInline: import("@angular/core").Signal<boolean>;
26
30
  readonly valueModel: import("@angular/core").ModelSignal<string | null | undefined>;
27
31
  readonly sdChange: import("@angular/core").OutputEmitterRef<string | null | undefined>;
28
32
  readonly picker: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
@@ -15,6 +15,9 @@ declare class SdInputNumberErrotStateMatcher implements ErrorStateMatcher {
15
15
  export declare class SdInputNumber implements OnDestroy, OnInit, AfterViewInit {
16
16
  #private;
17
17
  id: string;
18
+ /** why: id ổn định của <mat-error> để control trỏ `aria-describedby` sang — thông báo lỗi
19
+ * phải đọc được từ chính control, không chỉ hiện ra màn hình. */
20
+ readonly errorId: string;
18
21
  control: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
19
22
  /** The inline primitive — only present when `viewed='inline'`; drives focus/blur in that mode. */
20
23
  inlineRef: import("@angular/core").Signal<SdInlineText | undefined>;
@@ -5,5 +5,8 @@ export type * from './src/sd-selection-data.model';
5
5
  export type * from './src/sd-search.model';
6
6
  export * from './src/form-control-state';
7
7
  export * from './src/sd-viewed';
8
+ export * from './src/sd-temporal-transform';
9
+ export * from './src/sd-model-facing-control';
10
+ export * from './src/sd-timer-scope';
8
11
  export * from './src/sd-form-control-connector';
9
12
  export * from './src/sd-strict-date-adapter';
@@ -11,6 +11,18 @@ interface ɵSdFormControlConnectorBaseOptions<TControl> {
11
11
  readonly name: Signal<string | null | undefined>;
12
12
  /** Canonical control registered in the parent form. */
13
13
  readonly control: Signal<AbstractControl<TControl>>;
14
+ /**
15
+ * Control to register in the parent form **instead of** `control`, when the two must differ.
16
+ *
17
+ * why: `<sd-date>` / `<sd-datetime>` / `<sd-date-range>` bind `control` straight to the Material
18
+ * editor, so it necessarily holds the editor's own representation (a `Date`, or the display
19
+ * string) — not the public model. That is fine until `transform` is set, at which point the
20
+ * consumer is promised that `form.get(name).value` matches `model` and the `sdChange` payload.
21
+ * Yielding a model-facing control here moves only the *registration*; validators, disabled, state
22
+ * and the model binding all stay on `control`, so a `null`/absent signal keeps today's behaviour
23
+ * exactly. The component owning both controls is responsible for mirroring value and validity.
24
+ */
25
+ readonly registeredControl?: Signal<AbstractControl | null | undefined>;
14
26
  readonly validators?: Signal<ValidatorFn | readonly ValidatorFn[] | null | undefined>;
15
27
  readonly asyncValidators?: Signal<AsyncValidatorFn | readonly AsyncValidatorFn[] | null | undefined>;
16
28
  /** Adds/removes Validators.required while preserving validators supplied above. */
@@ -0,0 +1,43 @@
1
+ import { Signal } from '@angular/core';
2
+ import { AbstractControl } from '@angular/forms';
3
+ import { SdFormControl } from './sd-form-control.model';
4
+ export interface ɵSdModelFacingControlOptions<TModel> {
5
+ /** Whether the model-facing control should be the one registered in the parent form. */
6
+ readonly active: Signal<boolean>;
7
+ /** The component's public model. */
8
+ readonly model: Signal<TModel>;
9
+ /** Applies an external write that arrived through the registered control. */
10
+ readonly writeModel: (value: TModel) => void;
11
+ /** The internal UI control whose validity, disabled and interaction state must be mirrored. */
12
+ readonly source: Signal<AbstractControl>;
13
+ /** Compares two model values; defaults to `Object.is`. */
14
+ readonly modelEquals?: (left: TModel, right: TModel) => boolean;
15
+ }
16
+ export interface ɵSdModelFacingControl<TModel> {
17
+ /** The control itself. Holds the public model value, never the editor representation. */
18
+ readonly control: SdFormControl;
19
+ /** Feed straight into `ɵsdFormControlConnector`'s `registeredControl`. */
20
+ readonly registered: Signal<AbstractControl | null>;
21
+ }
22
+ /**
23
+ * A second control that carries the **public model** so it can be registered in the parent form in
24
+ * place of the editor-facing control.
25
+ *
26
+ * why: `<sd-date>` and friends bind their control directly to the Material editor, so that control
27
+ * necessarily holds a `Date` or a display string. That is invisible until `transform` is set — at
28
+ * which point the consumer is told `form.get(name).value` equals `model`, and finding a raw `Date`
29
+ * there instead makes the promise false. Rather than reshaping the editor binding (which would
30
+ * change behaviour for every existing consumer), this mirrors the model into a control of its own
31
+ * and hands *that* one to the form.
32
+ *
33
+ * Both directions are wired, and neither can feed back on the other:
34
+ * - model changes are pushed in with `emitEvent: false`, so they raise no `valueChanges`;
35
+ * - a write that arrives on this control goes to `writeModel`, exactly like a write on the editor
36
+ * control would, so `modelChange` / `sdChange` still fire once.
37
+ *
38
+ * Validity, disabled and touched/dirty are mirrored from `source`, so registering this control does
39
+ * not quietly drop the editor's validators (min/max, parse errors, required) from the parent form.
40
+ *
41
+ * Must be called from an injection context.
42
+ */
43
+ export declare function ɵsdModelFacingControl<TModel>(options: ɵSdModelFacingControlOptions<TModel>): ɵSdModelFacingControl<TModel>;
@@ -4,4 +4,4 @@ export interface SdSearchReq<TData extends string | number = string> {
4
4
  searchFields?: string[];
5
5
  value?: TData | TData[];
6
6
  }
7
- export type SdSearch<T = any> = (args: SdSearchReq) => Promise<T[]>;
7
+ export type SdSearch<T = unknown> = (args: SdSearchReq) => Promise<T[]>;
@@ -1,4 +1,4 @@
1
- export interface SdSelectionData<T = any> {
1
+ export interface SdSelectionData<T = unknown> {
2
2
  multiple?: boolean;
3
3
  values: any[];
4
4
  selectedItems: T[];
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Output serialization strategy for the temporal form controls (`<sd-date>`, `<sd-datetime>`,
3
+ * `<sd-date-range>`).
4
+ *
5
+ * This names how a committed value leaves the component — through `model` / `modelChange` /
6
+ * `sdChange` and the registered `FormGroup` field. It does **not** touch what the field displays,
7
+ * and it is **not** an Angular input-coercion `transform`.
8
+ */
9
+ export type SdTemporalValueTransform = 'ISOString' | 'UTCString';
10
+ /** Every supported strategy, derived from the strategy map so the two can never drift. */
11
+ export declare const SD_TEMPORAL_VALUE_TRANSFORMS: readonly SdTemporalValueTransform[];
12
+ export declare function sdIsTemporalValueTransform(value: unknown): value is SdTemporalValueTransform;
13
+ /**
14
+ * Serializes a committed value with the active strategy.
15
+ *
16
+ * Returns `null` for anything that is not a usable `Date`, so an invalid value can never reach a
17
+ * serializer and produce the string `"Invalid Date"`. Callers treat `null` as "keep the existing
18
+ * representation".
19
+ */
20
+ export declare function sdSerializeTemporalValue(value: Date | null | undefined, transform: SdTemporalValueTransform | null | undefined): string | null;
21
+ /** Local midnight of the given day. Date-only controls serialize this instant, never the raw value. */
22
+ export declare function sdLocalStartOfDay(value: Date): Date;
23
+ /**
24
+ * Parses the wire formats these transforms emit, so a component can read back its own output.
25
+ *
26
+ * Deliberately narrow: only ISO 8601 and the RFC-1123 shape `toUTCString()` produces are accepted.
27
+ * Handing the whole job to `new Date(text)` would make every loosely date-shaped string parse
28
+ * differently per browser, and would swallow the legacy canonical formats the components already
29
+ * parse with their own strict parsers. Returns `null` when the text is not one of these.
30
+ */
31
+ export declare function sdParseTransformedTemporal(value: unknown): Date | null;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @internal Macrotask timers owned by a component/directive injector.
3
+ *
4
+ * Every pending handle is cleared when the host is destroyed, so a deferred focus,
5
+ * panel-open or emit can never run against a torn-down view.
6
+ */
7
+ export interface ɵSdTimerScope {
8
+ /**
9
+ * `setTimeout` with the same observable timing, minus the leak: the handle is tracked
10
+ * and cleared on destroy. Scheduling after destroy is a no-op.
11
+ */
12
+ schedule(handler: () => void, delayMs?: number): void;
13
+ /** Cancels every pending timer without waiting for destroy. */
14
+ clear(): void;
15
+ /** Number of timers still pending. Test/diagnostics only. */
16
+ readonly pending: number;
17
+ }
18
+ /**
19
+ * @internal Creates a destroy-scoped timer bag. MUST be called from an injection context
20
+ * (class field initializer or constructor) because it resolves `DestroyRef`.
21
+ *
22
+ * why: gần như mọi form control đều hoãn focus / mở panel bằng `setTimeout(..., 100)` để chờ
23
+ * Material dựng xong DOM. Handle không được giữ lại nên callback vẫn chạy sau khi host view đã
24
+ * destroy — route đổi nhanh hoặc chip bị gỡ giữa lúc focus là đủ để `detectChanges()` ném
25
+ * `ViewDestroyedError`, hoặc để một output bắn ra sau khi consumer đã unsubscribe. Gom vào một
26
+ * scope duy nhất để nơi dùng chỉ cần đổi `setTimeout(fn, ms)` → `#timers.schedule(fn, ms)`,
27
+ * KHÔNG đổi độ trễ (đây là fix vòng đời, không phải fix hành vi).
28
+ */
29
+ export declare function ɵsdTimerScope(): ɵSdTimerScope;