@c10t/nice-component-library 0.0.11 → 0.0.12-a
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.
|
@@ -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
|
}
|
|
@@ -7381,11 +7381,9 @@ class CvaFlatTreeComponent {
|
|
|
7381
7381
|
isFormControl = true;
|
|
7382
7382
|
// Cái này là để gắn khi nó là FormControl trong 1 FormGroup
|
|
7383
7383
|
formControl;
|
|
7384
|
+
mapIndexes = new Map();
|
|
7384
7385
|
chooseVirtualScroll;
|
|
7385
7386
|
selectedVirtualScroll;
|
|
7386
|
-
get NsValiator() {
|
|
7387
|
-
return ValidatorService;
|
|
7388
|
-
}
|
|
7389
7387
|
constructor(translateService, injector, cdr, ngControl) {
|
|
7390
7388
|
this.translateService = translateService;
|
|
7391
7389
|
this.injector = injector;
|
|
@@ -7406,6 +7404,9 @@ class CvaFlatTreeComponent {
|
|
|
7406
7404
|
this.selectedDataSource = new MatTreeFlatDataSource(this.selectedTreeControl, this.selectedTreeFlattener);
|
|
7407
7405
|
this.setSelectedNode();
|
|
7408
7406
|
}
|
|
7407
|
+
get NsValiator() {
|
|
7408
|
+
return ValidatorService;
|
|
7409
|
+
}
|
|
7409
7410
|
setSelectedNode() {
|
|
7410
7411
|
this.selectedDataSource.data = this.selectedFullDataSource;
|
|
7411
7412
|
if (this.selectedVirtualScroll) {
|
|
@@ -7537,9 +7538,6 @@ class CvaFlatTreeComponent {
|
|
|
7537
7538
|
node.checked = !!node.checked;
|
|
7538
7539
|
return node;
|
|
7539
7540
|
};
|
|
7540
|
-
_getLevel = (node) => node.level;
|
|
7541
|
-
_isExpandable = (node) => FlatTreeService.hasChild(node);
|
|
7542
|
-
_getChildren = (node) => of(node.children ? node.children : []);
|
|
7543
7541
|
propagateChange = (_) => {
|
|
7544
7542
|
/*NON-EMPTY FOR COMPILE*/
|
|
7545
7543
|
};
|
|
@@ -7557,14 +7555,24 @@ class CvaFlatTreeComponent {
|
|
|
7557
7555
|
// if (this.multiple) {
|
|
7558
7556
|
this.value = obj;
|
|
7559
7557
|
// }
|
|
7558
|
+
console.log('writeValue_0: ', new Date());
|
|
7559
|
+
this.mapIndexes = new Map();
|
|
7560
|
+
for (let i = 0; i < this.fullDataTreeControl.dataNodes.length; i++) {
|
|
7561
|
+
this.mapIndexes.set(this.fullDataTreeControl.dataNodes[i].value, i);
|
|
7562
|
+
}
|
|
7563
|
+
console.log('writeValue_1: ', new Date());
|
|
7560
7564
|
this.checkedDefaultValue();
|
|
7565
|
+
console.log('writeValue_2: ', new Date());
|
|
7561
7566
|
this.updateSelectAll();
|
|
7567
|
+
console.log('writeValue_3: ', new Date());
|
|
7562
7568
|
this.updateSelectedTree();
|
|
7569
|
+
console.log('writeValue_4: ', new Date());
|
|
7563
7570
|
this.propagateChange(this.value);
|
|
7564
7571
|
this.callValidator();
|
|
7565
7572
|
if (this.isView) {
|
|
7566
7573
|
this.selectedTreeControl.expandAll();
|
|
7567
7574
|
}
|
|
7575
|
+
console.log('writeValue_5: ', new Date());
|
|
7568
7576
|
this.selectionChange.emit(Array.from(this.valueObjRef.values()));
|
|
7569
7577
|
}
|
|
7570
7578
|
}
|
|
@@ -7575,42 +7583,22 @@ class CvaFlatTreeComponent {
|
|
|
7575
7583
|
this.expandTreeDataSource(this.selectedTreeControl, 'isExpanded');
|
|
7576
7584
|
}
|
|
7577
7585
|
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;
|
|
7586
|
+
this.valueObjRef.clear();
|
|
7587
|
+
const valueSet = new Set(this.value);
|
|
7588
|
+
for (const node of this.fullDataTreeControl.dataNodes) {
|
|
7589
|
+
const isLeaf = !FlatTreeService.hasChild(node);
|
|
7590
|
+
node.checked = isLeaf && valueSet.has(node.value);
|
|
7591
|
+
if (isLeaf && node.checked) {
|
|
7592
|
+
this.valueObjRef.set(node.value, node);
|
|
7593
|
+
}
|
|
7594
|
+
const orgNodeIndex = this.mapIndexes.get(node.value);
|
|
7595
|
+
if (orgNodeIndex !== undefined) {
|
|
7596
|
+
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = node.checked;
|
|
7596
7597
|
}
|
|
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
7598
|
}
|
|
7611
7599
|
}
|
|
7612
7600
|
getAllChildNode(treeControl, node) {
|
|
7613
|
-
const index =
|
|
7601
|
+
const index = this.mapIndexes.get(node.value);
|
|
7614
7602
|
let sameLevelNextIndex = -1;
|
|
7615
7603
|
for (let i = index + 1; i < treeControl.dataNodes.length; i++) {
|
|
7616
7604
|
if (node.level >= treeControl.dataNodes[i].level) {
|
|
@@ -7635,7 +7623,7 @@ class CvaFlatTreeComponent {
|
|
|
7635
7623
|
node.checked = checked;
|
|
7636
7624
|
let indexLeaf = -1;
|
|
7637
7625
|
// update origin node
|
|
7638
|
-
let orgNodeIndex = this.
|
|
7626
|
+
let orgNodeIndex = this.mapIndexes.get(node.value);
|
|
7639
7627
|
/*this.getNodeInFullDataSource(child)*/
|
|
7640
7628
|
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = checked;
|
|
7641
7629
|
if (orgNodeIndex > -1 && !checked) {
|
|
@@ -7662,7 +7650,7 @@ class CvaFlatTreeComponent {
|
|
|
7662
7650
|
}
|
|
7663
7651
|
}
|
|
7664
7652
|
else {
|
|
7665
|
-
orgNodeIndex = this.
|
|
7653
|
+
orgNodeIndex = this.mapIndexes.get(child.value);
|
|
7666
7654
|
if (orgNodeIndex > -1) {
|
|
7667
7655
|
this.fullDataTreeControl.dataNodes[orgNodeIndex].isExpanded = false;
|
|
7668
7656
|
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = this.fullDataTreeControl.dataNodes[orgNodeIndex].children?.every(n => n.checked);
|
|
@@ -7711,7 +7699,7 @@ class CvaFlatTreeComponent {
|
|
|
7711
7699
|
if ((node.display && !this.checkDisabledNode(node)) || !!isSelectedChange) {
|
|
7712
7700
|
node.checked = checked;
|
|
7713
7701
|
// update origin node
|
|
7714
|
-
const orgNodeIndex = this.
|
|
7702
|
+
const orgNodeIndex = this.mapIndexes.get(node.value);
|
|
7715
7703
|
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = checked;
|
|
7716
7704
|
if (checked) {
|
|
7717
7705
|
if (this.multiple) {
|
|
@@ -7887,6 +7875,53 @@ class CvaFlatTreeComponent {
|
|
|
7887
7875
|
this.checkParentNode(true, node);
|
|
7888
7876
|
}
|
|
7889
7877
|
}
|
|
7878
|
+
toggleNodeCheck(node, checked) {
|
|
7879
|
+
const isLeaf = !FlatTreeService.hasChild(node);
|
|
7880
|
+
console.log('1: ', new Date());
|
|
7881
|
+
// Gọi 1 lần duy nhất nếu là parent
|
|
7882
|
+
const descendants = isLeaf ? [] : this.fullDataTreeControl.getDescendants(node);
|
|
7883
|
+
const affectedNodes = isLeaf ? [node] : descendants.filter(n => !FlatTreeService.hasChild(n));
|
|
7884
|
+
console.log('2: ', new Date());
|
|
7885
|
+
for (const leaf of affectedNodes) {
|
|
7886
|
+
if (!leaf.display || this.checkDisabledNode(leaf))
|
|
7887
|
+
continue;
|
|
7888
|
+
const index = this.value.indexOf(leaf.value);
|
|
7889
|
+
if (checked && index < 0) {
|
|
7890
|
+
this.value.push(leaf.value);
|
|
7891
|
+
this.valueObjRef.set(leaf.value, leaf);
|
|
7892
|
+
leaf.checked = true;
|
|
7893
|
+
}
|
|
7894
|
+
if (!checked && index >= 0) {
|
|
7895
|
+
this.value.splice(index, 1);
|
|
7896
|
+
this.valueObjRef.delete(leaf.value);
|
|
7897
|
+
leaf.checked = false;
|
|
7898
|
+
}
|
|
7899
|
+
const orgNodeIndex = this.mapIndexes.get(leaf.value);
|
|
7900
|
+
if (orgNodeIndex !== undefined) {
|
|
7901
|
+
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = leaf.checked;
|
|
7902
|
+
}
|
|
7903
|
+
}
|
|
7904
|
+
console.log('3: ', new Date());
|
|
7905
|
+
// Nếu node là cha → cập nhật isExpanded
|
|
7906
|
+
if (!isLeaf) {
|
|
7907
|
+
node.checked = checked;
|
|
7908
|
+
const orgNodeIndex = this.mapIndexes.get(node.value);
|
|
7909
|
+
if (orgNodeIndex !== undefined) {
|
|
7910
|
+
this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = checked;
|
|
7911
|
+
this.fullDataTreeControl.dataNodes[orgNodeIndex].isExpanded = false;
|
|
7912
|
+
}
|
|
7913
|
+
}
|
|
7914
|
+
else {
|
|
7915
|
+
node.checked = checked;
|
|
7916
|
+
}
|
|
7917
|
+
console.log('4: ', new Date());
|
|
7918
|
+
this.writeValue(this.value);
|
|
7919
|
+
console.log('5: ', new Date());
|
|
7920
|
+
this.cdr.detectChanges();
|
|
7921
|
+
}
|
|
7922
|
+
_getLevel = (node) => node.level;
|
|
7923
|
+
_isExpandable = (node) => FlatTreeService.hasChild(node);
|
|
7924
|
+
_getChildren = (node) => of(node.children ? node.children : []);
|
|
7890
7925
|
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
7926
|
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
7927
|
<div class="cva-flat-tree labelOutside"
|
|
@@ -7935,8 +7970,8 @@ class CvaFlatTreeComponent {
|
|
|
7935
7970
|
(toggle)="toggleTreeControl(treeControl, node)"
|
|
7936
7971
|
(onParentNodeClick)="onParentNodeClick(node)"
|
|
7937
7972
|
(onLeafNodeClick)="onLeafNodeClick(node)"
|
|
7938
|
-
(ngModelParentChange)="
|
|
7939
|
-
(ngModelLeafChange)="
|
|
7973
|
+
(ngModelParentChange)="toggleNodeCheck(node, $event)"
|
|
7974
|
+
(ngModelLeafChange)="toggleNodeCheck(node, $event)">
|
|
7940
7975
|
</cva-flat-tree-node-left>
|
|
7941
7976
|
</ng-container>
|
|
7942
7977
|
</cdk-virtual-scroll-viewport>
|
|
@@ -8027,8 +8062,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
|
|
|
8027
8062
|
(toggle)="toggleTreeControl(treeControl, node)"
|
|
8028
8063
|
(onParentNodeClick)="onParentNodeClick(node)"
|
|
8029
8064
|
(onLeafNodeClick)="onLeafNodeClick(node)"
|
|
8030
|
-
(ngModelParentChange)="
|
|
8031
|
-
(ngModelLeafChange)="
|
|
8065
|
+
(ngModelParentChange)="toggleNodeCheck(node, $event)"
|
|
8066
|
+
(ngModelLeafChange)="toggleNodeCheck(node, $event)">
|
|
8032
8067
|
</cva-flat-tree-node-left>
|
|
8033
8068
|
</ng-container>
|
|
8034
8069
|
</cdk-virtual-scroll-viewport>
|