@sd-angular/core 19.0.0-beta.2 → 19.0.0-beta.20

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 (117) hide show
  1. package/assets/scss/ckeditor5.scss +59 -2
  2. package/components/avatar/index.d.ts +1 -0
  3. package/components/avatar/src/avatar.component.d.ts +14 -0
  4. package/components/document-builder/src/document-builder.component.d.ts +29 -7
  5. package/components/document-builder/src/document-builder.config.d.ts +21 -0
  6. package/components/document-builder/src/document-builder.model.d.ts +6 -1
  7. package/components/document-builder/src/document-builder.utils.d.ts +10 -0
  8. package/components/document-builder/src/plugins/{table-fit.plugin.d.ts → heading/heading.plugin.d.ts} +1 -1
  9. package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +4 -0
  10. package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +31 -0
  11. package/components/document-builder/src/plugins/{image-upload.plugin.d.ts → image-upload/image-upload.plugin.d.ts} +0 -4
  12. package/components/document-builder/src/plugins/index.d.ts +7 -5
  13. package/components/document-builder/src/plugins/table-fit/table-fit.plugin.d.ts +29 -0
  14. package/components/index.d.ts +2 -0
  15. package/components/mini-editor/index.d.ts +2 -0
  16. package/components/mini-editor/src/mini-editor.component.d.ts +90 -0
  17. package/components/mini-editor/src/mini-editor.model.d.ts +42 -0
  18. package/components/table/src/directives/index.d.ts +2 -0
  19. package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +9 -0
  20. package/components/table/src/directives/sticky-shadow.directive.d.ts +17 -0
  21. package/components/table/src/models/table-column.model.d.ts +7 -7
  22. package/components/table/src/models/table-command.model.d.ts +4 -0
  23. package/components/table/src/models/table-item.model.d.ts +2 -1
  24. package/components/table/src/models/table-option-export.model.d.ts +3 -2
  25. package/components/table/src/models/table-option.model.d.ts +10 -8
  26. package/components/table/src/services/table-filter/table-filter.model.d.ts +2 -2
  27. package/components/view/index.d.ts +1 -0
  28. package/components/view/src/view.component.d.ts +14 -0
  29. package/components/workflow/src/models/index.d.ts +1 -0
  30. package/directives/index.d.ts +1 -0
  31. package/directives/src/sd-href.directive.d.ts +9 -0
  32. package/fesm2022/sd-angular-core-components-avatar.mjs +88 -0
  33. package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -0
  34. package/fesm2022/sd-angular-core-components-badge.mjs +2 -2
  35. package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
  36. package/fesm2022/sd-angular-core-components-document-builder.mjs +1329 -557
  37. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  38. package/fesm2022/sd-angular-core-components-mini-editor.mjs +326 -0
  39. package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -0
  40. package/fesm2022/sd-angular-core-components-table.mjs +510 -84
  41. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  42. package/fesm2022/sd-angular-core-components-view.mjs +88 -0
  43. package/fesm2022/sd-angular-core-components-view.mjs.map +1 -0
  44. package/fesm2022/sd-angular-core-components-workflow.mjs +33 -43
  45. package/fesm2022/sd-angular-core-components-workflow.mjs.map +1 -1
  46. package/fesm2022/sd-angular-core-components.mjs +2 -0
  47. package/fesm2022/sd-angular-core-components.mjs.map +1 -1
  48. package/fesm2022/sd-angular-core-directives.mjs +51 -2
  49. package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
  50. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +24 -2
  51. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  52. package/fesm2022/sd-angular-core-forms-date.mjs +15 -3
  53. package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
  54. package/fesm2022/sd-angular-core-forms-datetime.mjs +17 -3
  55. package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
  56. package/fesm2022/sd-angular-core-forms-input-number.mjs +25 -3
  57. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  58. package/fesm2022/sd-angular-core-forms-input.mjs +20 -6
  59. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  60. package/fesm2022/sd-angular-core-forms-radio.mjs +18 -2
  61. package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
  62. package/fesm2022/sd-angular-core-forms-select.mjs +19 -3
  63. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  64. package/fesm2022/sd-angular-core-forms-textarea.mjs +21 -2
  65. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  66. package/fesm2022/sd-angular-core-modules-auth.mjs +137 -0
  67. package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -0
  68. package/fesm2022/sd-angular-core-modules-layout.mjs +52 -17
  69. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  70. package/fesm2022/sd-angular-core-modules-oidc.mjs +0 -2
  71. package/fesm2022/sd-angular-core-modules-oidc.mjs.map +1 -1
  72. package/fesm2022/sd-angular-core-modules.mjs +1 -0
  73. package/fesm2022/sd-angular-core-modules.mjs.map +1 -1
  74. package/fesm2022/sd-angular-core-pipes.mjs +21 -1
  75. package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
  76. package/fesm2022/sd-angular-core-services-confirm.mjs +6 -9
  77. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  78. package/fesm2022/sd-angular-core-utilities-extensions.mjs +66 -1
  79. package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
  80. package/fesm2022/sd-angular-core-utilities-models.mjs +12 -3
  81. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  82. package/forms/autocomplete/src/autocomplete.component.d.ts +5 -1
  83. package/forms/date/src/date.component.d.ts +4 -1
  84. package/forms/datetime/src/datetime.component.d.ts +4 -1
  85. package/forms/input/src/input.component.d.ts +6 -4
  86. package/forms/input-number/src/input-number.component.d.ts +4 -1
  87. package/forms/radio/src/radio.component.d.ts +5 -1
  88. package/forms/select/src/select.component.d.ts +5 -1
  89. package/forms/textarea/src/textarea.component.d.ts +3 -1
  90. package/modules/auth/configurations/auth.configuration.d.ts +19 -0
  91. package/modules/auth/configurations/index.d.ts +1 -0
  92. package/modules/auth/guards/auth.guard.d.ts +11 -0
  93. package/modules/auth/guards/index.d.ts +2 -0
  94. package/modules/auth/guards/portal.guard.d.ts +11 -0
  95. package/modules/auth/index.d.ts +3 -0
  96. package/modules/auth/services/auth.model.d.ts +8 -0
  97. package/modules/auth/services/auth.service.d.ts +17 -0
  98. package/modules/auth/services/index.d.ts +2 -0
  99. package/modules/index.d.ts +1 -0
  100. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +1 -0
  101. package/modules/layout/components/sidebar-v1/components/user/user.component.d.ts +5 -2
  102. package/modules/layout/configurations/layout.configuration.d.ts +3 -0
  103. package/modules/layout/services/storage/storage.service.d.ts +1 -0
  104. package/package.json +70 -54
  105. package/pipes/index.d.ts +1 -0
  106. package/pipes/src/empty.pipe.d.ts +7 -0
  107. package/sd-angular-core-19.0.0-beta.20.tgz +0 -0
  108. package/services/confirm/src/lib/confirm.service.d.ts +1 -0
  109. package/utilities/extensions/index.d.ts +1 -0
  110. package/utilities/extensions/src/color.extension.d.ts +20 -0
  111. package/utilities/models/index.d.ts +1 -0
  112. package/utilities/models/src/maybe-async.model.d.ts +1 -0
  113. package/utilities/models/src/nested-key-of.model.d.ts +5 -0
  114. package/utilities/models/src/pattern.model.d.ts +2 -2
  115. /package/components/document-builder/src/plugins/{comment.plugin.d.ts → comment/comment.plugin.d.ts} +0 -0
  116. /package/components/document-builder/src/plugins/{page-orientation.plugin.d.ts → page-orientation/page-orientation.plugin.d.ts} +0 -0
  117. /package/components/document-builder/src/plugins/{variable.plugin.d.ts → variable/variable.plugin.d.ts} +0 -0
@@ -26,6 +26,9 @@ export declare class SdRadio implements OnInit, AfterViewInit, OnDestroy {
26
26
  inlineError?: string;
27
27
  set _inlineError(val: string);
28
28
  set disabled(val: boolean | '' | undefined | null);
29
+ viewed: boolean;
30
+ set _viewed(val: boolean | '' | undefined | null);
31
+ hyperlink?: string | null;
29
32
  sdSuffixDef?: SdSuffixDefDirective;
30
33
  sdLabelDef?: SdLabelDefDirective;
31
34
  sdViewDef?: SdViewDefDirective;
@@ -36,11 +39,12 @@ export declare class SdRadio implements OnInit, AfterViewInit, OnDestroy {
36
39
  item?: any;
37
40
  }>;
38
41
  constructor(ref: ChangeDetectorRef);
42
+ get viewedText(): any;
39
43
  ngOnInit(): void;
40
44
  ngAfterViewInit(): void;
41
45
  ngOnDestroy(): void;
42
46
  customInlineErrorValidator(): ValidatorFn;
43
47
  reValidate: () => void;
44
48
  static ɵfac: i0.ɵɵFactoryDeclaration<SdRadio, never>;
45
- static ɵcmp: i0.ɵɵComponentDeclaration<SdRadio, "sd-radio", never, { "_autoId": { "alias": "autoId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "form": { "alias": "form"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "_display": { "alias": "display"; "required": false; }; "model": { "alias": "model"; "required": false; }; "pItems": { "alias": "items"; "required": false; }; "valueField": { "alias": "valueField"; "required": true; }; "displayField": { "alias": "displayField"; "required": true; }; "_required": { "alias": "required"; "required": false; }; "_inlineError": { "alias": "inlineError"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "modelChange": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["sdSuffixDef", "sdLabelDef", "sdViewDef"], never, true, never>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdRadio, "sd-radio", never, { "_autoId": { "alias": "autoId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "form": { "alias": "form"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "_display": { "alias": "display"; "required": false; }; "model": { "alias": "model"; "required": false; }; "pItems": { "alias": "items"; "required": false; }; "valueField": { "alias": "valueField"; "required": true; }; "displayField": { "alias": "displayField"; "required": true; }; "_required": { "alias": "required"; "required": false; }; "_inlineError": { "alias": "inlineError"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "hyperlink": { "alias": "hyperlink"; "required": false; }; }, { "modelChange": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["sdSuffixDef", "sdLabelDef", "sdViewDef"], never, true, never>;
46
50
  }
@@ -44,6 +44,10 @@ export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
44
44
  inlineError?: string;
45
45
  set _inlineError(val: string);
46
46
  set disabled(val: boolean | '' | undefined | null);
47
+ viewed: boolean;
48
+ set _viewed(val: boolean | '' | undefined | null);
49
+ viewedText?: Observable<string>;
50
+ hyperlink?: string | null;
47
51
  multiple: boolean;
48
52
  set _multiple(val: boolean | '' | undefined | null);
49
53
  limit: number;
@@ -73,5 +77,5 @@ export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
73
77
  onOptionChange: (tooltip: MatTooltip) => void;
74
78
  trackBy: (index: number, item: any) => any;
75
79
  static ɵfac: i0.ɵɵFactoryDeclaration<SdSelect, [null, { optional: true; }]>;
76
- static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect, "sd-select", never, { "_autoId": { "alias": "autoId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "_hideInlineError": { "alias": "hideInlineError"; "required": false; }; "size": { "alias": "size"; "required": false; }; "form": { "alias": "form"; "required": false; }; "_label": { "alias": "label"; "required": false; }; "_helperText": { "alias": "helperText"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "model": { "alias": "model"; "required": false; }; "items": { "alias": "items"; "required": false; }; "valueField": { "alias": "valueField"; "required": true; }; "displayField": { "alias": "displayField"; "required": true; }; "disabledField": { "alias": "disabledField"; "required": false; }; "cacheChecksum": { "alias": "cacheChecksum"; "required": false; }; "_required": { "alias": "required"; "required": false; }; "_validator": { "alias": "validator"; "required": false; }; "_inlineError": { "alias": "inlineError"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "_multiple": { "alias": "multiple"; "required": false; }; "limit": { "alias": "limit"; "required": false; }; }, { "modelChange": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["itemDef", "sdLabelDef", "sdViewDef"], never, true, never>;
80
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect, "sd-select", never, { "_autoId": { "alias": "autoId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "_hideInlineError": { "alias": "hideInlineError"; "required": false; }; "size": { "alias": "size"; "required": false; }; "form": { "alias": "form"; "required": false; }; "_label": { "alias": "label"; "required": false; }; "_helperText": { "alias": "helperText"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "model": { "alias": "model"; "required": false; }; "items": { "alias": "items"; "required": false; }; "valueField": { "alias": "valueField"; "required": true; }; "displayField": { "alias": "displayField"; "required": true; }; "disabledField": { "alias": "disabledField"; "required": false; }; "cacheChecksum": { "alias": "cacheChecksum"; "required": false; }; "_required": { "alias": "required"; "required": false; }; "_validator": { "alias": "validator"; "required": false; }; "_inlineError": { "alias": "inlineError"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "hyperlink": { "alias": "hyperlink"; "required": false; }; "_multiple": { "alias": "multiple"; "required": false; }; "limit": { "alias": "limit"; "required": false; }; }, { "modelChange": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["itemDef", "sdLabelDef", "sdViewDef"], never, true, never>;
77
81
  }
@@ -36,6 +36,8 @@ export declare class SdTextarea implements OnInit, AfterViewInit, OnDestroy {
36
36
  inlineError?: string;
37
37
  set _inlineError(val: string);
38
38
  set disabled(val: boolean | '' | undefined | null);
39
+ viewed: boolean;
40
+ set _viewed(val: boolean | '' | undefined | null);
39
41
  set _autoHeight(val: boolean | '');
40
42
  textarea: ElementRef;
41
43
  sdViewDef?: SdViewDefDirective;
@@ -54,5 +56,5 @@ export declare class SdTextarea implements OnInit, AfterViewInit, OnDestroy {
54
56
  focus: () => void;
55
57
  customInlineErrorValidator(): ValidatorFn;
56
58
  static ɵfac: i0.ɵɵFactoryDeclaration<SdTextarea, [null, { optional: true; }]>;
57
- static ɵcmp: i0.ɵɵComponentDeclaration<SdTextarea, "sd-textarea", never, { "_autoId": { "alias": "autoId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "size": { "alias": "size"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "form": { "alias": "form"; "required": false; }; "_label": { "alias": "label"; "required": false; }; "_helperText": { "alias": "helperText"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "model": { "alias": "model"; "required": false; }; "_hideInlineError": { "alias": "hideInlineError"; "required": false; }; "_required": { "alias": "required"; "required": false; }; "_maxlength": { "alias": "maxlength"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "validator": { "alias": "validator"; "required": false; }; "_inlineError": { "alias": "inlineError"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "_autoHeight": { "alias": "autoHeight"; "required": false; }; }, { "modelChange": "modelChange"; "sdChange": "sdChange"; }, ["sdViewDef", "sdLabelDef", "sdSuffixDef"], never, true, never>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdTextarea, "sd-textarea", never, { "_autoId": { "alias": "autoId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "size": { "alias": "size"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "form": { "alias": "form"; "required": false; }; "_label": { "alias": "label"; "required": false; }; "_helperText": { "alias": "helperText"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "model": { "alias": "model"; "required": false; }; "_hideInlineError": { "alias": "hideInlineError"; "required": false; }; "_required": { "alias": "required"; "required": false; }; "_maxlength": { "alias": "maxlength"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "validator": { "alias": "validator"; "required": false; }; "_inlineError": { "alias": "inlineError"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "_autoHeight": { "alias": "autoHeight"; "required": false; }; }, { "modelChange": "modelChange"; "sdChange": "sdChange"; }, ["sdViewDef", "sdLabelDef", "sdSuffixDef"], never, true, never>;
58
60
  }
@@ -0,0 +1,19 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { CanActivate } from '@angular/router';
3
+ import { SdMaybeAsync } from '@sd-angular/core/utilities';
4
+ import { SdAuthInfo } from '../services';
5
+ export interface ISdAuthConfiguration {
6
+ action?: IAuthConfigurationAction;
7
+ guard?: IAuthConfigurationGuard;
8
+ }
9
+ export declare const SD_AUTH_CONFIGURATION: InjectionToken<ISdAuthConfiguration>;
10
+ interface IAuthConfigurationAction {
11
+ signout: () => SdMaybeAsync<void>;
12
+ changePassword?: () => SdMaybeAsync<void>;
13
+ }
14
+ interface IAuthConfigurationGuard {
15
+ auth?: CanActivate['canActivate'];
16
+ portal?: CanActivate['canActivate'];
17
+ authInfo: () => SdMaybeAsync<SdAuthInfo>;
18
+ }
19
+ export {};
@@ -0,0 +1 @@
1
+ export * from './auth.configuration';
@@ -0,0 +1,11 @@
1
+ import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';
2
+ import { ISdAuthConfiguration } from '../configurations';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SdAuthGuard implements CanActivate {
5
+ private authConfiguration;
6
+ protected readonly router: Router;
7
+ constructor(authConfiguration: ISdAuthConfiguration, router: Router);
8
+ canActivate: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => import("@angular/router").MaybeAsync<import("@angular/router").GuardResult>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthGuard, [{ optional: true; }, null]>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdAuthGuard>;
11
+ }
@@ -0,0 +1,2 @@
1
+ export * from './auth.guard';
2
+ export * from './portal.guard';
@@ -0,0 +1,11 @@
1
+ import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';
2
+ import { ISdAuthConfiguration } from '../configurations';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SdPortalGuard implements CanActivate {
5
+ private authConfiguration;
6
+ protected readonly router: Router;
7
+ constructor(authConfiguration: ISdAuthConfiguration, router: Router);
8
+ canActivate: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => import("@angular/router").MaybeAsync<import("@angular/router").GuardResult>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdPortalGuard, [{ optional: true; }, null]>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdPortalGuard>;
11
+ }
@@ -0,0 +1,3 @@
1
+ export * from './configurations';
2
+ export * from './services';
3
+ export * from './guards';
@@ -0,0 +1,8 @@
1
+ export interface SdAuthInfo<T = any> {
2
+ id?: string;
3
+ username?: string;
4
+ firstName?: string;
5
+ lastName?: string;
6
+ email?: string;
7
+ data?: T;
8
+ }
@@ -0,0 +1,17 @@
1
+ import { Signal } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { ISdAuthConfiguration } from '../configurations';
4
+ import { SdAuthInfo } from './auth.model';
5
+ import * as i0 from "@angular/core";
6
+ export declare class SdAuthService {
7
+ #private;
8
+ private authConfiguration;
9
+ getAuthInfo?: Signal<SdAuthInfo | undefined>;
10
+ signout$?: Observable<void>;
11
+ changePassword$?: Observable<void>;
12
+ constructor(authConfiguration: ISdAuthConfiguration);
13
+ signout: () => void;
14
+ changePassword: () => void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthService, [{ optional: true; }]>;
16
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdAuthService>;
17
+ }
@@ -0,0 +1,2 @@
1
+ export * from './auth.model';
2
+ export * from './auth.service';
@@ -1,3 +1,4 @@
1
1
  export * from '@sd-angular/core/modules/oidc';
2
2
  export * from '@sd-angular/core/modules/permission';
3
+ export * from '@sd-angular/core/modules/auth';
3
4
  export * from '@sd-angular/core/modules/layout';
@@ -29,6 +29,7 @@ export declare class LayoutSidebarComponent implements OnDestroy, OnInit {
29
29
  dataSource: MatTreeNestedDataSource<SdLayoutMenu>;
30
30
  idMenuGroupActive: string | undefined;
31
31
  menusByGroup: SdLayoutMenu[];
32
+ totalMenuInMenusByGroup: number;
32
33
  treeControl: NestedTreeControl<SdLayoutMenu, SdLayoutMenu>;
33
34
  constructor(router: Router, layoutConfiguration: ISdLayoutConfiguration, layoutStorageService: SdLayoutStorageService, menuFocusPipe: MenuFocusPipe);
34
35
  ngOnInit(): Promise<void>;
@@ -3,7 +3,8 @@ import { SdLayoutStorageService } from '../../../../services';
3
3
  import { ISdLayoutConfiguration } from '../../../../configurations';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class LayoutUserComponent {
6
- private layoutConfig;
6
+ #private;
7
+ private layoutConfiguration;
7
8
  private layoutStorageService;
8
9
  isMobileOrTablet: boolean;
9
10
  isMenuLock: boolean;
@@ -12,11 +13,13 @@ export declare class LayoutUserComponent {
12
13
  menuOpened: EventEmitter<boolean>;
13
14
  toggleMenuLock: EventEmitter<Event>;
14
15
  email: string;
16
+ avatar: string;
15
17
  username: string;
16
18
  fullName: string;
17
19
  singoutLayoutConfig: () => void | Promise<void>;
18
20
  changePasswordLayoutConfig?: () => void | Promise<void>;
19
- constructor(layoutConfig: ISdLayoutConfiguration, layoutStorageService: SdLayoutStorageService);
21
+ constructor(layoutConfiguration: ISdLayoutConfiguration, layoutStorageService: SdLayoutStorageService);
22
+ ngOnInit(): Promise<void>;
20
23
  onMenuOpened: () => void;
21
24
  onMenuClosed: () => void;
22
25
  keepOpenWhenClickInsideMenu: (event: Event) => void;
@@ -12,5 +12,8 @@ export interface ISidebarConfigurationV1 {
12
12
  brandLightColor?: string;
13
13
  logoUrl?: string;
14
14
  defaultTitle?: string;
15
+ defaultInfoUser?: {
16
+ avatar?: string;
17
+ };
15
18
  }
16
19
  export declare const SD_LAYOUT_CONFIGURATION: InjectionToken<ISdLayoutConfiguration>;
@@ -3,6 +3,7 @@ import * as i0 from "@angular/core";
3
3
  export declare class SdLayoutStorageService {
4
4
  private sdStorageService;
5
5
  email: SdStorage<string>;
6
+ avatar: SdStorage<string>;
6
7
  username: SdStorage<string>;
7
8
  fullName: SdStorage<string>;
8
9
  isShowSidebar: SdStorage<boolean>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-angular/core",
3
- "version": "19.0.0-beta.2",
3
+ "version": "19.0.0-beta.20",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
6
6
  "@angular/core": "^19.0.0 || ^20.0.0 || ^21.0.0",
@@ -27,14 +27,14 @@
27
27
  "types": "./index.d.ts",
28
28
  "default": "./fesm2022/sd-angular-core.mjs"
29
29
  },
30
- "./components": {
31
- "types": "./components/index.d.ts",
32
- "default": "./fesm2022/sd-angular-core-components.mjs"
33
- },
34
30
  "./configurations": {
35
31
  "types": "./configurations/index.d.ts",
36
32
  "default": "./fesm2022/sd-angular-core-configurations.mjs"
37
33
  },
34
+ "./components": {
35
+ "types": "./components/index.d.ts",
36
+ "default": "./fesm2022/sd-angular-core-components.mjs"
37
+ },
38
38
  "./directives": {
39
39
  "types": "./directives/index.d.ts",
40
40
  "default": "./fesm2022/sd-angular-core-directives.mjs"
@@ -43,14 +43,14 @@
43
43
  "types": "./forms/index.d.ts",
44
44
  "default": "./fesm2022/sd-angular-core-forms.mjs"
45
45
  },
46
- "./handlers": {
47
- "types": "./handlers/index.d.ts",
48
- "default": "./fesm2022/sd-angular-core-handlers.mjs"
49
- },
50
46
  "./guards": {
51
47
  "types": "./guards/index.d.ts",
52
48
  "default": "./fesm2022/sd-angular-core-guards.mjs"
53
49
  },
50
+ "./handlers": {
51
+ "types": "./handlers/index.d.ts",
52
+ "default": "./fesm2022/sd-angular-core-handlers.mjs"
53
+ },
54
54
  "./interceptors": {
55
55
  "types": "./interceptors/index.d.ts",
56
56
  "default": "./fesm2022/sd-angular-core-interceptors.mjs"
@@ -87,6 +87,10 @@
87
87
  "types": "./components/base/index.d.ts",
88
88
  "default": "./fesm2022/sd-angular-core-components-base.mjs"
89
89
  },
90
+ "./components/avatar": {
91
+ "types": "./components/avatar/index.d.ts",
92
+ "default": "./fesm2022/sd-angular-core-components-avatar.mjs"
93
+ },
90
94
  "./components/button": {
91
95
  "types": "./components/button/index.d.ts",
92
96
  "default": "./fesm2022/sd-angular-core-components-button.mjs"
@@ -95,38 +99,42 @@
95
99
  "types": "./components/document-builder/index.d.ts",
96
100
  "default": "./fesm2022/sd-angular-core-components-document-builder.mjs"
97
101
  },
102
+ "./components/import-excel": {
103
+ "types": "./components/import-excel/index.d.ts",
104
+ "default": "./fesm2022/sd-angular-core-components-import-excel.mjs"
105
+ },
98
106
  "./components/history": {
99
107
  "types": "./components/history/index.d.ts",
100
108
  "default": "./fesm2022/sd-angular-core-components-history.mjs"
101
109
  },
102
- "./components/import-excel": {
103
- "types": "./components/import-excel/index.d.ts",
104
- "default": "./fesm2022/sd-angular-core-components-import-excel.mjs"
110
+ "./components/mini-editor": {
111
+ "types": "./components/mini-editor/index.d.ts",
112
+ "default": "./fesm2022/sd-angular-core-components-mini-editor.mjs"
105
113
  },
106
114
  "./components/modal": {
107
115
  "types": "./components/modal/index.d.ts",
108
116
  "default": "./fesm2022/sd-angular-core-components-modal.mjs"
109
117
  },
110
- "./components/query-builder": {
111
- "types": "./components/query-builder/index.d.ts",
112
- "default": "./fesm2022/sd-angular-core-components-query-builder.mjs"
113
- },
114
118
  "./components/preview": {
115
119
  "types": "./components/preview/index.d.ts",
116
120
  "default": "./fesm2022/sd-angular-core-components-preview.mjs"
117
121
  },
122
+ "./components/section": {
123
+ "types": "./components/section/index.d.ts",
124
+ "default": "./fesm2022/sd-angular-core-components-section.mjs"
125
+ },
118
126
  "./components/quick-action": {
119
127
  "types": "./components/quick-action/index.d.ts",
120
128
  "default": "./fesm2022/sd-angular-core-components-quick-action.mjs"
121
129
  },
130
+ "./components/query-builder": {
131
+ "types": "./components/query-builder/index.d.ts",
132
+ "default": "./fesm2022/sd-angular-core-components-query-builder.mjs"
133
+ },
122
134
  "./components/side-drawer": {
123
135
  "types": "./components/side-drawer/index.d.ts",
124
136
  "default": "./fesm2022/sd-angular-core-components-side-drawer.mjs"
125
137
  },
126
- "./components/section": {
127
- "types": "./components/section/index.d.ts",
128
- "default": "./fesm2022/sd-angular-core-components-section.mjs"
129
- },
130
138
  "./components/tab-router": {
131
139
  "types": "./components/tab-router/index.d.ts",
132
140
  "default": "./fesm2022/sd-angular-core-components-tab-router.mjs"
@@ -143,26 +151,30 @@
143
151
  "types": "./components/workflow/index.d.ts",
144
152
  "default": "./fesm2022/sd-angular-core-components-workflow.mjs"
145
153
  },
154
+ "./forms/autocomplete": {
155
+ "types": "./forms/autocomplete/index.d.ts",
156
+ "default": "./fesm2022/sd-angular-core-forms-autocomplete.mjs"
157
+ },
146
158
  "./forms/checkbox": {
147
159
  "types": "./forms/checkbox/index.d.ts",
148
160
  "default": "./fesm2022/sd-angular-core-forms-checkbox.mjs"
149
161
  },
150
- "./forms/chip-calendar": {
151
- "types": "./forms/chip-calendar/index.d.ts",
152
- "default": "./fesm2022/sd-angular-core-forms-chip-calendar.mjs"
162
+ "./forms/chip": {
163
+ "types": "./forms/chip/index.d.ts",
164
+ "default": "./fesm2022/sd-angular-core-forms-chip.mjs"
153
165
  },
154
166
  "./forms/date": {
155
167
  "types": "./forms/date/index.d.ts",
156
168
  "default": "./fesm2022/sd-angular-core-forms-date.mjs"
157
169
  },
170
+ "./forms/chip-calendar": {
171
+ "types": "./forms/chip-calendar/index.d.ts",
172
+ "default": "./fesm2022/sd-angular-core-forms-chip-calendar.mjs"
173
+ },
158
174
  "./forms/date-range": {
159
175
  "types": "./forms/date-range/index.d.ts",
160
176
  "default": "./fesm2022/sd-angular-core-forms-date-range.mjs"
161
177
  },
162
- "./forms/chip": {
163
- "types": "./forms/chip/index.d.ts",
164
- "default": "./fesm2022/sd-angular-core-forms-chip.mjs"
165
- },
166
178
  "./forms/datetime": {
167
179
  "types": "./forms/datetime/index.d.ts",
168
180
  "default": "./fesm2022/sd-angular-core-forms-datetime.mjs"
@@ -171,30 +183,30 @@
171
183
  "types": "./forms/directives/index.d.ts",
172
184
  "default": "./fesm2022/sd-angular-core-forms-directives.mjs"
173
185
  },
174
- "./forms/input": {
175
- "types": "./forms/input/index.d.ts",
176
- "default": "./fesm2022/sd-angular-core-forms-input.mjs"
177
- },
178
186
  "./forms/input-number": {
179
187
  "types": "./forms/input-number/index.d.ts",
180
188
  "default": "./fesm2022/sd-angular-core-forms-input-number.mjs"
181
189
  },
182
- "./forms/models": {
183
- "types": "./forms/models/index.d.ts",
184
- "default": "./fesm2022/sd-angular-core-forms-models.mjs"
190
+ "./forms/input": {
191
+ "types": "./forms/input/index.d.ts",
192
+ "default": "./fesm2022/sd-angular-core-forms-input.mjs"
185
193
  },
186
194
  "./forms/label": {
187
195
  "types": "./forms/label/index.d.ts",
188
196
  "default": "./fesm2022/sd-angular-core-forms-label.mjs"
189
197
  },
190
- "./forms/select": {
191
- "types": "./forms/select/index.d.ts",
192
- "default": "./fesm2022/sd-angular-core-forms-select.mjs"
198
+ "./forms/models": {
199
+ "types": "./forms/models/index.d.ts",
200
+ "default": "./fesm2022/sd-angular-core-forms-models.mjs"
193
201
  },
194
202
  "./forms/radio": {
195
203
  "types": "./forms/radio/index.d.ts",
196
204
  "default": "./fesm2022/sd-angular-core-forms-radio.mjs"
197
205
  },
206
+ "./forms/select": {
207
+ "types": "./forms/select/index.d.ts",
208
+ "default": "./fesm2022/sd-angular-core-forms-select.mjs"
209
+ },
198
210
  "./forms/switch": {
199
211
  "types": "./forms/switch/index.d.ts",
200
212
  "default": "./fesm2022/sd-angular-core-forms-switch.mjs"
@@ -207,6 +219,14 @@
207
219
  "types": "./guards/permission/index.d.ts",
208
220
  "default": "./fesm2022/sd-angular-core-guards-permission.mjs"
209
221
  },
222
+ "./modules/auth": {
223
+ "types": "./modules/auth/index.d.ts",
224
+ "default": "./fesm2022/sd-angular-core-modules-auth.mjs"
225
+ },
226
+ "./modules/oidc": {
227
+ "types": "./modules/oidc/index.d.ts",
228
+ "default": "./fesm2022/sd-angular-core-modules-oidc.mjs"
229
+ },
210
230
  "./modules/layout": {
211
231
  "types": "./modules/layout/index.d.ts",
212
232
  "default": "./fesm2022/sd-angular-core-modules-layout.mjs"
@@ -215,10 +235,6 @@
215
235
  "types": "./modules/permission/index.d.ts",
216
236
  "default": "./fesm2022/sd-angular-core-modules-permission.mjs"
217
237
  },
218
- "./modules/oidc": {
219
- "types": "./modules/oidc/index.d.ts",
220
- "default": "./fesm2022/sd-angular-core-modules-oidc.mjs"
221
- },
222
238
  "./services/cache": {
223
239
  "types": "./services/cache/index.d.ts",
224
240
  "default": "./fesm2022/sd-angular-core-services-cache.mjs"
@@ -227,14 +243,18 @@
227
243
  "types": "./services/api/index.d.ts",
228
244
  "default": "./fesm2022/sd-angular-core-services-api.mjs"
229
245
  },
230
- "./services/firebase": {
231
- "types": "./services/firebase/index.d.ts",
232
- "default": "./fesm2022/sd-angular-core-services-firebase.mjs"
246
+ "./services/confirm": {
247
+ "types": "./services/confirm/index.d.ts",
248
+ "default": "./fesm2022/sd-angular-core-services-confirm.mjs"
233
249
  },
234
250
  "./services/excel": {
235
251
  "types": "./services/excel/index.d.ts",
236
252
  "default": "./fesm2022/sd-angular-core-services-excel.mjs"
237
253
  },
254
+ "./services/firebase": {
255
+ "types": "./services/firebase/index.d.ts",
256
+ "default": "./fesm2022/sd-angular-core-services-firebase.mjs"
257
+ },
238
258
  "./services/license": {
239
259
  "types": "./services/license/index.d.ts",
240
260
  "default": "./fesm2022/sd-angular-core-services-license.mjs"
@@ -243,9 +263,9 @@
243
263
  "types": "./services/loading/index.d.ts",
244
264
  "default": "./fesm2022/sd-angular-core-services-loading.mjs"
245
265
  },
246
- "./services/confirm": {
247
- "types": "./services/confirm/index.d.ts",
248
- "default": "./fesm2022/sd-angular-core-services-confirm.mjs"
266
+ "./services/storage": {
267
+ "types": "./services/storage/index.d.ts",
268
+ "default": "./fesm2022/sd-angular-core-services-storage.mjs"
249
269
  },
250
270
  "./services/notify": {
251
271
  "types": "./services/notify/index.d.ts",
@@ -255,17 +275,13 @@
255
275
  "types": "./utilities/models/index.d.ts",
256
276
  "default": "./fesm2022/sd-angular-core-utilities-models.mjs"
257
277
  },
258
- "./services/storage": {
259
- "types": "./services/storage/index.d.ts",
260
- "default": "./fesm2022/sd-angular-core-services-storage.mjs"
261
- },
262
278
  "./utilities/extensions": {
263
279
  "types": "./utilities/extensions/index.d.ts",
264
280
  "default": "./fesm2022/sd-angular-core-utilities-extensions.mjs"
265
281
  },
266
- "./forms/autocomplete": {
267
- "types": "./forms/autocomplete/index.d.ts",
268
- "default": "./fesm2022/sd-angular-core-forms-autocomplete.mjs"
282
+ "./components/view": {
283
+ "types": "./components/view/index.d.ts",
284
+ "default": "./fesm2022/sd-angular-core-components-view.mjs"
269
285
  }
270
286
  }
271
287
  }
package/pipes/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './src/format-number.pipe';
2
2
  export * from './src/safe-html.pipe';
3
3
  export * from './src/time-different.pipe';
4
+ export * from './src/empty.pipe';
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SdEmptyPipe implements PipeTransform {
4
+ transform(value: any): string;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdEmptyPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<SdEmptyPipe, "sdEmpty", true>;
7
+ }
@@ -10,6 +10,7 @@ export declare class SdConfirmService {
10
10
  noTitle?: string;
11
11
  yesButtonColor?: SdColor;
12
12
  noButtonColor?: SdColor;
13
+ width?: string;
13
14
  }) => Promise<unknown>;
14
15
  withInput: (message?: string, option?: {
15
16
  title?: string;
@@ -3,3 +3,4 @@ export * from './src/string.extension';
3
3
  export * from './src/number.extension';
4
4
  export * from './src/date.extension';
5
5
  export * from './src/utility.extension';
6
+ export * from './src/color.extension';
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Color Utilities Extension
3
+ * Các tiện ích xử lý màu
4
+ */
5
+ /**
6
+ * Chuyển đổi màu HSL sang định dạng hex
7
+ * @param h - Hue (0-360)
8
+ * @param s - Saturation (0-100)
9
+ * @param l - Lightness (0-100)
10
+ * @returns Mã màu hex
11
+ */
12
+ export declare function hslToHex(h: number, s: number, l: number): string;
13
+ /**
14
+ * Chuyển đổi màu RGB sang hex
15
+ * @param r - Red (0-255)
16
+ * @param g - Green (0-255)
17
+ * @param b - Blue (0-255)
18
+ * @returns Mã màu hex
19
+ */
20
+ export declare function rgbToHex(r: number, g: number, b: number): string;
@@ -3,6 +3,7 @@ export * from './src/size.model';
3
3
  export * from './src/pattern.model';
4
4
  export * from './src/empty.model';
5
5
  export * from './src/maybe-async.model';
6
+ export * from './src/nested-key-of.model';
6
7
  export * from './src/operator.model';
7
8
  export * from './src/filter.model';
8
9
  export * from './src/order.model';
@@ -1,3 +1,4 @@
1
1
  import { Observable } from 'rxjs';
2
2
  export type SdMaybeAsync<T> = T | Promise<T> | Observable<T>;
3
3
  export declare const SdResolveMaybeAsync: <T>(value: SdMaybeAsync<T>) => Promise<T>;
4
+ export declare const SdNormalizeAsync: <T>(value: SdMaybeAsync<T>) => Observable<T>;
@@ -0,0 +1,5 @@
1
+ type Primitive = string | number | boolean | null | undefined | Date | Function;
2
+ export type SdNestedKeyOf<ObjectType, Depth extends number[] = []> = Depth['length'] extends 5 ? never : ObjectType extends object ? {
3
+ [Key in keyof ObjectType & string]: ObjectType[Key] extends Primitive ? Key : ObjectType[Key] extends Array<any> ? Key : ObjectType[Key] extends object ? Key | `${Key}.${SdNestedKeyOf<ObjectType[Key], [...Depth, 1]>}` : Key;
4
+ }[keyof ObjectType & string] : string;
5
+ export {};
@@ -1,8 +1,8 @@
1
1
  export type SdPatternType = 'EMAIL' | 'PHONE' | 'PHONE_VN';
2
- export interface SdPattern {
2
+ export interface SdPatternCommon {
3
3
  type: SdPatternType;
4
4
  name: string;
5
5
  regex: string;
6
6
  errorMessage: string;
7
7
  }
8
- export declare const SdPatterns: SdPattern[];
8
+ export declare const SdPatternCommons: SdPatternCommon[];