@sdcorejs/angular 19.1.3 → 19.1.4

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 (295) hide show
  1. package/README.md +17 -14
  2. package/components/audit-diff/index.d.ts +2 -0
  3. package/components/audit-diff/src/audit-diff.component.d.ts +30 -0
  4. package/components/audit-diff/src/audit-diff.engine.d.ts +40 -0
  5. package/components/badge/src/badge.component.d.ts +1 -1
  6. package/components/breadcrumb/index.d.ts +1 -0
  7. package/components/breadcrumb/src/breadcrumb.component.d.ts +50 -0
  8. package/components/data-state/index.d.ts +1 -0
  9. package/components/data-state/src/data-state.component.d.ts +40 -0
  10. package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +1 -2
  11. package/components/document-builder/src/document-builder.component.d.ts +4 -4
  12. package/components/form-generic/src/components/form-builder/components/attribute-expression/attribute-expression.component.d.ts +7 -8
  13. package/components/form-generic/src/components/form-builder/components/attribute-input/attribute-input.component.d.ts +4 -5
  14. package/components/form-generic/src/components/form-builder/components/attribute-input-number/attribute-input-number.component.d.ts +1 -2
  15. package/components/form-generic/src/components/form-builder/components/attribute-parameter/attribute-parameter.component.d.ts +6 -5
  16. package/components/form-generic/src/components/form-builder/components/attribute-select/attribute-select.component.d.ts +4 -5
  17. package/components/form-generic/src/components/form-builder/components/attribute-selection/attribute-selection.component.d.ts +9 -9
  18. package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-queries/build-queries.component.d.ts +8 -7
  19. package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-variables/build-variables.component.d.ts +8 -7
  20. package/components/form-generic/src/components/form-builder/components/attribute-switch/attribute-switch.component.d.ts +3 -4
  21. package/components/form-generic/src/components/form-builder/components/attribute-table/attribute-table.component.d.ts +5 -6
  22. package/components/form-generic/src/components/form-builder/components/attribute-template/attribute-template.component.d.ts +1 -2
  23. package/components/form-generic/src/components/form-builder/components/attribute-textarea/attribute-textarea.component.d.ts +4 -5
  24. package/components/form-generic/src/components/form-builder/components/checkbox/attribute/checkbox-attribute.component.d.ts +6 -6
  25. package/components/form-generic/src/components/form-builder/components/chip-calendar/attribute/chip-calendar-attribute.component.d.ts +6 -6
  26. package/components/form-generic/src/components/form-builder/components/chip-calendar/control/chip-calendar-control.component.d.ts +3 -3
  27. package/components/form-generic/src/components/form-builder/components/chip-string/attribute/chip-string-attribute.component.d.ts +6 -6
  28. package/components/form-generic/src/components/form-builder/components/chip-string/control/chip-string-control.component.d.ts +3 -3
  29. package/components/form-generic/src/components/form-builder/components/configure-validation/configure-validation.component.d.ts +2 -2
  30. package/components/form-generic/src/components/form-builder/components/datetime/attribute/datetime-attribute.component.d.ts +6 -6
  31. package/components/form-generic/src/components/form-builder/components/datetime/control/datetime-control.component.d.ts +3 -3
  32. package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +6 -5
  33. package/components/form-generic/src/components/form-builder/components/html/attribute/components/build-queries/build-queries.component.d.ts +7 -6
  34. package/components/form-generic/src/components/form-builder/components/html/attribute/html-attribute.component.d.ts +7 -8
  35. package/components/form-generic/src/components/form-builder/components/html/control/html-control.component.d.ts +3 -4
  36. package/components/form-generic/src/components/form-builder/components/number/attribute/number-attribute.component.d.ts +6 -6
  37. package/components/form-generic/src/components/form-builder/components/number/control/number-control.component.d.ts +3 -3
  38. package/components/form-generic/src/components/form-builder/components/radio/attribute/radio-attribute.component.d.ts +6 -6
  39. package/components/form-generic/src/components/form-builder/components/radio/control/radio-control.component.d.ts +3 -3
  40. package/components/form-generic/src/components/form-builder/components/select/attribute/select-attribute.component.d.ts +6 -6
  41. package/components/form-generic/src/components/form-builder/components/select/control/select-control.component.d.ts +3 -3
  42. package/components/form-generic/src/components/form-builder/components/table/attribute/table-attribute.component.d.ts +6 -6
  43. package/components/form-generic/src/components/form-builder/components/table/control/table-control.component.d.ts +3 -3
  44. package/components/form-generic/src/components/form-builder/components/textarea/attribute/textarea-attribute.component.d.ts +6 -6
  45. package/components/form-generic/src/components/form-builder/components/textarea/control/textarea-control.component.d.ts +3 -3
  46. package/components/form-generic/src/components/form-builder/components/textfield/attribute/textfield-attribute.component.d.ts +6 -6
  47. package/components/form-generic/src/components/form-builder/components/textfield/control/textfield-control.component.d.ts +3 -3
  48. package/components/form-generic/src/components/form-builder/components/upload/attribute/upload-attribute.component.d.ts +6 -6
  49. package/components/form-generic/src/components/form-builder/components/upload/control/upload-control.component.d.ts +3 -3
  50. package/components/form-generic/src/components/form-render/components/item/components/chip-calendar/chip-calendar.component.d.ts +7 -6
  51. package/components/form-generic/src/components/form-render/components/item/components/chip-string/chip-string.component.d.ts +7 -6
  52. package/components/form-generic/src/components/form-render/components/item/components/datetime/datetime.component.d.ts +7 -7
  53. package/components/form-generic/src/components/form-render/components/item/components/html/html.component.d.ts +6 -6
  54. package/components/form-generic/src/components/form-render/components/item/components/number/number.component.d.ts +7 -6
  55. package/components/form-generic/src/components/form-render/components/item/components/radio/radio.component.d.ts +6 -7
  56. package/components/form-generic/src/components/form-render/components/item/components/select/select.component.d.ts +6 -7
  57. package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +8 -8
  58. package/components/form-generic/src/components/form-render/components/item/components/textarea/textarea.component.d.ts +7 -6
  59. package/components/form-generic/src/components/form-render/components/item/components/textfield/textfield.component.d.ts +7 -6
  60. package/components/form-generic/src/components/form-render/components/item/components/upload/upload.component.d.ts +7 -6
  61. package/components/form-generic/src/components/form-render/components/item/item.component.d.ts +4 -4
  62. package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +8 -9
  63. package/components/form-generic/src/pipes/component-viewed.pipe.d.ts +2 -3
  64. package/components/form-generic/src/pipes/html.pipe.d.ts +2 -2
  65. package/components/form-generic/src/services/form-render.service.d.ts +2 -2
  66. package/components/import-excel/src/import-excel.component.d.ts +4 -7
  67. package/components/import-excel/src/pipes/column-transform.pipe.d.ts +3 -2
  68. package/components/index.d.ts +4 -0
  69. package/components/job-progress/index.d.ts +1 -0
  70. package/components/job-progress/src/job-progress.component.d.ts +34 -0
  71. package/components/mini-editor/src/mini-editor.component.d.ts +7 -7
  72. package/components/modal/src/modal.component.d.ts +6 -1
  73. package/components/preview/index.d.ts +3 -0
  74. package/components/preview/src/preview-pdf/preview-pdf.browser.d.ts +28 -0
  75. package/components/preview/src/preview-pdf/preview-pdf.component.d.ts +61 -23
  76. package/components/preview/src/preview-pdf/preview-pdf.pdfjs.d.ts +77 -0
  77. package/components/preview/src/preview-pdf/preview-pdf.print.d.ts +10 -0
  78. package/components/preview/src/preview-pdf/preview-pdf.types.d.ts +11 -9
  79. package/components/side-drawer/src/side-drawer.component.d.ts +6 -1
  80. package/components/tab/src/tab-group.component.d.ts +1 -0
  81. package/components/tab/src/tab.component.d.ts +7 -1
  82. package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +3 -4
  83. package/components/tab-router/src/pipes/tab-info.pipe.d.ts +2 -2
  84. package/components/tab-router/src/services/tab-decorator.service.d.ts +2 -1
  85. package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +1 -1
  86. package/components/table/src/components/popup-export/popup-export.component.d.ts +6 -6
  87. package/components/table/src/models/table-column.model.d.ts +1 -1
  88. package/components/table/src/services/config.service.d.ts +3 -2
  89. package/components/table/src/services/table-filter/table-filter.model.d.ts +1 -1
  90. package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
  91. package/components/tree/src/tree.component.d.ts +13 -2
  92. package/components/tree/src/tree.model.d.ts +11 -0
  93. package/components/upload-file/src/components/preview/preview.component.d.ts +4 -4
  94. package/directives/src/sd-hover-copy.directive.d.ts +6 -5
  95. package/directives/src/sd-href.directive.d.ts +2 -2
  96. package/directives/src/sd-scroll.directive.d.ts +3 -2
  97. package/fesm2022/sdcorejs-angular-components-anchor.mjs +14 -14
  98. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  99. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs +332 -0
  100. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs.map +1 -0
  101. package/fesm2022/sdcorejs-angular-components-badge.mjs +1 -0
  102. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  103. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs +121 -0
  104. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs.map +1 -0
  105. package/fesm2022/sdcorejs-angular-components-data-state.mjs +68 -0
  106. package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -0
  107. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +16 -21
  108. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
  109. package/fesm2022/sdcorejs-angular-components-editor.mjs +6 -4
  110. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  111. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +463 -806
  112. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  113. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +23 -33
  114. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  115. package/fesm2022/sdcorejs-angular-components-job-progress.mjs +97 -0
  116. package/fesm2022/sdcorejs-angular-components-job-progress.mjs.map +1 -0
  117. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +9 -19
  118. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
  119. package/fesm2022/sdcorejs-angular-components-modal.mjs +60 -3
  120. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  121. package/fesm2022/sdcorejs-angular-components-preview.mjs +1437 -217
  122. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  123. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +4 -4
  124. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  125. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
  126. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  127. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +38 -1
  128. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  129. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +16 -22
  130. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  131. package/fesm2022/sdcorejs-angular-components-tab.mjs +47 -3
  132. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  133. package/fesm2022/sdcorejs-angular-components-table.mjs +94 -61
  134. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  135. package/fesm2022/sdcorejs-angular-components-tree.mjs +185 -16
  136. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  137. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +14 -21
  138. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  139. package/fesm2022/sdcorejs-angular-components.mjs +4 -0
  140. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  141. package/fesm2022/sdcorejs-angular-directives.mjs +29 -41
  142. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  143. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +7 -7
  144. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  145. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +20 -73
  146. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  147. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +6 -3
  148. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  149. package/fesm2022/sdcorejs-angular-forms-chip.mjs +6 -3
  150. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  151. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +16 -13
  152. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  153. package/fesm2022/sdcorejs-angular-forms-date.mjs +42 -65
  154. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  155. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +51 -66
  156. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  157. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +384 -0
  158. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -0
  159. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +1 -1
  160. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  161. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +7 -5
  162. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  163. package/fesm2022/sdcorejs-angular-forms-input.mjs +289 -55
  164. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  165. package/fesm2022/sdcorejs-angular-forms-models.mjs +155 -2
  166. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  167. package/fesm2022/sdcorejs-angular-forms-radio.mjs +44 -68
  168. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  169. package/fesm2022/sdcorejs-angular-forms-select.mjs +6 -20
  170. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  171. package/fesm2022/sdcorejs-angular-forms-switch.mjs +19 -66
  172. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  173. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +6 -5
  174. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  175. package/fesm2022/sdcorejs-angular-forms-time-range.mjs +279 -0
  176. package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -0
  177. package/fesm2022/sdcorejs-angular-forms-time.mjs +309 -0
  178. package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -0
  179. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +210 -0
  180. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -0
  181. package/fesm2022/sdcorejs-angular-forms.mjs +73 -4
  182. package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
  183. package/fesm2022/sdcorejs-angular-i18n.mjs +355 -10
  184. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  185. package/fesm2022/sdcorejs-angular-interceptors.mjs +12 -17
  186. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  187. package/fesm2022/sdcorejs-angular-modules-layout.mjs +859 -78
  188. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  189. package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
  190. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  191. package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
  192. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  193. package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
  194. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  195. package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
  196. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  197. package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
  198. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
  199. package/fesm2022/sdcorejs-angular-services-loading.mjs +339 -74
  200. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  201. package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
  202. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  203. package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
  204. package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
  205. package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
  206. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  207. package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
  208. package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
  209. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
  210. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
  211. package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
  212. package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
  213. package/fesm2022/sdcorejs-angular-services.mjs +4 -0
  214. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  215. package/forms/autocomplete/src/autocomplete.component.d.ts +3 -4
  216. package/forms/checkbox/src/checkbox.component.d.ts +4 -8
  217. package/forms/date/src/date.component.d.ts +3 -2
  218. package/forms/date-range/src/date-range.component.d.ts +5 -8
  219. package/forms/datetime/src/datetime.component.d.ts +3 -2
  220. package/forms/entity-picker/index.d.ts +1 -0
  221. package/forms/entity-picker/src/entity-picker.component.d.ts +123 -0
  222. package/forms/index.d.ts +6 -0
  223. package/forms/input/index.d.ts +1 -0
  224. package/forms/input/src/input-mask.d.ts +43 -0
  225. package/forms/input/src/input.component.d.ts +26 -9
  226. package/forms/input-number/src/input-number.component.d.ts +1 -1
  227. package/forms/models/index.d.ts +1 -0
  228. package/forms/models/src/sd-form-control-connector.d.ts +86 -0
  229. package/forms/radio/src/radio.component.d.ts +12 -8
  230. package/forms/src/forms.module.d.ts +9 -5
  231. package/forms/switch/src/switch.component.d.ts +4 -7
  232. package/forms/time/index.d.ts +3 -0
  233. package/forms/time/src/time-picker.adapter.d.ts +13 -0
  234. package/forms/time/src/time-value.d.ts +19 -0
  235. package/forms/time/src/time.component.d.ts +78 -0
  236. package/forms/time-range/index.d.ts +2 -0
  237. package/forms/time-range/src/time-range-value.d.ts +14 -0
  238. package/forms/time-range/src/time-range.component.d.ts +80 -0
  239. package/forms/tree-select/index.d.ts +1 -0
  240. package/forms/tree-select/src/tree-select.component.d.ts +71 -0
  241. package/i18n/src/en.d.ts +68 -2
  242. package/interceptors/no-internet/no-internet.interceptor.d.ts +2 -3
  243. package/interceptors/unauthorized/unauthorized.interceptor.d.ts +2 -2
  244. package/modules/layout/components/index.d.ts +6 -0
  245. package/modules/layout/components/layout-main/layout-main.component.d.ts +7 -2
  246. package/modules/layout/components/shared/menu-tree/menu-tree.component.d.ts +28 -0
  247. package/modules/layout/components/shared/user-menu/user-menu.component.d.ts +25 -0
  248. package/modules/layout/components/sidebar-mobile-v2/main.component.d.ts +27 -0
  249. package/modules/layout/components/sidebar-mobile-v3/main.component.d.ts +28 -0
  250. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +3 -4
  251. package/modules/layout/components/sidebar-v1/main.component.d.ts +2 -2
  252. package/modules/layout/components/sidebar-v2/main.component.d.ts +36 -0
  253. package/modules/layout/components/sidebar-v3/main.component.d.ts +29 -0
  254. package/modules/layout/configurations/layout.configuration.d.ts +36 -2
  255. package/modules/layout/index.d.ts +1 -0
  256. package/modules/layout/pipes/menu.pipe.d.ts +2 -2
  257. package/modules/layout/services/index.d.ts +3 -0
  258. package/modules/layout/services/layout.service.d.ts +2 -2
  259. package/modules/layout/services/menu/menu.utils.d.ts +6 -0
  260. package/modules/layout/services/navigation-state/navigation-state.service.d.ts +18 -0
  261. package/modules/layout/services/responsive/responsive.service.d.ts +12 -0
  262. package/modules/layout/services/storage/storage.service.d.ts +21 -8
  263. package/package.json +49 -1
  264. package/pipes/src/safe-html.pipe.d.ts +2 -2
  265. package/services/api/src/api.model.d.ts +54 -15
  266. package/services/api/src/api.service.d.ts +13 -8
  267. package/services/api/src/interceptors/api.interceptor.d.ts +1 -1
  268. package/services/cache/src/cache.model.d.ts +46 -13
  269. package/services/cache/src/cache.service.d.ts +5 -2
  270. package/services/confirm/src/lib/confirm.service.d.ts +2 -2
  271. package/services/docx/src/lib/docx.service.d.ts +2 -3
  272. package/services/index.d.ts +4 -0
  273. package/services/loading/src/loading.service.d.ts +15 -8
  274. package/services/notify/src/components/toast/toast.component.d.ts +2 -3
  275. package/services/persistence/index.d.ts +5 -0
  276. package/services/persistence/src/graph-serializer.d.ts +16 -0
  277. package/services/persistence/src/persistence-envelope.d.ts +28 -0
  278. package/services/persistence/src/persistence-key.d.ts +17 -0
  279. package/services/persistence/src/persistence.model.d.ts +63 -0
  280. package/services/persistence/src/storage-adapter.d.ts +29 -0
  281. package/services/storage/src/storage.model.d.ts +20 -5
  282. package/services/storage/src/storage.service.d.ts +6 -3
  283. package/services/task/index.d.ts +3 -0
  284. package/services/task/src/task.model.d.ts +75 -0
  285. package/services/task/src/task.service.d.ts +14 -0
  286. package/services/task/src/task.tokens.d.ts +12 -0
  287. package/services/unsaved-changes/index.d.ts +4 -0
  288. package/services/unsaved-changes/src/unsaved-changes.adapters.d.ts +15 -0
  289. package/services/unsaved-changes/src/unsaved-changes.model.d.ts +41 -0
  290. package/services/unsaved-changes/src/unsaved-changes.service.d.ts +16 -0
  291. package/services/unsaved-changes/src/unsaved-changes.tokens.d.ts +9 -0
  292. package/services/viewport/index.d.ts +3 -0
  293. package/services/viewport/src/viewport.model.d.ts +12 -0
  294. package/services/viewport/src/viewport.service.d.ts +18 -0
  295. package/services/viewport/src/viewport.tokens.d.ts +6 -0
@@ -2,6 +2,7 @@ import { InjectionToken } from '@angular/core';
2
2
  import { MaybeAsync } from '@sdcorejs/utils/models';
3
3
  export interface ISdLayoutConfiguration {
4
4
  homeUrl?: string;
5
+ mobileBreakpoint?: number;
5
6
  sidebar: ISdSidebarConfiguration | (() => MaybeAsync<ISdSidebarConfiguration>);
6
7
  userInfo: SdLayoutUserInfo | (() => MaybeAsync<SdLayoutUserInfo>);
7
8
  signout: () => void | Promise<void>;
@@ -30,8 +31,18 @@ export interface SdLayoutUserInfo {
30
31
  */
31
32
  avatar?: string;
32
33
  }
33
- export type ISdSidebarConfiguration = SidebarConfigurationV1;
34
- export interface SidebarConfigurationV1 {
34
+ export declare const DEFAULT_LAYOUT_MOBILE_BREAKPOINT = 1024;
35
+ export interface SidebarConfigurationBase {
36
+ brandColor?: string;
37
+ brandLightColor?: string;
38
+ logoUrl?: string;
39
+ defaultTitle?: string;
40
+ pin?: {
41
+ enabled?: boolean;
42
+ };
43
+ }
44
+ export type ISdSidebarConfiguration = SidebarConfigurationV1 | SidebarConfigurationV2 | SidebarConfigurationV3;
45
+ export interface SidebarConfigurationV1 extends SidebarConfigurationBase {
35
46
  version: 1;
36
47
  /**
37
48
  * Màu brand chính.
@@ -64,4 +75,27 @@ export interface SidebarConfigurationV1 {
64
75
  enabled?: boolean;
65
76
  };
66
77
  }
78
+ export interface SidebarConfigurationV2 extends SidebarConfigurationBase {
79
+ version: 2;
80
+ interaction?: 'click' | 'hover-lock';
81
+ primaryMenuIds?: string[];
82
+ }
83
+ export interface SidebarConfigurationV3 extends SidebarConfigurationBase {
84
+ version: 3;
85
+ defaultCollapsed?: boolean;
86
+ recent?: {
87
+ enabled?: boolean;
88
+ maxItems?: number;
89
+ };
90
+ }
91
+ export interface ResolvedSidebarRecentConfiguration {
92
+ enabled: boolean;
93
+ maxItems: number;
94
+ }
95
+ export declare function normalizeLayoutMobileBreakpoint(value: number | undefined): number;
96
+ export declare function resolveSidebarV2Interaction(sidebar: SidebarConfigurationV2): 'click' | 'hover-lock';
97
+ export declare function resolveSidebarV3Recent(sidebar: SidebarConfigurationV3): ResolvedSidebarRecentConfiguration;
98
+ export declare function normalizeSidebarConfiguration(_sidebar: SidebarConfigurationV1): SidebarConfigurationV1;
99
+ export declare function normalizeSidebarConfiguration(_sidebar: SidebarConfigurationV2): SidebarConfigurationV2;
100
+ export declare function normalizeSidebarConfiguration(_sidebar: SidebarConfigurationV3): SidebarConfigurationV3;
67
101
  export declare const SD_LAYOUT_CONFIGURATION: InjectionToken<ISdLayoutConfiguration>;
@@ -2,4 +2,5 @@ export * from './modules';
2
2
  export * from './services';
3
3
  export * from './components';
4
4
  export * from './configurations';
5
+ export * from './pipes';
5
6
  export * from './layout.module';
@@ -1,11 +1,11 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import { SdLayoutMenu } from '../services/menu/menu.model';
3
- import { SdPermissionService } from '@sdcorejs/angular/modules/permission';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class MenuPipe implements PipeTransform {
6
5
  #private;
7
6
  private permissionService;
8
- constructor(permissionService: SdPermissionService);
7
+ /** Inserted by Angular inject() migration for backwards compatibility */
8
+ constructor(...args: unknown[]);
9
9
  transform(menus: SdLayoutMenu[]): SdLayoutMenu[];
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuPipe, never>;
11
11
  static ɵpipe: i0.ɵɵPipeDeclaration<MenuPipe, "menu", true>;
@@ -1,3 +1,6 @@
1
1
  export type * from './menu/menu.model';
2
2
  export * from './storage/storage.service';
3
+ export * from './responsive/responsive.service';
4
+ export * from './navigation-state/navigation-state.service';
5
+ export * from './menu/menu.utils';
3
6
  export * from './layout.service';
@@ -1,9 +1,9 @@
1
- import { SdLayoutUserInfo } from '../configurations';
1
+ import { ISdSidebarConfiguration, SdLayoutUserInfo } from '../configurations';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class SdLayoutService {
4
4
  #private;
5
5
  userInfo: import("@angular/core").WritableSignal<SdLayoutUserInfo | undefined>;
6
- sidebar: import("@angular/core").WritableSignal<import("@sdcorejs/angular/modules/layout").SidebarConfigurationV1 | undefined>;
6
+ sidebar: import("@angular/core").WritableSignal<ISdSidebarConfiguration | undefined>;
7
7
  constructor();
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutService, never>;
9
9
  static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutService>;
@@ -0,0 +1,6 @@
1
+ import { SdLayoutChildrenMenu, SdLayoutMenu, SdLayoutRootMenu } from './menu.model';
2
+ export declare function getMenuStableKey(menu: SdLayoutMenu | null | undefined, ancestors?: string[]): string;
3
+ export declare function searchMenuLeaves(menus: SdLayoutMenu[], query: string): SdLayoutRootMenu[];
4
+ export declare function selectPrimaryMenuGroups(menus: SdLayoutMenu[], requestedIds: string[] | undefined, maximum?: number): SdLayoutMenu[];
5
+ export declare function resolveMenuKeys(menus: SdLayoutMenu[], keys: string[]): (SdLayoutRootMenu | SdLayoutChildrenMenu)[];
6
+ export declare function flattenMenuLeaves(menus: SdLayoutMenu[]): SdLayoutRootMenu[];
@@ -0,0 +1,18 @@
1
+ import { ResolvedSidebarRecentConfiguration } from '../../configurations';
2
+ import { SdLayoutMenu } from '../menu/menu.model';
3
+ import { SdLayoutVersionState } from '../storage/storage.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class SdLayoutNavigationStateService {
6
+ #private;
7
+ readonly pinnedKeys: import("@angular/core").WritableSignal<string[]>;
8
+ readonly recentKeys: import("@angular/core").WritableSignal<string[]>;
9
+ readonly pinnedMenus: import("@angular/core").Signal<(import("@sdcorejs/angular/modules/layout").SdLayoutRootMenu | import("@sdcorejs/angular/modules/layout").SdLayoutChildrenMenu)[]>;
10
+ readonly recentMenus: import("@angular/core").Signal<(import("@sdcorejs/angular/modules/layout").SdLayoutRootMenu | import("@sdcorejs/angular/modules/layout").SdLayoutChildrenMenu)[]>;
11
+ hydrate(menus: SdLayoutMenu[], recentMaximum?: number): void;
12
+ togglePinned(menu: SdLayoutMenu): void;
13
+ recordRecent(menu: SdLayoutMenu, configuration: ResolvedSidebarRecentConfiguration): void;
14
+ patchVersionState(version: 1 | 2 | 3, patch: SdLayoutVersionState): void;
15
+ versionState(version: 1 | 2 | 3): SdLayoutVersionState;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutNavigationStateService, never>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutNavigationStateService>;
18
+ }
@@ -0,0 +1,12 @@
1
+ import { SdViewport } from '@sdcorejs/angular/services/viewport';
2
+ import * as i0 from "@angular/core";
3
+ export type SdLayoutViewport = SdViewport;
4
+ export declare const SD_LAYOUT_VIEWPORT: import("@angular/core").InjectionToken<SdViewport | null>;
5
+ /** @deprecated Prefer `SdViewportService` from `@sdcorejs/angular/services/viewport`. */
6
+ export declare class SdLayoutResponsiveService {
7
+ #private;
8
+ readonly viewportWidth: import("@angular/core").Signal<number>;
9
+ isMobile(breakpoint: number): boolean;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutResponsiveService, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutResponsiveService>;
12
+ }
@@ -1,13 +1,26 @@
1
- import { SdStorage, SdStorageService } from '@sdcorejs/angular/services';
2
- import { SdLayoutChildrenMenu } from '../menu/menu.model';
1
+ import { SdStorage } from '@sdcorejs/angular/services';
2
+ import { SdLayoutChildrenMenu, SdLayoutMenu } from '../menu/menu.model';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SdLayoutStorageService {
5
- private sdStorageService;
6
- isShowSidebar: SdStorage<boolean>;
7
- menuLockStatus: SdStorage<boolean>;
8
- lastActiveMenuGroupId: SdStorage<string>;
9
- pinnedMenuGroup: SdStorage<SdLayoutChildrenMenu>;
10
- constructor(sdStorageService: SdStorageService);
5
+ #private;
6
+ readonly isShowSidebar: SdStorage<boolean>;
7
+ readonly menuLockStatus: SdStorage<boolean>;
8
+ readonly lastActiveMenuGroupId: SdStorage<string>;
9
+ readonly pinnedMenuGroup: SdStorage<SdLayoutChildrenMenu>;
10
+ readonly pinnedMenuKeys: SdStorage<string[]>;
11
+ readonly recentMenuKeys: SdStorage<string[]>;
12
+ readonly versionStates: SdStorage<Record<string, SdLayoutVersionState>>;
13
+ readPinnedMenuKeys(menus: SdLayoutMenu[]): string[];
14
+ writePinnedMenuKeys(keys: string[]): void;
15
+ readRecentMenuKeys(menus: SdLayoutMenu[], maximum?: number): string[];
16
+ writeRecentMenuKeys(keys: string[]): void;
17
+ readVersionState(version: 1 | 2 | 3): SdLayoutVersionState;
18
+ patchVersionState(version: 1 | 2 | 3, patch: SdLayoutVersionState): SdLayoutVersionState;
11
19
  static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutStorageService, never>;
12
20
  static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutStorageService>;
13
21
  }
22
+ export interface SdLayoutVersionState {
23
+ activeGroupKey?: string;
24
+ locked?: boolean;
25
+ collapsed?: boolean;
26
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdcorejs/angular",
3
- "version": "19.1.3",
3
+ "version": "19.1.4",
4
4
  "license": "MIT",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
@@ -87,6 +87,10 @@
87
87
  "types": "./components/anchor/index.d.ts",
88
88
  "default": "./fesm2022/sdcorejs-angular-components-anchor.mjs"
89
89
  },
90
+ "./components/audit-diff": {
91
+ "types": "./components/audit-diff/index.d.ts",
92
+ "default": "./fesm2022/sdcorejs-angular-components-audit-diff.mjs"
93
+ },
90
94
  "./components/autoid-inspector": {
91
95
  "types": "./components/autoid-inspector/index.d.ts",
92
96
  "default": "./fesm2022/sdcorejs-angular-components-autoid-inspector.mjs"
@@ -103,6 +107,10 @@
103
107
  "types": "./components/base/index.d.ts",
104
108
  "default": "./fesm2022/sdcorejs-angular-components-base.mjs"
105
109
  },
110
+ "./components/breadcrumb": {
111
+ "types": "./components/breadcrumb/index.d.ts",
112
+ "default": "./fesm2022/sdcorejs-angular-components-breadcrumb.mjs"
113
+ },
106
114
  "./components/button": {
107
115
  "types": "./components/button/index.d.ts",
108
116
  "default": "./fesm2022/sdcorejs-angular-components-button.mjs"
@@ -119,6 +127,10 @@
119
127
  "types": "./components/code-editor/index.d.ts",
120
128
  "default": "./fesm2022/sdcorejs-angular-components-code-editor.mjs"
121
129
  },
130
+ "./components/data-state": {
131
+ "types": "./components/data-state/index.d.ts",
132
+ "default": "./fesm2022/sdcorejs-angular-components-data-state.mjs"
133
+ },
122
134
  "./components/document-builder": {
123
135
  "types": "./components/document-builder/index.d.ts",
124
136
  "default": "./fesm2022/sdcorejs-angular-components-document-builder.mjs"
@@ -143,6 +155,10 @@
143
155
  "types": "./components/inform/index.d.ts",
144
156
  "default": "./fesm2022/sdcorejs-angular-components-inform.mjs"
145
157
  },
158
+ "./components/job-progress": {
159
+ "types": "./components/job-progress/index.d.ts",
160
+ "default": "./fesm2022/sdcorejs-angular-components-job-progress.mjs"
161
+ },
146
162
  "./components/mini-editor": {
147
163
  "types": "./components/mini-editor/index.d.ts",
148
164
  "default": "./fesm2022/sdcorejs-angular-components-mini-editor.mjs"
@@ -251,6 +267,10 @@
251
267
  "types": "./forms/directives/index.d.ts",
252
268
  "default": "./fesm2022/sdcorejs-angular-forms-directives.mjs"
253
269
  },
270
+ "./forms/entity-picker": {
271
+ "types": "./forms/entity-picker/index.d.ts",
272
+ "default": "./fesm2022/sdcorejs-angular-forms-entity-picker.mjs"
273
+ },
254
274
  "./forms/inline-text": {
255
275
  "types": "./forms/inline-text/index.d.ts",
256
276
  "default": "./fesm2022/sdcorejs-angular-forms-inline-text.mjs"
@@ -291,6 +311,18 @@
291
311
  "types": "./forms/textarea/index.d.ts",
292
312
  "default": "./fesm2022/sdcorejs-angular-forms-textarea.mjs"
293
313
  },
314
+ "./forms/time": {
315
+ "types": "./forms/time/index.d.ts",
316
+ "default": "./fesm2022/sdcorejs-angular-forms-time.mjs"
317
+ },
318
+ "./forms/time-range": {
319
+ "types": "./forms/time-range/index.d.ts",
320
+ "default": "./fesm2022/sdcorejs-angular-forms-time-range.mjs"
321
+ },
322
+ "./forms/tree-select": {
323
+ "types": "./forms/tree-select/index.d.ts",
324
+ "default": "./fesm2022/sdcorejs-angular-forms-tree-select.mjs"
325
+ },
294
326
  "./modules/auth": {
295
327
  "types": "./modules/auth/index.d.ts",
296
328
  "default": "./fesm2022/sdcorejs-angular-modules-auth.mjs"
@@ -343,10 +375,26 @@
343
375
  "types": "./services/notify/index.d.ts",
344
376
  "default": "./fesm2022/sdcorejs-angular-services-notify.mjs"
345
377
  },
378
+ "./services/persistence": {
379
+ "types": "./services/persistence/index.d.ts",
380
+ "default": "./fesm2022/sdcorejs-angular-services-persistence.mjs"
381
+ },
346
382
  "./services/storage": {
347
383
  "types": "./services/storage/index.d.ts",
348
384
  "default": "./fesm2022/sdcorejs-angular-services-storage.mjs"
349
385
  },
386
+ "./services/task": {
387
+ "types": "./services/task/index.d.ts",
388
+ "default": "./fesm2022/sdcorejs-angular-services-task.mjs"
389
+ },
390
+ "./services/unsaved-changes": {
391
+ "types": "./services/unsaved-changes/index.d.ts",
392
+ "default": "./fesm2022/sdcorejs-angular-services-unsaved-changes.mjs"
393
+ },
394
+ "./services/viewport": {
395
+ "types": "./services/viewport/index.d.ts",
396
+ "default": "./fesm2022/sdcorejs-angular-services-viewport.mjs"
397
+ },
350
398
  "./utilities/data-state": {
351
399
  "types": "./utilities/data-state/index.d.ts",
352
400
  "default": "./fesm2022/sdcorejs-angular-utilities-data-state.mjs"
@@ -1,9 +1,9 @@
1
1
  import { PipeTransform } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class SdSafeHtmlPipe implements PipeTransform {
5
4
  private sanitizer;
6
- constructor(sanitizer: DomSanitizer);
5
+ /** Inserted by Angular inject() migration for backwards compatibility */
6
+ constructor(...args: unknown[]);
7
7
  transform(html: string | number | undefined | null): import("@angular/platform-browser").SafeHtml | undefined;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<SdSafeHtmlPipe, never>;
9
9
  static ɵpipe: i0.ɵɵPipeDeclaration<SdSafeHtmlPipe, "sdSafeHtml", true>;
@@ -1,36 +1,75 @@
1
- import { HttpClient, HttpErrorResponse, HttpRequest, HttpResponse } from '@angular/common/http';
1
+ import { HttpContext, HttpErrorResponse, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';
2
2
  import { InjectionToken } from '@angular/core';
3
3
  import { SdCacheOption } from '@sdcorejs/angular/services/cache';
4
+ export type SdApiResponseType = 'arraybuffer' | 'blob' | 'json' | 'text';
5
+ type SdApiBivariantCallback<TArgument, TResult> = {
6
+ bivarianceHack(argument: TArgument): TResult;
7
+ }['bivarianceHack'];
8
+ export interface SdApiHttpOption {
9
+ headers?: HttpHeaders | Record<string, string | string[]>;
10
+ context?: HttpContext;
11
+ params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>;
12
+ observe?: 'body';
13
+ reportProgress?: boolean;
14
+ responseType?: SdApiResponseType;
15
+ withCredentials?: boolean;
16
+ transferCache?: {
17
+ includeHeaders?: string[];
18
+ } | boolean;
19
+ }
20
+ export interface SdApiRetryOption {
21
+ /** Number of retries after the initial request. Values are clamped to a finite safe limit. */
22
+ attempts: number;
23
+ /** Delay before the first retry. Defaults to 0. */
24
+ delayMs?: number;
25
+ /** Multiplier applied to each subsequent delay. Defaults to 1. */
26
+ backoff?: number;
27
+ /** Overrides the default transient HTTP-status predicate. `attempt` is one-based. */
28
+ retryWhen?: (error: unknown, attempt: number) => boolean;
29
+ /** Required to retry POST, PUT, PATCH, or DELETE. */
30
+ mutations?: boolean;
31
+ }
4
32
  export interface SdApiOption {
5
33
  cacheOption?: SdCacheOption;
6
34
  timeout?: number;
35
+ /** Cancels only this caller; a shared HTTP request continues while another caller remains. */
36
+ signal?: AbortSignal;
37
+ /** Enables request deduplication. Defaults to true for GET and false for mutations. */
38
+ dedupe?: boolean;
39
+ /** Keeps a successful dedupe result replayable for this duration. Defaults to 1000ms. */
40
+ dedupeWindowMs?: number;
41
+ /** Opt-in bounded retry policy. The default is no retries. */
42
+ retry?: SdApiRetryOption;
43
+ /**
44
+ * @deprecated Use `dedupe`. When both are provided, `dedupe` takes precedence.
45
+ * Explicit `true` remains a compatibility opt-in for mutation deduplication.
46
+ */
7
47
  autoCache?: boolean;
8
48
  }
9
- type HttpGetOption = Parameters<HttpClient['get']>[1];
10
- export type SdGetOption = HttpGetOption & SdApiOption;
11
- type HttpPostOption = Parameters<HttpClient['post']>[2];
12
- export type SdPostOption = HttpPostOption & SdApiOption;
13
- type HttpPutOption = Parameters<HttpClient['put']>[2];
14
- export type SdPutOption = HttpPutOption & SdApiOption;
15
- type HttpDeleteOption = Parameters<HttpClient['delete']>[1];
16
- export type SdDeleteOption = HttpDeleteOption & SdApiOption;
49
+ export type SdGetOption = SdApiHttpOption & SdApiOption;
50
+ export type SdPostOption = SdApiHttpOption & SdApiOption;
51
+ export type SdPutOption = SdApiHttpOption & SdApiOption;
52
+ export type SdPatchOption = SdApiHttpOption & SdApiOption;
53
+ export type SdDeleteOption = SdApiHttpOption & SdApiOption;
54
+ export type SdApiRequestUpdate = Parameters<HttpRequest<unknown>['clone']>[0];
17
55
  export interface SdApiHandler {
18
56
  /** Danh sách host URL mà handler này sẽ xử lý */
19
57
  hosts: string[];
20
58
  /** Can thiệp request: gắn header, token, transform body... */
21
- intercept?: (request: HttpRequest<any>) => HttpRequest<any>;
59
+ intercept?: SdApiBivariantCallback<HttpRequest<unknown>, HttpRequest<unknown> | SdApiRequestUpdate>;
22
60
  /** Hook chạy TRƯỚC khi gửi request (dùng để log, tracking...) */
23
- beforeRemote?: (request: HttpRequest<any>) => void | Promise<void>;
61
+ beforeRemote?: SdApiBivariantCallback<HttpRequest<unknown>, void | Promise<void>>;
24
62
  /** Hook chạy SAU khi nhận response (xử lý lỗi, notify...) */
25
- afterRemote?: (response: HttpResponse<any> | HttpErrorResponse | Error) => void | Promise<void>;
63
+ afterRemote?: SdApiBivariantCallback<HttpResponse<unknown> | HttpErrorResponse | Error, void | Promise<void>>;
26
64
  /** Transform response body thành kiểu dữ liệu mong muốn */
27
- mapResponse?: <Tres = any, Tdata = any>(response: Tres) => Tdata;
28
- /** Timeout tính bằng milliseconds. Mặc định: 30000 (30 giây) */
65
+ mapResponse?: SdApiBivariantCallback<unknown, unknown>;
66
+ /** Timeout tính bằng milliseconds. Mặc định: 60000 (60 giây) */
29
67
  timeout?: number;
30
68
  }
31
69
  export interface ISdApiConfiguration {
32
- handlers: SdApiHandler[];
70
+ handlers?: SdApiHandler[];
33
71
  }
34
72
  export declare const SD_API_CONFIG: InjectionToken<ISdApiConfiguration>;
73
+ /** @deprecated Use `SD_API_CONFIG`. This is the same injection token. */
35
74
  export declare const SD_API_CONFIGURATION: InjectionToken<ISdApiConfiguration>;
36
75
  export {};
@@ -1,19 +1,24 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
- import { SdDeleteOption, SdGetOption, SdPostOption, SdPutOption } from './api.model';
2
+ import { SdDeleteOption, SdGetOption, SdPatchOption, SdPostOption, SdPutOption } from './api.model';
3
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * Response generics intentionally default to `unknown` for type safety.
6
+ * Callers should specify `T`; migration guidance is tracked for Task 13.
7
+ */
4
8
  export declare class SdApiService {
5
9
  #private;
6
10
  constructor();
7
11
  get http(): HttpClient;
8
- get: <T = any>(url: string, option?: SdGetOption) => Promise<T>;
9
- post: <T = any>(url: string, body?: any, option?: SdPostOption) => Promise<T>;
10
- put: <T = any>(url: string, body?: any, option?: SdPutOption) => Promise<T>;
11
- delete: <T = any>(url: string, option?: SdDeleteOption) => Promise<T>;
12
- upload: (url: string, option?: {
12
+ get: <T = unknown>(url: string, option?: SdGetOption) => Promise<T>;
13
+ post: <T = unknown>(url: string, body?: unknown, option?: SdPostOption) => Promise<T>;
14
+ put: <T = unknown>(url: string, body?: unknown, option?: SdPutOption) => Promise<T>;
15
+ patch: <T = unknown>(url: string, body?: unknown, option?: SdPatchOption) => Promise<T>;
16
+ delete: <T = unknown>(url: string, option?: SdDeleteOption) => Promise<T>;
17
+ upload: <T = unknown>(url: string, option?: {
13
18
  extensions?: string[];
14
19
  maxSizeInMb?: number;
15
- }) => Promise<any>;
16
- uploadFile: (url: string, file: File) => Promise<any>;
20
+ }) => Promise<T | null | undefined>;
21
+ uploadFile: <T = unknown>(url: string, file: File | null | undefined) => Promise<T | null>;
17
22
  static ɵfac: i0.ɵɵFactoryDeclaration<SdApiService, never>;
18
23
  static ɵprov: i0.ɵɵInjectableDeclaration<SdApiService>;
19
24
  }
@@ -3,7 +3,7 @@ import { Observable } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SdHttpInterceptor implements HttpInterceptor {
5
5
  #private;
6
- intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
6
+ intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<SdHttpInterceptor, never>;
8
8
  static ɵprov: i0.ɵɵInjectableDeclaration<SdHttpInterceptor>;
9
9
  }
@@ -1,30 +1,63 @@
1
1
  import { InjectionToken } from '@angular/core';
2
+ import { SdPersistenceIdentityCanonicalizer, SdPersistenceSerializer } from '@sdcorejs/angular/services/persistence';
2
3
  import { Observable } from 'rxjs';
3
- export interface SdCacheOption<T = any> {
4
+ export interface SdCacheOption<T = unknown> {
4
5
  type?: 'memory' | 'session' | 'local';
5
6
  hours?: number;
7
+ ttlMs?: number;
6
8
  default?: T;
7
- args?: Record<string, any>;
9
+ args?: Readonly<Record<string, unknown>>;
10
+ namespace?: string;
11
+ version?: string | number;
12
+ serializer?: SdPersistenceSerializer;
13
+ identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
8
14
  }
9
- export interface SdCache<T = any> {
10
- get: () => T;
15
+ export interface SdCache<T = unknown> {
16
+ get: () => T | undefined;
17
+ snapshot: () => SdCacheSnapshot<T>;
11
18
  set: (data: T) => void;
12
19
  has: () => boolean;
13
20
  remove: () => void;
21
+ /** Releases only this facade while preserving its backing cache entry. */
22
+ release: () => void;
14
23
  destroy: () => void;
15
24
  observer: Observable<T | undefined>;
16
25
  load: (callback: () => Promise<T>) => Promise<T>;
17
26
  }
27
+ export type SdCacheSnapshot<T> = {
28
+ present: false;
29
+ } | {
30
+ present: true;
31
+ value: T;
32
+ };
33
+ export interface SdCacheWithDefault<T> extends Omit<SdCache<T>, 'get' | 'observer'> {
34
+ get: () => T;
35
+ observer: Observable<T>;
36
+ }
37
+ export interface SdCacheStoredValue<T = unknown> {
38
+ data: T;
39
+ createdOn: Date;
40
+ }
41
+ export type SdCacheSetCallback = (key: string, value: SdCacheStoredValue<unknown>, option?: SdCacheOption<unknown>) => Promise<void> | void;
42
+ export type SdCacheGetCallback = (key: string, option?: SdCacheOption<unknown>) => Promise<SdCacheStoredValue<unknown> | undefined>;
43
+ export type SdCacheRemoveCallback = (key: string, option?: SdCacheOption<unknown>) => Promise<void> | void;
18
44
  export interface ISdCacheConfiguration {
19
45
  convertKey?: (key: string) => string;
20
- set?: (key: string, value: {
21
- data: any;
22
- createdOn: Date;
23
- }, option?: SdCacheOption) => Promise<void>;
24
- get?: (key: string, option?: SdCacheOption) => Promise<{
25
- data: any;
26
- createdOn: Date;
27
- }>;
28
- remove?: (key: string, option?: SdCacheOption) => Promise<void>;
46
+ namespace?: string;
47
+ version?: string | number;
48
+ serializer?: SdPersistenceSerializer;
49
+ identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
50
+ set?: SdCacheSetCallback;
51
+ get?: SdCacheGetCallback;
52
+ remove?: SdCacheRemoveCallback;
29
53
  }
30
54
  export declare const SD_CACHE_CONFIG: InjectionToken<ISdCacheConfiguration>;
55
+ export interface SdLegacyCacheCallbacks<T> {
56
+ matches: (key: string, option?: SdCacheOption<unknown>) => boolean;
57
+ isValue: (value: unknown) => value is T;
58
+ set?: (key: string, value: SdCacheStoredValue<T>, option?: SdCacheOption<unknown>) => Promise<void> | void;
59
+ get?: (key: string, option?: SdCacheOption<unknown>) => Promise<SdCacheStoredValue<T> | undefined>;
60
+ remove?: (key: string, option?: SdCacheOption<unknown>) => Promise<void> | void;
61
+ }
62
+ /** @deprecated Prefer globally safe unknown callbacks on `ISdCacheConfiguration`. */
63
+ export declare function adaptLegacySdCacheCallbacks<T>(callbacks: SdLegacyCacheCallbacks<T>): ISdCacheConfiguration;
@@ -1,9 +1,12 @@
1
- import { SdCache, SdCacheOption } from './cache.model';
1
+ import { SdCache, SdCacheOption, SdCacheWithDefault } from './cache.model';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class SdCacheService {
4
4
  #private;
5
5
  constructor();
6
- create<T = any>(key: string | object, option?: SdCacheOption<T>): SdCache<T>;
6
+ create<T>(key: string | object, option: SdCacheOption<T> & {
7
+ default: T;
8
+ }): SdCacheWithDefault<T>;
9
+ create<T = unknown>(key: string | object, option?: SdCacheOption<unknown>): SdCache<T>;
7
10
  static ɵfac: i0.ɵɵFactoryDeclaration<SdCacheService, never>;
8
11
  static ɵprov: i0.ɵɵInjectableDeclaration<SdCacheService>;
9
12
  }
@@ -1,10 +1,10 @@
1
- import { MatDialog } from '@angular/material/dialog';
2
1
  import { Color } from '@sdcorejs/utils/models';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class SdConfirmService {
5
4
  #private;
6
5
  private dialog;
7
- constructor(dialog: MatDialog);
6
+ /** Inserted by Angular inject() migration for backwards compatibility */
7
+ constructor(...args: unknown[]);
8
8
  confirm: (message: string, option?: {
9
9
  title?: string;
10
10
  yesTitle?: string;
@@ -1,12 +1,11 @@
1
- import { SdNotifyService } from '@sdcorejs/angular/services/notify';
2
- import { SdLoadingService } from '@sdcorejs/angular/services/loading';
3
1
  import { SdDocxConvertOptions, SdDocxConvertResult } from './docx.model';
4
2
  import * as i0 from "@angular/core";
5
3
  export declare class SdDocxService {
6
4
  #private;
7
5
  private notifyService;
8
6
  private loadingService;
9
- constructor(notifyService: SdNotifyService, loadingService: SdLoadingService);
7
+ /** Inserted by Angular inject() migration for backwards compatibility */
8
+ constructor(...args: unknown[]);
10
9
  open(options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null>;
11
10
  convertToHtml(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null>;
12
11
  convertToHtmlString(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<string | null>;
@@ -1,8 +1,12 @@
1
1
  export * from '@sdcorejs/angular/services/cache';
2
2
  export * from '@sdcorejs/angular/services/storage';
3
+ export * from '@sdcorejs/angular/services/persistence';
3
4
  export * from '@sdcorejs/angular/services/notify';
4
5
  export * from '@sdcorejs/angular/services/confirm';
5
6
  export * from '@sdcorejs/angular/services/api';
6
7
  export * from '@sdcorejs/angular/services/loading';
7
8
  export * from '@sdcorejs/angular/services/excel';
8
9
  export * from '@sdcorejs/angular/services/docx';
10
+ export * from '@sdcorejs/angular/services/viewport';
11
+ export * from '@sdcorejs/angular/services/unsaved-changes';
12
+ export * from '@sdcorejs/angular/services/task';
@@ -1,14 +1,21 @@
1
- import { RendererFactory2 } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
2
+ export interface SdLoadingRef {
3
+ readonly closed: boolean;
4
+ close(): void;
5
+ }
3
6
  export declare class SdLoadingService {
4
7
  #private;
5
- private loadingId;
6
- private renderer;
7
- private loadingMap;
8
- constructor(rendererFactory: RendererFactory2);
9
- start: (element?: string) => void;
10
- isLoading: (element?: string) => false | Element | null;
11
- stop: (element?: string) => void;
8
+ private static readonly documentRecords;
9
+ /** Inserted by Angular inject() migration for backwards compatibility. */
10
+ constructor(...args: unknown[]);
11
+ /** Starts loading for every current selector match and returns ownership of those exact hosts. */
12
+ start: (selector?: string) => SdLoadingRef;
13
+ /** Returns the first matched globally loading host, `false` for idle matches, or `null` when unavailable. */
14
+ isLoading: (selector?: string) => Element | false | null;
15
+ /** Releases the oldest exact-selector start, with a current-host fallback for legacy cross-selector calls. */
16
+ stop: (selector?: string) => void;
17
+ run<T>(task: () => T | PromiseLike<T>, selector?: string): Promise<T>;
18
+ run<T>(task: PromiseLike<T>, selector?: string): Promise<T>;
12
19
  static ɵfac: i0.ɵɵFactoryDeclaration<SdLoadingService, never>;
13
20
  static ɵprov: i0.ɵɵInjectableDeclaration<SdLoadingService>;
14
21
  }
@@ -1,7 +1,5 @@
1
1
  import { OnDestroy, OnInit } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
2
  import { ToastData } from '../../notify.model';
4
- import { SdNotifyService } from '../../notify.service';
5
3
  import * as i0 from "@angular/core";
6
4
  export declare class ToastComponent implements OnInit, OnDestroy {
7
5
  private notifyService;
@@ -15,7 +13,8 @@ export declare class ToastComponent implements OnInit, OnDestroy {
15
13
  private closeTimer;
16
14
  private start;
17
15
  private remaining;
18
- constructor(notifyService: SdNotifyService, sanitizer: DomSanitizer);
16
+ /** Inserted by Angular inject() migration for backwards compatibility */
17
+ constructor(...args: unknown[]);
19
18
  ngOnInit(): void;
20
19
  ngOnDestroy(): void;
21
20
  pauseTimer(): void;
@@ -0,0 +1,5 @@
1
+ export * from './src/persistence.model';
2
+ export * from './src/graph-serializer';
3
+ export * from './src/storage-adapter';
4
+ export * from './src/persistence-key';
5
+ export * from './src/persistence-envelope';