@sd-angular/core 19.0.0-beta.7 → 19.0.0-beta.71

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 (237) 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 +1 -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/models/sd-anchor-v2.model.d.ts +3 -3
  10. package/components/avatar/index.d.ts +1 -0
  11. package/components/avatar/src/avatar.component.d.ts +19 -0
  12. package/components/badge/src/badge.component.d.ts +77 -19
  13. package/components/button/src/button.component.d.ts +30 -28
  14. package/components/code-editor/index.d.ts +1 -0
  15. package/components/code-editor/src/code-editor.component.d.ts +25 -0
  16. package/components/document-builder/index.d.ts +1 -0
  17. package/components/document-builder/src/document-builder.component.d.ts +12 -41
  18. package/components/document-builder/src/document-builder.model.d.ts +14 -11
  19. package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +9 -0
  20. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +44 -0
  21. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +57 -0
  22. package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +1 -0
  23. package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +4 -0
  24. package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +31 -0
  25. package/components/document-builder/src/plugins/index.d.ts +7 -2
  26. package/components/document-builder/src/plugins/page-orientation/page-orientation.plugin.d.ts +2 -2
  27. package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +14 -0
  28. package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +15 -0
  29. package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +25 -0
  30. package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +29 -0
  31. package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +35 -0
  32. package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +15 -0
  33. package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +15 -0
  34. package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +15 -0
  35. package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +15 -0
  36. package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +15 -0
  37. package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +15 -0
  38. package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +54 -0
  39. package/components/document-builder/src/plugins/paste-handler/filters/replacetabswithinprewithspaces.d.ts +24 -0
  40. package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +27 -0
  41. package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +16 -0
  42. package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +25 -0
  43. package/components/document-builder/src/plugins/paste-handler/index.d.ts +35 -0
  44. package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +31 -0
  45. package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +31 -0
  46. package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +29 -0
  47. package/components/document-builder/src/plugins/paste-handler/types.d.ts +30 -0
  48. package/components/document-builder/src/plugins/table-custom/index.d.ts +34 -0
  49. package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +39 -0
  50. package/components/index.d.ts +4 -0
  51. package/components/mini-editor/index.d.ts +2 -0
  52. package/components/mini-editor/src/mini-editor.component.d.ts +90 -0
  53. package/components/mini-editor/src/mini-editor.model.d.ts +44 -0
  54. package/components/modal/index.d.ts +1 -1
  55. package/components/modal/src/modal.component.d.ts +24 -0
  56. package/components/section/index.d.ts +1 -0
  57. package/components/section/src/section-item/section-item.component.d.ts +7 -0
  58. package/components/section/src/section.component.d.ts +11 -11
  59. package/components/side-drawer/src/side-drawer.component.d.ts +11 -24
  60. package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +4 -1
  61. package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +3 -15
  62. package/components/table/src/components/column-filter/column-filter.component.d.ts +3 -3
  63. package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts +21 -9
  64. package/components/table/src/components/desktop-cell-view/desktop-cell-view.component.d.ts +21 -7
  65. package/components/table/src/components/external-filter/external-filter.component.d.ts +1 -1
  66. package/components/table/src/components/selector-action/action-filter.pipe.d.ts +11 -10
  67. package/components/table/src/components/selector-action/selector-action.component.d.ts +5 -3
  68. package/components/table/src/directives/index.d.ts +2 -0
  69. package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +9 -0
  70. package/components/table/src/directives/sticky-shadow.directive.d.ts +17 -0
  71. package/components/table/src/models/table-column.model.d.ts +38 -34
  72. package/components/table/src/models/table-command.model.d.ts +7 -3
  73. package/components/table/src/models/table-item.model.d.ts +5 -4
  74. package/components/table/src/models/table-option-config.model.d.ts +5 -0
  75. package/components/table/src/models/table-option-export.model.d.ts +3 -2
  76. package/components/table/src/models/table-option-selector.model.d.ts +11 -10
  77. package/components/table/src/models/table-option.model.d.ts +9 -8
  78. package/components/table/src/services/index.d.ts +3 -0
  79. package/components/table/src/services/table-export/table-export.service.d.ts +26 -0
  80. package/components/table/src/services/table-filter/table-filter.model.d.ts +6 -5
  81. package/components/table/src/services/table-format/table-format.service.d.ts +16 -0
  82. package/components/table/src/table.component.d.ts +39 -53
  83. package/components/upload-file/src/configurations/upload-file.configuration.d.ts +1 -1
  84. package/components/upload-file/src/services/upload-file.service.d.ts +0 -1
  85. package/components/upload-file/src/upload-file.component.d.ts +49 -54
  86. package/components/view/index.d.ts +1 -0
  87. package/components/view/src/view.component.d.ts +16 -0
  88. package/components/workflow/src/models/form-generic-component.model.d.ts +5 -4
  89. package/components/workflow/src/models/index.d.ts +1 -0
  90. package/directives/index.d.ts +2 -0
  91. package/directives/src/sd-href.directive.d.ts +9 -0
  92. package/directives/src/sd-tooltip.directive.d.ts +26 -0
  93. package/fesm2022/sd-angular-core-components-anchor-v2.mjs +15 -15
  94. package/fesm2022/sd-angular-core-components-anchor-v2.mjs.map +1 -1
  95. package/fesm2022/sd-angular-core-components-avatar.mjs +103 -0
  96. package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -0
  97. package/fesm2022/sd-angular-core-components-badge.mjs +101 -91
  98. package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
  99. package/fesm2022/sd-angular-core-components-button.mjs +70 -96
  100. package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
  101. package/fesm2022/sd-angular-core-components-code-editor.mjs +127 -0
  102. package/fesm2022/sd-angular-core-components-code-editor.mjs.map +1 -0
  103. package/fesm2022/sd-angular-core-components-document-builder.mjs +4006 -611
  104. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  105. package/fesm2022/sd-angular-core-components-history.mjs +1 -1
  106. package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
  107. package/fesm2022/sd-angular-core-components-import-excel.mjs +1 -1
  108. package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
  109. package/fesm2022/sd-angular-core-components-mini-editor.mjs +326 -0
  110. package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -0
  111. package/fesm2022/sd-angular-core-components-modal.mjs +57 -91
  112. package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
  113. package/fesm2022/sd-angular-core-components-preview.mjs +1 -1
  114. package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
  115. package/fesm2022/sd-angular-core-components-quick-action.mjs +2 -2
  116. package/fesm2022/sd-angular-core-components-quick-action.mjs.map +1 -1
  117. package/fesm2022/sd-angular-core-components-section.mjs +41 -43
  118. package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
  119. package/fesm2022/sd-angular-core-components-side-drawer.mjs +78 -84
  120. package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
  121. package/fesm2022/sd-angular-core-components-tab-router.mjs +152 -226
  122. package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
  123. package/fesm2022/sd-angular-core-components-table.mjs +1188 -1185
  124. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  125. package/fesm2022/sd-angular-core-components-upload-file.mjs +339 -444
  126. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  127. package/fesm2022/sd-angular-core-components-view.mjs +45 -0
  128. package/fesm2022/sd-angular-core-components-view.mjs.map +1 -0
  129. package/fesm2022/sd-angular-core-components-workflow.mjs +47 -57
  130. package/fesm2022/sd-angular-core-components-workflow.mjs.map +1 -1
  131. package/fesm2022/sd-angular-core-components.mjs +4 -0
  132. package/fesm2022/sd-angular-core-components.mjs.map +1 -1
  133. package/fesm2022/sd-angular-core-directives.mjs +286 -27
  134. package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
  135. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +289 -363
  136. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  137. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +170 -189
  138. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
  139. package/fesm2022/sd-angular-core-forms-chip.mjs +184 -194
  140. package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
  141. package/fesm2022/sd-angular-core-forms-date-range.mjs +180 -242
  142. package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
  143. package/fesm2022/sd-angular-core-forms-date.mjs +178 -270
  144. package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
  145. package/fesm2022/sd-angular-core-forms-datetime.mjs +177 -285
  146. package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
  147. package/fesm2022/sd-angular-core-forms-input-number.mjs +210 -337
  148. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  149. package/fesm2022/sd-angular-core-forms-input.mjs +169 -286
  150. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  151. package/fesm2022/sd-angular-core-forms-radio.mjs +3 -2
  152. package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
  153. package/fesm2022/sd-angular-core-forms-select.mjs +390 -447
  154. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  155. package/fesm2022/sd-angular-core-forms-textarea.mjs +167 -226
  156. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  157. package/fesm2022/sd-angular-core-modules-keycloak.mjs +126 -0
  158. package/fesm2022/sd-angular-core-modules-keycloak.mjs.map +1 -0
  159. package/fesm2022/sd-angular-core-modules-layout.mjs +454 -453
  160. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  161. package/fesm2022/sd-angular-core-modules.mjs +1 -1
  162. package/fesm2022/sd-angular-core-services-api.mjs +5 -10
  163. package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
  164. package/fesm2022/sd-angular-core-services-confirm.mjs +5 -7
  165. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  166. package/fesm2022/sd-angular-core-services-docx.mjs +173 -0
  167. package/fesm2022/sd-angular-core-services-docx.mjs.map +1 -0
  168. package/fesm2022/sd-angular-core-services-notify.mjs +2 -2
  169. package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
  170. package/fesm2022/sd-angular-core-services.mjs +1 -0
  171. package/fesm2022/sd-angular-core-services.mjs.map +1 -1
  172. package/fesm2022/sd-angular-core-utilities-extensions.mjs +21 -45
  173. package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
  174. package/fesm2022/sd-angular-core-utilities-models.mjs +15 -1
  175. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  176. package/forms/autocomplete/src/autocomplete.component.d.ts +55 -55
  177. package/forms/chip/src/chip.component.d.ts +37 -40
  178. package/forms/chip-calendar/src/chip-calendar.component.d.ts +37 -38
  179. package/forms/date/src/date.component.d.ts +48 -46
  180. package/forms/date-range/src/date-range.component.d.ts +35 -34
  181. package/forms/datetime/src/datetime.component.d.ts +48 -49
  182. package/forms/input/src/input.component.d.ts +54 -57
  183. package/forms/input-number/src/input-number.component.d.ts +53 -54
  184. package/forms/select/src/select.component.d.ts +67 -64
  185. package/forms/textarea/src/textarea.component.d.ts +40 -43
  186. package/modules/index.d.ts +1 -1
  187. package/modules/keycloak/index.d.ts +4 -0
  188. package/modules/keycloak/keycloak.configuration.d.ts +11 -0
  189. package/modules/keycloak/keycloak.interceptor.d.ts +2 -0
  190. package/modules/keycloak/keycloak.module.d.ts +18 -0
  191. package/modules/keycloak/keycloak.service.d.ts +14 -0
  192. package/modules/layout/components/layout-main/layout-main.component.d.ts +7 -12
  193. package/modules/layout/components/page/page.component.d.ts +5 -7
  194. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +22 -29
  195. package/modules/layout/components/sidebar-v1/components/user/user.component.d.ts +11 -17
  196. package/modules/layout/components/sidebar-v1/main.component.d.ts +14 -14
  197. package/modules/layout/configurations/layout.configuration.d.ts +46 -3
  198. package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +3 -8
  199. package/modules/layout/modules/home/components/home-page/home-page.component.d.ts +2 -5
  200. package/modules/layout/modules/not-found/pages/root/root.component.d.ts +3 -8
  201. package/modules/layout/pipes/high-light-search.pipe.d.ts +1 -1
  202. package/modules/layout/services/index.d.ts +1 -0
  203. package/modules/layout/services/layout.service.d.ts +10 -0
  204. package/modules/layout/services/menu/menu.model.d.ts +2 -0
  205. package/modules/layout/services/storage/storage.service.d.ts +0 -3
  206. package/package.json +87 -64
  207. package/sd-angular-core-19.0.0-beta.71.tgz +0 -0
  208. package/services/api/src/api.model.d.ts +6 -1
  209. package/services/confirm/src/lib/confirm.service.d.ts +1 -0
  210. package/services/docx/index.d.ts +1 -0
  211. package/services/docx/src/lib/docx.model.d.ts +9 -0
  212. package/services/docx/src/lib/docx.service.d.ts +13 -0
  213. package/services/docx/src/public-api.d.ts +2 -0
  214. package/services/index.d.ts +1 -0
  215. package/services/notify/index.d.ts +1 -0
  216. package/services/notify/src/notify.model.d.ts +1 -1
  217. package/services/notify/src/notify.service.d.ts +5 -5
  218. package/utilities/extensions/src/string.extension.d.ts +2 -0
  219. package/utilities/extensions/src/utility.extension.d.ts +1 -0
  220. package/utilities/models/index.d.ts +3 -0
  221. package/utilities/models/src/filter.model.d.ts +17 -4
  222. package/utilities/models/src/icon.model.d.ts +2 -0
  223. package/utilities/models/src/nested-key-of.model.d.ts +5 -0
  224. package/utilities/models/src/order.model.d.ts +2 -1
  225. package/utilities/models/src/paging.model.d.ts +2 -1
  226. package/utilities/models/src/pattern.model.d.ts +1 -1
  227. package/utilities/models/src/unwrap-signal.model.d.ts +6 -0
  228. package/components/document-builder/src/plugins/comment/comment.plugin.d.ts +0 -4
  229. package/components/document-builder/src/plugins/table-fit/table-fit.plugin.d.ts +0 -4
  230. package/components/modal/src/modal/modal.component.d.ts +0 -31
  231. package/fesm2022/sd-angular-core-modules-oidc.mjs +0 -127
  232. package/fesm2022/sd-angular-core-modules-oidc.mjs.map +0 -1
  233. package/modules/oidc/dynamic-sts.loader.d.ts +0 -11
  234. package/modules/oidc/index.d.ts +0 -2
  235. package/modules/oidc/oidc.configuration.d.ts +0 -11
  236. package/modules/oidc/oidc.module.d.ts +0 -14
  237. package/sd-angular-core-19.0.0-beta.7.tgz +0 -0
@@ -0,0 +1,18 @@
1
+ import { ModuleWithProviders, Type, EnvironmentProviders } from '@angular/core';
2
+ import { ISdKeycloakConfiguration } from './keycloak.configuration';
3
+ import * as i0 from "@angular/core";
4
+ export declare function provideSdKeycloak(options: {
5
+ useClass?: Type<ISdKeycloakConfiguration>;
6
+ useFactory?: (...args: any[]) => ISdKeycloakConfiguration;
7
+ deps?: any[];
8
+ }): EnvironmentProviders;
9
+ export declare class SdKeycloakModule {
10
+ static forRoot(options: {
11
+ useClass?: Type<ISdKeycloakConfiguration>;
12
+ useFactory?: (...args: any[]) => ISdKeycloakConfiguration;
13
+ deps?: any[];
14
+ }): ModuleWithProviders<SdKeycloakModule>;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdKeycloakModule, never>;
16
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SdKeycloakModule, never, never, never>;
17
+ static ɵinj: i0.ɵɵInjectorDeclaration<SdKeycloakModule>;
18
+ }
@@ -0,0 +1,14 @@
1
+ import Keycloak from 'keycloak-js';
2
+ import { SdKeycloakTenantConfig } from './keycloak.configuration';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SdKeycloakService {
5
+ keycloak: Keycloak;
6
+ config: SdKeycloakTenantConfig;
7
+ init(config: SdKeycloakTenantConfig): Promise<boolean>;
8
+ login(): Promise<void>;
9
+ logout(): Promise<void>;
10
+ getToken(): string | undefined;
11
+ getIsAuthenticated(): boolean;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdKeycloakService, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdKeycloakService>;
14
+ }
@@ -1,16 +1,11 @@
1
- import { OnInit } from '@angular/core';
2
1
  import { SdLayoutMenu } from '../../services';
3
- import { MenuPipe } from '../../pipes';
4
- import { ISdLayoutConfiguration, ISdSidebarConfiguration } from '../../configurations';
5
2
  import * as i0 from "@angular/core";
6
- export declare class SdLayoutComponent implements OnInit {
7
- private layoutConfig;
8
- private menuPipe;
9
- constructor(layoutConfig: ISdLayoutConfiguration, menuPipe: MenuPipe);
10
- menus: SdLayoutMenu[];
11
- set _menus(menus: SdLayoutMenu[]);
12
- sidebarConfiguration: ISdSidebarConfiguration;
13
- ngOnInit(): Promise<void>;
3
+ export declare class SdLayoutComponent {
4
+ #private;
5
+ menusInput: import("@angular/core").InputSignal<SdLayoutMenu[]>;
6
+ menus: import("@angular/core").Signal<SdLayoutMenu[]>;
7
+ userInfo: import("@angular/core").WritableSignal<import("@sd-angular/core/modules/layout").SdLayoutUserInfo | undefined>;
8
+ sidebar: import("@angular/core").WritableSignal<import("@sd-angular/core/modules/layout").SidebarConfigurationV1 | undefined>;
14
9
  static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<SdLayoutComponent, "sd-layout", never, { "_menus": { "alias": "menus"; "required": false; }; }, {}, never, ["*"], true, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdLayoutComponent, "sd-layout", never, { "menusInput": { "alias": "menus"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
16
11
  }
@@ -1,12 +1,10 @@
1
- import { ElementRef } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class SdPageComponent {
4
3
  private el;
5
- title?: string;
6
- set _title(val: string | undefined | null);
7
- noHeader?: boolean;
8
- set _noHeader(val: boolean | '' | undefined | null);
9
- constructor(el: ElementRef);
4
+ title: import("@angular/core").InputSignal<string>;
5
+ description: import("@angular/core").InputSignal<string>;
6
+ noHeader: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
7
+ constructor();
10
8
  static ɵfac: i0.ɵɵFactoryDeclaration<SdPageComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<SdPageComponent, "sd-page", never, { "_title": { "alias": "title"; "required": false; }; "_noHeader": { "alias": "noHeader"; "required": false; }; }, {}, never, ["[headerLeft]", "[headerRight]", "*"], true, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdPageComponent, "sd-page", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "noHeader": { "alias": "noHeader"; "required": false; "isSignal": true; }; }, {}, never, ["[headerLeft]", "[headerRight]", "*"], true, never>;
12
10
  }
@@ -1,38 +1,31 @@
1
1
  import { NestedTreeControl } from '@angular/cdk/tree';
2
- import { Params, Router } from '@angular/router';
3
2
  import { MatTreeNestedDataSource } from '@angular/material/tree';
4
- import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
5
- import { SdLayoutStorageService, SdLayoutMenu } from '../../../../services';
6
- import { MenuFocusPipe } from '../../../../pipes';
7
- import { ISdLayoutConfiguration, ISidebarConfigurationV1 } from '../../../../configurations';
3
+ import { Params } from '@angular/router';
4
+ import { SdLayoutUserInfo, SidebarConfigurationV1 } from '../../../../configurations';
5
+ import { SdLayoutMenu } from '../../../../services';
8
6
  import * as i0 from "@angular/core";
9
- export declare class LayoutSidebarComponent implements OnDestroy, OnInit {
7
+ export declare class SidebarComponent {
10
8
  #private;
11
- private router;
12
- private layoutConfiguration;
13
- private layoutStorageService;
14
- private menuFocusPipe;
15
- isShowSidebar: boolean;
16
- set _menus(menus: SdLayoutMenu[]);
17
- expandSideBar: EventEmitter<void>;
18
- popupUserMenuClosed: EventEmitter<void>;
19
- popupUserMenuOpened: EventEmitter<void>;
20
- showSideBar: EventEmitter<boolean | null>;
21
- menusOrigin: SdLayoutMenu[];
9
+ isShowSidebar: import("@angular/core").InputSignal<boolean>;
10
+ menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
11
+ userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
12
+ sidebar: import("@angular/core").InputSignal<SidebarConfigurationV1>;
13
+ expandSideBar: import("@angular/core").OutputEmitterRef<void>;
14
+ popupUserMenuClosed: import("@angular/core").OutputEmitterRef<void>;
15
+ popupUserMenuOpened: import("@angular/core").OutputEmitterRef<void>;
16
+ showSideBar: import("@angular/core").OutputEmitterRef<boolean | null>;
22
17
  screenHeight: number;
23
- searchText: string;
24
- isMenuLock: boolean;
25
- currentPath: string;
26
- titleMenuGroup: string | undefined;
27
18
  isMobileOrTablet: boolean;
28
- sidebar: ISidebarConfigurationV1;
19
+ isMenuLock: import("@angular/core").WritableSignal<boolean>;
20
+ currentPath: import("@angular/core").WritableSignal<string>;
21
+ searchText: import("@angular/core").WritableSignal<string>;
22
+ titleMenuGroup: import("@angular/core").WritableSignal<string | undefined>;
23
+ idMenuGroupActive: import("@angular/core").WritableSignal<string | undefined>;
24
+ menusByGroup: import("@angular/core").WritableSignal<SdLayoutMenu[]>;
25
+ totalMenuInMenusByGroup: import("@angular/core").Signal<number>;
29
26
  dataSource: MatTreeNestedDataSource<SdLayoutMenu>;
30
- idMenuGroupActive: string | undefined;
31
- menusByGroup: SdLayoutMenu[];
32
27
  treeControl: NestedTreeControl<SdLayoutMenu, SdLayoutMenu>;
33
- constructor(router: Router, layoutConfiguration: ISdLayoutConfiguration, layoutStorageService: SdLayoutStorageService, menuFocusPipe: MenuFocusPipe);
34
- ngOnInit(): Promise<void>;
35
- ngOnDestroy(): void;
28
+ constructor();
36
29
  hasChild: (_: number, node: SdLayoutMenu) => boolean;
37
30
  onToggleMenuNode: (menu: SdLayoutMenu) => void;
38
31
  toggleMenuLock(event: Event): void;
@@ -50,6 +43,6 @@ export declare class LayoutSidebarComponent implements OnDestroy, OnInit {
50
43
  onMouseLeaveMenuGroupNode: (event: MouseEvent, menuNode: SdLayoutMenu) => void;
51
44
  onMouseOverMenuNode: (event: MouseEvent, menuItem: SdLayoutMenu) => void;
52
45
  onMouseLeaveMenuNode: (event: MouseEvent, menuItem: SdLayoutMenu) => void;
53
- static ɵfac: i0.ɵɵFactoryDeclaration<LayoutSidebarComponent, never>;
54
- static ɵcmp: i0.ɵɵComponentDeclaration<LayoutSidebarComponent, "lib-layout-sidebar", never, { "isShowSidebar": { "alias": "isShowSidebar"; "required": false; }; "_menus": { "alias": "menus"; "required": false; }; }, { "expandSideBar": "expandSideBar"; "popupUserMenuClosed": "popupUserMenuClosed"; "popupUserMenuOpened": "popupUserMenuOpened"; "showSideBar": "showSideBar"; }, never, never, true, never>;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidebarComponent, never>;
47
+ 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>;
55
48
  }
@@ -1,22 +1,16 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { SdLayoutStorageService } from '../../../../services';
3
- import { ISdLayoutConfiguration } from '../../../../configurations';
1
+ import { SdLayoutUserInfo } from '../../../../configurations';
4
2
  import * as i0 from "@angular/core";
5
3
  export declare class LayoutUserComponent {
6
- private layoutConfig;
7
- private layoutStorageService;
8
- isMobileOrTablet: boolean;
9
- isMenuLock: boolean;
10
- isShowSidebar: boolean;
11
- menuClosed: EventEmitter<boolean>;
12
- menuOpened: EventEmitter<boolean>;
13
- toggleMenuLock: EventEmitter<Event>;
14
- email: string;
15
- username: string;
16
- fullName: string;
4
+ #private;
5
+ isMobileOrTablet: import("@angular/core").InputSignal<boolean>;
6
+ isMenuLock: import("@angular/core").InputSignal<boolean>;
7
+ isShowSidebar: import("@angular/core").InputSignal<boolean>;
8
+ userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
9
+ menuClosed: import("@angular/core").OutputEmitterRef<void>;
10
+ menuOpened: import("@angular/core").OutputEmitterRef<void>;
11
+ toggleMenuLock: import("@angular/core").OutputEmitterRef<Event>;
17
12
  singoutLayoutConfig: () => void | Promise<void>;
18
- changePasswordLayoutConfig?: () => void | Promise<void>;
19
- constructor(layoutConfig: ISdLayoutConfiguration, layoutStorageService: SdLayoutStorageService);
13
+ changePasswordLayoutConfig: (() => void | Promise<void>) | undefined;
20
14
  onMenuOpened: () => void;
21
15
  onMenuClosed: () => void;
22
16
  keepOpenWhenClickInsideMenu: (event: Event) => void;
@@ -24,5 +18,5 @@ export declare class LayoutUserComponent {
24
18
  changePassword: () => void;
25
19
  onToggleMenuLock: (event: Event) => void;
26
20
  static ɵfac: i0.ɵɵFactoryDeclaration<LayoutUserComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<LayoutUserComponent, "lib-layout-user", never, { "isMobileOrTablet": { "alias": "isMobileOrTablet"; "required": false; }; "isMenuLock": { "alias": "isMenuLock"; "required": false; }; "isShowSidebar": { "alias": "isShowSidebar"; "required": false; }; }, { "menuClosed": "menuClosed"; "menuOpened": "menuOpened"; "toggleMenuLock": "toggleMenuLock"; }, never, never, true, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<LayoutUserComponent, "lib-layout-user", never, { "isMobileOrTablet": { "alias": "isMobileOrTablet"; "required": false; "isSignal": true; }; "isMenuLock": { "alias": "isMenuLock"; "required": false; "isSignal": true; }; "isShowSidebar": { "alias": "isShowSidebar"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; }, { "menuClosed": "menuClosed"; "menuOpened": "menuOpened"; "toggleMenuLock": "toggleMenuLock"; }, never, never, true, never>;
28
22
  }
@@ -1,24 +1,24 @@
1
1
  import { MatSidenav } from '@angular/material/sidenav';
2
- import { SdLayoutStorageService, SdLayoutMenu } from '../../services';
2
+ import { SdLayoutUserInfo, SidebarConfigurationV1 } from '../../configurations';
3
+ import { SdLayoutMenu } from '../../services';
3
4
  import * as i0 from "@angular/core";
4
- export declare class LayoutSideBarMainV1Component {
5
+ export declare class SidebarV1Component {
5
6
  #private;
6
- private layoutStorageService;
7
- constructor(layoutStorageService: SdLayoutStorageService);
8
- sidenav: MatSidenav;
9
- menus: SdLayoutMenu[];
10
- onhover: boolean;
11
- isMenuLock: boolean;
12
- isShowSidebar: boolean;
13
- isMobileOrTablet: boolean;
14
- timerMouseInMenu: ReturnType<typeof setTimeout> | null;
15
- timerMouseOutMenu: ReturnType<typeof setTimeout> | null;
7
+ sidenav: import("@angular/core").Signal<MatSidenav>;
8
+ menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
9
+ userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
10
+ sidebar: import("@angular/core").InputSignal<SidebarConfigurationV1>;
11
+ isMobileOrTablet: import("@angular/core").WritableSignal<boolean>;
12
+ isMenuLock: import("@angular/core").WritableSignal<boolean>;
13
+ isShowSidebar: import("@angular/core").WritableSignal<boolean>;
14
+ onhover: import("@angular/core").WritableSignal<boolean>;
15
+ constructor();
16
16
  openSidebar: () => void;
17
17
  onPopupOfSideBarOpened: () => void;
18
18
  onPopupOfSideBarClosed: () => void;
19
19
  onExpandSideBar: () => void;
20
20
  onMouseleaveSideBar: () => void;
21
21
  onToggle: (data: boolean | null) => void;
22
- static ɵfac: i0.ɵɵFactoryDeclaration<LayoutSideBarMainV1Component, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<LayoutSideBarMainV1Component, "lib-layout-sidebar-main-v1", never, { "menus": { "alias": "menus"; "required": false; }; }, {}, never, ["*"], true, never>;
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>;
24
24
  }
@@ -1,16 +1,59 @@
1
1
  import { InjectionToken } from '@angular/core';
2
+ import { SdMaybeAsync } from '@sd-angular/core/utilities/models';
2
3
  export interface ISdLayoutConfiguration {
3
4
  homeUrl?: string;
4
- sidebar: ISdSidebarConfiguration | (() => ISdSidebarConfiguration | Promise<ISdSidebarConfiguration>);
5
+ sidebar: ISdSidebarConfiguration | (() => SdMaybeAsync<ISdSidebarConfiguration>);
6
+ userInfo: SdLayoutUserInfo | (() => SdMaybeAsync<SdLayoutUserInfo>);
5
7
  signout: () => void | Promise<void>;
6
8
  changePassword?: () => void | Promise<void>;
7
9
  }
8
- export type ISdSidebarConfiguration = ISidebarConfigurationV1;
9
- export interface ISidebarConfigurationV1 {
10
+ export interface SdLayoutUserInfo {
11
+ /**
12
+ * Tên đăng nhập hoặc tên định danh của người dùng.
13
+ * Thường dùng làm định danh rút gọn hoặc fallback hiển thị nếu user chưa cập nhật fullName.
14
+ */
15
+ username?: string;
16
+ /**
17
+ * Địa chỉ thư điện tử của người dùng.
18
+ * Thường được hiển thị bên dưới tên người dùng trong popup/menu thông tin tài khoản.
19
+ */
20
+ email?: string;
21
+ /**
22
+ * Họ và tên đầy đủ của người dùng.
23
+ * Đây là thông tin được ưu tiên hiển thị chính trên giao diện (VD: góc phải màn hình, lời chào).
24
+ */
25
+ fullName?: string;
26
+ /**
27
+ * Hình đại diện (avatar) của người dùng.
28
+ * Nếu để trống, hệ thống sẽ tự động lấy ký tự đầu tiên của fullName hoặc username để tạo avatar mặc định.
29
+ * Hỗ trợ các định dạng: URL (http/https), chuỗi base64 (data:image), hoặc đường dẫn nội bộ.
30
+ */
31
+ avatar?: string;
32
+ }
33
+ export type ISdSidebarConfiguration = SidebarConfigurationV1;
34
+ export interface SidebarConfigurationV1 {
10
35
  version: 1;
36
+ /**
37
+ * Màu brand chính.
38
+ * Nên sử dụng mã màu #HEX hoặc rgb để hỗ trợ opacity khi hover.
39
+ * Ví dụ: #1890ff, rgb(24,144,255)
40
+ */
11
41
  brandColor?: string;
42
+ /**
43
+ * Màu brand nhạt (light).
44
+ * Dùng cho background, hover nhẹ.
45
+ */
12
46
  brandLightColor?: string;
47
+ /**
48
+ * URL logo hiển thị ở sidebar.
49
+ * Nên đặt trong thư mục public hoặc dùng URL CDN.
50
+ */
13
51
  logoUrl?: string;
52
+ /**
53
+ * Title mặc định của hệ thống.
54
+ * Nếu menu không truyền title thì sẽ dùng giá trị này.
55
+ * @default "Back Office"
56
+ */
14
57
  defaultTitle?: string;
15
58
  }
16
59
  export declare const SD_LAYOUT_CONFIGURATION: InjectionToken<ISdLayoutConfiguration>;
@@ -1,14 +1,9 @@
1
- import { ActivatedRoute } from '@angular/router';
2
- import { SdLayoutStorageService } from '../../../../services';
3
1
  import * as i0 from "@angular/core";
4
2
  export declare class RootComponent {
5
3
  #private;
6
- private route;
7
- private layoutStorageService;
8
- url: string;
9
- email: string;
10
- constructor(route: ActivatedRoute, layoutStorageService: SdLayoutStorageService);
11
- todayInfo: string;
4
+ readonly url: import("@angular/core").WritableSignal<string>;
5
+ readonly todayInfo: import("@angular/core").WritableSignal<string>;
6
+ userInfo: import("@angular/core").WritableSignal<import("@sd-angular/core/modules/layout").SdLayoutUserInfo | undefined>;
12
7
  reload(): void;
13
8
  static ɵfac: i0.ɵɵFactoryDeclaration<RootComponent, never>;
14
9
  static ɵcmp: i0.ɵɵComponentDeclaration<RootComponent, "ng-component", never, {}, {}, never, never, true, never>;
@@ -1,11 +1,8 @@
1
- import { SdLayoutStorageService } from '../../../../services';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class HomePageComponent {
4
3
  #private;
5
- private layoutStorageService;
6
- fullName: string;
7
- constructor(layoutStorageService: SdLayoutStorageService);
8
- todayInfo: string;
4
+ readonly todayInfo: import("@angular/core").WritableSignal<string>;
5
+ userInfo: import("@angular/core").WritableSignal<import("@sd-angular/core/modules/layout").SdLayoutUserInfo | undefined>;
9
6
  static ɵfac: i0.ɵɵFactoryDeclaration<HomePageComponent, never>;
10
7
  static ɵcmp: i0.ɵɵComponentDeclaration<HomePageComponent, "app-home-page", never, {}, {}, never, never, true, never>;
11
8
  }
@@ -1,14 +1,9 @@
1
- import { ActivatedRoute } from '@angular/router';
2
- import { SdLayoutStorageService } from '../../../../services';
3
1
  import * as i0 from "@angular/core";
4
2
  export declare class RootComponent {
5
3
  #private;
6
- private route;
7
- private layoutStorageService;
8
- url: string;
9
- email: string;
10
- constructor(route: ActivatedRoute, layoutStorageService: SdLayoutStorageService);
11
- todayInfo: string;
4
+ readonly url: import("@angular/core").WritableSignal<string>;
5
+ readonly todayInfo: import("@angular/core").WritableSignal<string>;
6
+ userInfo: import("@angular/core").WritableSignal<import("@sd-angular/core/modules/layout").SdLayoutUserInfo | undefined>;
12
7
  reload(): void;
13
8
  static ɵfac: i0.ɵɵFactoryDeclaration<RootComponent, never>;
14
9
  static ɵcmp: i0.ɵɵComponentDeclaration<RootComponent, "ng-component", never, {}, {}, never, never, true, never>;
@@ -2,7 +2,7 @@ import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class HighlightSearchPipe implements PipeTransform {
4
4
  #private;
5
- transform(value: string, keyword: string, agrs?: {
5
+ transform(value: string, keyword: string, args?: {
6
6
  color?: string;
7
7
  }): string;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<HighlightSearchPipe, never>;
@@ -1,2 +1,3 @@
1
1
  export * from './menu/menu.model';
2
2
  export * from './storage/storage.service';
3
+ export * from './layout.service';
@@ -0,0 +1,10 @@
1
+ import { SdLayoutUserInfo } from '../configurations';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SdLayoutService {
4
+ #private;
5
+ userInfo: import("@angular/core").WritableSignal<SdLayoutUserInfo | undefined>;
6
+ sidebar: import("@angular/core").WritableSignal<import("@sd-angular/core/modules/layout").SidebarConfigurationV1 | undefined>;
7
+ constructor();
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutService>;
10
+ }
@@ -6,6 +6,7 @@ export interface SdLayoutRootMenu {
6
6
  path: string;
7
7
  queryParams?: Params;
8
8
  icon: string;
9
+ iconUrl?: string;
9
10
  title: string;
10
11
  permission: string | string[] | boolean | (() => boolean);
11
12
  level?: number;
@@ -14,6 +15,7 @@ export interface SdLayoutRootMenu {
14
15
  export interface SdLayoutChildrenMenu {
15
16
  id?: string;
16
17
  icon?: string;
18
+ iconUrl?: string;
17
19
  title?: string;
18
20
  children?: (SdLayoutRootMenu | SdLayoutChildrenMenu)[];
19
21
  level?: number;
@@ -2,9 +2,6 @@ import { SdStorage, SdStorageService } from '@sd-angular/core/services';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class SdLayoutStorageService {
4
4
  private sdStorageService;
5
- email: SdStorage<string>;
6
- username: SdStorage<string>;
7
- fullName: SdStorage<string>;
8
5
  isShowSidebar: SdStorage<boolean>;
9
6
  menuLockStatus: SdStorage<boolean>;
10
7
  lastActiveMenuGroupId: SdStorage<string>;