@sd-angular/core 19.0.0-beta.8 → 19.0.0-beta.81

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 (306) hide show
  1. package/README.md +686 -33
  2. package/assets/scss/ckeditor5.scss +61 -4
  3. package/assets/scss/core/bootstrap.scss +17 -0
  4. package/assets/scss/core/form.scss +32 -6
  5. package/assets/scss/core/grid.scss +40 -0
  6. package/assets/scss/sd-core.scss +5 -0
  7. package/assets/scss/themes/material-theme.scss +82 -40
  8. package/components/anchor-v2/src/components/anchor-item-v2/anchor-item-v2.component.d.ts +5 -5
  9. package/components/anchor-v2/src/components/anchor-v2/anchor-v2.component.d.ts +12 -18
  10. package/components/anchor-v2/src/components/anchor-vertical-v2/anchor-vertical-list-v2.component.d.ts +9 -10
  11. package/components/anchor-v2/src/models/sd-anchor-v2.model.d.ts +3 -3
  12. package/components/avatar/index.d.ts +1 -0
  13. package/components/avatar/src/avatar.component.d.ts +19 -0
  14. package/components/badge/src/badge.component.d.ts +77 -19
  15. package/components/button/src/button.component.d.ts +30 -28
  16. package/components/chart/index.d.ts +4 -0
  17. package/components/chart/src/bar-chart.component.d.ts +18 -0
  18. package/components/chart/src/doughnut-chart.component.d.ts +16 -0
  19. package/components/chart/src/line-chart.component.d.ts +18 -0
  20. package/components/chart/src/pie-chart.component.d.ts +16 -0
  21. package/components/code-editor/index.d.ts +1 -0
  22. package/components/code-editor/src/code-editor.component.d.ts +25 -0
  23. package/components/document-builder/index.d.ts +1 -0
  24. package/components/document-builder/src/document-builder.component.d.ts +13 -42
  25. package/components/document-builder/src/document-builder.model.d.ts +15 -12
  26. package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +9 -0
  27. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +44 -0
  28. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +57 -0
  29. package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +1 -0
  30. package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +4 -0
  31. package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +31 -0
  32. package/components/document-builder/src/plugins/index.d.ts +7 -2
  33. package/components/document-builder/src/plugins/page-orientation/page-orientation.plugin.d.ts +2 -2
  34. package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +14 -0
  35. package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +15 -0
  36. package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +25 -0
  37. package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +29 -0
  38. package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +35 -0
  39. package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +15 -0
  40. package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +15 -0
  41. package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +15 -0
  42. package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +15 -0
  43. package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +15 -0
  44. package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +15 -0
  45. package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +54 -0
  46. package/components/document-builder/src/plugins/paste-handler/filters/replacetabswithinprewithspaces.d.ts +24 -0
  47. package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +27 -0
  48. package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +16 -0
  49. package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +25 -0
  50. package/components/document-builder/src/plugins/paste-handler/index.d.ts +35 -0
  51. package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +31 -0
  52. package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +31 -0
  53. package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +29 -0
  54. package/components/document-builder/src/plugins/paste-handler/types.d.ts +30 -0
  55. package/components/document-builder/src/plugins/table-custom/index.d.ts +34 -0
  56. package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +39 -0
  57. package/components/editor/index.d.ts +3 -0
  58. package/components/editor/src/configurations/editor.configuration.d.ts +12 -0
  59. package/components/editor/src/configurations/index.d.ts +1 -0
  60. package/components/editor/src/editor.component.d.ts +42 -0
  61. package/components/editor/src/models/editor.model.d.ts +8 -0
  62. package/components/editor/src/models/image-upload.plugin.model.d.ts +20 -0
  63. package/components/editor/src/models/index.d.ts +2 -0
  64. package/components/editor/src/plugins/image-upload/image-upload.plugin.d.ts +22 -0
  65. package/components/editor/src/plugins/image-upload/utils/batch.utils.d.ts +14 -0
  66. package/components/editor/src/plugins/image-upload/utils/index.d.ts +3 -0
  67. package/components/editor/src/plugins/image-upload/utils/style.utils.d.ts +2 -0
  68. package/components/editor/src/plugins/image-upload/utils/validate.utils.d.ts +3 -0
  69. package/components/index.d.ts +6 -0
  70. package/components/mini-editor/index.d.ts +2 -0
  71. package/components/mini-editor/src/mini-editor.component.d.ts +91 -0
  72. package/components/mini-editor/src/mini-editor.model.d.ts +44 -0
  73. package/components/modal/index.d.ts +1 -1
  74. package/components/modal/src/modal.component.d.ts +26 -0
  75. package/components/section/index.d.ts +1 -0
  76. package/components/section/src/section-item/section-item.component.d.ts +7 -0
  77. package/components/section/src/section.component.d.ts +11 -11
  78. package/components/side-drawer/src/side-drawer.component.d.ts +11 -24
  79. package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +4 -1
  80. package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +3 -15
  81. package/components/table/index.d.ts +2 -0
  82. package/components/table/src/components/column-filter/column-filter.component.d.ts +3 -3
  83. package/components/table/src/components/column-title/column-title.component.d.ts +10 -0
  84. package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts +18 -11
  85. package/components/table/src/components/desktop-cell/view/view.component.d.ts +24 -0
  86. package/components/table/src/components/external-filter/external-filter.component.d.ts +1 -1
  87. package/components/table/src/components/index.d.ts +1 -0
  88. package/components/table/src/components/selector-action/action-filter.pipe.d.ts +11 -10
  89. package/components/table/src/components/selector-action/selector-action.component.d.ts +5 -3
  90. package/components/table/src/directives/index.d.ts +4 -0
  91. package/components/table/src/directives/sd-table-cell-def.directive.d.ts +2 -3
  92. package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +8 -0
  93. package/components/table/src/directives/sd-table-expand-def.directive.d.ts +0 -1
  94. package/components/table/src/directives/sd-table-filter-def.directive.d.ts +4 -6
  95. package/components/table/src/directives/sd-table-footer-def.directive.d.ts +2 -3
  96. package/components/table/src/directives/sd-table-title-def.directive.d.ts +8 -0
  97. package/components/table/src/directives/sticky-shadow.directive.d.ts +17 -0
  98. package/components/table/src/models/table-column.model.d.ts +49 -40
  99. package/components/table/src/models/table-command.model.d.ts +7 -3
  100. package/components/table/src/models/table-item.model.d.ts +5 -4
  101. package/components/table/src/models/table-option-config.model.d.ts +3 -0
  102. package/components/table/src/models/table-option-export.model.d.ts +3 -2
  103. package/components/table/src/models/table-option-selector.model.d.ts +17 -10
  104. package/components/table/src/models/table-option.model.d.ts +15 -8
  105. package/components/table/src/services/index.d.ts +3 -0
  106. package/components/table/src/services/table-export/table-export.service.d.ts +26 -0
  107. package/components/table/src/services/table-filter/table-filter.model.d.ts +6 -5
  108. package/components/table/src/services/table-format/table-format.service.d.ts +16 -0
  109. package/components/table/src/table.component.d.ts +46 -53
  110. package/components/upload-file/src/configurations/upload-file.configuration.d.ts +34 -1
  111. package/components/upload-file/src/services/upload-file.service.d.ts +0 -1
  112. package/components/upload-file/src/upload-file.component.d.ts +52 -54
  113. package/components/view/index.d.ts +1 -0
  114. package/components/view/src/view.component.d.ts +16 -0
  115. package/components/workflow/src/models/form-generic-component.model.d.ts +5 -4
  116. package/components/workflow/src/models/form-generic-expression.model.d.ts +1 -0
  117. package/components/workflow/src/models/index.d.ts +1 -0
  118. package/components/workflow/src/pipes/html.pipe.d.ts +4 -4
  119. package/directives/index.d.ts +2 -0
  120. package/directives/src/sd-href.directive.d.ts +9 -0
  121. package/directives/src/sd-tooltip.directive.d.ts +26 -0
  122. package/fesm2022/sd-angular-core-components-anchor-v2.mjs +79 -154
  123. package/fesm2022/sd-angular-core-components-anchor-v2.mjs.map +1 -1
  124. package/fesm2022/sd-angular-core-components-avatar.mjs +103 -0
  125. package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -0
  126. package/fesm2022/sd-angular-core-components-badge.mjs +101 -91
  127. package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
  128. package/fesm2022/sd-angular-core-components-button.mjs +70 -96
  129. package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
  130. package/fesm2022/sd-angular-core-components-chart.mjs +290 -0
  131. package/fesm2022/sd-angular-core-components-chart.mjs.map +1 -0
  132. package/fesm2022/sd-angular-core-components-code-editor.mjs +127 -0
  133. package/fesm2022/sd-angular-core-components-code-editor.mjs.map +1 -0
  134. package/fesm2022/sd-angular-core-components-document-builder.mjs +4005 -611
  135. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  136. package/fesm2022/sd-angular-core-components-editor.mjs +933 -0
  137. package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -0
  138. package/fesm2022/sd-angular-core-components-history.mjs +1 -1
  139. package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
  140. package/fesm2022/sd-angular-core-components-import-excel.mjs +1 -1
  141. package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
  142. package/fesm2022/sd-angular-core-components-mini-editor.mjs +332 -0
  143. package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -0
  144. package/fesm2022/sd-angular-core-components-modal.mjs +63 -92
  145. package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
  146. package/fesm2022/sd-angular-core-components-preview.mjs +1 -1
  147. package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
  148. package/fesm2022/sd-angular-core-components-quick-action.mjs +2 -2
  149. package/fesm2022/sd-angular-core-components-quick-action.mjs.map +1 -1
  150. package/fesm2022/sd-angular-core-components-section.mjs +41 -43
  151. package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
  152. package/fesm2022/sd-angular-core-components-side-drawer.mjs +78 -84
  153. package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
  154. package/fesm2022/sd-angular-core-components-tab-router.mjs +151 -241
  155. package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
  156. package/fesm2022/sd-angular-core-components-table.mjs +1394 -1254
  157. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  158. package/fesm2022/sd-angular-core-components-upload-file.mjs +390 -443
  159. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  160. package/fesm2022/sd-angular-core-components-view.mjs +45 -0
  161. package/fesm2022/sd-angular-core-components-view.mjs.map +1 -0
  162. package/fesm2022/sd-angular-core-components-workflow.mjs +165 -168
  163. package/fesm2022/sd-angular-core-components-workflow.mjs.map +1 -1
  164. package/fesm2022/sd-angular-core-components.mjs +6 -0
  165. package/fesm2022/sd-angular-core-components.mjs.map +1 -1
  166. package/fesm2022/sd-angular-core-directives.mjs +286 -27
  167. package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
  168. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +289 -363
  169. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  170. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +170 -189
  171. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
  172. package/fesm2022/sd-angular-core-forms-chip.mjs +184 -194
  173. package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
  174. package/fesm2022/sd-angular-core-forms-date-range.mjs +180 -242
  175. package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
  176. package/fesm2022/sd-angular-core-forms-date.mjs +178 -270
  177. package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
  178. package/fesm2022/sd-angular-core-forms-datetime.mjs +177 -285
  179. package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
  180. package/fesm2022/sd-angular-core-forms-input-number.mjs +210 -337
  181. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  182. package/fesm2022/sd-angular-core-forms-input.mjs +169 -286
  183. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  184. package/fesm2022/sd-angular-core-forms-radio.mjs +3 -2
  185. package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
  186. package/fesm2022/sd-angular-core-forms-select.mjs +390 -447
  187. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  188. package/fesm2022/sd-angular-core-forms-textarea.mjs +167 -226
  189. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  190. package/fesm2022/sd-angular-core-modules-authom.mjs +359 -0
  191. package/fesm2022/sd-angular-core-modules-authom.mjs.map +1 -0
  192. package/fesm2022/sd-angular-core-modules-keycloak.mjs +126 -0
  193. package/fesm2022/sd-angular-core-modules-keycloak.mjs.map +1 -0
  194. package/fesm2022/sd-angular-core-modules-layout.mjs +709 -456
  195. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  196. package/fesm2022/sd-angular-core-modules-permission.mjs +160 -74
  197. package/fesm2022/sd-angular-core-modules-permission.mjs.map +1 -1
  198. package/fesm2022/sd-angular-core-modules.mjs +2 -1
  199. package/fesm2022/sd-angular-core-modules.mjs.map +1 -1
  200. package/fesm2022/sd-angular-core-services-api.mjs +5 -10
  201. package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
  202. package/fesm2022/sd-angular-core-services-confirm.mjs +9 -7
  203. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  204. package/fesm2022/sd-angular-core-services-docx.mjs +173 -0
  205. package/fesm2022/sd-angular-core-services-docx.mjs.map +1 -0
  206. package/fesm2022/sd-angular-core-services-notify.mjs +2 -2
  207. package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
  208. package/fesm2022/sd-angular-core-services.mjs +1 -0
  209. package/fesm2022/sd-angular-core-services.mjs.map +1 -1
  210. package/fesm2022/sd-angular-core-utilities-extensions.mjs +58 -80
  211. package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
  212. package/fesm2022/sd-angular-core-utilities-models.mjs +15 -1
  213. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  214. package/fesm2022/sd-angular-core.mjs +0 -1
  215. package/fesm2022/sd-angular-core.mjs.map +1 -1
  216. package/forms/autocomplete/src/autocomplete.component.d.ts +55 -55
  217. package/forms/chip/src/chip.component.d.ts +37 -40
  218. package/forms/chip-calendar/src/chip-calendar.component.d.ts +37 -38
  219. package/forms/date/src/date.component.d.ts +48 -46
  220. package/forms/date-range/src/date-range.component.d.ts +35 -34
  221. package/forms/datetime/src/datetime.component.d.ts +48 -49
  222. package/forms/input/src/input.component.d.ts +54 -57
  223. package/forms/input-number/src/input-number.component.d.ts +53 -54
  224. package/forms/select/src/select.component.d.ts +67 -64
  225. package/forms/textarea/src/textarea.component.d.ts +40 -43
  226. package/modules/authom/authom.configuration.d.ts +17 -0
  227. package/modules/authom/authom.interceptor.d.ts +3 -0
  228. package/modules/authom/authom.module.d.ts +16 -0
  229. package/modules/authom/authom.service.d.ts +32 -0
  230. package/modules/authom/index.d.ts +35 -0
  231. package/modules/index.d.ts +2 -1
  232. package/modules/keycloak/index.d.ts +4 -0
  233. package/modules/keycloak/keycloak.configuration.d.ts +11 -0
  234. package/modules/keycloak/keycloak.interceptor.d.ts +2 -0
  235. package/modules/keycloak/keycloak.module.d.ts +18 -0
  236. package/modules/keycloak/keycloak.service.d.ts +14 -0
  237. package/modules/layout/components/index.d.ts +2 -0
  238. package/modules/layout/components/layout-main/layout-main.component.d.ts +8 -12
  239. package/modules/layout/components/page/page.component.d.ts +5 -7
  240. package/modules/layout/components/sidebar-mobile-v1/components/sidebar/sidebar.component.d.ts +35 -0
  241. package/modules/layout/components/sidebar-mobile-v1/components/user/user.component.d.ts +24 -0
  242. package/modules/layout/components/sidebar-mobile-v1/main.component.d.ts +21 -0
  243. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +22 -29
  244. package/modules/layout/components/sidebar-v1/components/user/user.component.d.ts +11 -17
  245. package/modules/layout/components/sidebar-v1/main.component.d.ts +14 -14
  246. package/modules/layout/configurations/layout.configuration.d.ts +46 -3
  247. package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +3 -8
  248. package/modules/layout/modules/home/components/home-page/home-page.component.d.ts +2 -5
  249. package/modules/layout/modules/not-found/pages/root/root.component.d.ts +3 -8
  250. package/modules/layout/pipes/high-light-search.pipe.d.ts +1 -1
  251. package/modules/layout/services/index.d.ts +1 -0
  252. package/modules/layout/services/layout.service.d.ts +10 -0
  253. package/modules/layout/services/menu/menu.model.d.ts +4 -1
  254. package/modules/layout/services/storage/storage.service.d.ts +0 -3
  255. package/modules/permission/src/configurations/permission.configuration.d.ts +56 -2
  256. package/modules/permission/src/directives/permission.directive.d.ts +5 -8
  257. package/modules/permission/src/guards/permission.guard.d.ts +2 -1
  258. package/modules/permission/src/services/permission.service.d.ts +6 -9
  259. package/package.json +107 -79
  260. package/public-api.d.ts +0 -1
  261. package/sd-angular-core-19.0.0-beta.81.tgz +0 -0
  262. package/services/api/src/api.model.d.ts +6 -1
  263. package/services/confirm/src/lib/confirm.service.d.ts +5 -0
  264. package/services/docx/index.d.ts +1 -0
  265. package/services/docx/src/lib/docx.model.d.ts +9 -0
  266. package/services/docx/src/lib/docx.service.d.ts +13 -0
  267. package/services/docx/src/public-api.d.ts +2 -0
  268. package/services/index.d.ts +1 -0
  269. package/services/notify/index.d.ts +1 -0
  270. package/services/notify/src/notify.model.d.ts +1 -1
  271. package/services/notify/src/notify.service.d.ts +5 -5
  272. package/utilities/extensions/src/string.extension.d.ts +3 -0
  273. package/utilities/extensions/src/utility.extension.d.ts +1 -0
  274. package/utilities/models/index.d.ts +3 -0
  275. package/utilities/models/src/filter.model.d.ts +17 -4
  276. package/utilities/models/src/icon.model.d.ts +2 -0
  277. package/utilities/models/src/nested-key-of.model.d.ts +5 -0
  278. package/utilities/models/src/order.model.d.ts +2 -1
  279. package/utilities/models/src/paging.model.d.ts +2 -1
  280. package/utilities/models/src/pattern.model.d.ts +1 -1
  281. package/utilities/models/src/unwrap-signal.model.d.ts +6 -0
  282. package/components/document-builder/src/plugins/comment/comment.plugin.d.ts +0 -4
  283. package/components/document-builder/src/plugins/table-fit/table-fit.plugin.d.ts +0 -4
  284. package/components/modal/src/modal/modal.component.d.ts +0 -31
  285. package/components/table/src/components/desktop-cell-view/desktop-cell-view.component.d.ts +0 -14
  286. package/fesm2022/sd-angular-core-guards-permission.mjs +0 -155
  287. package/fesm2022/sd-angular-core-guards-permission.mjs.map +0 -1
  288. package/fesm2022/sd-angular-core-guards.mjs +0 -6
  289. package/fesm2022/sd-angular-core-guards.mjs.map +0 -1
  290. package/fesm2022/sd-angular-core-modules-oidc.mjs +0 -127
  291. package/fesm2022/sd-angular-core-modules-oidc.mjs.map +0 -1
  292. package/guards/index.d.ts +0 -1
  293. package/guards/permission/index.d.ts +0 -4
  294. package/guards/permission/src/configurations/index.d.ts +0 -1
  295. package/guards/permission/src/configurations/permission.configuration.d.ts +0 -8
  296. package/guards/permission/src/directives/index.d.ts +0 -1
  297. package/guards/permission/src/directives/permission.directive.d.ts +0 -12
  298. package/guards/permission/src/guards/index.d.ts +0 -1
  299. package/guards/permission/src/guards/permission.guard.d.ts +0 -13
  300. package/guards/permission/src/services/index.d.ts +0 -1
  301. package/guards/permission/src/services/permission.service.d.ts +0 -15
  302. package/modules/oidc/dynamic-sts.loader.d.ts +0 -11
  303. package/modules/oidc/index.d.ts +0 -2
  304. package/modules/oidc/oidc.configuration.d.ts +0 -11
  305. package/modules/oidc/oidc.module.d.ts +0 -14
  306. package/sd-angular-core-19.0.0-beta.8.tgz +0 -0
@@ -0,0 +1,126 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Injectable, inject, provideAppInitializer, makeEnvironmentProviders, APP_INITIALIZER, NgModule } from '@angular/core';
3
+ import Keycloak from 'keycloak-js';
4
+ import { from, switchMap } from 'rxjs';
5
+
6
+ const SD_KEYCLOAK_CONFIGURATION = new InjectionToken('sd-keycloak.configuration');
7
+
8
+ class SdKeycloakService {
9
+ keycloak;
10
+ config;
11
+ async init(config) {
12
+ this.config = config;
13
+ // 1. Khởi tạo instance
14
+ this.keycloak = new Keycloak({
15
+ url: config.url,
16
+ realm: config.realm,
17
+ clientId: config.clientId,
18
+ });
19
+ // 2. Lắng nghe sự kiện hết hạn token để tự động làm mới ngầm
20
+ this.keycloak.onTokenExpired = () => {
21
+ this.keycloak.updateToken(30).catch(() => {
22
+ console.warn('Không thể làm mới token. Yêu cầu đăng nhập lại.');
23
+ this.keycloak.login();
24
+ });
25
+ };
26
+ // 3. Thực thi quá trình boot Keycloak
27
+ return this.keycloak.init({
28
+ onLoad: 'check-sso',
29
+ silentCheckSsoRedirectUri: window.location.origin + '/silent-renew.html',
30
+ checkLoginIframe: false, // Tắt check Iframe để chống lỗi vòng lặp
31
+ });
32
+ }
33
+ // Tiện ích nhanh cho Dev sử dụng
34
+ login() { return this.keycloak.login(); }
35
+ logout() { return this.keycloak.logout({ redirectUri: window.location.origin }); }
36
+ getToken() { return this.keycloak.token; }
37
+ getIsAuthenticated() { return this.keycloak.authenticated; }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdKeycloakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
39
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdKeycloakService, providedIn: 'root' });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdKeycloakService, decorators: [{
42
+ type: Injectable,
43
+ args: [{ providedIn: 'root' }]
44
+ }] });
45
+
46
+ const SdKeycloakInterceptor = (req, next) => {
47
+ const keycloakService = inject(SdKeycloakService);
48
+ const { keycloak, config } = keycloakService;
49
+ // Nếu chưa init xong hoặc chưa đăng nhập -> cho request đi qua bình thường
50
+ if (!keycloak || !keycloak.authenticated || !config) {
51
+ return next(req);
52
+ }
53
+ // Kiểm tra xem URL của request có nằm trong mảng secureRoutes không
54
+ const isSecure = config.secureRoutes?.some(route => req.url.includes(route));
55
+ if (!isSecure) {
56
+ return next(req);
57
+ }
58
+ // Đảm bảo token luôn hợp lệ (cập nhật nếu token sẽ hết hạn trong 30s tới)
59
+ return from(keycloak.updateToken(30)).pipe(switchMap(() => {
60
+ const authReq = req.clone({
61
+ headers: req.headers.set('Authorization', `Bearer ${keycloak.token}`)
62
+ });
63
+ return next(authReq);
64
+ }));
65
+ };
66
+
67
+ // =======================================================================
68
+ // CÁCH 1: Dùng cho Angular 19 Standalone (Gọi trong app.config.ts)
69
+ // =======================================================================
70
+ function provideSdKeycloak(options) {
71
+ // FIX 1: Khai báo mảng nhận cả Provider (cho Service/Token) lẫn EnvironmentProviders (cho AppInitializer)
72
+ const providers = [SdKeycloakService];
73
+ if (options.useFactory) {
74
+ providers.push({ provide: SD_KEYCLOAK_CONFIGURATION, useFactory: options.useFactory, deps: options.deps || [] });
75
+ }
76
+ else if (options.useClass) {
77
+ providers.push({ provide: SD_KEYCLOAK_CONFIGURATION, useClass: options.useClass });
78
+ }
79
+ // Standalone dùng được provideAppInitializer ngon lành
80
+ providers.push(provideAppInitializer(() => {
81
+ const configLoader = inject(SD_KEYCLOAK_CONFIGURATION);
82
+ const keycloakService = inject(SdKeycloakService);
83
+ return configLoader.loadTenantConfig().then((config) => keycloakService.init(config));
84
+ }));
85
+ return makeEnvironmentProviders(providers);
86
+ }
87
+ // =======================================================================
88
+ // CÁCH 2: Dùng cho kiến trúc NgModule cũ (Backward Compatibility)
89
+ // =======================================================================
90
+ class SdKeycloakModule {
91
+ static forRoot(options) {
92
+ return {
93
+ ngModule: SdKeycloakModule,
94
+ providers: [
95
+ SdKeycloakService,
96
+ ...(options.useFactory
97
+ ? [{ provide: SD_KEYCLOAK_CONFIGURATION, useFactory: options.useFactory, deps: options.deps || [] }]
98
+ : [{ provide: SD_KEYCLOAK_CONFIGURATION, useClass: options.useClass }]),
99
+ // FIX 2: NgModule bắt buộc phải dùng APP_INITIALIZER (nhưng viết kiểu xịn của Angular 14+, dùng inject)
100
+ {
101
+ provide: APP_INITIALIZER,
102
+ multi: true,
103
+ useFactory: () => {
104
+ const configLoader = inject(SD_KEYCLOAK_CONFIGURATION);
105
+ const keycloakService = inject(SdKeycloakService);
106
+ return () => configLoader.loadTenantConfig().then((config) => keycloakService.init(config));
107
+ }
108
+ }
109
+ ]
110
+ };
111
+ }
112
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdKeycloakModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
113
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: SdKeycloakModule });
114
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdKeycloakModule });
115
+ }
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdKeycloakModule, decorators: [{
117
+ type: NgModule,
118
+ args: [{}]
119
+ }] });
120
+
121
+ /**
122
+ * Generated bundle index. Do not edit.
123
+ */
124
+
125
+ export { SD_KEYCLOAK_CONFIGURATION, SdKeycloakInterceptor, SdKeycloakModule, SdKeycloakService, provideSdKeycloak };
126
+ //# sourceMappingURL=sd-angular-core-modules-keycloak.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sd-angular-core-modules-keycloak.mjs","sources":["../../../projects/sd-angular/modules/keycloak/keycloak.configuration.ts","../../../projects/sd-angular/modules/keycloak/keycloak.service.ts","../../../projects/sd-angular/modules/keycloak/keycloak.interceptor.ts","../../../projects/sd-angular/modules/keycloak/keycloak.module.ts","../../../projects/sd-angular/modules/keycloak/sd-angular-core-modules-keycloak.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SdKeycloakTenantConfig {\r\n url: string;\r\n realm: string;\r\n clientId: string;\r\n secureRoutes?: string[]; // Các API cần đính token (vd: ['/api/v1'])\r\n}\r\n\r\nexport interface ISdKeycloakConfiguration {\r\n loadTenantConfig: () => Promise<SdKeycloakTenantConfig>;\r\n}\r\n\r\nexport const SD_KEYCLOAK_CONFIGURATION = new InjectionToken<ISdKeycloakConfiguration>('sd-keycloak.configuration');","import { Injectable } from '@angular/core';\r\nimport Keycloak from 'keycloak-js'; // Import trực tiếp SDK gốc của Keycloak\r\nimport { SdKeycloakTenantConfig } from './keycloak.configuration';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SdKeycloakService {\r\n public keycloak!: Keycloak;\r\n public config!: SdKeycloakTenantConfig;\r\n\r\n async init(config: SdKeycloakTenantConfig): Promise<boolean> {\r\n this.config = config;\r\n \r\n // 1. Khởi tạo instance\r\n this.keycloak = new Keycloak({\r\n url: config.url,\r\n realm: config.realm,\r\n clientId: config.clientId,\r\n });\r\n\r\n // 2. Lắng nghe sự kiện hết hạn token để tự động làm mới ngầm\r\n this.keycloak.onTokenExpired = () => {\r\n this.keycloak.updateToken(30).catch(() => {\r\n console.warn('Không thể làm mới token. Yêu cầu đăng nhập lại.');\r\n this.keycloak.login();\r\n });\r\n };\r\n\r\n // 3. Thực thi quá trình boot Keycloak\r\n return this.keycloak.init({\r\n onLoad: 'check-sso',\r\n silentCheckSsoRedirectUri: window.location.origin + '/silent-renew.html',\r\n checkLoginIframe: false, // Tắt check Iframe để chống lỗi vòng lặp\r\n });\r\n }\r\n\r\n // Tiện ích nhanh cho Dev sử dụng\r\n login() { return this.keycloak.login(); }\r\n logout() { return this.keycloak.logout({ redirectUri: window.location.origin }); }\r\n getToken() { return this.keycloak.token; }\r\n getIsAuthenticated() { return this.keycloak.authenticated; }\r\n}","import { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { from, switchMap } from 'rxjs';\r\nimport { SdKeycloakService } from './keycloak.service';\r\n\r\nexport const SdKeycloakInterceptor: HttpInterceptorFn = (req, next) => {\r\n const keycloakService = inject(SdKeycloakService);\r\n const { keycloak, config } = keycloakService;\r\n\r\n // Nếu chưa init xong hoặc chưa đăng nhập -> cho request đi qua bình thường\r\n if (!keycloak || !keycloak.authenticated || !config) {\r\n return next(req);\r\n }\r\n\r\n // Kiểm tra xem URL của request có nằm trong mảng secureRoutes không\r\n const isSecure = config.secureRoutes?.some(route => req.url.includes(route));\r\n if (!isSecure) {\r\n return next(req);\r\n }\r\n\r\n // Đảm bảo token luôn hợp lệ (cập nhật nếu token sẽ hết hạn trong 30s tới)\r\n return from(keycloak.updateToken(30)).pipe(\r\n switchMap(() => {\r\n const authReq = req.clone({\r\n headers: req.headers.set('Authorization', `Bearer ${keycloak.token}`)\r\n });\r\n return next(authReq);\r\n })\r\n );\r\n};","import { \r\n ModuleWithProviders, \r\n NgModule, \r\n Provider, \r\n Type, \r\n EnvironmentProviders, \r\n makeEnvironmentProviders, \r\n provideAppInitializer, \r\n inject,\r\n APP_INITIALIZER\r\n} from '@angular/core';\r\nimport { ISdKeycloakConfiguration, SD_KEYCLOAK_CONFIGURATION } from './keycloak.configuration';\r\nimport { SdKeycloakService } from './keycloak.service';\r\n\r\n// =======================================================================\r\n// CÁCH 1: Dùng cho Angular 19 Standalone (Gọi trong app.config.ts)\r\n// =======================================================================\r\nexport function provideSdKeycloak(options: {\r\n useClass?: Type<ISdKeycloakConfiguration>;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n useFactory?: (...args: any[]) => ISdKeycloakConfiguration;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n deps?: any[];\r\n}): EnvironmentProviders {\r\n \r\n // FIX 1: Khai báo mảng nhận cả Provider (cho Service/Token) lẫn EnvironmentProviders (cho AppInitializer)\r\n const providers: Array<Provider | EnvironmentProviders> = [SdKeycloakService];\r\n\r\n if (options.useFactory) {\r\n providers.push({ provide: SD_KEYCLOAK_CONFIGURATION, useFactory: options.useFactory, deps: options.deps || [] });\r\n } else if (options.useClass) {\r\n providers.push({ provide: SD_KEYCLOAK_CONFIGURATION, useClass: options.useClass });\r\n }\r\n\r\n // Standalone dùng được provideAppInitializer ngon lành\r\n providers.push(\r\n provideAppInitializer(() => {\r\n const configLoader = inject(SD_KEYCLOAK_CONFIGURATION);\r\n const keycloakService = inject(SdKeycloakService);\r\n return configLoader.loadTenantConfig().then((config) => keycloakService.init(config));\r\n })\r\n );\r\n\r\n return makeEnvironmentProviders(providers);\r\n}\r\n\r\n// =======================================================================\r\n// CÁCH 2: Dùng cho kiến trúc NgModule cũ (Backward Compatibility)\r\n// =======================================================================\r\n@NgModule({})\r\nexport class SdKeycloakModule {\r\n static forRoot(options: {\r\n useClass?: Type<ISdKeycloakConfiguration>;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n useFactory?: (...args: any[]) => ISdKeycloakConfiguration;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n deps?: any[];\r\n }): ModuleWithProviders<SdKeycloakModule> {\r\n \r\n return {\r\n ngModule: SdKeycloakModule,\r\n providers: [\r\n SdKeycloakService,\r\n ...(options.useFactory \r\n ? [{ provide: SD_KEYCLOAK_CONFIGURATION, useFactory: options.useFactory, deps: options.deps || [] }]\r\n : [{ provide: SD_KEYCLOAK_CONFIGURATION, useClass: options.useClass! }]\r\n ),\r\n \r\n // FIX 2: NgModule bắt buộc phải dùng APP_INITIALIZER (nhưng viết kiểu xịn của Angular 14+, dùng inject)\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n useFactory: () => {\r\n const configLoader = inject(SD_KEYCLOAK_CONFIGURATION);\r\n const keycloakService = inject(SdKeycloakService);\r\n return () => configLoader.loadTenantConfig().then((config) => keycloakService.init(config));\r\n }\r\n }\r\n ]\r\n };\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}