@sd-angular/core 0.0.916 → 0.0.920
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/bundles/sd-angular-core-grid-material.umd.js +384 -51
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-select.umd.js +1 -1
- package/bundles/sd-angular-core-select.umd.js.map +1 -1
- package/bundles/sd-angular-core-select.umd.min.js +1 -1
- package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
- package/esm2015/grid-material/sd-angular-core-grid-material.js +30 -25
- package/esm2015/grid-material/src/lib/components/desktop-cell/desktop-cell.component.js +20 -0
- package/esm2015/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.js +26 -0
- package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +4 -3
- package/esm2015/grid-material/src/lib/grid-material.component.js +115 -4
- package/esm2015/grid-material/src/lib/grid-material.module.js +12 -2
- package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-editor.model.js +2 -0
- package/esm2015/grid-material/src/lib/models/grid-option.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid.model.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/editor-handler-column.pipe.js +39 -0
- package/esm2015/grid-material/src/lib/pipes/editor-handler-row.pipe.js +40 -0
- package/esm2015/grid-material/src/lib/pipes/editor-validate.pipe.js +41 -0
- package/esm2015/grid-material/src/lib/services/grid-configuration.service.js +13 -7
- package/esm2015/select/src/lib/select.component.js +2 -2
- package/fesm2015/sd-angular-core-grid-material.js +296 -13
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-select.js +1 -1
- package/fesm2015/sd-angular-core-select.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.d.ts +29 -24
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/grid-material/src/lib/components/desktop-cell/desktop-cell.component.d.ts +9 -0
- package/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.d.ts +7 -0
- package/grid-material/src/lib/grid-material.component.d.ts +5 -0
- package/grid-material/src/lib/models/grid-column.model.d.ts +47 -0
- package/grid-material/src/lib/models/grid-editor.model.d.ts +22 -0
- package/grid-material/src/lib/models/grid-option.model.d.ts +2 -10
- package/grid-material/src/lib/models/grid.model.d.ts +46 -1
- package/grid-material/src/lib/pipes/editor-handler-column.pipe.d.ts +7 -0
- package/grid-material/src/lib/pipes/editor-handler-row.pipe.d.ts +6 -0
- package/grid-material/src/lib/pipes/editor-validate.pipe.d.ts +7 -0
- package/package.json +1 -1
- package/{sd-angular-core-0.0.916.tgz → sd-angular-core-0.0.920.tgz} +0 -0
- package/select/sd-angular-core-select.metadata.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SdGridMaterialColumn } from '../../models/grid-column.model';
|
|
2
|
+
import { SdGridMaterialOption } from '../../models/grid-option.model';
|
|
3
|
+
export declare class SdDesktopCell {
|
|
4
|
+
key: string;
|
|
5
|
+
column: SdGridMaterialColumn;
|
|
6
|
+
item: any;
|
|
7
|
+
gridOption: SdGridMaterialOption;
|
|
8
|
+
constructor();
|
|
9
|
+
}
|
|
@@ -19,6 +19,7 @@ import { SdGridConfigurationService } from './services/grid-configuration.servic
|
|
|
19
19
|
import { SdTranslateService } from '@sd-angular/core/translate';
|
|
20
20
|
import { SdGridService } from './services/grid.service';
|
|
21
21
|
import { SdQuickAction } from '@sd-angular/core/quick-action';
|
|
22
|
+
import { SdItem } from './models/grid.model';
|
|
22
23
|
export declare class SdGridMaterial<T = any> implements OnInit, AfterViewInit, OnDestroy {
|
|
23
24
|
#private;
|
|
24
25
|
private ref;
|
|
@@ -84,4 +85,8 @@ export declare class SdGridMaterial<T = any> implements OnInit, AfterViewInit, O
|
|
|
84
85
|
externalFilter: any;
|
|
85
86
|
filterDef: any;
|
|
86
87
|
}) => void;
|
|
88
|
+
onCreate: () => void;
|
|
89
|
+
onUpdate: (item: SdItem, isModified?: boolean) => void;
|
|
90
|
+
onSave: (item: SdItem) => Promise<void>;
|
|
91
|
+
onCancel: (item: SdItem) => void;
|
|
87
92
|
}
|
|
@@ -26,9 +26,25 @@ interface SdGridMaterialColumnText<T = any> extends SdGridMaterialBaseColumn<T>
|
|
|
26
26
|
type: 'string';
|
|
27
27
|
badge?: (value: any, rowData: T) => 'warning' | 'info' | 'success' | 'danger' | 'normal';
|
|
28
28
|
badgeType?: 'circle';
|
|
29
|
+
editor?: {
|
|
30
|
+
change?: (rowData: T) => void;
|
|
31
|
+
hidden?: boolean | ((rowData: T) => boolean);
|
|
32
|
+
disabled?: boolean | ((rowData: T) => boolean);
|
|
33
|
+
required?: boolean | ((rowData: T) => boolean);
|
|
34
|
+
defaultValue?: string;
|
|
35
|
+
relatedColumns?: string[];
|
|
36
|
+
};
|
|
29
37
|
}
|
|
30
38
|
interface SdGridMaterialColumnNumber<T = any> extends SdGridMaterialBaseColumn<T> {
|
|
31
39
|
type: 'number';
|
|
40
|
+
editor?: {
|
|
41
|
+
change?: (rowData: T) => void;
|
|
42
|
+
hidden?: boolean | ((rowData: T) => boolean);
|
|
43
|
+
disabled?: boolean | ((rowData: T) => boolean);
|
|
44
|
+
required?: boolean | ((rowData: T) => boolean);
|
|
45
|
+
defaultValue?: string;
|
|
46
|
+
relatedColumns?: string[];
|
|
47
|
+
};
|
|
32
48
|
}
|
|
33
49
|
interface SdGridMaterialBool<T = any> extends SdGridMaterialBaseColumn<T> {
|
|
34
50
|
type: 'bool';
|
|
@@ -38,12 +54,28 @@ interface SdGridMaterialBool<T = any> extends SdGridMaterialBaseColumn<T> {
|
|
|
38
54
|
};
|
|
39
55
|
badge?: (value: any, rowData: T) => 'warning' | 'info' | 'success' | 'danger' | 'normal';
|
|
40
56
|
badgeType?: 'circle';
|
|
57
|
+
editor?: {
|
|
58
|
+
change?: (rowData: T) => void;
|
|
59
|
+
hidden?: boolean | ((rowData: T) => boolean);
|
|
60
|
+
disabled?: boolean | ((rowData: T) => boolean);
|
|
61
|
+
required?: boolean | ((rowData: T) => boolean);
|
|
62
|
+
defaultValue?: boolean;
|
|
63
|
+
relatedColumns?: string[];
|
|
64
|
+
};
|
|
41
65
|
}
|
|
42
66
|
interface SdGridMaterialColumnDate<T = any> extends SdGridMaterialBaseColumn<T> {
|
|
43
67
|
type: 'date' | 'datetime' | 'time';
|
|
44
68
|
option?: {
|
|
45
69
|
timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';
|
|
46
70
|
};
|
|
71
|
+
editor?: {
|
|
72
|
+
change?: (rowData: T) => void;
|
|
73
|
+
hidden?: boolean | ((rowData: T) => boolean);
|
|
74
|
+
disabled?: boolean | ((rowData: T) => boolean);
|
|
75
|
+
required?: boolean | ((rowData: T) => boolean);
|
|
76
|
+
defaultValue?: string;
|
|
77
|
+
relatedColumns?: string[];
|
|
78
|
+
};
|
|
47
79
|
}
|
|
48
80
|
interface SdGridMaterialColumnValues<T = any> extends SdGridMaterialBaseColumn<T> {
|
|
49
81
|
type: 'values';
|
|
@@ -55,6 +87,14 @@ interface SdGridMaterialColumnValues<T = any> extends SdGridMaterialBaseColumn<T
|
|
|
55
87
|
backgroundColorField?: string;
|
|
56
88
|
selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';
|
|
57
89
|
};
|
|
90
|
+
editor?: {
|
|
91
|
+
change?: (rowData: T) => void;
|
|
92
|
+
hidden?: boolean | ((rowData: T) => boolean);
|
|
93
|
+
disabled?: boolean | ((rowData: T) => boolean);
|
|
94
|
+
required?: boolean | ((rowData: T) => boolean);
|
|
95
|
+
defaultValue?: string | number | boolean;
|
|
96
|
+
relatedColumns?: string[];
|
|
97
|
+
};
|
|
58
98
|
}
|
|
59
99
|
interface SdGridMaterialColumnImage<T = any> extends SdGridMaterialBaseColumn<T> {
|
|
60
100
|
type: 'image';
|
|
@@ -62,6 +102,13 @@ interface SdGridMaterialColumnImage<T = any> extends SdGridMaterialBaseColumn<T>
|
|
|
62
102
|
height: number;
|
|
63
103
|
width: number;
|
|
64
104
|
};
|
|
105
|
+
editor?: {
|
|
106
|
+
change?: (rowData: T) => void;
|
|
107
|
+
hidden?: boolean | ((rowData: T) => boolean);
|
|
108
|
+
disabled?: boolean | ((rowData: T) => boolean);
|
|
109
|
+
required?: boolean | ((rowData: T) => boolean);
|
|
110
|
+
relatedColumns?: string[];
|
|
111
|
+
};
|
|
65
112
|
}
|
|
66
113
|
declare type SdGridMaterialNormalColumn<T> = Exclude<Exclude<SdGridMaterialColumn<T>, SdGridMaterialColumnChildren<T>>, SdGridMaterialColumnChildrenCol<T>>;
|
|
67
114
|
export declare type SdGridMaterialChildColumn<T = any> = (SdGridMaterialNormalColumn<T> & {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare type SdEditor<T = any> = SdEditorFocus<T> | SdEditorInline<T> | SdEditorPopup<T>;
|
|
2
|
+
export interface SdEditorBase<T = any> {
|
|
3
|
+
addable?: boolean;
|
|
4
|
+
disabled?: boolean | ((rowData: T) => boolean);
|
|
5
|
+
onAdd?: (rowData: T) => void;
|
|
6
|
+
onEdit?: (rowData: T) => void;
|
|
7
|
+
onSave?: (rowData: T) => void | Promise<void>;
|
|
8
|
+
validate?: (rowData: T) => string | Promise<string>;
|
|
9
|
+
limit?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface SdEditorFocus<T = any> extends SdEditorBase<T> {
|
|
12
|
+
type: 'focus';
|
|
13
|
+
editable?: boolean | ((rowData: T) => boolean);
|
|
14
|
+
}
|
|
15
|
+
export interface SdEditorInline<T = any> extends SdEditorBase<T> {
|
|
16
|
+
type: 'inline';
|
|
17
|
+
removable?: boolean | ((rowData: T) => boolean);
|
|
18
|
+
}
|
|
19
|
+
export interface SdEditorPopup<T = any> extends SdEditorBase<T> {
|
|
20
|
+
type: 'popup';
|
|
21
|
+
editable?: boolean | ((rowData: T) => boolean);
|
|
22
|
+
}
|
|
@@ -7,6 +7,7 @@ import { SdGridMaterialConfigOption } from './grid-config.model';
|
|
|
7
7
|
import { SdGridMaterialSubInformation } from './grid-sub-information.model';
|
|
8
8
|
import { SdGridMaterialSelection } from './grid-selection.model';
|
|
9
9
|
import { Observable } from 'rxjs';
|
|
10
|
+
import { SdEditor } from './grid-editor.model';
|
|
10
11
|
export declare type SdGridMaterialOption<T = any> = SdGridMaterialLocalOption<T> | SdGridMaterialServerOption<T>;
|
|
11
12
|
export interface SdGridMaterialRowData {
|
|
12
13
|
[key: string]: any;
|
|
@@ -29,16 +30,7 @@ interface SdGridMaterialBaseOption<T = any> {
|
|
|
29
30
|
showFirstLastButtons?: boolean;
|
|
30
31
|
hidden?: boolean;
|
|
31
32
|
};
|
|
32
|
-
editor?:
|
|
33
|
-
type?: 'inline' | 'popup';
|
|
34
|
-
addable?: boolean;
|
|
35
|
-
editable?: boolean;
|
|
36
|
-
disabled?: boolean | ((rowData: T) => boolean);
|
|
37
|
-
onAdd?: (rowData: T) => void;
|
|
38
|
-
onEdit?: (rowData: T) => void;
|
|
39
|
-
onSave?: (rowData: T) => void | Promise<void>;
|
|
40
|
-
validate?: (rowData: T) => string | Promise<string>;
|
|
41
|
-
};
|
|
33
|
+
editor?: SdEditor<T>;
|
|
42
34
|
reload?: SdGridMaterialReloadOption<T>;
|
|
43
35
|
export?: SdGridMaterialExportOption<T>;
|
|
44
36
|
config?: SdGridMaterialConfigOption<T>;
|
|
@@ -1,6 +1,51 @@
|
|
|
1
|
-
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
export interface EditorHandler {
|
|
3
|
+
[column: string]: {
|
|
4
|
+
visible?: boolean | 'create' | 'update';
|
|
5
|
+
items?: any[] | Observable<any[]>;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export interface SdItem {
|
|
2
9
|
isSelected?: boolean;
|
|
3
10
|
isExpanded?: boolean;
|
|
4
11
|
isExpanding?: boolean;
|
|
5
12
|
expandDetail?: any;
|
|
13
|
+
editorStatus?: 'create' | 'update';
|
|
14
|
+
editorHandlerRow?: EditorHandlerRow;
|
|
15
|
+
editorHandlerColumn?: {
|
|
16
|
+
[key: string]: {
|
|
17
|
+
visible: boolean;
|
|
18
|
+
errorMessage?: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface EditorHandlerRow {
|
|
23
|
+
visible: boolean;
|
|
24
|
+
status?: 'create' | 'update';
|
|
25
|
+
editable?: boolean;
|
|
26
|
+
removable?: boolean;
|
|
27
|
+
errorMessage?: string;
|
|
28
|
+
isInline?: boolean;
|
|
29
|
+
temporary?: any;
|
|
30
|
+
saving?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare type SdGridMaterialItem<T = any> = T & SdItem;
|
|
33
|
+
export interface GridItem {
|
|
34
|
+
blinker?: any;
|
|
35
|
+
originItem?: any;
|
|
36
|
+
temporary?: any;
|
|
37
|
+
isChecked?: boolean;
|
|
38
|
+
editingStatus?: 'create' | 'update';
|
|
39
|
+
editorHandler?: EditorHandler & {
|
|
40
|
+
disabled?: boolean;
|
|
41
|
+
errorMessage?: string;
|
|
42
|
+
saving?: boolean;
|
|
43
|
+
};
|
|
44
|
+
subInformation?: {
|
|
45
|
+
isOpened?: boolean;
|
|
46
|
+
isLoaded?: boolean;
|
|
47
|
+
isLoading?: boolean;
|
|
48
|
+
subItems?: any[];
|
|
49
|
+
};
|
|
50
|
+
[key: string]: any;
|
|
6
51
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import { SdGridMaterialColumn } from '../models/grid-column.model';
|
|
3
|
+
import { SdGridMaterialOption } from '../models/grid-option.model';
|
|
4
|
+
import { SdItem } from '../models/grid.model';
|
|
5
|
+
export declare class SdEditorHandlerColumnPipe implements PipeTransform {
|
|
6
|
+
transform(value: any, item: SdItem, column: SdGridMaterialColumn, gridOption: SdGridMaterialOption): boolean;
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import { SdGridMaterialOption } from '../models/grid-option.model';
|
|
3
|
+
import { EditorHandlerRow, SdItem } from '../models/grid.model';
|
|
4
|
+
export declare class SdEditorHandlerRowPipe implements PipeTransform {
|
|
5
|
+
transform(item: SdItem, gridOption: SdGridMaterialOption): EditorHandlerRow;
|
|
6
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import { SdGridMaterialItem, SdItem } from '../models/grid.model';
|
|
3
|
+
export declare class SdEditorValidatePipe implements PipeTransform {
|
|
4
|
+
private previous;
|
|
5
|
+
private delay;
|
|
6
|
+
transform(value: string, item: SdItem, validate: (item: SdGridMaterialItem) => string | Promise<string>): Promise<boolean>;
|
|
7
|
+
}
|
package/package.json
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"SdSelectModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":25,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":26,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdSelect"}],"exports":[{"__symbolic":"reference","name":"SdSelect"}],"providers":[]}]}],"members":{}},"SdSelect":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"sd-select","template":"<div class=\"d-flex align-items-center\">\r\n <mat-form-field class=\"sd-md\" [ngClass]=\"{'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-select #select [formControl]=\"formControl\" placeholder=\"{{placeholder || label}}\" multiple\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && (multiple ? formControl?.value?.length : formControl?.value)}\"\r\n [required]=\"isRequired\" *ngIf=\"multiple\">\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{standalone: true}\"\r\n (change)=\"onSelectAll()\">\r\n Tất cả</mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item[valueField]\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[displayField]\">\r\n {{item[displayField]}}\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-select #select [formControl]=\"formControl\" placeholder=\"{{placeholder || label}}\"\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && formControl?.value}\"\r\n [required]=\"isRequired\" *ngIf=\"!multiple\">\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item[valueField]\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[displayField]\">\r\n {{item[displayField]}}\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\" (click)=\"clear($event)\" matSuffix>cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{'This field is required' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator && !disableErrorMessage\">\r\n {{formControl?.errors?.customValidator}}\r\n </mat-error>\r\n </mat-form-field>\r\n</div>\r\n","styles":[":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:none}:host ::ng-deep .sd-selected .mat-select-arrow{border:none}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field mat-select.mat-select-disabled .mat-select-value{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}::ng-deep .sd-select-panel .mat-option.sd-filtered-input{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline{width:100%}::ng-deep .sd-select-panel .mat-option.sd-filtered-input mat-pseudo-checkbox{display:none}::ng-deep .mat-select-panel .mat-option.sd-filtered-input{height:auto}::ng-deep .sd-select-panel .mat-option.sd-filtered-input input{color:#000}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field-prefix .mat-icon{margin-right:0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding:10px 0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper .mat-form-field-outline{background-color:rgba(0,0,0,.04)}"]}]}],"members":{"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":14,"character":3},"arguments":["select"]}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"_disableErrorMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3},"arguments":["disableErrorMessage"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"valueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"displayField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":106,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":115,"character":3}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":119,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":124,"character":3}}]}],"_multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":3},"arguments":["multiple"]}]}],"limit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3}}]}],"_filtered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":138,"character":3},"arguments":["filtered"]}]}],"_selectAll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3},"arguments":["selectAll"]}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":147,"character":3}}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":148,"character":3}}]}],"sdSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":149,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":151,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/utility","name":"SdUtilityService","line":152,"character":28}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onSelectAll":[{"__symbolic":"method"}]}}},"origins":{"SdSelectModule":"./src/lib/select.module","SdSelect":"./src/lib/select.component"},"importAs":"@sd-angular/core/select"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"SdSelectModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":25,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":26,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdSelect"}],"exports":[{"__symbolic":"reference","name":"SdSelect"}],"providers":[]}]}],"members":{}},"SdSelect":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"sd-select","template":"<div class=\"d-flex align-items-center\">\r\n <mat-form-field class=\"sd-md\" [ngClass]=\"{'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-select #select [formControl]=\"formControl\" placeholder=\"{{placeholder || label}}\" multiple\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && (multiple ? formControl?.value?.length : formControl?.value)}\"\r\n [required]=\"isRequired\" *ngIf=\"multiple\">\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\" (keydown)=\"$event.stopPropagation()\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{standalone: true}\"\r\n (change)=\"onSelectAll()\">\r\n Tất cả</mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item[valueField]\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[displayField]\">\r\n {{item[displayField]}}\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-select #select [formControl]=\"formControl\" placeholder=\"{{placeholder || label}}\"\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && formControl?.value}\"\r\n [required]=\"isRequired\" *ngIf=\"!multiple\">\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\" (keydown)=\"$event.stopPropagation()\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item[valueField]\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[displayField]\">\r\n {{item[displayField]}}\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\" (click)=\"clear($event)\" matSuffix>cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{'This field is required' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator && !disableErrorMessage\">\r\n {{formControl?.errors?.customValidator}}\r\n </mat-error>\r\n </mat-form-field>\r\n</div>\r\n","styles":[":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:none}:host ::ng-deep .sd-selected .mat-select-arrow{border:none}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field mat-select.mat-select-disabled .mat-select-value{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}::ng-deep .sd-select-panel .mat-option.sd-filtered-input{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline{width:100%}::ng-deep .sd-select-panel .mat-option.sd-filtered-input mat-pseudo-checkbox{display:none}::ng-deep .mat-select-panel .mat-option.sd-filtered-input{height:auto}::ng-deep .sd-select-panel .mat-option.sd-filtered-input input{color:#000}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field-prefix .mat-icon{margin-right:0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding:10px 0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper .mat-form-field-outline{background-color:rgba(0,0,0,.04)}"]}]}],"members":{"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":14,"character":3},"arguments":["select"]}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"_disableErrorMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3},"arguments":["disableErrorMessage"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"valueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"displayField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":106,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":115,"character":3}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":119,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":124,"character":3}}]}],"_multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":3},"arguments":["multiple"]}]}],"limit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3}}]}],"_filtered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":138,"character":3},"arguments":["filtered"]}]}],"_selectAll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3},"arguments":["selectAll"]}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":147,"character":3}}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":148,"character":3}}]}],"sdSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":149,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":151,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/utility","name":"SdUtilityService","line":152,"character":28}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onSelectAll":[{"__symbolic":"method"}]}}},"origins":{"SdSelectModule":"./src/lib/select.module","SdSelect":"./src/lib/select.component"},"importAs":"@sd-angular/core/select"}
|