@sd-angular/core 19.0.0-beta.95 → 19.0.0-beta.97

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 (107) hide show
  1. package/README.md +8 -9
  2. package/components/badge/src/badge.component.d.ts +3 -4
  3. package/components/button/src/button.component.d.ts +2 -2
  4. package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +2 -2
  5. package/components/document-builder/src/document-builder.model.d.ts +6 -2
  6. package/components/editor/src/editor.component.d.ts +8 -0
  7. package/components/editor/src/models/image-upload.plugin.model.d.ts +33 -0
  8. package/components/editor/src/plugins/image-upload/utils/style.utils.d.ts +1 -0
  9. package/components/index.d.ts +0 -2
  10. package/components/modal/src/modal.component.d.ts +1 -2
  11. package/components/section/src/section.component.d.ts +1 -2
  12. package/components/table/index.d.ts +1 -0
  13. package/components/table/src/components/column-filter/column-filter.component.d.ts +3 -3
  14. package/components/table/src/models/index.d.ts +1 -0
  15. package/components/table/src/models/table-item.model.d.ts +10 -0
  16. package/components/table/src/models/table-option-style.model.d.ts +6 -1
  17. package/components/table/src/models/table-option-tree.model.d.ts +12 -0
  18. package/components/table/src/models/table-option.model.d.ts +6 -0
  19. package/components/table/src/pipes/index.d.ts +1 -0
  20. package/components/table/src/pipes/sd-tree.pipe.d.ts +9 -0
  21. package/components/table/src/services/tree/tree.util.d.ts +14 -0
  22. package/components/table/src/table.component.d.ts +3 -0
  23. package/fesm2022/sd-angular-core-components-document-builder.mjs +9 -4
  24. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  25. package/fesm2022/sd-angular-core-components-editor.mjs +222 -97
  26. package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
  27. package/fesm2022/sd-angular-core-components-form-generic.mjs +4 -4
  28. package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -1
  29. package/fesm2022/sd-angular-core-components-tab-router.mjs +80 -33
  30. package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
  31. package/fesm2022/sd-angular-core-components-table.mjs +325 -41
  32. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  33. package/fesm2022/sd-angular-core-components.mjs +0 -2
  34. package/fesm2022/sd-angular-core-components.mjs.map +1 -1
  35. package/fesm2022/sd-angular-core-forms-input.mjs +20 -5
  36. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  37. package/fesm2022/sd-angular-core-i18n.mjs +35 -0
  38. package/fesm2022/sd-angular-core-i18n.mjs.map +1 -1
  39. package/fesm2022/sd-angular-core-models.mjs +1 -4
  40. package/fesm2022/sd-angular-core-models.mjs.map +1 -1
  41. package/fesm2022/sd-angular-core-modules-layout.mjs +172 -37
  42. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  43. package/fesm2022/sd-angular-core-services-notify.mjs +21 -21
  44. package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
  45. package/fesm2022/sd-angular-core-utilities-extensions.mjs +29 -819
  46. package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
  47. package/fesm2022/sd-angular-core-utilities-models.mjs +36 -136
  48. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  49. package/forms/autocomplete/src/autocomplete.component.d.ts +1 -2
  50. package/forms/chip/src/chip.component.d.ts +1 -2
  51. package/forms/chip-calendar/src/chip-calendar.component.d.ts +1 -2
  52. package/forms/date/src/date.component.d.ts +1 -2
  53. package/forms/date-range/src/date-range.component.d.ts +1 -2
  54. package/forms/datetime/src/datetime.component.d.ts +1 -2
  55. package/forms/input/src/input.component.d.ts +1 -2
  56. package/forms/input-number/src/input-number.component.d.ts +1 -2
  57. package/forms/select/src/select.component.d.ts +5 -5
  58. package/forms/textarea/src/textarea.component.d.ts +1 -2
  59. package/i18n/src/en.d.ts +6 -0
  60. package/models/src/language.model.d.ts +2 -4
  61. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +8 -1
  62. package/modules/layout/configurations/layout.configuration.d.ts +8 -0
  63. package/modules/layout/services/storage/storage.service.d.ts +2 -0
  64. package/package.json +68 -79
  65. package/sd-angular-core-19.0.0-beta.97.tgz +0 -0
  66. package/services/notify/index.d.ts +1 -1
  67. package/services/notify/src/components/toast/toast.component.d.ts +3 -3
  68. package/services/notify/src/components/toast-container.component.d.ts +3 -4
  69. package/services/notify/src/notify.model.d.ts +1 -1
  70. package/services/notify/src/notify.service.d.ts +5 -5
  71. package/utilities/extensions/src/array.extension.d.ts +1 -7
  72. package/utilities/extensions/src/color.extension.d.ts +5 -20
  73. package/utilities/extensions/src/date.extension.d.ts +1 -18
  74. package/utilities/extensions/src/number.extension.d.ts +1 -10
  75. package/utilities/extensions/src/string.extension.d.ts +30 -4
  76. package/utilities/extensions/src/utility.extension.d.ts +6 -0
  77. package/utilities/models/src/color.model.d.ts +4 -1
  78. package/utilities/models/src/empty.model.d.ts +3 -0
  79. package/utilities/models/src/filter.model.d.ts +12 -24
  80. package/utilities/models/src/maybe-async.model.d.ts +10 -4
  81. package/utilities/models/src/nested-key-of.model.d.ts +4 -5
  82. package/utilities/models/src/operator.model.d.ts +9 -4
  83. package/utilities/models/src/order.model.d.ts +4 -5
  84. package/utilities/models/src/paging.model.d.ts +8 -16
  85. package/utilities/models/src/pattern.model.d.ts +13 -0
  86. package/utilities/models/src/size.model.d.ts +4 -1
  87. package/components/anchor-v2/index.d.ts +0 -1
  88. package/components/anchor-v2/src/components/anchor-item-v2/anchor-item-v2.component.d.ts +0 -12
  89. package/components/anchor-v2/src/components/anchor-v2/anchor-v2.component.d.ts +0 -19
  90. package/components/anchor-v2/src/components/anchor-vertical-v2/anchor-vertical-list-v2.component.d.ts +0 -16
  91. package/components/anchor-v2/src/components/index.d.ts +0 -2
  92. package/components/anchor-v2/src/index.d.ts +0 -2
  93. package/components/anchor-v2/src/models/index.d.ts +0 -1
  94. package/components/anchor-v2/src/models/sd-anchor-v2.model.d.ts +0 -7
  95. package/components/workflow/index.d.ts +0 -2
  96. package/components/workflow/src/configurations/index.d.ts +0 -1
  97. package/components/workflow/src/configurations/workflow.configuration.d.ts +0 -10
  98. package/fesm2022/sd-angular-core-components-anchor-v2.mjs +0 -151
  99. package/fesm2022/sd-angular-core-components-anchor-v2.mjs.map +0 -1
  100. package/fesm2022/sd-angular-core-components-workflow.mjs +0 -17
  101. package/fesm2022/sd-angular-core-components-workflow.mjs.map +0 -1
  102. package/fesm2022/sd-angular-core-services-firebase.mjs +0 -38
  103. package/fesm2022/sd-angular-core-services-firebase.mjs.map +0 -1
  104. package/sd-angular-core-19.0.0-beta.95.tgz +0 -0
  105. package/services/firebase/index.d.ts +0 -2
  106. package/services/firebase/src/firebase.model.d.ts +0 -8
  107. package/services/firebase/src/firebase.service.d.ts +0 -14
@@ -3,7 +3,6 @@ import { FormGroup, ValidatorFn } from '@angular/forms';
3
3
  import { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';
4
4
  import { SdViewDefDirective } from '@sd-angular/core/forms/directives';
5
5
  import { SdFormControl } from '@sd-angular/core/forms/models';
6
- import { SdSize } from '@sd-angular/core/utilities';
7
6
  import * as i0 from "@angular/core";
8
7
  export declare class SdDatetime implements OnDestroy, OnInit {
9
8
  #private;
@@ -20,7 +19,7 @@ export declare class SdDatetime implements OnDestroy, OnInit {
20
19
  autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
21
20
  autoId: import("@angular/core").Signal<string | undefined>;
22
21
  name: import("@angular/core").InputSignal<string>;
23
- size: import("@angular/core").InputSignal<SdSize>;
22
+ size: import("@angular/core").InputSignal<import("@sdcorejs/utils/models").Size>;
24
23
  form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
25
24
  label: import("@angular/core").InputSignal<string | undefined>;
26
25
  helperText: import("@angular/core").InputSignal<string | undefined>;
@@ -3,7 +3,6 @@ import { FormGroup, ValidatorFn } from '@angular/forms';
3
3
  import { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';
4
4
  import { SdSuffixDefDirective, SdViewDefDirective } from '@sd-angular/core/forms/directives';
5
5
  import { SdCustomValidator, SdFormControl } from '@sd-angular/core/forms/models';
6
- import { SdSize } from '@sd-angular/core/utilities/models';
7
6
  import * as i0 from "@angular/core";
8
7
  export declare class SdInput implements OnDestroy, OnInit, AfterViewInit {
9
8
  #private;
@@ -19,7 +18,7 @@ export declare class SdInput implements OnDestroy, OnInit, AfterViewInit {
19
18
  appearanceInput: import("@angular/core").InputSignal<MatFormFieldAppearance | undefined>;
20
19
  appearance: import("@angular/core").Signal<MatFormFieldAppearance>;
21
20
  floatLabel: import("@angular/core").InputSignal<FloatLabelType>;
22
- size: import("@angular/core").InputSignal<SdSize>;
21
+ size: import("@angular/core").InputSignal<import("@sdcorejs/utils/models").Size>;
23
22
  form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
24
23
  label: import("@angular/core").InputSignal<string | undefined>;
25
24
  helperText: import("@angular/core").InputSignal<string | undefined>;
@@ -4,7 +4,6 @@ import { ErrorStateMatcher } from '@angular/material/core';
4
4
  import { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';
5
5
  import { SdSuffixDefDirective, SdViewDefDirective } from '@sd-angular/core/forms/directives';
6
6
  import { SdCustomValidator, SdFormControl } from '@sd-angular/core/forms/models';
7
- import { SdSize } from '@sd-angular/core/utilities/models';
8
7
  import * as i0 from "@angular/core";
9
8
  declare class SdInputNumberErrotStateMatcher implements ErrorStateMatcher {
10
9
  private formControl;
@@ -26,7 +25,7 @@ export declare class SdInputNumber implements OnDestroy, OnInit, AfterViewInit {
26
25
  autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
27
26
  autoId: import("@angular/core").Signal<string | undefined>;
28
27
  name: import("@angular/core").InputSignal<string>;
29
- size: import("@angular/core").InputSignal<SdSize>;
28
+ size: import("@angular/core").InputSignal<import("@sdcorejs/utils/models").Size>;
30
29
  form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
31
30
  label: import("@angular/core").InputSignal<string | undefined>;
32
31
  helperText: import("@angular/core").InputSignal<string | undefined>;
@@ -6,7 +6,7 @@ import { MatInput } from '@angular/material/input';
6
6
  import { MatSelect, MatSelectChange } from '@angular/material/select';
7
7
  import { SdItemDefDefDirective, SdViewDefDirective } from '@sd-angular/core/forms/directives';
8
8
  import { SdCustomValidator, SdFormControl, SdSearch, SdSelectionData } from '@sd-angular/core/forms/models';
9
- import { SdSize } from '@sd-angular/core/utilities/models';
9
+ import { SdNestedKeyOf } from '@sd-angular/core/utilities/models';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class SdSelect<T extends object | string | number = Record<string, unknown>> implements OnInit {
12
12
  #private;
@@ -20,14 +20,14 @@ export declare class SdSelect<T extends object | string | number = Record<string
20
20
  autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
21
21
  autoId: Signal<string | undefined>;
22
22
  name: import("@angular/core").InputSignal<string>;
23
- size: import("@angular/core").InputSignal<SdSize>;
23
+ size: import("@angular/core").InputSignal<import("@sdcorejs/utils/models").Size>;
24
24
  form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
25
25
  label: import("@angular/core").InputSignal<string | undefined>;
26
26
  helperText: import("@angular/core").InputSignal<string | undefined>;
27
27
  placeholder: import("@angular/core").InputSignal<string | undefined>;
28
- valueField: import("@angular/core").InputSignal<T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_1 in keyof T_1 & string]: T_1[Key_1] extends string | number | boolean | Function | Date | null | undefined ? Key_1 : T_1[Key_1] extends any[] ? Key_1 : T_1[Key_1] extends object ? Key_1 | `${Key_1}.${T_1[Key_1] extends infer T_2 ? T_2 extends T_1[Key_1] ? T_2 extends object ? { [Key_2 in keyof T_2 & string]: T_2[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_2[Key_2] extends any[] ? Key_2 : T_2[Key_2] extends object ? Key_2 | `${Key_2}.${T_2[Key_2] extends infer T_3 ? T_3 extends T_2[Key_2] ? T_3 extends object ? { [Key_3 in keyof T_3 & string]: T_3[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_3[Key_3] extends any[] ? Key_3 : T_3[Key_3] extends object ? Key_3 : Key_3; }[keyof T_3 & string] : string : never : never}` : Key_2; }[keyof T_2 & string] : string : never : never}` : Key_1; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string>;
29
- displayField: import("@angular/core").InputSignal<T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_1 in keyof T_1 & string]: T_1[Key_1] extends string | number | boolean | Function | Date | null | undefined ? Key_1 : T_1[Key_1] extends any[] ? Key_1 : T_1[Key_1] extends object ? Key_1 | `${Key_1}.${T_1[Key_1] extends infer T_2 ? T_2 extends T_1[Key_1] ? T_2 extends object ? { [Key_2 in keyof T_2 & string]: T_2[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_2[Key_2] extends any[] ? Key_2 : T_2[Key_2] extends object ? Key_2 | `${Key_2}.${T_2[Key_2] extends infer T_3 ? T_3 extends T_2[Key_2] ? T_3 extends object ? { [Key_3 in keyof T_3 & string]: T_3[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_3[Key_3] extends any[] ? Key_3 : T_3[Key_3] extends object ? Key_3 : Key_3; }[keyof T_3 & string] : string : never : never}` : Key_2; }[keyof T_2 & string] : string : never : never}` : Key_1; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string>;
30
- disabledField: import("@angular/core").InputSignal<"" | (T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_1 in keyof T_1 & string]: T_1[Key_1] extends string | number | boolean | Function | Date | null | undefined ? Key_1 : T_1[Key_1] extends any[] ? Key_1 : T_1[Key_1] extends object ? Key_1 | `${Key_1}.${T_1[Key_1] extends infer T_2 ? T_2 extends T_1[Key_1] ? T_2 extends object ? { [Key_2 in keyof T_2 & string]: T_2[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_2[Key_2] extends any[] ? Key_2 : T_2[Key_2] extends object ? Key_2 | `${Key_2}.${T_2[Key_2] extends infer T_3 ? T_3 extends T_2[Key_2] ? T_3 extends object ? { [Key_3 in keyof T_3 & string]: T_3[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_3[Key_3] extends any[] ? Key_3 : T_3[Key_3] extends object ? Key_3 : Key_3; }[keyof T_3 & string] : string : never : never}` : Key_2; }[keyof T_2 & string] : string : never : never}` : Key_1; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string)>;
28
+ valueField: import("@angular/core").InputSignal<SdNestedKeyOf<T>>;
29
+ displayField: import("@angular/core").InputSignal<SdNestedKeyOf<T>>;
30
+ disabledField: import("@angular/core").InputSignal<"" | SdNestedKeyOf<T>>;
31
31
  cacheChecksum: import("@angular/core").InputSignal<any>;
32
32
  limit: import("@angular/core").InputSignal<number>;
33
33
  hyperlink: import("@angular/core").InputSignal<string | null | undefined>;
@@ -3,7 +3,6 @@ import { FormGroup, ValidatorFn } from '@angular/forms';
3
3
  import { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';
4
4
  import { SdLabelDefDirective, SdSuffixDefDirective, SdViewDefDirective } from '@sd-angular/core/forms/directives';
5
5
  import { SdCustomValidator, SdFormControl } from '@sd-angular/core/forms/models';
6
- import { SdSize } from '@sd-angular/core/utilities';
7
6
  import * as i0 from "@angular/core";
8
7
  export declare class SdTextarea implements OnInit, AfterViewInit, OnDestroy {
9
8
  #private;
@@ -15,7 +14,7 @@ export declare class SdTextarea implements OnInit, AfterViewInit, OnDestroy {
15
14
  autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
16
15
  autoId: import("@angular/core").Signal<string | undefined>;
17
16
  name: import("@angular/core").InputSignal<string>;
18
- size: import("@angular/core").InputSignal<SdSize>;
17
+ size: import("@angular/core").InputSignal<import("@sdcorejs/utils/models").Size>;
19
18
  form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
20
19
  label: import("@angular/core").InputSignalWithTransform<string | undefined, string | null | undefined>;
21
20
  helperText: import("@angular/core").InputSignalWithTransform<string | undefined, string | null | undefined>;
package/i18n/src/en.d.ts CHANGED
@@ -42,6 +42,12 @@ export declare const EN_MESSAGES: {
42
42
  readonly 'core.docx.invalid-format': "Invalid format. Please select a template in DOC or DOCX format";
43
43
  readonly 'core.docx.size-exceeded': "Template file size exceeds the supported limit. Please try again";
44
44
  readonly 'core.docx.convert-error': "An error occurred while converting the DOCX file";
45
+ readonly 'core.notify.type.success': "Success";
46
+ readonly 'core.notify.type.info': "Information";
47
+ readonly 'core.notify.type.warning': "Warning";
48
+ readonly 'core.notify.type.error': "Error";
49
+ readonly 'core.notify.show-more': "Show more ({count})";
50
+ readonly 'core.notify.show-less': "Show less";
45
51
  readonly 'core.confirm.title': "Confirm";
46
52
  readonly 'core.confirm.yes': "OK";
47
53
  readonly 'core.confirm.no': "Cancel";
@@ -1,4 +1,2 @@
1
- /** Built-in languages supported by Core UI i18n. */
2
- export type Language = 'vi' | 'en' | 'ja' | 'ko' | 'zh';
3
- /** Ordered list of built-in languages. */
4
- export declare const SUPPORTED_LANGUAGES: readonly Language[];
1
+ export type { Language } from '@sdcorejs/utils/models';
2
+ export { SUPPORTED_LANGUAGES } from '@sdcorejs/utils/constants';
@@ -2,7 +2,7 @@ import { NestedTreeControl } from '@angular/cdk/tree';
2
2
  import { MatTreeNestedDataSource } from '@angular/material/tree';
3
3
  import { Params } from '@angular/router';
4
4
  import { SdLayoutUserInfo, SidebarConfigurationV1 } from '../../../../configurations';
5
- import { SdLayoutMenu } from '../../../../services';
5
+ import { SdLayoutChildrenMenu, SdLayoutMenu } from '../../../../services';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class SidebarComponent {
8
8
  #private;
@@ -22,12 +22,19 @@ export declare class SidebarComponent {
22
22
  titleMenuGroup: import("@angular/core").WritableSignal<string | undefined>;
23
23
  idMenuGroupActive: import("@angular/core").WritableSignal<string | undefined>;
24
24
  menusByGroup: import("@angular/core").WritableSignal<SdLayoutMenu[]>;
25
+ pinnedMenuGroup: import("@angular/core").WritableSignal<SdLayoutChildrenMenu>;
25
26
  totalMenuInMenusByGroup: import("@angular/core").Signal<number>;
27
+ pinnedNodeKeys: import("@angular/core").Signal<Set<string>>;
28
+ isPinnedMenuGroupActive: import("@angular/core").Signal<boolean>;
26
29
  dataSource: MatTreeNestedDataSource<SdLayoutMenu>;
27
30
  treeControl: NestedTreeControl<SdLayoutMenu, SdLayoutMenu>;
28
31
  constructor();
29
32
  hasChild: (_: number, node: SdLayoutMenu) => boolean;
30
33
  onToggleMenuNode: (menu: SdLayoutMenu) => void;
34
+ isPinnedNode: (node: SdLayoutMenu) => boolean;
35
+ isHoveredNode: (node: SdLayoutMenu) => boolean;
36
+ expandPinnedGroup: () => void;
37
+ onTogglePin: (event: MouseEvent, node: SdLayoutMenu) => void;
31
38
  toggleMenuLock(event: Event): void;
32
39
  openHomePage: () => void;
33
40
  onUserMenuClosed: () => void;
@@ -55,5 +55,13 @@ export interface SidebarConfigurationV1 {
55
55
  * @default "Back Office"
56
56
  */
57
57
  defaultTitle?: string;
58
+ /**
59
+ * Cấu hình tính năng ghim menu.
60
+ * - `enabled`: bật/tắt tính năng ghim.
61
+ * Hệ thống mặc định là false
62
+ */
63
+ pin?: {
64
+ enabled?: boolean;
65
+ };
58
66
  }
59
67
  export declare const SD_LAYOUT_CONFIGURATION: InjectionToken<ISdLayoutConfiguration>;
@@ -1,10 +1,12 @@
1
1
  import { SdStorage, SdStorageService } from '@sd-angular/core/services';
2
+ import { SdLayoutChildrenMenu } from '../menu/menu.model';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class SdLayoutStorageService {
4
5
  private sdStorageService;
5
6
  isShowSidebar: SdStorage<boolean>;
6
7
  menuLockStatus: SdStorage<boolean>;
7
8
  lastActiveMenuGroupId: SdStorage<string>;
9
+ pinnedMenuGroup: SdStorage<SdLayoutChildrenMenu>;
8
10
  constructor(sdStorageService: SdStorageService);
9
11
  static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutStorageService, never>;
10
12
  static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutStorageService>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-angular/core",
3
- "version": "19.0.0-beta.95",
3
+ "version": "19.0.0-beta.97",
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",
@@ -8,6 +8,7 @@
8
8
  "@angular/material-date-fns-adapter": "^19.0.0 || ^20.0.0 || ^21.0.0"
9
9
  },
10
10
  "dependencies": {
11
+ "@sdcorejs/utils": "^1.0.3",
11
12
  "@ckeditor/ckeditor5-angular": "11.1.2",
12
13
  "@omer-go/docx-parser-converter-ts": "^1.0.0",
13
14
  "@bjorn3/browser_wasi_shim": "^0.4.2",
@@ -83,14 +84,6 @@
83
84
  "types": "./components/anchor/index.d.ts",
84
85
  "default": "./fesm2022/sd-angular-core-components-anchor.mjs"
85
86
  },
86
- "./components/anchor-v2": {
87
- "types": "./components/anchor-v2/index.d.ts",
88
- "default": "./fesm2022/sd-angular-core-components-anchor-v2.mjs"
89
- },
90
- "./components/badge": {
91
- "types": "./components/badge/index.d.ts",
92
- "default": "./fesm2022/sd-angular-core-components-badge.mjs"
93
- },
94
87
  "./components/avatar": {
95
88
  "types": "./components/avatar/index.d.ts",
96
89
  "default": "./fesm2022/sd-angular-core-components-avatar.mjs"
@@ -103,38 +96,38 @@
103
96
  "types": "./components/button/index.d.ts",
104
97
  "default": "./fesm2022/sd-angular-core-components-button.mjs"
105
98
  },
99
+ "./components/badge": {
100
+ "types": "./components/badge/index.d.ts",
101
+ "default": "./fesm2022/sd-angular-core-components-badge.mjs"
102
+ },
106
103
  "./components/chart": {
107
104
  "types": "./components/chart/index.d.ts",
108
105
  "default": "./fesm2022/sd-angular-core-components-chart.mjs"
109
106
  },
110
- "./components/document-builder": {
111
- "types": "./components/document-builder/index.d.ts",
112
- "default": "./fesm2022/sd-angular-core-components-document-builder.mjs"
113
- },
114
107
  "./components/code-editor": {
115
108
  "types": "./components/code-editor/index.d.ts",
116
109
  "default": "./fesm2022/sd-angular-core-components-code-editor.mjs"
117
110
  },
111
+ "./components/document-builder": {
112
+ "types": "./components/document-builder/index.d.ts",
113
+ "default": "./fesm2022/sd-angular-core-components-document-builder.mjs"
114
+ },
118
115
  "./components/editor": {
119
116
  "types": "./components/editor/index.d.ts",
120
117
  "default": "./fesm2022/sd-angular-core-components-editor.mjs"
121
118
  },
122
- "./components/history": {
123
- "types": "./components/history/index.d.ts",
124
- "default": "./fesm2022/sd-angular-core-components-history.mjs"
125
- },
126
119
  "./components/form-generic": {
127
120
  "types": "./components/form-generic/index.d.ts",
128
121
  "default": "./fesm2022/sd-angular-core-components-form-generic.mjs"
129
122
  },
123
+ "./components/history": {
124
+ "types": "./components/history/index.d.ts",
125
+ "default": "./fesm2022/sd-angular-core-components-history.mjs"
126
+ },
130
127
  "./components/import-excel": {
131
128
  "types": "./components/import-excel/index.d.ts",
132
129
  "default": "./fesm2022/sd-angular-core-components-import-excel.mjs"
133
130
  },
134
- "./components/modal": {
135
- "types": "./components/modal/index.d.ts",
136
- "default": "./fesm2022/sd-angular-core-components-modal.mjs"
137
- },
138
131
  "./components/mini-editor": {
139
132
  "types": "./components/mini-editor/index.d.ts",
140
133
  "default": "./fesm2022/sd-angular-core-components-mini-editor.mjs"
@@ -143,6 +136,14 @@
143
136
  "types": "./components/preview/index.d.ts",
144
137
  "default": "./fesm2022/sd-angular-core-components-preview.mjs"
145
138
  },
139
+ "./components/modal": {
140
+ "types": "./components/modal/index.d.ts",
141
+ "default": "./fesm2022/sd-angular-core-components-modal.mjs"
142
+ },
143
+ "./components/query-builder": {
144
+ "types": "./components/query-builder/index.d.ts",
145
+ "default": "./fesm2022/sd-angular-core-components-query-builder.mjs"
146
+ },
146
147
  "./components/quick-action": {
147
148
  "types": "./components/quick-action/index.d.ts",
148
149
  "default": "./fesm2022/sd-angular-core-components-quick-action.mjs"
@@ -151,42 +152,30 @@
151
152
  "types": "./components/section/index.d.ts",
152
153
  "default": "./fesm2022/sd-angular-core-components-section.mjs"
153
154
  },
154
- "./components/query-builder": {
155
- "types": "./components/query-builder/index.d.ts",
156
- "default": "./fesm2022/sd-angular-core-components-query-builder.mjs"
157
- },
158
- "./components/splitter": {
159
- "types": "./components/splitter/index.d.ts",
160
- "default": "./fesm2022/sd-angular-core-components-splitter.mjs"
155
+ "./components/side-drawer": {
156
+ "types": "./components/side-drawer/index.d.ts",
157
+ "default": "./fesm2022/sd-angular-core-components-side-drawer.mjs"
161
158
  },
162
- "./components/table": {
163
- "types": "./components/table/index.d.ts",
164
- "default": "./fesm2022/sd-angular-core-components-table.mjs"
159
+ "./components/tab-router": {
160
+ "types": "./components/tab-router/index.d.ts",
161
+ "default": "./fesm2022/sd-angular-core-components-tab-router.mjs"
165
162
  },
166
163
  "./components/upload-file": {
167
164
  "types": "./components/upload-file/index.d.ts",
168
165
  "default": "./fesm2022/sd-angular-core-components-upload-file.mjs"
169
166
  },
170
- "./components/tab-router": {
171
- "types": "./components/tab-router/index.d.ts",
172
- "default": "./fesm2022/sd-angular-core-components-tab-router.mjs"
173
- },
174
167
  "./components/view": {
175
168
  "types": "./components/view/index.d.ts",
176
169
  "default": "./fesm2022/sd-angular-core-components-view.mjs"
177
170
  },
178
- "./components/workflow": {
179
- "types": "./components/workflow/index.d.ts",
180
- "default": "./fesm2022/sd-angular-core-components-workflow.mjs"
171
+ "./components/table": {
172
+ "types": "./components/table/index.d.ts",
173
+ "default": "./fesm2022/sd-angular-core-components-table.mjs"
181
174
  },
182
175
  "./forms/autocomplete": {
183
176
  "types": "./forms/autocomplete/index.d.ts",
184
177
  "default": "./fesm2022/sd-angular-core-forms-autocomplete.mjs"
185
178
  },
186
- "./forms/checkbox": {
187
- "types": "./forms/checkbox/index.d.ts",
188
- "default": "./fesm2022/sd-angular-core-forms-checkbox.mjs"
189
- },
190
179
  "./forms/chip": {
191
180
  "types": "./forms/chip/index.d.ts",
192
181
  "default": "./fesm2022/sd-angular-core-forms-chip.mjs"
@@ -195,14 +184,18 @@
195
184
  "types": "./forms/chip-calendar/index.d.ts",
196
185
  "default": "./fesm2022/sd-angular-core-forms-chip-calendar.mjs"
197
186
  },
198
- "./forms/date-range": {
199
- "types": "./forms/date-range/index.d.ts",
200
- "default": "./fesm2022/sd-angular-core-forms-date-range.mjs"
187
+ "./forms/checkbox": {
188
+ "types": "./forms/checkbox/index.d.ts",
189
+ "default": "./fesm2022/sd-angular-core-forms-checkbox.mjs"
201
190
  },
202
191
  "./forms/date": {
203
192
  "types": "./forms/date/index.d.ts",
204
193
  "default": "./fesm2022/sd-angular-core-forms-date.mjs"
205
194
  },
195
+ "./forms/date-range": {
196
+ "types": "./forms/date-range/index.d.ts",
197
+ "default": "./fesm2022/sd-angular-core-forms-date-range.mjs"
198
+ },
206
199
  "./forms/datetime": {
207
200
  "types": "./forms/datetime/index.d.ts",
208
201
  "default": "./fesm2022/sd-angular-core-forms-datetime.mjs"
@@ -219,14 +212,14 @@
219
212
  "types": "./forms/input-number/index.d.ts",
220
213
  "default": "./fesm2022/sd-angular-core-forms-input-number.mjs"
221
214
  },
222
- "./forms/label": {
223
- "types": "./forms/label/index.d.ts",
224
- "default": "./fesm2022/sd-angular-core-forms-label.mjs"
225
- },
226
215
  "./forms/models": {
227
216
  "types": "./forms/models/index.d.ts",
228
217
  "default": "./fesm2022/sd-angular-core-forms-models.mjs"
229
218
  },
219
+ "./forms/label": {
220
+ "types": "./forms/label/index.d.ts",
221
+ "default": "./fesm2022/sd-angular-core-forms-label.mjs"
222
+ },
230
223
  "./forms/radio": {
231
224
  "types": "./forms/radio/index.d.ts",
232
225
  "default": "./fesm2022/sd-angular-core-forms-radio.mjs"
@@ -235,14 +228,14 @@
235
228
  "types": "./forms/select/index.d.ts",
236
229
  "default": "./fesm2022/sd-angular-core-forms-select.mjs"
237
230
  },
238
- "./forms/textarea": {
239
- "types": "./forms/textarea/index.d.ts",
240
- "default": "./fesm2022/sd-angular-core-forms-textarea.mjs"
241
- },
242
231
  "./forms/switch": {
243
232
  "types": "./forms/switch/index.d.ts",
244
233
  "default": "./fesm2022/sd-angular-core-forms-switch.mjs"
245
234
  },
235
+ "./forms/textarea": {
236
+ "types": "./forms/textarea/index.d.ts",
237
+ "default": "./fesm2022/sd-angular-core-forms-textarea.mjs"
238
+ },
246
239
  "./modules/auth": {
247
240
  "types": "./modules/auth/index.d.ts",
248
241
  "default": "./fesm2022/sd-angular-core-modules-auth.mjs"
@@ -251,17 +244,21 @@
251
244
  "types": "./modules/authom/index.d.ts",
252
245
  "default": "./fesm2022/sd-angular-core-modules-authom.mjs"
253
246
  },
254
- "./modules/permission": {
255
- "types": "./modules/permission/index.d.ts",
256
- "default": "./fesm2022/sd-angular-core-modules-permission.mjs"
247
+ "./modules/keycloak": {
248
+ "types": "./modules/keycloak/index.d.ts",
249
+ "default": "./fesm2022/sd-angular-core-modules-keycloak.mjs"
257
250
  },
258
251
  "./modules/layout": {
259
252
  "types": "./modules/layout/index.d.ts",
260
253
  "default": "./fesm2022/sd-angular-core-modules-layout.mjs"
261
254
  },
262
- "./modules/keycloak": {
263
- "types": "./modules/keycloak/index.d.ts",
264
- "default": "./fesm2022/sd-angular-core-modules-keycloak.mjs"
255
+ "./modules/permission": {
256
+ "types": "./modules/permission/index.d.ts",
257
+ "default": "./fesm2022/sd-angular-core-modules-permission.mjs"
258
+ },
259
+ "./services/api": {
260
+ "types": "./services/api/index.d.ts",
261
+ "default": "./fesm2022/sd-angular-core-services-api.mjs"
265
262
  },
266
263
  "./services/cache": {
267
264
  "types": "./services/cache/index.d.ts",
@@ -271,49 +268,41 @@
271
268
  "types": "./services/confirm/index.d.ts",
272
269
  "default": "./fesm2022/sd-angular-core-services-confirm.mjs"
273
270
  },
274
- "./services/api": {
275
- "types": "./services/api/index.d.ts",
276
- "default": "./fesm2022/sd-angular-core-services-api.mjs"
277
- },
278
271
  "./services/docx": {
279
272
  "types": "./services/docx/index.d.ts",
280
273
  "default": "./fesm2022/sd-angular-core-services-docx.mjs"
281
274
  },
282
- "./services/excel": {
283
- "types": "./services/excel/index.d.ts",
284
- "default": "./fesm2022/sd-angular-core-services-excel.mjs"
285
- },
286
- "./services/firebase": {
287
- "types": "./services/firebase/index.d.ts",
288
- "default": "./fesm2022/sd-angular-core-services-firebase.mjs"
289
- },
290
275
  "./services/license": {
291
276
  "types": "./services/license/index.d.ts",
292
277
  "default": "./fesm2022/sd-angular-core-services-license.mjs"
293
278
  },
279
+ "./services/excel": {
280
+ "types": "./services/excel/index.d.ts",
281
+ "default": "./fesm2022/sd-angular-core-services-excel.mjs"
282
+ },
294
283
  "./services/loading": {
295
284
  "types": "./services/loading/index.d.ts",
296
285
  "default": "./fesm2022/sd-angular-core-services-loading.mjs"
297
286
  },
287
+ "./components/splitter": {
288
+ "types": "./components/splitter/index.d.ts",
289
+ "default": "./fesm2022/sd-angular-core-components-splitter.mjs"
290
+ },
298
291
  "./services/notify": {
299
292
  "types": "./services/notify/index.d.ts",
300
293
  "default": "./fesm2022/sd-angular-core-services-notify.mjs"
301
294
  },
302
- "./utilities/extensions": {
303
- "types": "./utilities/extensions/index.d.ts",
304
- "default": "./fesm2022/sd-angular-core-utilities-extensions.mjs"
305
- },
306
295
  "./services/storage": {
307
296
  "types": "./services/storage/index.d.ts",
308
297
  "default": "./fesm2022/sd-angular-core-services-storage.mjs"
309
298
  },
299
+ "./utilities/extensions": {
300
+ "types": "./utilities/extensions/index.d.ts",
301
+ "default": "./fesm2022/sd-angular-core-utilities-extensions.mjs"
302
+ },
310
303
  "./utilities/models": {
311
304
  "types": "./utilities/models/index.d.ts",
312
305
  "default": "./fesm2022/sd-angular-core-utilities-models.mjs"
313
- },
314
- "./components/side-drawer": {
315
- "types": "./components/side-drawer/index.d.ts",
316
- "default": "./fesm2022/sd-angular-core-components-side-drawer.mjs"
317
306
  }
318
307
  }
319
308
  }
@@ -1,2 +1,2 @@
1
- export { type SdNotifyOption } from './src/notify.model';
1
+ export { type NotifyOption as SdNotifyOption } from './src/notify.model';
2
2
  export * from './src/notify.service';
@@ -2,7 +2,7 @@ import { OnInit, OnDestroy } from '@angular/core';
2
2
  import { ToastData } from '../../notify.model';
3
3
  import { SdNotifyService } from '../../notify.service';
4
4
  import * as i0 from "@angular/core";
5
- export declare class SdToastComponent implements OnInit, OnDestroy {
5
+ export declare class ToastComponent implements OnInit, OnDestroy {
6
6
  private notifyService;
7
7
  data: ToastData;
8
8
  isExpanded: import("@angular/core").WritableSignal<boolean>;
@@ -23,6 +23,6 @@ export declare class SdToastComponent implements OnInit, OnDestroy {
23
23
  get displayMessages(): string[];
24
24
  get restCount(): number;
25
25
  get hasMore(): boolean;
26
- static ɵfac: i0.ɵɵFactoryDeclaration<SdToastComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<SdToastComponent, "sd-toast", never, { "data": { "alias": "data"; "required": true; }; }, {}, never, never, true, never>;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToastComponent, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToastComponent, "toast", never, { "data": { "alias": "data"; "required": true; }; }, {}, never, never, true, never>;
28
28
  }
@@ -1,9 +1,8 @@
1
1
  import { WritableSignal } from '@angular/core';
2
2
  import { ToastData } from '../notify.model';
3
3
  import * as i0 from "@angular/core";
4
- export declare class SdToastContainerComponent {
4
+ export declare class ToastContainerComponent {
5
5
  toasts: WritableSignal<ToastData[]>;
6
- constructor();
7
- static ɵfac: i0.ɵɵFactoryDeclaration<SdToastContainerComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<SdToastContainerComponent, "sd-toast-container", never, {}, {}, never, never, true, never>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToastContainerComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToastContainerComponent, "toast-container", never, {}, {}, never, never, true, never>;
9
8
  }
@@ -8,7 +8,7 @@ export interface ToastData {
8
8
  actionLabel?: string;
9
9
  onAction?: () => void;
10
10
  }
11
- export interface SdNotifyOption {
11
+ export interface NotifyOption {
12
12
  duration?: number;
13
13
  title?: string;
14
14
  actionLabel?: string;
@@ -1,5 +1,5 @@
1
1
  import { ApplicationRef, EnvironmentInjector } from '@angular/core';
2
- import { SdNotifyOption, ToastData, ToastType } from './notify.model';
2
+ import { NotifyOption, ToastData, ToastType } from './notify.model';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SdNotifyService {
5
5
  #private;
@@ -8,10 +8,10 @@ export declare class SdNotifyService {
8
8
  private document;
9
9
  readonly toasts: import("@angular/core").WritableSignal<ToastData[]>;
10
10
  constructor(appRef: ApplicationRef, injector: EnvironmentInjector, document: Document);
11
- success(message: string, option?: SdNotifyOption): void;
12
- info(message: string, option?: SdNotifyOption): void;
13
- warning(message: string | string[], option?: SdNotifyOption): void;
14
- error(message: string | string[], option?: SdNotifyOption): void;
11
+ success(message: string, option?: NotifyOption): void;
12
+ info(message: string, option?: NotifyOption): void;
13
+ warning(message: string | string[], option?: NotifyOption): void;
14
+ error(message: string | string[], option?: NotifyOption): void;
15
15
  remove(id: string): void;
16
16
  clearAll(): void;
17
17
  clearByType(type: ToastType): void;
@@ -1,7 +1 @@
1
- export declare const ArrayUtilities: {
2
- search: <T = any>(items: T[], searchText: any, fields?: (string | undefined) | (string | undefined)[], children?: string) => T[];
3
- union: <T = unknown>(key: string, ...args: (T[] | undefined | null)[]) => T[];
4
- toObject: <T>(key: string, items: T[] | undefined | null) => Record<string, T>;
5
- distinct: <T = any>(items: T[] | undefined | null) => T[];
6
- paging: <T = any>(items: T[] | undefined | null, pageSize: number, page?: number) => T[];
7
- };
1
+ export { ArrayUtilities } from '@sdcorejs/utils/fns';
@@ -1,20 +1,5 @@
1
- /**
2
- * Color Utilities Extension
3
- * Các tiện ích xử 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;
1
+ export { ColorUtilities } from '@sdcorejs/utils/fns';
2
+ /** @deprecated Use {@link ColorUtilities.hslToHex} from `@sdcorejs/utils/fns` instead */
3
+ export declare const hslToHex: (h: number, s: number, l: number) => string;
4
+ /** @deprecated Use {@link ColorUtilities.rgbToHex} from `@sdcorejs/utils/fns` instead */
5
+ export declare const rgbToHex: (r: number, g: number, b: number) => string;
@@ -1,18 +1 @@
1
- declare const DateUtilities: {
2
- equal: (date1: any, date2: any) => boolean;
3
- dayDiff: (date1: any, date2: any) => number | null;
4
- monthDiff: (date1: any, date2: any) => number | null;
5
- yearDiff: (date1: any, date2: any) => number | null;
6
- age: (date1: any, date2: any) => number | null;
7
- parseFrom: (value: any, format: string) => Date | null;
8
- isDate: (value: any) => boolean;
9
- toFormat: (value: any, format: string) => string;
10
- addMiliseconds: (value: any, miliseconds: number) => Date | null;
11
- addHours: (value: any, hours: number) => Date | null;
12
- addDays: (value: any, days: number) => Date | null;
13
- addMonths: (value: any, months: number) => Date | null;
14
- begin: (value: any) => Date | null;
15
- end: (value: any) => Date | null;
16
- timeDifference: (previous: any, current?: any) => string;
17
- };
18
- export { DateUtilities };
1
+ export { DateUtilities } from '@sdcorejs/utils/fns';
@@ -1,10 +1 @@
1
- declare const NumberUtilities: {
2
- toVNCurrency: (value: any) => string | null;
3
- toVN: (value: any) => string | null;
4
- toISO: (value: any) => string | null;
5
- isPositiveInteger: (value: any) => boolean;
6
- isPositiveNumber: (value: any) => boolean;
7
- isNumber: (value: any) => boolean;
8
- round: (value: any, digits?: number) => number | null;
9
- };
10
- export { NumberUtilities };
1
+ export { NumberUtilities } from '@sdcorejs/utils/fns';