@sdcorejs/angular 19.1.2 → 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 (343) hide show
  1. package/README.md +127 -807
  2. package/components/anchor/src/index.d.ts +1 -1
  3. package/components/anchor/src/models/index.d.ts +1 -1
  4. package/components/audit-diff/index.d.ts +2 -0
  5. package/components/audit-diff/src/audit-diff.component.d.ts +30 -0
  6. package/components/audit-diff/src/audit-diff.engine.d.ts +40 -0
  7. package/components/badge/src/badge.component.d.ts +1 -1
  8. package/components/breadcrumb/index.d.ts +1 -0
  9. package/components/breadcrumb/src/breadcrumb.component.d.ts +50 -0
  10. package/components/data-state/index.d.ts +1 -0
  11. package/components/data-state/src/data-state.component.d.ts +40 -0
  12. package/components/document-builder/index.d.ts +2 -2
  13. package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +1 -2
  14. package/components/document-builder/src/document-builder.component.d.ts +4 -4
  15. package/components/document-builder/src/plugins/index.d.ts +1 -1
  16. package/components/editor/index.d.ts +1 -1
  17. package/components/editor/src/models/index.d.ts +2 -2
  18. package/components/form-generic/src/components/form-builder/components/attribute-expression/attribute-expression.component.d.ts +7 -8
  19. package/components/form-generic/src/components/form-builder/components/attribute-input/attribute-input.component.d.ts +4 -5
  20. package/components/form-generic/src/components/form-builder/components/attribute-input-number/attribute-input-number.component.d.ts +1 -2
  21. package/components/form-generic/src/components/form-builder/components/attribute-parameter/attribute-parameter.component.d.ts +6 -5
  22. package/components/form-generic/src/components/form-builder/components/attribute-select/attribute-select.component.d.ts +4 -5
  23. package/components/form-generic/src/components/form-builder/components/attribute-selection/attribute-selection.component.d.ts +9 -9
  24. package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-queries/build-queries.component.d.ts +8 -7
  25. package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-variables/build-variables.component.d.ts +8 -7
  26. package/components/form-generic/src/components/form-builder/components/attribute-switch/attribute-switch.component.d.ts +3 -4
  27. package/components/form-generic/src/components/form-builder/components/attribute-table/attribute-table.component.d.ts +5 -6
  28. package/components/form-generic/src/components/form-builder/components/attribute-template/attribute-template.component.d.ts +1 -2
  29. package/components/form-generic/src/components/form-builder/components/attribute-textarea/attribute-textarea.component.d.ts +4 -5
  30. package/components/form-generic/src/components/form-builder/components/checkbox/attribute/checkbox-attribute.component.d.ts +6 -6
  31. package/components/form-generic/src/components/form-builder/components/chip-calendar/attribute/chip-calendar-attribute.component.d.ts +6 -6
  32. package/components/form-generic/src/components/form-builder/components/chip-calendar/control/chip-calendar-control.component.d.ts +3 -3
  33. package/components/form-generic/src/components/form-builder/components/chip-string/attribute/chip-string-attribute.component.d.ts +6 -6
  34. package/components/form-generic/src/components/form-builder/components/chip-string/control/chip-string-control.component.d.ts +3 -3
  35. package/components/form-generic/src/components/form-builder/components/configure-validation/configure-validation.component.d.ts +2 -2
  36. package/components/form-generic/src/components/form-builder/components/datetime/attribute/datetime-attribute.component.d.ts +6 -6
  37. package/components/form-generic/src/components/form-builder/components/datetime/control/datetime-control.component.d.ts +3 -3
  38. package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +6 -5
  39. package/components/form-generic/src/components/form-builder/components/html/attribute/components/build-queries/build-queries.component.d.ts +7 -6
  40. package/components/form-generic/src/components/form-builder/components/html/attribute/html-attribute.component.d.ts +7 -8
  41. package/components/form-generic/src/components/form-builder/components/html/control/html-control.component.d.ts +3 -4
  42. package/components/form-generic/src/components/form-builder/components/number/attribute/number-attribute.component.d.ts +6 -6
  43. package/components/form-generic/src/components/form-builder/components/number/control/number-control.component.d.ts +3 -3
  44. package/components/form-generic/src/components/form-builder/components/radio/attribute/radio-attribute.component.d.ts +6 -6
  45. package/components/form-generic/src/components/form-builder/components/radio/control/radio-control.component.d.ts +3 -3
  46. package/components/form-generic/src/components/form-builder/components/select/attribute/select-attribute.component.d.ts +6 -6
  47. package/components/form-generic/src/components/form-builder/components/select/control/select-control.component.d.ts +3 -3
  48. package/components/form-generic/src/components/form-builder/components/table/attribute/table-attribute.component.d.ts +6 -6
  49. package/components/form-generic/src/components/form-builder/components/table/control/table-control.component.d.ts +3 -3
  50. package/components/form-generic/src/components/form-builder/components/textarea/attribute/textarea-attribute.component.d.ts +6 -6
  51. package/components/form-generic/src/components/form-builder/components/textarea/control/textarea-control.component.d.ts +3 -3
  52. package/components/form-generic/src/components/form-builder/components/textfield/attribute/textfield-attribute.component.d.ts +6 -6
  53. package/components/form-generic/src/components/form-builder/components/textfield/control/textfield-control.component.d.ts +3 -3
  54. package/components/form-generic/src/components/form-builder/components/upload/attribute/upload-attribute.component.d.ts +6 -6
  55. package/components/form-generic/src/components/form-builder/components/upload/control/upload-control.component.d.ts +3 -3
  56. package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +25 -2
  57. package/components/form-generic/src/components/form-render/components/item/components/chip-calendar/chip-calendar.component.d.ts +7 -6
  58. package/components/form-generic/src/components/form-render/components/item/components/chip-string/chip-string.component.d.ts +7 -6
  59. package/components/form-generic/src/components/form-render/components/item/components/datetime/datetime.component.d.ts +7 -7
  60. package/components/form-generic/src/components/form-render/components/item/components/html/html.component.d.ts +6 -6
  61. package/components/form-generic/src/components/form-render/components/item/components/number/number.component.d.ts +7 -6
  62. package/components/form-generic/src/components/form-render/components/item/components/radio/radio.component.d.ts +6 -7
  63. package/components/form-generic/src/components/form-render/components/item/components/select/select.component.d.ts +6 -7
  64. package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +8 -8
  65. package/components/form-generic/src/components/form-render/components/item/components/textarea/textarea.component.d.ts +7 -6
  66. package/components/form-generic/src/components/form-render/components/item/components/textfield/textfield.component.d.ts +7 -6
  67. package/components/form-generic/src/components/form-render/components/item/components/upload/upload.component.d.ts +7 -6
  68. package/components/form-generic/src/components/form-render/components/item/item.component.d.ts +4 -4
  69. package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +8 -9
  70. package/components/form-generic/src/configurations/index.d.ts +1 -1
  71. package/components/form-generic/src/models/form-render/index.d.ts +2 -2
  72. package/components/form-generic/src/models/index.d.ts +6 -6
  73. package/components/form-generic/src/pipes/component-viewed.pipe.d.ts +2 -3
  74. package/components/form-generic/src/pipes/html.pipe.d.ts +2 -2
  75. package/components/form-generic/src/services/form-render.service.d.ts +2 -2
  76. package/components/import-excel/index.d.ts +1 -1
  77. package/components/import-excel/src/import-excel.component.d.ts +4 -7
  78. package/components/import-excel/src/pipes/column-transform.pipe.d.ts +3 -2
  79. package/components/index.d.ts +4 -0
  80. package/components/job-progress/index.d.ts +1 -0
  81. package/components/job-progress/src/job-progress.component.d.ts +34 -0
  82. package/components/mini-editor/index.d.ts +1 -1
  83. package/components/mini-editor/src/mini-editor.component.d.ts +7 -7
  84. package/components/modal/src/modal.component.d.ts +6 -1
  85. package/components/org-chart/index.d.ts +1 -1
  86. package/components/preview/index.d.ts +5 -2
  87. package/components/preview/src/preview-pdf/preview-pdf.browser.d.ts +28 -0
  88. package/components/preview/src/preview-pdf/preview-pdf.component.d.ts +61 -23
  89. package/components/preview/src/preview-pdf/preview-pdf.pdfjs.d.ts +77 -0
  90. package/components/preview/src/preview-pdf/preview-pdf.print.d.ts +10 -0
  91. package/components/preview/src/preview-pdf/preview-pdf.types.d.ts +11 -9
  92. package/components/side-drawer/src/side-drawer.component.d.ts +6 -1
  93. package/components/tab/src/tab-group.component.d.ts +1 -0
  94. package/components/tab/src/tab.component.d.ts +7 -1
  95. package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +3 -4
  96. package/components/tab-router/src/pipes/tab-info.pipe.d.ts +2 -2
  97. package/components/tab-router/src/services/tab-decorator.service.d.ts +2 -1
  98. package/components/table/index.d.ts +1 -1
  99. package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +1 -1
  100. package/components/table/src/components/popup-export/popup-export.component.d.ts +6 -6
  101. package/components/table/src/models/index.d.ts +4 -4
  102. package/components/table/src/models/table-column.model.d.ts +1 -1
  103. package/components/table/src/services/config.service.d.ts +3 -2
  104. package/components/table/src/services/table-filter/table-filter.model.d.ts +1 -1
  105. package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
  106. package/components/tree/index.d.ts +1 -1
  107. package/components/tree/src/tree.component.d.ts +13 -2
  108. package/components/tree/src/tree.model.d.ts +11 -0
  109. package/components/upload-file/src/components/preview/preview.component.d.ts +4 -4
  110. package/directives/src/sd-hover-copy.directive.d.ts +6 -5
  111. package/directives/src/sd-href.directive.d.ts +2 -2
  112. package/directives/src/sd-scroll.directive.d.ts +3 -2
  113. package/fesm2022/sdcorejs-angular-components-anchor.mjs +14 -14
  114. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  115. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs +332 -0
  116. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs.map +1 -0
  117. package/fesm2022/sdcorejs-angular-components-badge.mjs +1 -0
  118. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  119. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs +121 -0
  120. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs.map +1 -0
  121. package/fesm2022/sdcorejs-angular-components-data-state.mjs +68 -0
  122. package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -0
  123. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +16 -21
  124. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
  125. package/fesm2022/sdcorejs-angular-components-editor.mjs +6 -4
  126. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  127. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +600 -853
  128. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  129. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +25 -40
  130. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  131. package/fesm2022/sdcorejs-angular-components-job-progress.mjs +97 -0
  132. package/fesm2022/sdcorejs-angular-components-job-progress.mjs.map +1 -0
  133. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +9 -19
  134. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
  135. package/fesm2022/sdcorejs-angular-components-modal.mjs +60 -3
  136. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  137. package/fesm2022/sdcorejs-angular-components-preview.mjs +1437 -217
  138. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  139. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +9 -17
  140. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  141. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
  142. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  143. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +38 -1
  144. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  145. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +76 -52
  146. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  147. package/fesm2022/sdcorejs-angular-components-tab.mjs +47 -3
  148. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  149. package/fesm2022/sdcorejs-angular-components-table.mjs +121 -87
  150. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  151. package/fesm2022/sdcorejs-angular-components-tree.mjs +187 -17
  152. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  153. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +16 -22
  154. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  155. package/fesm2022/sdcorejs-angular-components.mjs +4 -0
  156. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  157. package/fesm2022/sdcorejs-angular-directives.mjs +29 -41
  158. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  159. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +9 -8
  160. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  161. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +20 -73
  162. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  163. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +8 -4
  164. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  165. package/fesm2022/sdcorejs-angular-forms-chip.mjs +8 -4
  166. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  167. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +18 -14
  168. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  169. package/fesm2022/sdcorejs-angular-forms-date.mjs +48 -70
  170. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  171. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +63 -529
  172. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  173. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +384 -0
  174. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -0
  175. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +4 -2
  176. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  177. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +15 -10
  178. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  179. package/fesm2022/sdcorejs-angular-forms-input.mjs +296 -58
  180. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  181. package/fesm2022/sdcorejs-angular-forms-models.mjs +155 -2
  182. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  183. package/fesm2022/sdcorejs-angular-forms-radio.mjs +44 -68
  184. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  185. package/fesm2022/sdcorejs-angular-forms-select.mjs +8 -21
  186. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  187. package/fesm2022/sdcorejs-angular-forms-switch.mjs +19 -66
  188. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  189. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +8 -6
  190. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  191. package/fesm2022/sdcorejs-angular-forms-time-range.mjs +279 -0
  192. package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -0
  193. package/fesm2022/sdcorejs-angular-forms-time.mjs +309 -0
  194. package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -0
  195. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +210 -0
  196. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -0
  197. package/fesm2022/sdcorejs-angular-forms.mjs +73 -4
  198. package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
  199. package/fesm2022/sdcorejs-angular-i18n.mjs +355 -10
  200. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  201. package/fesm2022/sdcorejs-angular-interceptors.mjs +12 -17
  202. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  203. package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
  204. package/fesm2022/sdcorejs-angular-modules-layout.mjs +859 -78
  205. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  206. package/fesm2022/sdcorejs-angular-modules.mjs +0 -1
  207. package/fesm2022/sdcorejs-angular-modules.mjs.map +1 -1
  208. package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
  209. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  210. package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
  211. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  212. package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
  213. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  214. package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
  215. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  216. package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
  217. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
  218. package/fesm2022/sdcorejs-angular-services-loading.mjs +340 -66
  219. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  220. package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
  221. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  222. package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
  223. package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
  224. package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
  225. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  226. package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
  227. package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
  228. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
  229. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
  230. package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
  231. package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
  232. package/fesm2022/sdcorejs-angular-services.mjs +4 -0
  233. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  234. package/forms/autocomplete/src/autocomplete.component.d.ts +3 -4
  235. package/forms/checkbox/src/checkbox.component.d.ts +4 -8
  236. package/forms/date/src/date.component.d.ts +4 -3
  237. package/forms/date-range/src/date-range.component.d.ts +5 -8
  238. package/forms/datetime/src/datetime.component.d.ts +4 -3
  239. package/forms/entity-picker/index.d.ts +1 -0
  240. package/forms/entity-picker/src/entity-picker.component.d.ts +123 -0
  241. package/forms/index.d.ts +6 -0
  242. package/forms/input/index.d.ts +1 -0
  243. package/forms/input/src/input-mask.d.ts +43 -0
  244. package/forms/input/src/input.component.d.ts +28 -9
  245. package/forms/input-color/src/input-color.component.d.ts +3 -1
  246. package/forms/input-number/src/input-number.component.d.ts +4 -2
  247. package/forms/models/index.d.ts +3 -2
  248. package/forms/models/src/sd-form-control-connector.d.ts +86 -0
  249. package/forms/radio/src/radio.component.d.ts +12 -8
  250. package/forms/src/forms.module.d.ts +9 -5
  251. package/forms/switch/src/switch.component.d.ts +4 -7
  252. package/forms/time/index.d.ts +3 -0
  253. package/forms/time/src/time-picker.adapter.d.ts +13 -0
  254. package/forms/time/src/time-value.d.ts +19 -0
  255. package/forms/time/src/time.component.d.ts +78 -0
  256. package/forms/time-range/index.d.ts +2 -0
  257. package/forms/time-range/src/time-range-value.d.ts +14 -0
  258. package/forms/time-range/src/time-range.component.d.ts +80 -0
  259. package/forms/tree-select/index.d.ts +1 -0
  260. package/forms/tree-select/src/tree-select.component.d.ts +71 -0
  261. package/i18n/src/en.d.ts +68 -2
  262. package/interceptors/no-internet/no-internet.interceptor.d.ts +2 -3
  263. package/interceptors/unauthorized/unauthorized.interceptor.d.ts +2 -2
  264. package/modules/auth/services/index.d.ts +1 -1
  265. package/modules/icon/src/icon.model.d.ts +1 -2
  266. package/modules/icon/src/icon.provider.d.ts +1 -1
  267. package/modules/index.d.ts +0 -1
  268. package/modules/layout/components/index.d.ts +6 -0
  269. package/modules/layout/components/layout-main/layout-main.component.d.ts +7 -2
  270. package/modules/layout/components/shared/menu-tree/menu-tree.component.d.ts +28 -0
  271. package/modules/layout/components/shared/user-menu/user-menu.component.d.ts +25 -0
  272. package/modules/layout/components/sidebar-mobile-v2/main.component.d.ts +27 -0
  273. package/modules/layout/components/sidebar-mobile-v3/main.component.d.ts +28 -0
  274. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +3 -4
  275. package/modules/layout/components/sidebar-v1/main.component.d.ts +2 -2
  276. package/modules/layout/components/sidebar-v2/main.component.d.ts +36 -0
  277. package/modules/layout/components/sidebar-v3/main.component.d.ts +29 -0
  278. package/modules/layout/configurations/layout.configuration.d.ts +36 -2
  279. package/modules/layout/index.d.ts +1 -0
  280. package/modules/layout/pipes/menu.pipe.d.ts +2 -2
  281. package/modules/layout/services/index.d.ts +4 -1
  282. package/modules/layout/services/layout.service.d.ts +2 -2
  283. package/modules/layout/services/menu/menu.utils.d.ts +6 -0
  284. package/modules/layout/services/navigation-state/navigation-state.service.d.ts +18 -0
  285. package/modules/layout/services/responsive/responsive.service.d.ts +12 -0
  286. package/modules/layout/services/storage/storage.service.d.ts +21 -8
  287. package/package.json +50 -5
  288. package/pipes/src/safe-html.pipe.d.ts +2 -2
  289. package/services/api/src/api.model.d.ts +54 -15
  290. package/services/api/src/api.service.d.ts +13 -8
  291. package/services/api/src/interceptors/api.interceptor.d.ts +1 -1
  292. package/services/cache/src/cache.model.d.ts +46 -13
  293. package/services/cache/src/cache.service.d.ts +5 -2
  294. package/services/confirm/src/lib/confirm.service.d.ts +2 -2
  295. package/services/docx/src/lib/docx.service.d.ts +2 -3
  296. package/services/excel/src/public-api.d.ts +1 -1
  297. package/services/index.d.ts +4 -0
  298. package/services/loading/src/loading.service.d.ts +15 -8
  299. package/services/notify/src/components/toast/toast.component.d.ts +2 -3
  300. package/services/persistence/index.d.ts +5 -0
  301. package/services/persistence/src/graph-serializer.d.ts +16 -0
  302. package/services/persistence/src/persistence-envelope.d.ts +28 -0
  303. package/services/persistence/src/persistence-key.d.ts +17 -0
  304. package/services/persistence/src/persistence.model.d.ts +63 -0
  305. package/services/persistence/src/storage-adapter.d.ts +29 -0
  306. package/services/storage/src/storage.model.d.ts +20 -5
  307. package/services/storage/src/storage.service.d.ts +6 -3
  308. package/services/task/index.d.ts +3 -0
  309. package/services/task/src/task.model.d.ts +75 -0
  310. package/services/task/src/task.service.d.ts +14 -0
  311. package/services/task/src/task.tokens.d.ts +12 -0
  312. package/services/unsaved-changes/index.d.ts +4 -0
  313. package/services/unsaved-changes/src/unsaved-changes.adapters.d.ts +15 -0
  314. package/services/unsaved-changes/src/unsaved-changes.model.d.ts +41 -0
  315. package/services/unsaved-changes/src/unsaved-changes.service.d.ts +16 -0
  316. package/services/unsaved-changes/src/unsaved-changes.tokens.d.ts +9 -0
  317. package/services/viewport/index.d.ts +3 -0
  318. package/services/viewport/src/viewport.model.d.ts +12 -0
  319. package/services/viewport/src/viewport.service.d.ts +18 -0
  320. package/services/viewport/src/viewport.tokens.d.ts +6 -0
  321. package/utilities/models/index.d.ts +7 -7
  322. package/fesm2022/sdcorejs-angular-modules-authom.mjs +0 -360
  323. package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +0 -1
  324. package/forms/datetime/src/material-datetime/index.d.ts +0 -14
  325. package/forms/datetime/src/material-datetime/lib/core/date-adapter.d.ts +0 -10
  326. package/forms/datetime/src/material-datetime/lib/core/date-formats.d.ts +0 -18
  327. package/forms/datetime/src/material-datetime/lib/core/default-options.d.ts +0 -13
  328. package/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-actions.component.d.ts +0 -5
  329. package/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-apply.directive.d.ts +0 -7
  330. package/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-cancel.directive.d.ts +0 -7
  331. package/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-input.directive.d.ts +0 -24
  332. package/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-now.directive.d.ts +0 -7
  333. package/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-toggle.directive.d.ts +0 -8
  334. package/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker.component.d.ts +0 -39
  335. package/forms/datetime/src/material-datetime/lib/native/native-date-adapter.d.ts +0 -15
  336. package/forms/datetime/src/material-datetime/lib/native/native-date-formats.d.ts +0 -2
  337. package/forms/datetime/src/material-datetime/lib/native/provide-native.d.ts +0 -3
  338. package/forms/datetime/src/material-datetime/lib/time-spinner/time-spinner.component.d.ts +0 -31
  339. package/modules/authom/authom.configuration.d.ts +0 -17
  340. package/modules/authom/authom.interceptor.d.ts +0 -3
  341. package/modules/authom/authom.module.d.ts +0 -16
  342. package/modules/authom/authom.service.d.ts +0 -32
  343. package/modules/authom/index.d.ts +0 -35
@@ -10,19 +10,18 @@ export declare class SidebarComponent {
10
10
  menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
11
11
  userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
12
12
  sidebar: import("@angular/core").InputSignal<SidebarConfigurationV1>;
13
+ isMobile: import("@angular/core").InputSignal<boolean>;
13
14
  expandSideBar: import("@angular/core").OutputEmitterRef<void>;
14
15
  popupUserMenuClosed: import("@angular/core").OutputEmitterRef<void>;
15
16
  popupUserMenuOpened: import("@angular/core").OutputEmitterRef<void>;
16
17
  showSideBar: import("@angular/core").OutputEmitterRef<boolean | null>;
17
- screenHeight: number;
18
- isMobileOrTablet: boolean;
19
18
  isMenuLock: import("@angular/core").WritableSignal<boolean>;
20
19
  currentPath: import("@angular/core").WritableSignal<string>;
21
20
  searchText: import("@angular/core").WritableSignal<string>;
22
21
  titleMenuGroup: import("@angular/core").WritableSignal<string | undefined>;
23
22
  idMenuGroupActive: import("@angular/core").WritableSignal<string | undefined>;
24
23
  menusByGroup: import("@angular/core").WritableSignal<SdLayoutMenu[]>;
25
- pinnedMenuGroup: import("@angular/core").WritableSignal<SdLayoutChildrenMenu>;
24
+ pinnedMenuGroup: import("@angular/core").Signal<SdLayoutChildrenMenu>;
26
25
  totalMenuInMenusByGroup: import("@angular/core").Signal<number>;
27
26
  pinnedNodeKeys: import("@angular/core").Signal<Set<string>>;
28
27
  isPinnedMenuGroupActive: import("@angular/core").Signal<boolean>;
@@ -51,5 +50,5 @@ export declare class SidebarComponent {
51
50
  onMouseOverMenuNode: (event: MouseEvent, menuItem: SdLayoutMenu) => void;
52
51
  onMouseLeaveMenuNode: (event: MouseEvent, menuItem: SdLayoutMenu) => void;
53
52
  static ɵfac: i0.ɵɵFactoryDeclaration<SidebarComponent, never>;
54
- static ɵcmp: i0.ɵɵComponentDeclaration<SidebarComponent, "sidebar", never, { "isShowSidebar": { "alias": "isShowSidebar"; "required": true; "isSignal": true; }; "menus": { "alias": "menus"; "required": true; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; }, { "expandSideBar": "expandSideBar"; "popupUserMenuClosed": "popupUserMenuClosed"; "popupUserMenuOpened": "popupUserMenuOpened"; "showSideBar": "showSideBar"; }, never, never, true, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidebarComponent, "sidebar", never, { "isShowSidebar": { "alias": "isShowSidebar"; "required": true; "isSignal": true; }; "menus": { "alias": "menus"; "required": true; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; }, { "expandSideBar": "expandSideBar"; "popupUserMenuClosed": "popupUserMenuClosed"; "popupUserMenuOpened": "popupUserMenuOpened"; "showSideBar": "showSideBar"; }, never, never, true, never>;
55
54
  }
@@ -8,7 +8,7 @@ export declare class SidebarV1Component {
8
8
  menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
9
9
  userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
10
10
  sidebar: import("@angular/core").InputSignal<SidebarConfigurationV1>;
11
- isMobileOrTablet: import("@angular/core").WritableSignal<boolean>;
11
+ isMobile: import("@angular/core").InputSignal<boolean>;
12
12
  isMenuLock: import("@angular/core").WritableSignal<boolean>;
13
13
  isShowSidebar: import("@angular/core").WritableSignal<boolean>;
14
14
  onhover: import("@angular/core").WritableSignal<boolean>;
@@ -20,5 +20,5 @@ export declare class SidebarV1Component {
20
20
  onMouseleaveSideBar: () => void;
21
21
  onToggle: (data: boolean | null) => void;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<SidebarV1Component, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<SidebarV1Component, "sidebar-v1", never, { "menus": { "alias": "menus"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidebarV1Component, "sidebar-v1", never, { "menus": { "alias": "menus"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
24
24
  }
@@ -0,0 +1,36 @@
1
+ import { SdLayoutUserInfo, SidebarConfigurationV2 } from '../../configurations';
2
+ import { SdLayoutMenu } from '../../services';
3
+ import * as i0 from "@angular/core";
4
+ interface SidebarV2RailItem {
5
+ menu: SdLayoutMenu;
6
+ key: string;
7
+ title: string;
8
+ }
9
+ export declare class SidebarV2Component {
10
+ #private;
11
+ menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
12
+ userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
13
+ sidebar: import("@angular/core").InputSignal<SidebarConfigurationV2>;
14
+ activeGroupKey: import("@angular/core").WritableSignal<string>;
15
+ isFlyoutOpen: import("@angular/core").WritableSignal<boolean>;
16
+ isFlyoutLocked: import("@angular/core").WritableSignal<boolean>;
17
+ searchText: import("@angular/core").WritableSignal<string>;
18
+ activePath: import("@angular/core").WritableSignal<string>;
19
+ interaction: import("@angular/core").Signal<"click" | "hover-lock">;
20
+ railItems: import("@angular/core").Signal<SidebarV2RailItem[]>;
21
+ activeGroup: import("@angular/core").Signal<SdLayoutMenu | undefined>;
22
+ contextMenus: import("@angular/core").Signal<SdLayoutMenu[]>;
23
+ pinnedKeys: import("@angular/core").WritableSignal<string[]>;
24
+ constructor();
25
+ selectGroup(menu: SdLayoutMenu): void;
26
+ previewGroup(menu: SdLayoutMenu): void;
27
+ leaveFlyout(): void;
28
+ closeFromBackdrop(): void;
29
+ closeFromEscape(): void;
30
+ closeFromNavigation(): void;
31
+ onNavigate(menu: SdLayoutMenu): void;
32
+ onTogglePinned(menu: SdLayoutMenu): void;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidebarV2Component, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidebarV2Component, "sidebar-v2", never, { "menus": { "alias": "menus"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
35
+ }
36
+ export {};
@@ -0,0 +1,29 @@
1
+ import { SdLayoutUserInfo, SidebarConfigurationV3 } from '../../configurations';
2
+ import { SdLayoutMenu, SdLayoutRootMenu } from '../../services';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SidebarV3Component {
5
+ #private;
6
+ menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
7
+ userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
8
+ sidebar: import("@angular/core").InputSignal<SidebarConfigurationV3>;
9
+ isCollapsed: import("@angular/core").WritableSignal<boolean>;
10
+ searchText: import("@angular/core").WritableSignal<string>;
11
+ activePath: import("@angular/core").WritableSignal<string>;
12
+ searchResults: import("@angular/core").Signal<SdLayoutRootMenu[]>;
13
+ recentConfiguration: import("@angular/core").Signal<import("@sdcorejs/angular/modules/layout").ResolvedSidebarRecentConfiguration>;
14
+ pinnedKeys: import("@angular/core").WritableSignal<string[]>;
15
+ pinnedMenus: import("@angular/core").Signal<(SdLayoutRootMenu | import("@sdcorejs/angular/modules/layout").SdLayoutChildrenMenu)[]>;
16
+ recentMenus: import("@angular/core").Signal<(SdLayoutRootMenu | import("@sdcorejs/angular/modules/layout").SdLayoutChildrenMenu)[]>;
17
+ collapsedItems: import("@angular/core").Signal<{
18
+ menu: SdLayoutMenu;
19
+ key: string;
20
+ title: string;
21
+ }[]>;
22
+ constructor();
23
+ toggleCollapsed(): void;
24
+ activateCollapsedMenu(menu: SdLayoutMenu): void;
25
+ navigateMenu(menu: SdLayoutMenu): void;
26
+ onTogglePinned(menu: SdLayoutMenu): void;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidebarV3Component, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidebarV3Component, "sidebar-v3", never, { "menus": { "alias": "menus"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
29
+ }
@@ -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
- export * from './menu/menu.model';
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.2",
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",
@@ -9,6 +9,7 @@
9
9
  "@angular/material-date-fns-adapter": "^19.0.0 || ^20.0.0 || ^21.0.0"
10
10
  },
11
11
  "dependencies": {
12
+ "@sdcorejs/angular-material-datetime": "1.0.3",
12
13
  "@sdcorejs/utils": "1.1.4",
13
14
  "@lucide/angular": "^1.22.0",
14
15
  "@ckeditor/ckeditor5-angular": "11.1.2",
@@ -86,6 +87,10 @@
86
87
  "types": "./components/anchor/index.d.ts",
87
88
  "default": "./fesm2022/sdcorejs-angular-components-anchor.mjs"
88
89
  },
90
+ "./components/audit-diff": {
91
+ "types": "./components/audit-diff/index.d.ts",
92
+ "default": "./fesm2022/sdcorejs-angular-components-audit-diff.mjs"
93
+ },
89
94
  "./components/autoid-inspector": {
90
95
  "types": "./components/autoid-inspector/index.d.ts",
91
96
  "default": "./fesm2022/sdcorejs-angular-components-autoid-inspector.mjs"
@@ -102,6 +107,10 @@
102
107
  "types": "./components/base/index.d.ts",
103
108
  "default": "./fesm2022/sdcorejs-angular-components-base.mjs"
104
109
  },
110
+ "./components/breadcrumb": {
111
+ "types": "./components/breadcrumb/index.d.ts",
112
+ "default": "./fesm2022/sdcorejs-angular-components-breadcrumb.mjs"
113
+ },
105
114
  "./components/button": {
106
115
  "types": "./components/button/index.d.ts",
107
116
  "default": "./fesm2022/sdcorejs-angular-components-button.mjs"
@@ -118,6 +127,10 @@
118
127
  "types": "./components/code-editor/index.d.ts",
119
128
  "default": "./fesm2022/sdcorejs-angular-components-code-editor.mjs"
120
129
  },
130
+ "./components/data-state": {
131
+ "types": "./components/data-state/index.d.ts",
132
+ "default": "./fesm2022/sdcorejs-angular-components-data-state.mjs"
133
+ },
121
134
  "./components/document-builder": {
122
135
  "types": "./components/document-builder/index.d.ts",
123
136
  "default": "./fesm2022/sdcorejs-angular-components-document-builder.mjs"
@@ -142,6 +155,10 @@
142
155
  "types": "./components/inform/index.d.ts",
143
156
  "default": "./fesm2022/sdcorejs-angular-components-inform.mjs"
144
157
  },
158
+ "./components/job-progress": {
159
+ "types": "./components/job-progress/index.d.ts",
160
+ "default": "./fesm2022/sdcorejs-angular-components-job-progress.mjs"
161
+ },
145
162
  "./components/mini-editor": {
146
163
  "types": "./components/mini-editor/index.d.ts",
147
164
  "default": "./fesm2022/sdcorejs-angular-components-mini-editor.mjs"
@@ -250,6 +267,10 @@
250
267
  "types": "./forms/directives/index.d.ts",
251
268
  "default": "./fesm2022/sdcorejs-angular-forms-directives.mjs"
252
269
  },
270
+ "./forms/entity-picker": {
271
+ "types": "./forms/entity-picker/index.d.ts",
272
+ "default": "./fesm2022/sdcorejs-angular-forms-entity-picker.mjs"
273
+ },
253
274
  "./forms/inline-text": {
254
275
  "types": "./forms/inline-text/index.d.ts",
255
276
  "default": "./fesm2022/sdcorejs-angular-forms-inline-text.mjs"
@@ -290,14 +311,22 @@
290
311
  "types": "./forms/textarea/index.d.ts",
291
312
  "default": "./fesm2022/sdcorejs-angular-forms-textarea.mjs"
292
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
+ },
293
326
  "./modules/auth": {
294
327
  "types": "./modules/auth/index.d.ts",
295
328
  "default": "./fesm2022/sdcorejs-angular-modules-auth.mjs"
296
329
  },
297
- "./modules/authom": {
298
- "types": "./modules/authom/index.d.ts",
299
- "default": "./fesm2022/sdcorejs-angular-modules-authom.mjs"
300
- },
301
330
  "./modules/icon": {
302
331
  "types": "./modules/icon/index.d.ts",
303
332
  "default": "./fesm2022/sdcorejs-angular-modules-icon.mjs"
@@ -346,10 +375,26 @@
346
375
  "types": "./services/notify/index.d.ts",
347
376
  "default": "./fesm2022/sdcorejs-angular-services-notify.mjs"
348
377
  },
378
+ "./services/persistence": {
379
+ "types": "./services/persistence/index.d.ts",
380
+ "default": "./fesm2022/sdcorejs-angular-services-persistence.mjs"
381
+ },
349
382
  "./services/storage": {
350
383
  "types": "./services/storage/index.d.ts",
351
384
  "default": "./fesm2022/sdcorejs-angular-services-storage.mjs"
352
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
+ },
353
398
  "./utilities/data-state": {
354
399
  "types": "./utilities/data-state/index.d.ts",
355
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
  }