@c10t/nice-component-library 0.0.11 → 0.0.12-b
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/cva-multi-select-autocomplete.d.ts +6 -5
- package/components/tree/cva-flat-tree.component.d.ts +6 -4
- package/fesm2022/c10t-nice-component-library.mjs +119 -90
- package/fesm2022/c10t-nice-component-library.mjs.map +1 -1
- package/models/oauth/oAuth2AuthenticationDto.d.ts +9 -0
- package/package.json +1 -1
|
@@ -30,20 +30,21 @@ export declare class CvaMultiSelectAutocomplete implements ControlValueAccessor,
|
|
|
30
30
|
selectedOptionDataChange: EventEmitter<SelectModel[]>;
|
|
31
31
|
valueOptionRef: SelectModel[];
|
|
32
32
|
isFormControl: boolean;
|
|
33
|
+
searchInputRef: any;
|
|
33
34
|
formControl: AbstractControl | undefined;
|
|
34
35
|
filteredOptions: SelectModel[];
|
|
35
36
|
selectAllChecked: boolean;
|
|
36
|
-
_displayString: string;
|
|
37
|
-
get displayString(): string;
|
|
38
37
|
labelCount: number;
|
|
39
38
|
cdkVirtualScrollViewPort: CdkVirtualScrollViewport | undefined;
|
|
40
|
-
get NsValidator(): typeof ValidatorService;
|
|
41
39
|
constructor(translateService: TranslateService, injector: Injector, ngControl: NgControl);
|
|
40
|
+
_displayString: string;
|
|
41
|
+
get displayString(): string;
|
|
42
|
+
get NsValidator(): typeof ValidatorService;
|
|
43
|
+
get selectedValue(): any[] | any;
|
|
44
|
+
set selectedValue(val: any[] | any);
|
|
42
45
|
ngOnInit(): void;
|
|
43
46
|
getRequired(): boolean;
|
|
44
47
|
callValidator(): void;
|
|
45
|
-
get selectedValue(): any[] | any;
|
|
46
|
-
set selectedValue(val: any[] | any);
|
|
47
48
|
propagateChange: (_: any) => void;
|
|
48
49
|
writeValue(obj: any[] | any): void;
|
|
49
50
|
registerOnChange(fn: any): void;
|
|
@@ -50,10 +50,11 @@ export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnIni
|
|
|
50
50
|
selectionChange: EventEmitter<any>;
|
|
51
51
|
isFormControl: boolean;
|
|
52
52
|
formControl: AbstractControl | undefined;
|
|
53
|
+
mapIndexes: Map<any, any>;
|
|
53
54
|
chooseVirtualScroll?: CdkVirtualScrollViewport;
|
|
54
55
|
selectedVirtualScroll?: CdkVirtualScrollViewport;
|
|
55
|
-
get NsValiator(): typeof ValidatorService;
|
|
56
56
|
constructor(translateService: TranslateService, injector: Injector, cdr: ChangeDetectorRef, ngControl: NgControl);
|
|
57
|
+
get NsValiator(): typeof ValidatorService;
|
|
57
58
|
setSelectedNode(): void;
|
|
58
59
|
setDataSourceOrigin(): void;
|
|
59
60
|
ngOnInit(): void;
|
|
@@ -66,9 +67,6 @@ export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnIni
|
|
|
66
67
|
checkIsView(isView: boolean | (() => boolean)): boolean;
|
|
67
68
|
ngOnChanges(simpleChanges: SimpleChanges): void;
|
|
68
69
|
transformer: (node: FlatTreeNodeModel, level: number) => FlatTreeNodeModel;
|
|
69
|
-
private _getLevel;
|
|
70
|
-
private _isExpandable;
|
|
71
|
-
private _getChildren;
|
|
72
70
|
propagateChange: (_: any) => void;
|
|
73
71
|
registerOnChange(fn: any): void;
|
|
74
72
|
registerOnTouched(fn: any): void;
|
|
@@ -91,6 +89,10 @@ export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnIni
|
|
|
91
89
|
expandTreeDataSource(treeControl: FlatTreeControl<FlatTreeNodeModel>, expandProperty: 'isExpanded' | 'isFilterExpanded'): void;
|
|
92
90
|
onLeafNodeClick(node: FlatTreeNodeModel): void;
|
|
93
91
|
onParentNodeClick(node: FlatTreeNodeModel): void;
|
|
92
|
+
toggleNodeCheck(node: FlatTreeNodeModel, checked: boolean): void;
|
|
93
|
+
private _getLevel;
|
|
94
|
+
private _isExpandable;
|
|
95
|
+
private _getChildren;
|
|
94
96
|
static ɵfac: i0.ɵɵFactoryDeclaration<CvaFlatTreeComponent, [null, null, null, { optional: true; self: true; }]>;
|
|
95
97
|
static ɵcmp: i0.ɵɵComponentDeclaration<CvaFlatTreeComponent, "cva-flat-tree", never, { "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "value": { "alias": "value"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "isView": { "alias": "isView"; "required": false; }; "isDisplayChooseTreeOnly": { "alias": "isDisplayChooseTreeOnly"; "required": false; }; "isHideCheckbox": { "alias": "isHideCheckbox"; "required": false; }; "isCollapseSelected": { "alias": "isCollapseSelected"; "required": false; }; "selectedLabelTitle": { "alias": "selectedLabelTitle"; "required": false; }; "viewHeight": { "alias": "viewHeight"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "percentOfLabelOutside": { "alias": "percentOfLabelOutside"; "required": false; }; "treeConfig": { "alias": "treeConfig"; "required": false; }; "isSearchOutSide": { "alias": "isSearchOutSide"; "required": false; }; "searchTextOutSide": { "alias": "searchTextOutSide"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "fullDatasource": { "alias": "fullDatasource"; "required": false; }; "isFormControl": { "alias": "isFormControl"; "required": false; }; }, { "selectionChange": "selectionChange"; }, never, never, false, never>;
|
|
96
98
|
}
|
|
@@ -238,6 +238,15 @@ class OAuth2AuthenticationDto {
|
|
|
238
238
|
userAuthentication = null;
|
|
239
239
|
authorities = null;
|
|
240
240
|
name = null;
|
|
241
|
+
orgId = null;
|
|
242
|
+
orgCode = null;
|
|
243
|
+
orgName = null;
|
|
244
|
+
orgType = null;
|
|
245
|
+
orgForm = null;
|
|
246
|
+
orgPath = null;
|
|
247
|
+
orgIsApproveVo = null;
|
|
248
|
+
sapId = null;
|
|
249
|
+
voAuthentication = null;
|
|
241
250
|
}
|
|
242
251
|
|
|
243
252
|
class Authority {
|
|
@@ -3939,19 +3948,13 @@ class CvaMultiSelectAutocomplete {
|
|
|
3939
3948
|
valueOptionRef = [];
|
|
3940
3949
|
// Chỉ bằng false khi trong NsSmartTable thôi nhé @@
|
|
3941
3950
|
isFormControl = true;
|
|
3951
|
+
searchInputRef;
|
|
3942
3952
|
// Cái này là để gắn khi nó là FormControl trong 1 FormGroup
|
|
3943
3953
|
formControl;
|
|
3944
3954
|
filteredOptions = [];
|
|
3945
3955
|
selectAllChecked = false;
|
|
3946
|
-
_displayString = '';
|
|
3947
|
-
get displayString() {
|
|
3948
|
-
return this._displayString;
|
|
3949
|
-
}
|
|
3950
3956
|
labelCount = 1;
|
|
3951
3957
|
cdkVirtualScrollViewPort;
|
|
3952
|
-
get NsValidator() {
|
|
3953
|
-
return ValidatorService;
|
|
3954
|
-
}
|
|
3955
3958
|
constructor(translateService, injector, ngControl) {
|
|
3956
3959
|
this.translateService = translateService;
|
|
3957
3960
|
this.injector = injector;
|
|
@@ -3959,6 +3962,19 @@ class CvaMultiSelectAutocomplete {
|
|
|
3959
3962
|
ngControl.valueAccessor = this;
|
|
3960
3963
|
}
|
|
3961
3964
|
}
|
|
3965
|
+
_displayString = '';
|
|
3966
|
+
get displayString() {
|
|
3967
|
+
return this._displayString;
|
|
3968
|
+
}
|
|
3969
|
+
get NsValidator() {
|
|
3970
|
+
return ValidatorService;
|
|
3971
|
+
}
|
|
3972
|
+
get selectedValue() {
|
|
3973
|
+
return this.value;
|
|
3974
|
+
}
|
|
3975
|
+
set selectedValue(val) {
|
|
3976
|
+
// this.writeValue(val); // Đọc comment bên dưới matSelectionChange
|
|
3977
|
+
}
|
|
3962
3978
|
ngOnInit() {
|
|
3963
3979
|
this.callValidator();
|
|
3964
3980
|
}
|
|
@@ -3988,27 +4004,8 @@ class CvaMultiSelectAutocomplete {
|
|
|
3988
4004
|
this.formControl.setValue(this.value);
|
|
3989
4005
|
}
|
|
3990
4006
|
this.formControl.updateValueAndValidity();
|
|
3991
|
-
// const ngControl = this.injector.get(NgControl);
|
|
3992
|
-
// if (ngControl && ngControl.control && this.formControl.errors) {
|
|
3993
|
-
// ngControl.control.setErrors(this.formControl.errors);
|
|
3994
|
-
// }
|
|
3995
|
-
// if (this.formControl.valid) {
|
|
3996
|
-
// if (this.getRequired()) {
|
|
3997
|
-
// if (this.value === undefined || this.value === null || this.value === '' || (this.multiple && this.value.length === 0)){
|
|
3998
|
-
// this.formControl.setErrors({required: true});
|
|
3999
|
-
// }
|
|
4000
|
-
// }
|
|
4001
|
-
//
|
|
4002
|
-
// this.formControl.markAllAsTouched();
|
|
4003
|
-
// }
|
|
4004
4007
|
}
|
|
4005
4008
|
}
|
|
4006
|
-
get selectedValue() {
|
|
4007
|
-
return this.value;
|
|
4008
|
-
}
|
|
4009
|
-
set selectedValue(val) {
|
|
4010
|
-
// this.writeValue(val); // Đọc comment bên dưới matSelectionChange
|
|
4011
|
-
}
|
|
4012
4009
|
propagateChange = (_) => {
|
|
4013
4010
|
/*NON-EMPTY FOR COMPILE*/
|
|
4014
4011
|
};
|
|
@@ -4034,16 +4031,7 @@ class CvaMultiSelectAutocomplete {
|
|
|
4034
4031
|
this.selectedOptionDataChange.emit(this.valueOptionRef);
|
|
4035
4032
|
}
|
|
4036
4033
|
this._displayString = this.onDisplayString();
|
|
4037
|
-
|
|
4038
|
-
}
|
|
4039
|
-
// private emitSelectedData(val: MatSelectChange) {
|
|
4040
|
-
// if (val.value != null && val.value != undefined) {
|
|
4041
|
-
// const dataArr: SelectModel[] = val.source._selectionModel.selected.map(matOption => {
|
|
4042
|
-
// return this.options[Number(matOption._getHostElement().getAttribute('data-optionIndex'))];
|
|
4043
|
-
// });
|
|
4044
|
-
// this.selectedOptionDataChange.emit(dataArr);
|
|
4045
|
-
// }
|
|
4046
|
-
// }
|
|
4034
|
+
}
|
|
4047
4035
|
registerOnChange(fn) {
|
|
4048
4036
|
this.propagateChange = fn;
|
|
4049
4037
|
}
|
|
@@ -4055,13 +4043,9 @@ class CvaMultiSelectAutocomplete {
|
|
|
4055
4043
|
this.options = simpleChanges.options.currentValue;
|
|
4056
4044
|
this.filteredOptions = this.options;
|
|
4057
4045
|
}
|
|
4058
|
-
|
|
4059
|
-
if (this.value != null && this.value != undefined) {
|
|
4046
|
+
if (this.value != null) {
|
|
4060
4047
|
this.writeValue(this.value);
|
|
4061
4048
|
}
|
|
4062
|
-
// else if (this.formControl.value) {
|
|
4063
|
-
// this.writeValue(this.formControl.value);
|
|
4064
|
-
// }
|
|
4065
4049
|
}
|
|
4066
4050
|
toggleSelectAll(val) {
|
|
4067
4051
|
if (val.checked) {
|
|
@@ -4204,9 +4188,16 @@ class CvaMultiSelectAutocomplete {
|
|
|
4204
4188
|
}
|
|
4205
4189
|
}
|
|
4206
4190
|
openChange($event) {
|
|
4207
|
-
if ($event
|
|
4208
|
-
this.cdkVirtualScrollViewPort
|
|
4209
|
-
|
|
4191
|
+
if ($event) {
|
|
4192
|
+
if (this.cdkVirtualScrollViewPort) {
|
|
4193
|
+
this.cdkVirtualScrollViewPort.scrollToIndex(0);
|
|
4194
|
+
this.cdkVirtualScrollViewPort.checkViewportSize();
|
|
4195
|
+
}
|
|
4196
|
+
setTimeout(() => {
|
|
4197
|
+
if (this.searchInputRef?.nativeElement) {
|
|
4198
|
+
this.searchInputRef.nativeElement.focus();
|
|
4199
|
+
}
|
|
4200
|
+
}, 300);
|
|
4210
4201
|
}
|
|
4211
4202
|
}
|
|
4212
4203
|
getItemSize() {
|
|
@@ -4218,7 +4209,7 @@ class CvaMultiSelectAutocomplete {
|
|
|
4218
4209
|
return height > 200 ? 200 : height;
|
|
4219
4210
|
}
|
|
4220
4211
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaMultiSelectAutocomplete, deps: [{ token: i1.TranslateService }, { token: i0.Injector }, { token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
4221
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: CvaMultiSelectAutocomplete, isStandalone: false, selector: "cva-multi-select-autocomplete", inputs: { placeholder: "placeholder", label: "label", hint: "hint", value: "value", options: "options", disabled: "disabled", errorMessages: "errorMessages", multiple: "multiple", required: "required", isTree: "isTree", treeSymbol: "treeSymbol", sizeOfItemsInListByPixels: "sizeOfItemsInListByPixels", isLabelOutside: "isLabelOutside", isFloatLabel: "isFloatLabel", percentOfLabelOutside: "percentOfLabelOutside", isFormControl: "isFormControl" }, outputs: { selectionChange: "selectionChange", selectedOptionDataChange: "selectedOptionDataChange" }, viewQueries: [{ propertyName: "cdkVirtualScrollViewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
4212
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: CvaMultiSelectAutocomplete, isStandalone: false, selector: "cva-multi-select-autocomplete", inputs: { placeholder: "placeholder", label: "label", hint: "hint", value: "value", options: "options", disabled: "disabled", errorMessages: "errorMessages", multiple: "multiple", required: "required", isTree: "isTree", treeSymbol: "treeSymbol", sizeOfItemsInListByPixels: "sizeOfItemsInListByPixels", isLabelOutside: "isLabelOutside", isFloatLabel: "isFloatLabel", percentOfLabelOutside: "percentOfLabelOutside", isFormControl: "isFormControl" }, outputs: { selectionChange: "selectionChange", selectedOptionDataChange: "selectedOptionDataChange" }, viewQueries: [{ propertyName: "searchInputRef", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "cdkVirtualScrollViewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
4222
4213
|
<!-- css labelOutside trong base.theme-->
|
|
4223
4214
|
<div class="cva-multi-select-autocomplete"
|
|
4224
4215
|
[ngClass]="{'labelOutside': !!isLabelOutside, 'float_label': !!isFloatLabel && !isLabelOutside}"
|
|
@@ -4425,6 +4416,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
|
|
|
4425
4416
|
type: Output
|
|
4426
4417
|
}], isFormControl: [{
|
|
4427
4418
|
type: Input
|
|
4419
|
+
}], searchInputRef: [{
|
|
4420
|
+
type: ViewChild,
|
|
4421
|
+
args: ['searchInput']
|
|
4428
4422
|
}], cdkVirtualScrollViewPort: [{
|
|
4429
4423
|
type: ViewChild,
|
|
4430
4424
|
args: [CdkVirtualScrollViewport, { static: false }]
|
|
@@ -7381,11 +7375,9 @@ class CvaFlatTreeComponent {
|
|
|
7381
7375
|
isFormControl = true;
|
|
7382
7376
|
// Cái này là để gắn khi nó là FormControl trong 1 FormGroup
|
|
7383
7377
|
formControl;
|
|
7378
|
+
mapIndexes = new Map();
|
|
7384
7379
|
chooseVirtualScroll;
|
|
7385
7380
|
selectedVirtualScroll;
|
|
7386
|
-
get NsValiator() {
|
|
7387
|
-
return ValidatorService;
|
|
7388
|
-
}
|
|
7389
7381
|
constructor(translateService, injector, cdr, ngControl) {
|
|
7390
7382
|
this.translateService = translateService;
|
|
7391
7383
|
this.injector = injector;
|
|
@@ -7406,6 +7398,9 @@ class CvaFlatTreeComponent {
|
|
|
7406
7398
|
this.selectedDataSource = new MatTreeFlatDataSource(this.selectedTreeControl, this.selectedTreeFlattener);
|
|
7407
7399
|
this.setSelectedNode();
|
|
7408
7400
|
}
|
|
7401
|
+
get NsValiator() {
|
|
7402
|
+
return ValidatorService;
|
|
7403
|
+
}
|
|
7409
7404
|
setSelectedNode() {
|
|
7410
7405
|
this.selectedDataSource.data = this.selectedFullDataSource;
|
|
7411
7406
|
if (this.selectedVirtualScroll) {
|
|
@@ -7537,9 +7532,6 @@ class CvaFlatTreeComponent {
|
|
|
7537
7532
|
node.checked = !!node.checked;
|
|
7538
7533
|
return node;
|
|
7539
7534
|
};
|
|
7540
|
-
_getLevel = (node) => node.level;
|
|
7541
|
-
_isExpandable = (node) => FlatTreeService.hasChild(node);
|
|
7542
|
-
_getChildren = (node) => of(node.children ? node.children : []);
|
|
7543
7535
|
propagateChange = (_) => {
|
|
7544
7536
|
/*NON-EMPTY FOR COMPILE*/
|
|
7545
7537
|
};
|
|
@@ -7557,14 +7549,24 @@ class CvaFlatTreeComponent {
|
|
|
7557
7549
|
// if (this.multiple) {
|
|
7558
7550
|
this.value = obj;
|
|
7559
7551
|
// }
|
|
7552
|
+
console.log('writeValue_0: ', new Date());
|
|
7553
|
+
this.mapIndexes = new Map();
|
|
7554
|
+
for (let i = 0; i < this.fullDataTreeControl.dataNodes.length; i++) {
|
|
7555
|
+
this.mapIndexes.set(this.fullDataTreeControl.dataNodes[i].value, i);
|
|
7556
|
+
}
|
|
7557
|
+
console.log('writeValue_1: ', new Date());
|
|
7560
7558
|
this.checkedDefaultValue();
|
|
7559
|
+
console.log('writeValue_2: ', new Date());
|
|
7561
7560
|
this.updateSelectAll();
|
|
7561
|
+
console.log('writeValue_3: ', new Date());
|
|
7562
7562
|
this.updateSelectedTree();
|
|
7563
|
+
console.log('writeValue_4: ', new Date());
|
|
7563
7564
|
this.propagateChange(this.value);
|
|
7564
7565
|
this.callValidator();
|
|
7565
7566
|
if (this.isView) {
|
|
7566
7567
|
this.selectedTreeControl.expandAll();
|
|
7567
7568
|
}
|
|
7569
|
+
console.log('writeValue_5: ', new Date());
|
|
7568
7570
|
this.selectionChange.emit(Array.from(this.valueObjRef.values()));
|
|
7569
7571
|
}
|
|
7570
7572
|
}
|
|
@@ -7575,42 +7577,22 @@ class CvaFlatTreeComponent {
|
|
|
7575
7577
|
this.expandTreeDataSource(this.selectedTreeControl, 'isExpanded');
|
|
7576
7578
|
}
|
|
7577
7579
|
checkedDefaultValue() {
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7588
|
-
|
|
7589
|
-
rootNode.checked = false;
|
|
7590
|
-
if (this.valueObjRef.has(rootNode.value)) {
|
|
7591
|
-
this.valueObjRef.delete(rootNode.value);
|
|
7592
|
-
}
|
|
7593
|
-
this.selectedTreeChange(rootNode);
|
|
7594
|
-
}
|
|
7595
|
-
continue;
|
|
7580
|
+
this.valueObjRef.clear();
|
|
7581
|
+
const valueSet = new Set(this.value);
|
|
7582
|
+
for (const node of this.fullDataTreeControl.dataNodes) {
|
|
7583
|
+
const isLeaf = !FlatTreeService.hasChild(node);
|
|
7584
|
+
node.checked = isLeaf && valueSet.has(node.value);
|
|
7585
|
+
if (isLeaf && node.checked) {
|
|
7586
|
+
this.valueObjRef.set(node.value, node);
|
|
7587
|
+
}
|
|
7588
|
+
const orgNodeIndex = this.mapIndexes.get(node.value);
|
|
7589
|
+
if (orgNodeIndex !== undefined) {
|
|
7590
|
+
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = node.checked;
|
|
7596
7591
|
}
|
|
7597
|
-
allChildNode = this.getAllChildNode(this.fullDataTreeControl, rootNode);
|
|
7598
|
-
allChildNode.forEach(childNode => {
|
|
7599
|
-
if (!FlatTreeService.hasChild(childNode)) {
|
|
7600
|
-
childNode.checked = this.value.includes(childNode.value);
|
|
7601
|
-
if (!this.valueObjRef.has(childNode.value) && childNode.checked) {
|
|
7602
|
-
this.valueObjRef.set(childNode.value, childNode);
|
|
7603
|
-
}
|
|
7604
|
-
else if (this.valueObjRef.has(childNode.value) && !childNode.checked) {
|
|
7605
|
-
this.valueObjRef.delete(childNode.value);
|
|
7606
|
-
}
|
|
7607
|
-
this.selectedTreeChange(childNode);
|
|
7608
|
-
}
|
|
7609
|
-
});
|
|
7610
7592
|
}
|
|
7611
7593
|
}
|
|
7612
7594
|
getAllChildNode(treeControl, node) {
|
|
7613
|
-
const index =
|
|
7595
|
+
const index = this.mapIndexes.get(node.value);
|
|
7614
7596
|
let sameLevelNextIndex = -1;
|
|
7615
7597
|
for (let i = index + 1; i < treeControl.dataNodes.length; i++) {
|
|
7616
7598
|
if (node.level >= treeControl.dataNodes[i].level) {
|
|
@@ -7635,7 +7617,7 @@ class CvaFlatTreeComponent {
|
|
|
7635
7617
|
node.checked = checked;
|
|
7636
7618
|
let indexLeaf = -1;
|
|
7637
7619
|
// update origin node
|
|
7638
|
-
let orgNodeIndex = this.
|
|
7620
|
+
let orgNodeIndex = this.mapIndexes.get(node.value);
|
|
7639
7621
|
/*this.getNodeInFullDataSource(child)*/
|
|
7640
7622
|
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = checked;
|
|
7641
7623
|
if (orgNodeIndex > -1 && !checked) {
|
|
@@ -7662,7 +7644,7 @@ class CvaFlatTreeComponent {
|
|
|
7662
7644
|
}
|
|
7663
7645
|
}
|
|
7664
7646
|
else {
|
|
7665
|
-
orgNodeIndex = this.
|
|
7647
|
+
orgNodeIndex = this.mapIndexes.get(child.value);
|
|
7666
7648
|
if (orgNodeIndex > -1) {
|
|
7667
7649
|
this.fullDataTreeControl.dataNodes[orgNodeIndex].isExpanded = false;
|
|
7668
7650
|
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = this.fullDataTreeControl.dataNodes[orgNodeIndex].children?.every(n => n.checked);
|
|
@@ -7711,7 +7693,7 @@ class CvaFlatTreeComponent {
|
|
|
7711
7693
|
if ((node.display && !this.checkDisabledNode(node)) || !!isSelectedChange) {
|
|
7712
7694
|
node.checked = checked;
|
|
7713
7695
|
// update origin node
|
|
7714
|
-
const orgNodeIndex = this.
|
|
7696
|
+
const orgNodeIndex = this.mapIndexes.get(node.value);
|
|
7715
7697
|
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = checked;
|
|
7716
7698
|
if (checked) {
|
|
7717
7699
|
if (this.multiple) {
|
|
@@ -7887,6 +7869,53 @@ class CvaFlatTreeComponent {
|
|
|
7887
7869
|
this.checkParentNode(true, node);
|
|
7888
7870
|
}
|
|
7889
7871
|
}
|
|
7872
|
+
toggleNodeCheck(node, checked) {
|
|
7873
|
+
const isLeaf = !FlatTreeService.hasChild(node);
|
|
7874
|
+
console.log('1: ', new Date());
|
|
7875
|
+
// Gọi 1 lần duy nhất nếu là parent
|
|
7876
|
+
const descendants = isLeaf ? [] : this.fullDataTreeControl.getDescendants(node);
|
|
7877
|
+
const affectedNodes = isLeaf ? [node] : descendants.filter(n => !FlatTreeService.hasChild(n));
|
|
7878
|
+
console.log('2: ', new Date());
|
|
7879
|
+
for (const leaf of affectedNodes) {
|
|
7880
|
+
if (!leaf.display || this.checkDisabledNode(leaf))
|
|
7881
|
+
continue;
|
|
7882
|
+
const index = this.value.indexOf(leaf.value);
|
|
7883
|
+
if (checked && index < 0) {
|
|
7884
|
+
this.value.push(leaf.value);
|
|
7885
|
+
this.valueObjRef.set(leaf.value, leaf);
|
|
7886
|
+
leaf.checked = true;
|
|
7887
|
+
}
|
|
7888
|
+
if (!checked && index >= 0) {
|
|
7889
|
+
this.value.splice(index, 1);
|
|
7890
|
+
this.valueObjRef.delete(leaf.value);
|
|
7891
|
+
leaf.checked = false;
|
|
7892
|
+
}
|
|
7893
|
+
const orgNodeIndex = this.mapIndexes.get(leaf.value);
|
|
7894
|
+
if (orgNodeIndex !== undefined) {
|
|
7895
|
+
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = leaf.checked;
|
|
7896
|
+
}
|
|
7897
|
+
}
|
|
7898
|
+
console.log('3: ', new Date());
|
|
7899
|
+
// Nếu node là cha → cập nhật isExpanded
|
|
7900
|
+
if (!isLeaf) {
|
|
7901
|
+
node.checked = checked;
|
|
7902
|
+
const orgNodeIndex = this.mapIndexes.get(node.value);
|
|
7903
|
+
if (orgNodeIndex !== undefined) {
|
|
7904
|
+
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = checked;
|
|
7905
|
+
this.fullDataTreeControl.dataNodes[orgNodeIndex].isExpanded = false;
|
|
7906
|
+
}
|
|
7907
|
+
}
|
|
7908
|
+
else {
|
|
7909
|
+
node.checked = checked;
|
|
7910
|
+
}
|
|
7911
|
+
console.log('4: ', new Date());
|
|
7912
|
+
this.writeValue(this.value);
|
|
7913
|
+
console.log('5: ', new Date());
|
|
7914
|
+
this.cdr.detectChanges();
|
|
7915
|
+
}
|
|
7916
|
+
_getLevel = (node) => node.level;
|
|
7917
|
+
_isExpandable = (node) => FlatTreeService.hasChild(node);
|
|
7918
|
+
_getChildren = (node) => of(node.children ? node.children : []);
|
|
7890
7919
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaFlatTreeComponent, deps: [{ token: i1.TranslateService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
7891
7920
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: CvaFlatTreeComponent, isStandalone: false, selector: "cva-flat-tree", inputs: { label: "label", required: "required", value: "value", multiple: "multiple", disabled: "disabled", isView: "isView", isDisplayChooseTreeOnly: "isDisplayChooseTreeOnly", isHideCheckbox: "isHideCheckbox", isCollapseSelected: "isCollapseSelected", selectedLabelTitle: "selectedLabelTitle", viewHeight: "viewHeight", itemSize: "itemSize", percentOfLabelOutside: "percentOfLabelOutside", treeConfig: "treeConfig", isSearchOutSide: "isSearchOutSide", searchTextOutSide: "searchTextOutSide", errorMessages: "errorMessages", fullDatasource: "fullDatasource", isFormControl: "isFormControl" }, outputs: { selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "chooseVirtualScroll", first: true, predicate: ["chooseAreaScrollViewport"], descendants: true }, { propertyName: "selectedVirtualScroll", first: true, predicate: ["selectedScrollViewport"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
7892
7921
|
<div class="cva-flat-tree labelOutside"
|
|
@@ -7935,8 +7964,8 @@ class CvaFlatTreeComponent {
|
|
|
7935
7964
|
(toggle)="toggleTreeControl(treeControl, node)"
|
|
7936
7965
|
(onParentNodeClick)="onParentNodeClick(node)"
|
|
7937
7966
|
(onLeafNodeClick)="onLeafNodeClick(node)"
|
|
7938
|
-
(ngModelParentChange)="
|
|
7939
|
-
(ngModelLeafChange)="
|
|
7967
|
+
(ngModelParentChange)="toggleNodeCheck(node, $event)"
|
|
7968
|
+
(ngModelLeafChange)="toggleNodeCheck(node, $event)">
|
|
7940
7969
|
</cva-flat-tree-node-left>
|
|
7941
7970
|
</ng-container>
|
|
7942
7971
|
</cdk-virtual-scroll-viewport>
|
|
@@ -8027,8 +8056,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
|
|
|
8027
8056
|
(toggle)="toggleTreeControl(treeControl, node)"
|
|
8028
8057
|
(onParentNodeClick)="onParentNodeClick(node)"
|
|
8029
8058
|
(onLeafNodeClick)="onLeafNodeClick(node)"
|
|
8030
|
-
(ngModelParentChange)="
|
|
8031
|
-
(ngModelLeafChange)="
|
|
8059
|
+
(ngModelParentChange)="toggleNodeCheck(node, $event)"
|
|
8060
|
+
(ngModelLeafChange)="toggleNodeCheck(node, $event)">
|
|
8032
8061
|
</cva-flat-tree-node-left>
|
|
8033
8062
|
</ng-container>
|
|
8034
8063
|
</cdk-virtual-scroll-viewport>
|