@sd-angular/core 19.0.0-beta.50 → 19.0.0-beta.52
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.
- package/components/table/src/components/column-filter/column-filter.component.d.ts +3 -3
- package/components/table/src/components/external-filter/external-filter.component.d.ts +1 -1
- package/components/table/src/models/table-column.model.d.ts +6 -7
- package/components/table/src/services/index.d.ts +3 -0
- package/components/table/src/services/table-export/table-export.service.d.ts +26 -0
- package/components/table/src/services/table-filter/table-filter.model.d.ts +3 -2
- package/components/table/src/services/table-format/table-format.service.d.ts +16 -0
- package/components/table/src/table.component.d.ts +9 -21
- package/fesm2022/sd-angular-core-components-table.mjs +911 -939
- package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-workflow.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs +20 -4
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date-range.mjs +20 -6
- package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date.mjs +20 -5
- package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-datetime.mjs +20 -5
- package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input-number.mjs +20 -5
- package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input.mjs +20 -5
- package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-select.mjs +95 -84
- package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-textarea.mjs +20 -5
- package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-api.mjs +5 -10
- package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-extensions.mjs +11 -39
- package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
- package/forms/autocomplete/src/autocomplete.component.d.ts +2 -2
- package/forms/date/src/date.component.d.ts +2 -2
- package/forms/date-range/src/date-range.component.d.ts +2 -2
- package/forms/datetime/src/datetime.component.d.ts +2 -2
- package/forms/input/src/input.component.d.ts +2 -2
- package/forms/input-number/src/input-number.component.d.ts +2 -2
- package/forms/select/src/select.component.d.ts +30 -33
- package/forms/textarea/src/textarea.component.d.ts +2 -2
- package/package.json +74 -74
- package/sd-angular-core-19.0.0-beta.52.tgz +0 -0
- package/services/api/src/api.model.d.ts +6 -1
- package/utilities/extensions/src/utility.extension.d.ts +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { FormControl } from '@angular/forms';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
3
|
import { MatDatepickerInputEvent, MatDateRangePicker } from '@angular/material/datepicker';
|
|
4
4
|
import { MatFormFieldAppearance } from '@angular/material/form-field';
|
|
5
5
|
import { SdLabelDefDirective } from '@sd-angular/core/forms/directives';
|
|
@@ -22,7 +22,7 @@ export declare class SdDateRange implements OnDestroy, OnInit {
|
|
|
22
22
|
autoId: import("@angular/core").Signal<string | undefined>;
|
|
23
23
|
name: import("@angular/core").InputSignal<string>;
|
|
24
24
|
size: import("@angular/core").InputSignal<SdSize>;
|
|
25
|
-
form: import("@angular/core").
|
|
25
|
+
form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
|
|
26
26
|
label: import("@angular/core").InputSignal<string | undefined>;
|
|
27
27
|
helperText: import("@angular/core").InputSignal<string | undefined>;
|
|
28
28
|
hideInlineError: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ElementRef, OnDestroy, OnInit, TemplateRef } from '@angular/core';
|
|
2
|
-
import { ValidatorFn } from '@angular/forms';
|
|
2
|
+
import { FormGroup, ValidatorFn } from '@angular/forms';
|
|
3
3
|
import { MatFormFieldAppearance } from '@angular/material/form-field';
|
|
4
4
|
import { MtxDatetimepicker } from '@ng-matero/extensions/datetimepicker';
|
|
5
5
|
import { SdViewDefDirective } from '@sd-angular/core/forms/directives';
|
|
@@ -21,7 +21,7 @@ export declare class SdDatetime implements OnDestroy, OnInit {
|
|
|
21
21
|
autoId: import("@angular/core").Signal<string | undefined>;
|
|
22
22
|
name: import("@angular/core").InputSignal<string>;
|
|
23
23
|
size: import("@angular/core").InputSignal<SdSize>;
|
|
24
|
-
form: import("@angular/core").
|
|
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>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
|
|
2
|
-
import { ValidatorFn } from '@angular/forms';
|
|
2
|
+
import { FormGroup, ValidatorFn } from '@angular/forms';
|
|
3
3
|
import { 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';
|
|
@@ -19,7 +19,7 @@ export declare class SdInput implements OnDestroy, OnInit, AfterViewInit {
|
|
|
19
19
|
appearanceInput: import("@angular/core").InputSignal<MatFormFieldAppearance | undefined>;
|
|
20
20
|
appearance: import("@angular/core").Signal<MatFormFieldAppearance>;
|
|
21
21
|
size: import("@angular/core").InputSignal<SdSize>;
|
|
22
|
-
form: import("@angular/core").
|
|
22
|
+
form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
|
|
23
23
|
label: import("@angular/core").InputSignal<string | undefined>;
|
|
24
24
|
helperText: import("@angular/core").InputSignal<string | undefined>;
|
|
25
25
|
placeholder: import("@angular/core").InputSignal<string | undefined>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
|
|
2
|
-
import { FormControl, FormGroupDirective, NgForm, ValidatorFn } from '@angular/forms';
|
|
2
|
+
import { FormControl, FormGroup, FormGroupDirective, NgForm, ValidatorFn } from '@angular/forms';
|
|
3
3
|
import { ErrorStateMatcher } from '@angular/material/core';
|
|
4
4
|
import { MatFormFieldAppearance } from '@angular/material/form-field';
|
|
5
5
|
import { SdSuffixDefDirective, SdViewDefDirective } from '@sd-angular/core/forms/directives';
|
|
@@ -27,7 +27,7 @@ export declare class SdInputNumber implements OnDestroy, OnInit, AfterViewInit {
|
|
|
27
27
|
autoId: import("@angular/core").Signal<string | undefined>;
|
|
28
28
|
name: import("@angular/core").InputSignal<string>;
|
|
29
29
|
size: import("@angular/core").InputSignal<SdSize>;
|
|
30
|
-
form: import("@angular/core").
|
|
30
|
+
form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
|
|
31
31
|
label: import("@angular/core").InputSignal<string | undefined>;
|
|
32
32
|
helperText: import("@angular/core").InputSignal<string | undefined>;
|
|
33
33
|
placeholder: import("@angular/core").InputSignal<string | undefined>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { OnInit, // THÊM IMPORT NÀY
|
|
2
|
+
Signal, TemplateRef } from '@angular/core';
|
|
3
|
+
import { FormControl, FormGroup, ValidatorFn } from '@angular/forms';
|
|
3
4
|
import { MatFormFieldAppearance } from '@angular/material/form-field';
|
|
4
5
|
import { MatInput } from '@angular/material/input';
|
|
5
6
|
import { MatSelect, MatSelectChange } from '@angular/material/select';
|
|
@@ -7,29 +8,26 @@ import { SdItemDefDefDirective, SdViewDefDirective } from '@sd-angular/core/form
|
|
|
7
8
|
import { SdCustomValidator, SdFormControl, SdSearch, SdSelectionData } from '@sd-angular/core/forms/models';
|
|
8
9
|
import { SdSize } from '@sd-angular/core/utilities/models';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
|
-
export declare class SdSelect
|
|
11
|
+
export declare class SdSelect<T extends object | string | number = Record<string, unknown>> implements OnInit {
|
|
11
12
|
#private;
|
|
12
13
|
id: string;
|
|
13
|
-
matInputRef:
|
|
14
|
-
selectRef:
|
|
15
|
-
sdLabelTemplate:
|
|
16
|
-
sdValueTemplate:
|
|
17
|
-
itemDef:
|
|
18
|
-
sdViewDef:
|
|
19
|
-
private ref;
|
|
20
|
-
private formConfig;
|
|
21
|
-
private el;
|
|
14
|
+
matInputRef: Signal<MatInput | undefined>;
|
|
15
|
+
selectRef: Signal<MatSelect | undefined>;
|
|
16
|
+
sdLabelTemplate: Signal<TemplateRef<any> | undefined>;
|
|
17
|
+
sdValueTemplate: Signal<TemplateRef<any> | undefined>;
|
|
18
|
+
itemDef: Signal<SdItemDefDefDirective | undefined>;
|
|
19
|
+
sdViewDef: Signal<SdViewDefDirective | undefined>;
|
|
22
20
|
autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
|
|
23
|
-
autoId:
|
|
21
|
+
autoId: Signal<string | undefined>;
|
|
24
22
|
name: import("@angular/core").InputSignal<string>;
|
|
25
23
|
size: import("@angular/core").InputSignal<SdSize>;
|
|
26
|
-
form: import("@angular/core").
|
|
24
|
+
form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
|
|
27
25
|
label: import("@angular/core").InputSignal<string | undefined>;
|
|
28
26
|
helperText: import("@angular/core").InputSignal<string | undefined>;
|
|
29
27
|
placeholder: import("@angular/core").InputSignal<string | undefined>;
|
|
30
|
-
valueField: import("@angular/core").InputSignal<string>;
|
|
31
|
-
displayField: import("@angular/core").InputSignal<string>;
|
|
32
|
-
disabledField: import("@angular/core").InputSignal<string>;
|
|
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}.${T_3[Key_3] extends infer T_4 ? T_4 extends T_3[Key_3] ? T_4 extends object ? { [Key_4 in keyof T_4 & string]: T_4[Key_4] extends string | number | boolean | Function | Date | null | undefined ? Key_4 : T_4[Key_4] extends any[] ? Key_4 : T_4[Key_4] extends object ? Key_4 : Key_4; }[keyof T_4 & string] : string : never : never}` : 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}.${T_3[Key_3] extends infer T_4 ? T_4 extends T_3[Key_3] ? T_4 extends object ? { [Key_4 in keyof T_4 & string]: T_4[Key_4] extends string | number | boolean | Function | Date | null | undefined ? Key_4 : T_4[Key_4] extends any[] ? Key_4 : T_4[Key_4] extends object ? Key_4 : Key_4; }[keyof T_4 & string] : string : never : never}` : 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}.${T_3[Key_3] extends infer T_4 ? T_4 extends T_3[Key_3] ? T_4 extends object ? { [Key_4 in keyof T_4 & string]: T_4[Key_4] extends string | number | boolean | Function | Date | null | undefined ? Key_4 : T_4[Key_4] extends any[] ? Key_4 : T_4[Key_4] extends object ? Key_4 : Key_4; }[keyof T_4 & string] : string : never : never}` : 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)>;
|
|
33
31
|
cacheChecksum: import("@angular/core").InputSignal<any>;
|
|
34
32
|
limit: import("@angular/core").InputSignal<number>;
|
|
35
33
|
hyperlink: import("@angular/core").InputSignal<string | null | undefined>;
|
|
@@ -42,33 +40,32 @@ export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
|
|
|
42
40
|
validator: import("@angular/core").InputSignal<SdCustomValidator | undefined>;
|
|
43
41
|
inlineError: import("@angular/core").InputSignal<string | undefined>;
|
|
44
42
|
appearanceInput: import("@angular/core").InputSignal<MatFormFieldAppearance | undefined>;
|
|
45
|
-
appearance:
|
|
46
|
-
items: import("@angular/core").InputSignal<
|
|
43
|
+
appearance: Signal<MatFormFieldAppearance>;
|
|
44
|
+
items: import("@angular/core").InputSignal<SdSearch | T[] | Signal<T[]> | null | undefined>;
|
|
47
45
|
valueModel: import("@angular/core").ModelSignal<string | number | boolean | (string | number)[] | null | undefined>;
|
|
48
46
|
sdChange: import("@angular/core").OutputEmitterRef<any>;
|
|
49
47
|
sdSelection: import("@angular/core").OutputEmitterRef<SdSelectionData<any>>;
|
|
50
48
|
formControl: SdFormControl;
|
|
51
49
|
inputControl: FormControl<string | null>;
|
|
52
50
|
loading: import("@angular/core").WritableSignal<boolean>;
|
|
53
|
-
|
|
51
|
+
focused: import("@angular/core").WritableSignal<boolean>;
|
|
54
52
|
allSelected: boolean;
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
actualItems: Signal<SdSearch | T[] | null | undefined>;
|
|
54
|
+
filteredItems: import("@angular/core").WritableSignal<T[]>;
|
|
55
|
+
selectedItems: import("@angular/core").WritableSignal<T[]>;
|
|
57
56
|
display: import("@angular/core").WritableSignal<string>;
|
|
58
57
|
calculatedPanelWidth: import("@angular/core").WritableSignal<string | number>;
|
|
59
|
-
normalizedValue:
|
|
60
|
-
filtered:
|
|
61
|
-
delayTime:
|
|
62
|
-
itemValue: (item:
|
|
63
|
-
itemDisplay: (item:
|
|
64
|
-
itemDisabled: (item:
|
|
58
|
+
normalizedValue: Signal<string | number | boolean | (string | number | boolean)[] | null | undefined>;
|
|
59
|
+
filtered: Signal<boolean>;
|
|
60
|
+
delayTime: Signal<0 | 500>;
|
|
61
|
+
itemValue: (item: T) => unknown;
|
|
62
|
+
itemDisplay: (item: T) => string;
|
|
63
|
+
itemDisabled: (item: T) => boolean;
|
|
65
64
|
setNestedValue: (obj: any, path: string, value: any) => void;
|
|
66
|
-
tooltip:
|
|
65
|
+
tooltip: Signal<string>;
|
|
67
66
|
updatePanelWidth: () => void;
|
|
68
67
|
constructor();
|
|
69
68
|
ngOnInit(): void;
|
|
70
|
-
ngAfterViewInit(): void;
|
|
71
|
-
ngOnDestroy(): void;
|
|
72
69
|
customInlineErrorValidator(): ValidatorFn;
|
|
73
70
|
onSelectionChange: (change: MatSelectChange) => void;
|
|
74
71
|
reValidate: () => void;
|
|
@@ -76,6 +73,6 @@ export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
|
|
|
76
73
|
onClick: () => void;
|
|
77
74
|
focus: () => void;
|
|
78
75
|
onOpenedChange: (isOpened: boolean) => void;
|
|
79
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdSelect
|
|
80
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect
|
|
76
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdSelect<any>, never>;
|
|
77
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect<any>, "sd-select", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": true; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": true; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "cacheChecksum": { "alias": "cacheChecksum"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "minWidthPanel": { "alias": "minWidthPanel"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "validator": { "alias": "validator"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["sdLabelTemplate", "sdValueTemplate", "itemDef", "sdViewDef"], ["[sdLabel]"], true, never>;
|
|
81
78
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AfterViewInit, ElementRef, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { ValidatorFn } from '@angular/forms';
|
|
2
|
+
import { FormGroup, ValidatorFn } from '@angular/forms';
|
|
3
3
|
import { 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';
|
|
@@ -18,7 +18,7 @@ export declare class SdTextarea implements OnInit, AfterViewInit, OnDestroy {
|
|
|
18
18
|
autoId: import("@angular/core").Signal<string | undefined>;
|
|
19
19
|
name: import("@angular/core").InputSignal<string>;
|
|
20
20
|
size: import("@angular/core").InputSignal<SdSize>;
|
|
21
|
-
form: import("@angular/core").
|
|
21
|
+
form: import("@angular/core").InputSignalWithTransform<FormGroup<any> | undefined, any>;
|
|
22
22
|
label: import("@angular/core").InputSignal<string | undefined>;
|
|
23
23
|
helperText: import("@angular/core").InputSignal<string | undefined>;
|
|
24
24
|
placeholder: import("@angular/core").InputSignal<string>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sd-angular/core",
|
|
3
|
-
"version": "19.0.0-beta.
|
|
3
|
+
"version": "19.0.0-beta.52",
|
|
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",
|
|
@@ -30,14 +30,14 @@
|
|
|
30
30
|
"types": "./index.d.ts",
|
|
31
31
|
"default": "./fesm2022/sd-angular-core.mjs"
|
|
32
32
|
},
|
|
33
|
-
"./configurations": {
|
|
34
|
-
"types": "./configurations/index.d.ts",
|
|
35
|
-
"default": "./fesm2022/sd-angular-core-configurations.mjs"
|
|
36
|
-
},
|
|
37
33
|
"./directives": {
|
|
38
34
|
"types": "./directives/index.d.ts",
|
|
39
35
|
"default": "./fesm2022/sd-angular-core-directives.mjs"
|
|
40
36
|
},
|
|
37
|
+
"./configurations": {
|
|
38
|
+
"types": "./configurations/index.d.ts",
|
|
39
|
+
"default": "./fesm2022/sd-angular-core-configurations.mjs"
|
|
40
|
+
},
|
|
41
41
|
"./components": {
|
|
42
42
|
"types": "./components/index.d.ts",
|
|
43
43
|
"default": "./fesm2022/sd-angular-core-components.mjs"
|
|
@@ -86,14 +86,14 @@
|
|
|
86
86
|
"types": "./components/badge/index.d.ts",
|
|
87
87
|
"default": "./fesm2022/sd-angular-core-components-badge.mjs"
|
|
88
88
|
},
|
|
89
|
-
"./components/avatar": {
|
|
90
|
-
"types": "./components/avatar/index.d.ts",
|
|
91
|
-
"default": "./fesm2022/sd-angular-core-components-avatar.mjs"
|
|
92
|
-
},
|
|
93
89
|
"./components/base": {
|
|
94
90
|
"types": "./components/base/index.d.ts",
|
|
95
91
|
"default": "./fesm2022/sd-angular-core-components-base.mjs"
|
|
96
92
|
},
|
|
93
|
+
"./components/avatar": {
|
|
94
|
+
"types": "./components/avatar/index.d.ts",
|
|
95
|
+
"default": "./fesm2022/sd-angular-core-components-avatar.mjs"
|
|
96
|
+
},
|
|
97
97
|
"./components/button": {
|
|
98
98
|
"types": "./components/button/index.d.ts",
|
|
99
99
|
"default": "./fesm2022/sd-angular-core-components-button.mjs"
|
|
@@ -102,89 +102,85 @@
|
|
|
102
102
|
"types": "./components/code-editor/index.d.ts",
|
|
103
103
|
"default": "./fesm2022/sd-angular-core-components-code-editor.mjs"
|
|
104
104
|
},
|
|
105
|
-
"./components/
|
|
106
|
-
"types": "./components/
|
|
107
|
-
"default": "./fesm2022/sd-angular-core-components-
|
|
105
|
+
"./components/import-excel": {
|
|
106
|
+
"types": "./components/import-excel/index.d.ts",
|
|
107
|
+
"default": "./fesm2022/sd-angular-core-components-import-excel.mjs"
|
|
108
108
|
},
|
|
109
109
|
"./components/mini-editor": {
|
|
110
110
|
"types": "./components/mini-editor/index.d.ts",
|
|
111
111
|
"default": "./fesm2022/sd-angular-core-components-mini-editor.mjs"
|
|
112
112
|
},
|
|
113
|
-
"./components/modal": {
|
|
114
|
-
"types": "./components/modal/index.d.ts",
|
|
115
|
-
"default": "./fesm2022/sd-angular-core-components-modal.mjs"
|
|
116
|
-
},
|
|
117
113
|
"./components/history": {
|
|
118
114
|
"types": "./components/history/index.d.ts",
|
|
119
115
|
"default": "./fesm2022/sd-angular-core-components-history.mjs"
|
|
120
116
|
},
|
|
121
|
-
"./components/
|
|
122
|
-
"types": "./components/
|
|
123
|
-
"default": "./fesm2022/sd-angular-core-components-
|
|
117
|
+
"./components/document-builder": {
|
|
118
|
+
"types": "./components/document-builder/index.d.ts",
|
|
119
|
+
"default": "./fesm2022/sd-angular-core-components-document-builder.mjs"
|
|
120
|
+
},
|
|
121
|
+
"./components/modal": {
|
|
122
|
+
"types": "./components/modal/index.d.ts",
|
|
123
|
+
"default": "./fesm2022/sd-angular-core-components-modal.mjs"
|
|
124
124
|
},
|
|
125
125
|
"./components/preview": {
|
|
126
126
|
"types": "./components/preview/index.d.ts",
|
|
127
127
|
"default": "./fesm2022/sd-angular-core-components-preview.mjs"
|
|
128
128
|
},
|
|
129
|
-
"./components/
|
|
130
|
-
"types": "./components/
|
|
131
|
-
"default": "./fesm2022/sd-angular-core-components-
|
|
129
|
+
"./components/section": {
|
|
130
|
+
"types": "./components/section/index.d.ts",
|
|
131
|
+
"default": "./fesm2022/sd-angular-core-components-section.mjs"
|
|
132
132
|
},
|
|
133
133
|
"./components/quick-action": {
|
|
134
134
|
"types": "./components/quick-action/index.d.ts",
|
|
135
135
|
"default": "./fesm2022/sd-angular-core-components-quick-action.mjs"
|
|
136
136
|
},
|
|
137
|
-
"./components/
|
|
138
|
-
"types": "./components/
|
|
139
|
-
"default": "./fesm2022/sd-angular-core-components-
|
|
137
|
+
"./components/query-builder": {
|
|
138
|
+
"types": "./components/query-builder/index.d.ts",
|
|
139
|
+
"default": "./fesm2022/sd-angular-core-components-query-builder.mjs"
|
|
140
140
|
},
|
|
141
141
|
"./components/side-drawer": {
|
|
142
142
|
"types": "./components/side-drawer/index.d.ts",
|
|
143
143
|
"default": "./fesm2022/sd-angular-core-components-side-drawer.mjs"
|
|
144
144
|
},
|
|
145
|
-
"./components/
|
|
146
|
-
"types": "./components/
|
|
147
|
-
"default": "./fesm2022/sd-angular-core-components-
|
|
145
|
+
"./components/upload-file": {
|
|
146
|
+
"types": "./components/upload-file/index.d.ts",
|
|
147
|
+
"default": "./fesm2022/sd-angular-core-components-upload-file.mjs"
|
|
148
148
|
},
|
|
149
149
|
"./components/view": {
|
|
150
150
|
"types": "./components/view/index.d.ts",
|
|
151
151
|
"default": "./fesm2022/sd-angular-core-components-view.mjs"
|
|
152
152
|
},
|
|
153
|
+
"./components/table": {
|
|
154
|
+
"types": "./components/table/index.d.ts",
|
|
155
|
+
"default": "./fesm2022/sd-angular-core-components-table.mjs"
|
|
156
|
+
},
|
|
153
157
|
"./components/workflow": {
|
|
154
158
|
"types": "./components/workflow/index.d.ts",
|
|
155
159
|
"default": "./fesm2022/sd-angular-core-components-workflow.mjs"
|
|
156
160
|
},
|
|
157
|
-
"./forms/checkbox": {
|
|
158
|
-
"types": "./forms/checkbox/index.d.ts",
|
|
159
|
-
"default": "./fesm2022/sd-angular-core-forms-checkbox.mjs"
|
|
160
|
-
},
|
|
161
|
-
"./forms/chip": {
|
|
162
|
-
"types": "./forms/chip/index.d.ts",
|
|
163
|
-
"default": "./fesm2022/sd-angular-core-forms-chip.mjs"
|
|
164
|
-
},
|
|
165
161
|
"./forms/autocomplete": {
|
|
166
162
|
"types": "./forms/autocomplete/index.d.ts",
|
|
167
163
|
"default": "./fesm2022/sd-angular-core-forms-autocomplete.mjs"
|
|
168
164
|
},
|
|
165
|
+
"./forms/checkbox": {
|
|
166
|
+
"types": "./forms/checkbox/index.d.ts",
|
|
167
|
+
"default": "./fesm2022/sd-angular-core-forms-checkbox.mjs"
|
|
168
|
+
},
|
|
169
169
|
"./forms/chip-calendar": {
|
|
170
170
|
"types": "./forms/chip-calendar/index.d.ts",
|
|
171
171
|
"default": "./fesm2022/sd-angular-core-forms-chip-calendar.mjs"
|
|
172
172
|
},
|
|
173
|
-
"./
|
|
174
|
-
"types": "./
|
|
175
|
-
"default": "./fesm2022/sd-angular-core-
|
|
176
|
-
},
|
|
177
|
-
"./forms/date-range": {
|
|
178
|
-
"types": "./forms/date-range/index.d.ts",
|
|
179
|
-
"default": "./fesm2022/sd-angular-core-forms-date-range.mjs"
|
|
173
|
+
"./forms/chip": {
|
|
174
|
+
"types": "./forms/chip/index.d.ts",
|
|
175
|
+
"default": "./fesm2022/sd-angular-core-forms-chip.mjs"
|
|
180
176
|
},
|
|
181
177
|
"./forms/date": {
|
|
182
178
|
"types": "./forms/date/index.d.ts",
|
|
183
179
|
"default": "./fesm2022/sd-angular-core-forms-date.mjs"
|
|
184
180
|
},
|
|
185
|
-
"./forms/
|
|
186
|
-
"types": "./forms/
|
|
187
|
-
"default": "./fesm2022/sd-angular-core-forms-
|
|
181
|
+
"./forms/date-range": {
|
|
182
|
+
"types": "./forms/date-range/index.d.ts",
|
|
183
|
+
"default": "./fesm2022/sd-angular-core-forms-date-range.mjs"
|
|
188
184
|
},
|
|
189
185
|
"./forms/directives": {
|
|
190
186
|
"types": "./forms/directives/index.d.ts",
|
|
@@ -194,6 +190,10 @@
|
|
|
194
190
|
"types": "./forms/input/index.d.ts",
|
|
195
191
|
"default": "./fesm2022/sd-angular-core-forms-input.mjs"
|
|
196
192
|
},
|
|
193
|
+
"./forms/datetime": {
|
|
194
|
+
"types": "./forms/datetime/index.d.ts",
|
|
195
|
+
"default": "./fesm2022/sd-angular-core-forms-datetime.mjs"
|
|
196
|
+
},
|
|
197
197
|
"./forms/input-number": {
|
|
198
198
|
"types": "./forms/input-number/index.d.ts",
|
|
199
199
|
"default": "./fesm2022/sd-angular-core-forms-input-number.mjs"
|
|
@@ -202,14 +202,14 @@
|
|
|
202
202
|
"types": "./forms/label/index.d.ts",
|
|
203
203
|
"default": "./fesm2022/sd-angular-core-forms-label.mjs"
|
|
204
204
|
},
|
|
205
|
-
"./forms/models": {
|
|
206
|
-
"types": "./forms/models/index.d.ts",
|
|
207
|
-
"default": "./fesm2022/sd-angular-core-forms-models.mjs"
|
|
208
|
-
},
|
|
209
205
|
"./forms/radio": {
|
|
210
206
|
"types": "./forms/radio/index.d.ts",
|
|
211
207
|
"default": "./fesm2022/sd-angular-core-forms-radio.mjs"
|
|
212
208
|
},
|
|
209
|
+
"./forms/models": {
|
|
210
|
+
"types": "./forms/models/index.d.ts",
|
|
211
|
+
"default": "./fesm2022/sd-angular-core-forms-models.mjs"
|
|
212
|
+
},
|
|
213
213
|
"./forms/select": {
|
|
214
214
|
"types": "./forms/select/index.d.ts",
|
|
215
215
|
"default": "./fesm2022/sd-angular-core-forms-select.mjs"
|
|
@@ -230,14 +230,14 @@
|
|
|
230
230
|
"types": "./modules/auth/index.d.ts",
|
|
231
231
|
"default": "./fesm2022/sd-angular-core-modules-auth.mjs"
|
|
232
232
|
},
|
|
233
|
-
"./modules/layout": {
|
|
234
|
-
"types": "./modules/layout/index.d.ts",
|
|
235
|
-
"default": "./fesm2022/sd-angular-core-modules-layout.mjs"
|
|
236
|
-
},
|
|
237
233
|
"./modules/keycloak": {
|
|
238
234
|
"types": "./modules/keycloak/index.d.ts",
|
|
239
235
|
"default": "./fesm2022/sd-angular-core-modules-keycloak.mjs"
|
|
240
236
|
},
|
|
237
|
+
"./modules/layout": {
|
|
238
|
+
"types": "./modules/layout/index.d.ts",
|
|
239
|
+
"default": "./fesm2022/sd-angular-core-modules-layout.mjs"
|
|
240
|
+
},
|
|
241
241
|
"./modules/permission": {
|
|
242
242
|
"types": "./modules/permission/index.d.ts",
|
|
243
243
|
"default": "./fesm2022/sd-angular-core-modules-permission.mjs"
|
|
@@ -254,45 +254,45 @@
|
|
|
254
254
|
"types": "./services/confirm/index.d.ts",
|
|
255
255
|
"default": "./fesm2022/sd-angular-core-services-confirm.mjs"
|
|
256
256
|
},
|
|
257
|
-
"./services/docx": {
|
|
258
|
-
"types": "./services/docx/index.d.ts",
|
|
259
|
-
"default": "./fesm2022/sd-angular-core-services-docx.mjs"
|
|
260
|
-
},
|
|
261
257
|
"./services/excel": {
|
|
262
258
|
"types": "./services/excel/index.d.ts",
|
|
263
259
|
"default": "./fesm2022/sd-angular-core-services-excel.mjs"
|
|
264
260
|
},
|
|
265
|
-
"./services/
|
|
266
|
-
"types": "./services/
|
|
267
|
-
"default": "./fesm2022/sd-angular-core-services-
|
|
261
|
+
"./services/docx": {
|
|
262
|
+
"types": "./services/docx/index.d.ts",
|
|
263
|
+
"default": "./fesm2022/sd-angular-core-services-docx.mjs"
|
|
268
264
|
},
|
|
269
265
|
"./services/license": {
|
|
270
266
|
"types": "./services/license/index.d.ts",
|
|
271
267
|
"default": "./fesm2022/sd-angular-core-services-license.mjs"
|
|
272
268
|
},
|
|
273
|
-
"./services/
|
|
274
|
-
"types": "./services/
|
|
275
|
-
"default": "./fesm2022/sd-angular-core-services-
|
|
276
|
-
},
|
|
277
|
-
"./services/notify": {
|
|
278
|
-
"types": "./services/notify/index.d.ts",
|
|
279
|
-
"default": "./fesm2022/sd-angular-core-services-notify.mjs"
|
|
269
|
+
"./services/firebase": {
|
|
270
|
+
"types": "./services/firebase/index.d.ts",
|
|
271
|
+
"default": "./fesm2022/sd-angular-core-services-firebase.mjs"
|
|
280
272
|
},
|
|
281
273
|
"./services/loading": {
|
|
282
274
|
"types": "./services/loading/index.d.ts",
|
|
283
275
|
"default": "./fesm2022/sd-angular-core-services-loading.mjs"
|
|
284
276
|
},
|
|
285
|
-
"./
|
|
286
|
-
"types": "./
|
|
287
|
-
"default": "./fesm2022/sd-angular-core-
|
|
277
|
+
"./services/notify": {
|
|
278
|
+
"types": "./services/notify/index.d.ts",
|
|
279
|
+
"default": "./fesm2022/sd-angular-core-services-notify.mjs"
|
|
280
|
+
},
|
|
281
|
+
"./services/storage": {
|
|
282
|
+
"types": "./services/storage/index.d.ts",
|
|
283
|
+
"default": "./fesm2022/sd-angular-core-services-storage.mjs"
|
|
288
284
|
},
|
|
289
285
|
"./utilities/models": {
|
|
290
286
|
"types": "./utilities/models/index.d.ts",
|
|
291
287
|
"default": "./fesm2022/sd-angular-core-utilities-models.mjs"
|
|
292
288
|
},
|
|
293
|
-
"./
|
|
294
|
-
"types": "./
|
|
295
|
-
"default": "./fesm2022/sd-angular-core-
|
|
289
|
+
"./utilities/extensions": {
|
|
290
|
+
"types": "./utilities/extensions/index.d.ts",
|
|
291
|
+
"default": "./fesm2022/sd-angular-core-utilities-extensions.mjs"
|
|
292
|
+
},
|
|
293
|
+
"./components/tab-router": {
|
|
294
|
+
"types": "./components/tab-router/index.d.ts",
|
|
295
|
+
"default": "./fesm2022/sd-angular-core-components-tab-router.mjs"
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
}
|
|
Binary file
|
|
@@ -15,16 +15,21 @@ export type SdPutOption = HttpPutOption & SdApiOption;
|
|
|
15
15
|
type HttpDeleteOption = Parameters<HttpClient['delete']>[1];
|
|
16
16
|
export type SdDeleteOption = HttpDeleteOption & SdApiOption;
|
|
17
17
|
export interface SdApiHandler {
|
|
18
|
+
/** Danh sách host URL mà handler này sẽ xử lý */
|
|
18
19
|
hosts: string[];
|
|
20
|
+
/** Can thiệp request: gắn header, token, transform body... */
|
|
19
21
|
intercept?: (request: HttpRequest<any>) => HttpRequest<any>;
|
|
22
|
+
/** Hook chạy TRƯỚC khi gửi request (dùng để log, tracking...) */
|
|
20
23
|
beforeRemote?: (request: HttpRequest<any>) => void | Promise<void>;
|
|
24
|
+
/** Hook chạy SAU khi nhận response (xử lý lỗi, notify...) */
|
|
21
25
|
afterRemote?: (response: HttpResponse<any> | HttpErrorResponse | Error) => void | Promise<void>;
|
|
26
|
+
/** Transform response body thành kiểu dữ liệu mong muốn */
|
|
22
27
|
mapResponse?: <Tres = any, Tdata = any>(response: Tres) => Tdata;
|
|
28
|
+
/** Timeout tính bằng milliseconds. Mặc định: 30000 (30 giây) */
|
|
23
29
|
timeout?: number;
|
|
24
30
|
}
|
|
25
31
|
export interface ISdApiConfiguration {
|
|
26
32
|
handlers: SdApiHandler[];
|
|
27
33
|
}
|
|
28
34
|
export declare const SD_API_CONFIG: InjectionToken<ISdApiConfiguration>;
|
|
29
|
-
export declare const TOKEN: string;
|
|
30
35
|
export {};
|
|
@@ -20,5 +20,6 @@ declare const SdUtilities: {
|
|
|
20
20
|
parseQueryParams: (queryString?: string) => Record<string, string>;
|
|
21
21
|
getClientPublicIp: () => Promise<string | null>;
|
|
22
22
|
generateUuid: () => string;
|
|
23
|
+
getNestedValue: (obj: any, path: string) => any;
|
|
23
24
|
};
|
|
24
25
|
export { SdUtilities };
|