@c10t/nice-component-library 0.0.27-a → 0.0.27-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.
@@ -1,5 +1,5 @@
1
1
  import { FlatTreeControl } from '@angular/cdk/tree';
2
- import { AfterViewInit, ChangeDetectorRef, EventEmitter, Injector, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
+ import { ChangeDetectorRef, EventEmitter, Injector, OnChanges, OnInit, SimpleChanges } from '@angular/core';
3
3
  import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
4
4
  import { AbstractControl, ControlValueAccessor, NgControl } from '@angular/forms';
5
5
  import { TranslateService } from '@ngx-translate/core';
@@ -8,7 +8,7 @@ import { FlatTreeNodeModel } from '../../models/components/flat-tree-node.model'
8
8
  import { ValidatorService } from '../../services/validator.service';
9
9
  import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
10
10
  import * as i0 from "@angular/core";
11
- export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {
11
+ export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnInit, OnChanges {
12
12
  private translateService;
13
13
  private injector;
14
14
  private cdr;
@@ -32,9 +32,9 @@ export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnIni
32
32
  treeConfig?: FlatTreeConfigModel;
33
33
  isSearchOutSide: boolean;
34
34
  searchTextOutSide: string;
35
- searchText: string;
36
35
  errorMessages: Map<string, (e?: any) => string>;
37
36
  fullDatasource: FlatTreeNodeModel[];
37
+ searchText: string;
38
38
  filterDatasource: FlatTreeNodeModel[];
39
39
  treeControl: FlatTreeControl<FlatTreeNodeModel>;
40
40
  treeFlattener: MatTreeFlattener<FlatTreeNodeModel, FlatTreeNodeModel>;
@@ -60,7 +60,6 @@ export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnIni
60
60
  setSelectedNode(): void;
61
61
  setDataSourceOrigin(): void;
62
62
  ngOnInit(): void;
63
- ngAfterViewInit(): void;
64
63
  getDisplayInputFunc(node: FlatTreeNodeModel): boolean;
65
64
  getDisabledInputFunc(node: FlatTreeNodeModel): boolean;
66
65
  checkDisabledNode(node: FlatTreeNodeModel): boolean;
@@ -81,8 +80,6 @@ export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnIni
81
80
  selectedTreeChange(node: FlatTreeNodeModel): void;
82
81
  checkLeafNode(checked: boolean, node: FlatTreeNodeModel, isSelectedChange?: boolean): void;
83
82
  getRootNode(node: FlatTreeNodeModel): FlatTreeNodeModel | null;
84
- deSelect(node: FlatTreeNodeModel): void;
85
- deSelectParent(node: FlatTreeNodeModel): void;
86
83
  toggleTreeControl(treeControl: FlatTreeControl<FlatTreeNodeModel>, node: FlatTreeNodeModel): void;
87
84
  toggleSelectedTree(node?: FlatTreeNodeModel): void;
88
85
  onChangeSearchText(): void;
@@ -92,6 +89,7 @@ export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnIni
92
89
  onLeafNodeClick(node: FlatTreeNodeModel): void;
93
90
  onParentNodeClick(node: FlatTreeNodeModel): void;
94
91
  toggleNodeCheck(node: FlatTreeNodeModel, checked: boolean): void;
92
+ getTotalSelected(nodes: FlatTreeNodeModel[]): number;
95
93
  private _getLevel;
96
94
  private _isExpandable;
97
95
  private _getChildren;
@@ -8092,9 +8092,9 @@ class CvaFlatTreeComponent {
8092
8092
  treeConfig;
8093
8093
  isSearchOutSide = false;
8094
8094
  searchTextOutSide = '';
8095
- searchText = '';
8096
8095
  errorMessages = new Map();
8097
8096
  fullDatasource = [];
8097
+ searchText = '';
8098
8098
  filterDatasource = [];
8099
8099
  treeControl;
8100
8100
  treeFlattener;
@@ -8156,9 +8156,6 @@ class CvaFlatTreeComponent {
8156
8156
  ngOnInit() {
8157
8157
  this.callValidator();
8158
8158
  }
8159
- ngAfterViewInit() {
8160
- // this.onChangeSearchText();
8161
- }
8162
8159
  getDisplayInputFunc(node) {
8163
8160
  return typeof (node._displayFuncInput) === 'function' ? node._displayFuncInput(node) : !!node._displayFuncInput;
8164
8161
  }
@@ -8281,13 +8278,8 @@ class CvaFlatTreeComponent {
8281
8278
  this.propagateChange(fn);
8282
8279
  }
8283
8280
  writeValue(obj) {
8284
- // if (this.multiple && !obj) {
8285
- // obj = [];
8286
- // }
8287
8281
  if (obj) {
8288
- // if (this.multiple) {
8289
8282
  this.value = obj;
8290
- // }
8291
8283
  this.mapIndexes = new Map();
8292
8284
  for (let i = 0; i < this.fullDataTreeControl.dataNodes.length; i++) {
8293
8285
  this.mapIndexes.set(this.fullDataTreeControl.dataNodes[i].value, i);
@@ -8466,12 +8458,6 @@ class CvaFlatTreeComponent {
8466
8458
  }
8467
8459
  return node;
8468
8460
  }
8469
- deSelect(node) {
8470
- this.checkLeafNode(false, node, true);
8471
- }
8472
- deSelectParent(node) {
8473
- this.checkParentNode(false, node, true);
8474
- }
8475
8461
  toggleTreeControl(treeControl, node) {
8476
8462
  treeControl.toggle(node);
8477
8463
  const orgNode = this.fullDataTreeControl.dataNodes.find(n => n.value === node.value);
@@ -8621,10 +8607,44 @@ class CvaFlatTreeComponent {
8621
8607
  this.value.splice(index, 1);
8622
8608
  }
8623
8609
  }
8610
+ if (isLeaf) {
8611
+ const parentNode = this.getRootNode(node);
8612
+ if (parentNode && FlatTreeService.hasChild(parentNode)) {
8613
+ const allChild = this.getAllChildNode(this.fullDataTreeControl, parentNode);
8614
+ // Kiểm tra còn node con nào trong value không
8615
+ const hasChildInValue = allChild.some(child => this.value.includes(child.value));
8616
+ if (!hasChildInValue) {
8617
+ const parentIndex = this.value.indexOf(parentNode.value);
8618
+ if (parentIndex >= 0) {
8619
+ this.value.splice(parentIndex, 1);
8620
+ }
8621
+ }
8622
+ }
8623
+ }
8624
8624
  // Gọi writeValue để cập nhật cho FormControl
8625
8625
  this.writeValue(this.value);
8626
8626
  this.cdr.detectChanges();
8627
8627
  }
8628
+ getTotalSelected(nodes) {
8629
+ let count = 0;
8630
+ for (const node of nodes) {
8631
+ const isLeaf = !FlatTreeService.hasChild(node);
8632
+ if (isLeaf) {
8633
+ if (this.value.includes(node.value)) {
8634
+ count += 1;
8635
+ }
8636
+ }
8637
+ else if (node.children && node.children.length > 0) {
8638
+ const childChecked = this.getTotalSelected(node.children);
8639
+ // Nếu tất cả các con được checked đồng nghĩa cha được checked thì mới cộng
8640
+ if (childChecked === node.children.length) {
8641
+ count += 1;
8642
+ }
8643
+ count += childChecked;
8644
+ }
8645
+ }
8646
+ return count;
8647
+ }
8628
8648
  _getLevel = (node) => node.level;
8629
8649
  _isExpandable = (node) => FlatTreeService.hasChild(node);
8630
8650
  _getChildren = (node) => of(node.children ? node.children : []);
@@ -8690,7 +8710,7 @@ class CvaFlatTreeComponent {
8690
8710
  *ngIf="!isDisplayChooseTreeOnly"
8691
8711
  fxLayout="column" fxFlex="1 1 {{checkIsView(isView) ? '100%' : '50%'}}" fxFlex.lt-sm="100%">
8692
8712
  <div class="header-area" *ngIf="!isView">
8693
- <label>{{ selectedLabelTitle | translate }}{{ '(' + (value ? value.length : 0) + ')' }}</label>
8713
+ <label>{{ selectedLabelTitle | translate }}{{ '(' + getTotalSelected(fullDataDataSource.data) + ')' }}</label>
8694
8714
  <div class="collapse-expand-all" (click)="toggleSelectedTree()">
8695
8715
  {{ (isCollapseSelected ? 'common.selected.tree.expandAll' : 'common.selected.tree.collapse') | translate }}
8696
8716
  <i class="fa {{isCollapseSelected ? 'fa-chevron-down' : 'fa-chevron-up'}}"></i>
@@ -8707,8 +8727,8 @@ class CvaFlatTreeComponent {
8707
8727
  [node]="node"
8708
8728
  [isView]="isView"
8709
8729
  (toggle)="toggleSelectedTree(node)"
8710
- (deSelectLeafNode)="deSelect(node)"
8711
- (deSelectParentNode)="deSelectParent(node)">
8730
+ (deSelectLeafNode)="toggleNodeCheck(node, false)"
8731
+ (deSelectParentNode)="toggleNodeCheck(node, false)">
8712
8732
  </cva-flat-tree-node-right>
8713
8733
  </ng-container>
8714
8734
  </cdk-virtual-scroll-viewport>
@@ -8787,7 +8807,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
8787
8807
  *ngIf="!isDisplayChooseTreeOnly"
8788
8808
  fxLayout="column" fxFlex="1 1 {{checkIsView(isView) ? '100%' : '50%'}}" fxFlex.lt-sm="100%">
8789
8809
  <div class="header-area" *ngIf="!isView">
8790
- <label>{{ selectedLabelTitle | translate }}{{ '(' + (value ? value.length : 0) + ')' }}</label>
8810
+ <label>{{ selectedLabelTitle | translate }}{{ '(' + getTotalSelected(fullDataDataSource.data) + ')' }}</label>
8791
8811
  <div class="collapse-expand-all" (click)="toggleSelectedTree()">
8792
8812
  {{ (isCollapseSelected ? 'common.selected.tree.expandAll' : 'common.selected.tree.collapse') | translate }}
8793
8813
  <i class="fa {{isCollapseSelected ? 'fa-chevron-down' : 'fa-chevron-up'}}"></i>
@@ -8804,8 +8824,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
8804
8824
  [node]="node"
8805
8825
  [isView]="isView"
8806
8826
  (toggle)="toggleSelectedTree(node)"
8807
- (deSelectLeafNode)="deSelect(node)"
8808
- (deSelectParentNode)="deSelectParent(node)">
8827
+ (deSelectLeafNode)="toggleNodeCheck(node, false)"
8828
+ (deSelectParentNode)="toggleNodeCheck(node, false)">
8809
8829
  </cva-flat-tree-node-right>
8810
8830
  </ng-container>
8811
8831
  </cdk-virtual-scroll-viewport>