@sdcorejs/angular 21.0.9 → 21.0.10

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 (148) hide show
  1. package/README.md +270 -140
  2. package/assets/scss/core/utilities/_grid.scss +25 -19
  3. package/fesm2022/sdcorejs-angular-components-anchor.mjs +15 -18
  4. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  5. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
  6. package/fesm2022/sdcorejs-angular-components-avatar.mjs.map +1 -1
  7. package/fesm2022/sdcorejs-angular-components-badge.mjs +0 -1
  8. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  9. package/fesm2022/sdcorejs-angular-components-button.mjs +6 -7
  10. package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
  11. package/fesm2022/sdcorejs-angular-components-chart.mjs.map +1 -1
  12. package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
  13. package/fesm2022/sdcorejs-angular-components-code-editor.mjs +1 -1
  14. package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
  15. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +17 -26
  16. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
  17. package/fesm2022/sdcorejs-angular-components-editor.mjs +7 -2
  18. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  19. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +712 -427
  20. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  21. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +35 -18
  22. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  23. package/fesm2022/sdcorejs-angular-components-inform.mjs +0 -1
  24. package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
  25. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
  26. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
  27. package/fesm2022/sdcorejs-angular-components-modal.mjs +21 -14
  28. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  29. package/fesm2022/sdcorejs-angular-components-operator.mjs +1 -1
  30. package/fesm2022/sdcorejs-angular-components-operator.mjs.map +1 -1
  31. package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
  32. package/fesm2022/sdcorejs-angular-components-preview.mjs +33 -29
  33. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  34. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +15 -28
  35. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  36. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +2 -3
  37. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  38. package/fesm2022/sdcorejs-angular-components-quick-action.mjs.map +1 -1
  39. package/fesm2022/sdcorejs-angular-components-section.mjs +0 -1
  40. package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
  41. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +3 -3
  42. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  43. package/fesm2022/sdcorejs-angular-components-splitter.mjs +4 -4
  44. package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
  45. package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
  46. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +31 -31
  47. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  48. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  49. package/fesm2022/sdcorejs-angular-components-table.mjs +66 -84
  50. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  51. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  52. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +6 -6
  53. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  54. package/fesm2022/sdcorejs-angular-components-view.mjs +3 -9
  55. package/fesm2022/sdcorejs-angular-components-view.mjs.map +1 -1
  56. package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
  57. package/fesm2022/sdcorejs-angular-directives.mjs +2 -7
  58. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  59. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +0 -3
  60. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  61. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  62. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +2 -2
  63. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  64. package/fesm2022/sdcorejs-angular-forms-chip.mjs +2 -2
  65. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  66. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +1 -3
  67. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  68. package/fesm2022/sdcorejs-angular-forms-date.mjs +2 -4
  69. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  70. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +2 -6
  71. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  72. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +4 -4
  73. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  74. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +1 -1
  75. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  76. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  77. package/fesm2022/sdcorejs-angular-forms-label.mjs +0 -1
  78. package/fesm2022/sdcorejs-angular-forms-label.mjs.map +1 -1
  79. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  80. package/fesm2022/sdcorejs-angular-forms-radio.mjs +12 -2
  81. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  82. package/fesm2022/sdcorejs-angular-forms-select.mjs +45 -14
  83. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  84. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  85. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +2 -2
  86. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  87. package/fesm2022/sdcorejs-angular-handlers.mjs +3 -6
  88. package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
  89. package/fesm2022/sdcorejs-angular-i18n.mjs +11 -7
  90. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  91. package/fesm2022/sdcorejs-angular-interceptors.mjs +0 -2
  92. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  93. package/fesm2022/sdcorejs-angular-modules-auth.mjs +14 -38
  94. package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
  95. package/fesm2022/sdcorejs-angular-modules-authom.mjs +14 -14
  96. package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +1 -1
  97. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +22 -11
  98. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
  99. package/fesm2022/sdcorejs-angular-modules-layout.mjs +30 -27
  100. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  101. package/fesm2022/sdcorejs-angular-modules-permission.mjs +5 -12
  102. package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
  103. package/fesm2022/sdcorejs-angular-pipes.mjs +71 -17
  104. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  105. package/fesm2022/sdcorejs-angular-services-api.mjs +0 -2
  106. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  107. package/fesm2022/sdcorejs-angular-services-cache.mjs +5 -11
  108. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  109. package/fesm2022/sdcorejs-angular-services-confirm.mjs +16 -21
  110. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  111. package/fesm2022/sdcorejs-angular-services-docx.mjs +2 -8
  112. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
  113. package/fesm2022/sdcorejs-angular-services-excel.mjs +2 -2
  114. package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
  115. package/fesm2022/sdcorejs-angular-services-license.mjs +5 -12
  116. package/fesm2022/sdcorejs-angular-services-license.mjs.map +1 -1
  117. package/fesm2022/sdcorejs-angular-services-notify.mjs +70 -87
  118. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  119. package/fesm2022/sdcorejs-angular-services-storage.mjs +6 -15
  120. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  121. package/fesm2022/sdcorejs-angular-utilities-data-state.mjs.map +1 -1
  122. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +47 -5
  123. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
  124. package/fesm2022/sdcorejs-angular-utilities-models.mjs +18 -3
  125. package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
  126. package/fesm2022/sdcorejs-angular.mjs.map +1 -1
  127. package/package.json +2 -2
  128. package/types/sdcorejs-angular-components-document-builder.d.ts +2 -2
  129. package/types/sdcorejs-angular-components-form-generic.d.ts +45 -23
  130. package/types/sdcorejs-angular-components-import-excel.d.ts +2 -2
  131. package/types/sdcorejs-angular-components-mini-editor.d.ts +4 -4
  132. package/types/sdcorejs-angular-components-modal.d.ts +1 -1
  133. package/types/sdcorejs-angular-components-query-builder.d.ts +4 -4
  134. package/types/sdcorejs-angular-components-tab-router.d.ts +3 -3
  135. package/types/sdcorejs-angular-components-table.d.ts +3 -2
  136. package/types/sdcorejs-angular-components-view.d.ts +1 -1
  137. package/types/sdcorejs-angular-forms-chip-calendar.d.ts +2 -2
  138. package/types/sdcorejs-angular-forms-chip.d.ts +2 -2
  139. package/types/sdcorejs-angular-forms-input-color.d.ts +2 -1
  140. package/types/sdcorejs-angular-forms-select.d.ts +10 -2
  141. package/types/sdcorejs-angular-modules-auth.d.ts +7 -9
  142. package/types/sdcorejs-angular-modules-permission.d.ts +5 -6
  143. package/types/sdcorejs-angular-pipes.d.ts +22 -4
  144. package/types/sdcorejs-angular-services-confirm.d.ts +3 -3
  145. package/types/sdcorejs-angular-services-license.d.ts +2 -3
  146. package/types/sdcorejs-angular-services-notify.d.ts +4 -5
  147. package/types/sdcorejs-angular-services-storage.d.ts +2 -3
  148. package/types/sdcorejs-angular-utilities-extensions.d.ts +9 -1
@@ -150,7 +150,7 @@ interface QbDateModeOption {
150
150
  icon: string;
151
151
  }
152
152
  /** Stable option list for the date-mode select (module ref — never reallocated). */
153
- declare const QB_DATE_MODES: ReadonlyArray<QbDateModeOption>;
153
+ declare const QB_DATE_MODES: readonly QbDateModeOption[];
154
154
  /** One value-source option for field-to-field comparison UI. */
155
155
  interface QbValueSourceOption {
156
156
  value: QbValueSource;
@@ -159,12 +159,12 @@ interface QbValueSourceOption {
159
159
  icon: string;
160
160
  }
161
161
  /** Stable option list for choosing between a literal value and another field. */
162
- declare const QB_VALUE_SOURCE_OPTIONS: ReadonlyArray<QbValueSourceOption>;
162
+ declare const QB_VALUE_SOURCE_OPTIONS: readonly QbValueSourceOption[];
163
163
  /** Stable combined direction×unit option list (token `'unit:direction'`). */
164
- declare const QB_RELATIVE_UNIT_OPTIONS: ReadonlyArray<{
164
+ declare const QB_RELATIVE_UNIT_OPTIONS: readonly {
165
165
  value: string;
166
166
  display: string;
167
- }>;
167
+ }[];
168
168
  /** Shared empty option array — stable ref for fallbacks (avoids per-call allocation). */
169
169
  declare const QB_EMPTY_OPTIONS: SdQueryBuilderFieldOption[];
170
170
 
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Type, ElementRef, ChangeDetectorRef, OnDestroy } from '@angular/core';
2
+ import { InjectionToken, Type, ElementRef, ChangeDetectorRef, OnDestroy } from '@angular/core';
3
3
  import { Color } from '@sdcorejs/utils/models';
4
4
  import { Subject, BehaviorSubject } from 'rxjs';
5
5
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
@@ -22,6 +22,7 @@ interface SdTab {
22
22
  tabInfoChanges: Subject<SdTabInfo>;
23
23
  beforeClose?: () => boolean | Promise<boolean>;
24
24
  }
25
+ declare const SD_TAB: InjectionToken<SdTab>;
25
26
 
26
27
  declare class SdTabRouterNavComponent {
27
28
  tabRouterNav: i0.Signal<ElementRef<any> | undefined>;
@@ -87,7 +88,6 @@ declare class SdTabRouterService {
87
88
  currentTabChanges: BehaviorSubject<SdTab | undefined>;
88
89
  newTabs: BehaviorSubject<SdTab | undefined>;
89
90
  updateTabs: BehaviorSubject<SdTab | undefined>;
90
- constructor();
91
91
  addBuilder: (builder: SdTabComponentBuilder) => void;
92
92
  get currentTab(): SdTab | undefined;
93
93
  get currentKey(): string | null;
@@ -100,5 +100,5 @@ declare class SdTabRouterService {
100
100
  static ɵprov: i0.ɵɵInjectableDeclaration<SdTabRouterService>;
101
101
  }
102
102
 
103
- export { SdTabComponent, SdTabRouterOutletComponent, SdTabRouterService };
103
+ export { SD_TAB, SdTabComponent, SdTabRouterOutletComponent, SdTabRouterService };
104
104
  export type { SdTab, SdTabComponentArgs, SdTabComponentBuilder, SdTabInfo };
@@ -60,6 +60,7 @@ interface SdTableColumnBase<T = any> {
60
60
  filter?: {
61
61
  disabled?: boolean;
62
62
  default?: any;
63
+ onChange?: (value: any, column?: SdTableColumn<T>, columnFilter?: Record<string, any>) => void;
63
64
  operator?: {
64
65
  default?: Operator;
65
66
  enable?: boolean;
@@ -81,7 +82,7 @@ interface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {
81
82
  field: NestedKeyOf<T>;
82
83
  type: 'number';
83
84
  useBadge?: UseBadgeFunc<T>;
84
- filter?: SdTableColumnBase['filter'] & {
85
+ filter?: SdTableColumnBase<T>['filter'] & {
85
86
  type?: 'split-number';
86
87
  };
87
88
  }
@@ -98,7 +99,7 @@ interface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {
98
99
  field: NestedKeyOf<T>;
99
100
  type: 'date' | 'datetime' | 'time';
100
101
  useBadge?: UseBadgeFunc<T>;
101
- filter?: SdTableColumnBase['filter'] & {
102
+ filter?: SdTableColumnBase<T>['filter'] & {
102
103
  type?: 'daterange' | 'date' | 'split-date';
103
104
  };
104
105
  }
@@ -21,7 +21,7 @@ declare class SdView {
21
21
  * why: `input.required()` forces the parent to bind `[display]` (compile error otherwise),
22
22
  * so the component never has to guess a fallback string from `value`.
23
23
  */
24
- display: _angular_core.InputSignal<string | null | undefined>;
24
+ display: _angular_core.InputSignal<unknown>;
25
25
  /** When set, the value renders as a link (`<a [sdHref]>`) instead of plain text. */
26
26
  hyperlink: _angular_core.InputSignal<string | null | undefined>;
27
27
  /** Label template handed down by a parent control (wins over `label` + `#sdLabel`). */
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { AfterViewInit, ElementRef, TemplateRef } from '@angular/core';
2
+ import { AfterViewInit, OnDestroy, ElementRef, TemplateRef } from '@angular/core';
3
3
  import { FormGroup, FormControl, FormGroupDirective, NgForm } from '@angular/forms';
4
4
  import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
5
5
  import { ErrorStateMatcher } from '@angular/material/core';
@@ -15,7 +15,7 @@ declare class SdChipCalendarErrorStateMatcher implements ErrorStateMatcher {
15
15
  constructor(formControl: FormControl);
16
16
  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean;
17
17
  }
18
- declare class SdChipCalendar implements AfterViewInit {
18
+ declare class SdChipCalendar implements AfterViewInit, OnDestroy {
19
19
  #private;
20
20
  menuTrigger: _angular_core.Signal<MatMenuTrigger | undefined>;
21
21
  calendar: _angular_core.Signal<MatCalendar<Date> | undefined>;
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { PipeTransform, AfterViewInit, ElementRef, TemplateRef } from '@angular/core';
2
+ import { PipeTransform, AfterViewInit, OnDestroy, ElementRef, TemplateRef } from '@angular/core';
3
3
  import { FormGroup, FormControl, FormGroupDirective, NgForm } from '@angular/forms';
4
4
  import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
5
5
  import { MatChipInputEvent } from '@angular/material/chips';
@@ -21,7 +21,7 @@ declare class SdChipErrorStateMatcher implements ErrorStateMatcher {
21
21
  constructor(formControl: FormControl);
22
22
  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean;
23
23
  }
24
- declare class SdChip implements AfterViewInit {
24
+ declare class SdChip implements AfterViewInit, OnDestroy {
25
25
  #private;
26
26
  autoIdInput: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
27
27
  autoId: _angular_core.Signal<string | undefined>;
@@ -19,6 +19,7 @@ declare class SdInputColor {
19
19
  readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
20
20
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
21
21
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
22
+ readonly hideInlineError: _angular_core.InputSignalWithTransform<boolean, unknown>;
22
23
  /** Display mode — forwarded to the inner `<sd-input>`. `'inline'` = borderless inline-edit; disabled `'inline'` → static. */
23
24
  readonly viewed: _angular_core.InputSignalWithTransform<SdViewed, SdViewedInput>;
24
25
  readonly valueModel: _angular_core.ModelSignal<string | null | undefined>;
@@ -31,7 +32,7 @@ declare class SdInputColor {
31
32
  onPickerChange: (ev: Event) => void;
32
33
  clear: (ev?: Event) => void;
33
34
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdInputColor, never>;
34
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdInputColor, "sd-input-color", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; }, never, never, true, never>;
35
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdInputColor, "sd-input-color", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; }, never, never, true, never>;
35
36
  }
36
37
 
37
38
  export { SD_INPUT_COLOR_HEX_PATTERN, SdInputColor };
@@ -10,10 +10,14 @@ import { Size } from '@sdcorejs/utils/models';
10
10
 
11
11
  interface SdSelectFooterActionContext {
12
12
  searchText: string;
13
+ filteredItems: unknown[];
14
+ selectedItems: unknown[];
13
15
  }
16
+ type SdSelectFooterActionWhenFn = (ctx: SdSelectFooterActionContext) => boolean | Promise<boolean>;
17
+ type SdSelectFooterActionWhen = 'always' | 'empty' | 'has-result' | SdSelectFooterActionWhenFn;
14
18
  declare class SdSelectFooterActionDirective {
15
19
  readonly templateRef: TemplateRef<any>;
16
- readonly when: _angular_core.InputSignal<"always" | "empty" | "has-result">;
20
+ readonly when: _angular_core.InputSignal<SdSelectFooterActionWhen>;
17
21
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdSelectFooterActionDirective, never>;
18
22
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SdSelectFooterActionDirective, "ng-template[sdSelectFooterAction]", never, { "when": { "alias": "when"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
19
23
  }
@@ -109,6 +113,8 @@ declare class SdSelect<T extends object | string | number = Record<string, unkno
109
113
  readonly searchText: _angular_core.WritableSignal<string>;
110
114
  readonly footerActionContext: Signal<{
111
115
  searchText: string;
116
+ filteredItems: T[];
117
+ selectedItems: T[];
112
118
  }>;
113
119
  readonly visibleFooterActions: Signal<SdSelectFooterActionDirective[]>;
114
120
  normalizedValue: Signal<string | number | boolean | (string | number | boolean)[] | null | undefined>;
@@ -128,6 +134,8 @@ declare class SdSelect<T extends object | string | number = Record<string, unkno
128
134
  clear: ($event?: any) => void;
129
135
  onClick: () => void;
130
136
  focus: () => void;
137
+ /** Clears the panel search/filter input and resets `searchText`. */
138
+ clearSearch: () => void;
131
139
  /** Open the select panel programmatically (anchors to the mat-select trigger). */
132
140
  open: () => void;
133
141
  onOpenedChange: (isOpened: boolean) => void;
@@ -136,4 +144,4 @@ declare class SdSelect<T extends object | string | number = Record<string, unkno
136
144
  }
137
145
 
138
146
  export { SdSelect, SdSelectFooterActionDirective };
139
- export type { SdSelectFooterActionContext };
147
+ export type { SdSelectFooterActionContext, SdSelectFooterActionWhen, SdSelectFooterActionWhenFn };
@@ -16,14 +16,14 @@ interface SdAuthInfo<T = any> {
16
16
 
17
17
  declare class SdAuthService {
18
18
  #private;
19
- private authConfiguration;
20
19
  getAuthInfo?: Signal<SdAuthInfo | undefined>;
21
20
  signout$?: Observable<void>;
22
21
  changePassword$?: Observable<void>;
23
- constructor(authConfiguration: ISdAuthConfiguration);
22
+ private readonly authConfiguration;
23
+ constructor();
24
24
  signout: () => void;
25
25
  changePassword: () => void;
26
- static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthService, [{ optional: true; }]>;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthService, never>;
27
27
  static ɵprov: i0.ɵɵInjectableDeclaration<SdAuthService>;
28
28
  }
29
29
 
@@ -43,20 +43,18 @@ interface IAuthConfigurationGuard {
43
43
  }
44
44
 
45
45
  declare class SdAuthGuard implements CanActivate {
46
- private authConfiguration;
46
+ private readonly authConfiguration;
47
47
  protected readonly router: Router;
48
- constructor(authConfiguration: ISdAuthConfiguration, router: Router);
49
48
  canActivate: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => _angular_router.MaybeAsync<_angular_router.GuardResult>;
50
- static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthGuard, [{ optional: true; }, null]>;
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthGuard, never>;
51
50
  static ɵprov: i0.ɵɵInjectableDeclaration<SdAuthGuard>;
52
51
  }
53
52
 
54
53
  declare class SdPortalGuard implements CanActivate {
55
- private authConfiguration;
54
+ private readonly authConfiguration;
56
55
  protected readonly router: Router;
57
- constructor(authConfiguration: ISdAuthConfiguration, router: Router);
58
56
  canActivate: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => _angular_router.MaybeAsync<_angular_router.GuardResult>;
59
- static ɵfac: i0.ɵɵFactoryDeclaration<SdPortalGuard, [{ optional: true; }, null]>;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdPortalGuard, never>;
60
58
  static ɵprov: i0.ɵɵInjectableDeclaration<SdPortalGuard>;
61
59
  }
62
60
 
@@ -18,9 +18,9 @@ import { CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnaps
18
18
  interface ISdPermissionConfiguration {
19
19
  /**
20
20
  * Khóa định danh cấu hình.
21
- * Dùng để phân biệt khi hệ thống mở rộng theo nhiều profile permission.
22
- *
23
- * Lưu ý: `undefined` cũng được xem là một key hợp lệ (cấu hình mặc định).
21
+ * Dùng để phân biệt khi hệ thống mở rộng theo nhiều profile permission.
22
+ *
23
+ * Lưu ý: `undefined` cũng được xem là một key hợp lệ (cấu hình mặc định).
24
24
  */
25
25
  key?: string;
26
26
  /**
@@ -88,9 +88,8 @@ declare class SdPermissionDirective {
88
88
 
89
89
  declare class SdPermissionGuard implements CanActivate, CanActivateChild {
90
90
  #private;
91
- private configuration;
92
- private permissionService;
93
- constructor(configuration: ISdPermissionConfiguration | ISdPermissionConfiguration[], permissionService: SdPermissionService);
91
+ private readonly configuration;
92
+ private readonly permissionService;
94
93
  canActivate: (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Promise<boolean>;
95
94
  canActivateChild: (activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Promise<boolean>;
96
95
  static ɵfac: i0.ɵɵFactoryDeclaration<SdPermissionGuard, never>;
@@ -1,15 +1,27 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { PipeTransform } from '@angular/core';
3
- import { ISdCoreConfiguration } from '@sdcorejs/angular/configurations';
4
3
  import * as _angular_platform_browser from '@angular/platform-browser';
5
4
  import { DomSanitizer } from '@angular/platform-browser';
6
5
  import { Observable } from 'rxjs';
7
6
 
7
+ declare class SdFormatDatePipe implements PipeTransform {
8
+ transform(value: unknown, format?: string): string | null;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdFormatDatePipe, never>;
10
+ static ɵpipe: i0.ɵɵPipeDeclaration<SdFormatDatePipe, "sdFormatDate", true>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdFormatDatePipe>;
12
+ }
13
+
14
+ declare class SdFormatDatetimePipe implements PipeTransform {
15
+ transform(value: unknown, format?: string): string | null;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdFormatDatetimePipe, never>;
17
+ static ɵpipe: i0.ɵɵPipeDeclaration<SdFormatDatetimePipe, "sdFormatDatetime", true>;
18
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdFormatDatetimePipe>;
19
+ }
20
+
8
21
  declare class SdFormatNumberPipe implements PipeTransform {
9
22
  private readonly coreConfiguration;
10
- constructor(coreConfiguration: ISdCoreConfiguration | undefined);
11
23
  transform(value: any, digits?: number, format?: '1,234,567.89' | '1.234.567,89'): string | null;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<SdFormatNumberPipe, [{ optional: true; }]>;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdFormatNumberPipe, never>;
13
25
  static ɵpipe: i0.ɵɵPipeDeclaration<SdFormatNumberPipe, "sdFormatNumber", true>;
14
26
  static ɵprov: i0.ɵɵInjectableDeclaration<SdFormatNumberPipe>;
15
27
  }
@@ -40,4 +52,10 @@ declare class SdEmptyPipe implements PipeTransform {
40
52
  static ɵpipe: i0.ɵɵPipeDeclaration<SdEmptyPipe, "sdEmpty", true>;
41
53
  }
42
54
 
43
- export { SdEmptyPipe, SdFormatNumberPipe, SdSafeHtmlPipe, SdTimeDifferentPipe };
55
+ declare class SdViewPipe implements PipeTransform {
56
+ transform(value: unknown): string;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdViewPipe, never>;
58
+ static ɵpipe: i0.ɵɵPipeDeclaration<SdViewPipe, "sdView", true>;
59
+ }
60
+
61
+ export { SdEmptyPipe, SdFormatDatePipe, SdFormatDatetimePipe, SdFormatNumberPipe, SdSafeHtmlPipe, SdTimeDifferentPipe, SdViewPipe };
@@ -34,12 +34,12 @@ interface DialogData {
34
34
  };
35
35
  }
36
36
  declare class DialogConfirmComponent {
37
- dialogRef: MatDialogRef<DialogConfirmComponent>;
38
- data: DialogData;
39
37
  value: any;
40
38
  required: boolean;
41
39
  id: string;
42
- constructor(dialogRef: MatDialogRef<DialogConfirmComponent>, data: DialogData);
40
+ readonly dialogRef: MatDialogRef<any, any>;
41
+ readonly data: DialogData;
42
+ constructor();
43
43
  onCancel: () => void;
44
44
  onAccept: () => void;
45
45
  static ɵfac: i0.ɵɵFactoryDeclaration<DialogConfirmComponent, never>;
@@ -1,12 +1,11 @@
1
- import { ISdCoreConfiguration } from '@sdcorejs/angular/configurations';
2
1
  import * as i0 from '@angular/core';
3
2
 
4
3
  declare class SdLicenseService {
5
4
  #private;
6
5
  private readonly coreConfiguration;
7
- constructor(coreConfiguration: ISdCoreConfiguration | undefined);
6
+ constructor();
8
7
  enforceLicense: () => void;
9
- static ɵfac: i0.ɵɵFactoryDeclaration<SdLicenseService, [{ optional: true; }]>;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdLicenseService, never>;
10
9
  static ɵprov: i0.ɵɵInjectableDeclaration<SdLicenseService>;
11
10
  }
12
11
 
@@ -1,5 +1,4 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ApplicationRef, EnvironmentInjector } from '@angular/core';
3
2
 
4
3
  type ToastType = 'success' | 'info' | 'warning' | 'error';
5
4
  interface ToastData {
@@ -37,11 +36,11 @@ interface NotifyOption {
37
36
 
38
37
  declare class SdNotifyService {
39
38
  #private;
40
- private appRef;
41
- private injector;
42
- private document;
43
39
  readonly toasts: i0.WritableSignal<ToastData[]>;
44
- constructor(appRef: ApplicationRef, injector: EnvironmentInjector, document: Document);
40
+ private readonly appRef;
41
+ private readonly injector;
42
+ private readonly document;
43
+ constructor();
45
44
  success(message: string, option?: NotifyOption): void;
46
45
  info(message: string, option?: NotifyOption): void;
47
46
  warning(message: string | string[], option?: NotifyOption): void;
@@ -23,10 +23,9 @@ declare const SD_STORAGE_CONFIG: InjectionToken<ISdStorageConfiguration>;
23
23
 
24
24
  declare class SdStorageService {
25
25
  #private;
26
- private configuration;
27
- constructor(configuration: ISdStorageConfiguration);
26
+ private readonly configuration;
28
27
  create<T = any>(key: string | object, option?: SdStorageOption<T>): SdStorage<T>;
29
- static ɵfac: i0.ɵɵFactoryDeclaration<SdStorageService, [{ optional: true; }]>;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdStorageService, never>;
30
29
  static ɵprov: i0.ɵɵInjectableDeclaration<SdStorageService>;
31
30
  }
32
31
 
@@ -84,4 +84,12 @@ declare const hslToHex: (h: number, s: number, l: number) => string;
84
84
  /** @deprecated Use {@link ColorUtilities.rgbToHex} from `@sdcorejs/utils/fns` instead */
85
85
  declare const rgbToHex: (r: number, g: number, b: number) => string;
86
86
 
87
- export { SdUtilities, StringUtilities, hslToHex, rgbToHex };
87
+ type PlainObject = Record<PropertyKey, unknown>;
88
+ declare const ObjectUtilities: {
89
+ isPlainObject: (value: unknown) => value is PlainObject;
90
+ clone: <T>(value: T) => T;
91
+ merge: <T extends PlainObject, U extends PlainObject>(target: T, source: U) => T & U;
92
+ deepMerge: <T extends PlainObject>(...sources: T[]) => T;
93
+ };
94
+
95
+ export { ObjectUtilities, SdUtilities, StringUtilities, hslToHex, rgbToHex };