@progress/kendo-angular-treelist 18.5.2-develop.7 → 18.5.2-develop.9

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.
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1744877666,
14
- version: '18.5.2-develop.7',
13
+ publishDate: 1744882847,
14
+ version: '18.5.2-develop.9',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -15,9 +15,15 @@ import * as i2 from "../../selection/selection.service";
15
15
  * @hidden
16
16
  */
17
17
  export class TreeListSelectAllCheckboxDirective {
18
+ host;
19
+ selectionService;
20
+ cdr;
18
21
  sub = new Subscription();
19
22
  setState = true;
20
23
  constructor(host, hostEl, selectionService, cdr, renderer) {
24
+ this.host = host;
25
+ this.selectionService = selectionService;
26
+ this.cdr = cdr;
21
27
  this.sub = selectionService.changes.subscribe(eventData => {
22
28
  // omit setting the state when the selection change comes from clicking the checkbox, and clear the flag
23
29
  if (!this.setState) {
@@ -54,6 +60,10 @@ export class TreeListSelectAllCheckboxDirective {
54
60
  }
55
61
  cdr.detectChanges();
56
62
  });
63
+ this.sub.add(selectionService.selectAllCheckedStateChange.subscribe((selectAllCheckedState) => {
64
+ host.checkedState = selectAllCheckedState;
65
+ cdr.detectChanges();
66
+ }));
57
67
  // set flag for conditional checkbox state logic
58
68
  ['pointerdown', 'keydown'].forEach(eventName => this.sub.add(renderer.listen(hostEl.nativeElement, eventName, (e) => {
59
69
  const isSpace = e.key && e.key === ' ';
@@ -61,6 +71,10 @@ export class TreeListSelectAllCheckboxDirective {
61
71
  spaceOrPointer && (this.setState = false);
62
72
  })));
63
73
  }
74
+ ngAfterViewInit() {
75
+ this.host.checkedState = this.selectionService.selectAllCheckedState;
76
+ this.cdr.detectChanges();
77
+ }
64
78
  ngOnDestroy() {
65
79
  this.sub && this.sub.unsubscribe();
66
80
  }
@@ -360,8 +360,7 @@ export class TableBodyComponent {
360
360
  this.selection.enabled && this.selection.rowSelection) {
361
361
  const args = this.cellClickArgs(cell, row, eventArg);
362
362
  this.selection.checkboxClick(args);
363
- const isChecked = isCheckbox?.firstElementChild.classList.contains('k-checked');
364
- if (isChecked !== this.selection.isRowSelected(args.dataItem)) {
363
+ if (eventArg.target.checked !== this.selection.isRowSelected(args.dataItem)) {
365
364
  eventArg.preventDefault();
366
365
  }
367
366
  return true;
@@ -54,6 +54,20 @@ export class SelectableDirective {
54
54
  this.treelist.updateView();
55
55
  }
56
56
  this._selectedItems = value;
57
+ const currentValue = value || [];
58
+ const previousState = this.selectionService.selectAllCheckedState;
59
+ if (currentValue.length > 0 && currentValue.length === this.treelist.view.total) {
60
+ this.selectionService.selectAllCheckedState = true;
61
+ }
62
+ else if (currentValue.length === 0) {
63
+ this.selectionService.selectAllCheckedState = false;
64
+ }
65
+ else {
66
+ this.selectionService.selectAllCheckedState = 'indeterminate';
67
+ }
68
+ if (previousState !== this.selectionService.selectAllCheckedState) {
69
+ this.selectionService.selectAllCheckedStateChange.next(this.selectionService.selectAllCheckedState);
70
+ }
57
71
  }
58
72
  /**
59
73
  * Fires when the selected items are changed.
@@ -18,6 +18,7 @@ const noop = () => false;
18
18
  */
19
19
  export class SelectionService {
20
20
  changes = new Subject();
21
+ selectAllCheckedStateChange = new Subject();
21
22
  state = [];
22
23
  set settings(value) {
23
24
  if (typeof value === 'object') {
@@ -71,6 +72,7 @@ export class SelectionService {
71
72
  isCellSelected = noop;
72
73
  enabled = false;
73
74
  dragging = false;
75
+ selectAllCheckedState = false;
74
76
  view;
75
77
  columnsContainer;
76
78
  _settings = {};
@@ -49,8 +49,8 @@ const packageMetadata = {
49
49
  productName: 'Kendo UI for Angular',
50
50
  productCode: 'KENDOUIANGULAR',
51
51
  productCodes: ['KENDOUIANGULAR'],
52
- publishDate: 1744877666,
53
- version: '18.5.2-develop.7',
52
+ publishDate: 1744882847,
53
+ version: '18.5.2-develop.9',
54
54
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
55
55
  };
56
56
 
@@ -4251,6 +4251,7 @@ const noop = () => false;
4251
4251
  */
4252
4252
  class SelectionService {
4253
4253
  changes = new Subject();
4254
+ selectAllCheckedStateChange = new Subject();
4254
4255
  state = [];
4255
4256
  set settings(value) {
4256
4257
  if (typeof value === 'object') {
@@ -4304,6 +4305,7 @@ class SelectionService {
4304
4305
  isCellSelected = noop;
4305
4306
  enabled = false;
4306
4307
  dragging = false;
4308
+ selectAllCheckedState = false;
4307
4309
  view;
4308
4310
  columnsContainer;
4309
4311
  _settings = {};
@@ -6805,8 +6807,7 @@ class TableBodyComponent {
6805
6807
  this.selection.enabled && this.selection.rowSelection) {
6806
6808
  const args = this.cellClickArgs(cell, row, eventArg);
6807
6809
  this.selection.checkboxClick(args);
6808
- const isChecked = isCheckbox?.firstElementChild.classList.contains('k-checked');
6809
- if (isChecked !== this.selection.isRowSelected(args.dataItem)) {
6810
+ if (eventArg.target.checked !== this.selection.isRowSelected(args.dataItem)) {
6810
6811
  eventArg.preventDefault();
6811
6812
  }
6812
6813
  return true;
@@ -14583,9 +14584,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14583
14584
  * @hidden
14584
14585
  */
14585
14586
  class TreeListSelectAllCheckboxDirective {
14587
+ host;
14588
+ selectionService;
14589
+ cdr;
14586
14590
  sub = new Subscription();
14587
14591
  setState = true;
14588
14592
  constructor(host, hostEl, selectionService, cdr, renderer) {
14593
+ this.host = host;
14594
+ this.selectionService = selectionService;
14595
+ this.cdr = cdr;
14589
14596
  this.sub = selectionService.changes.subscribe(eventData => {
14590
14597
  // omit setting the state when the selection change comes from clicking the checkbox, and clear the flag
14591
14598
  if (!this.setState) {
@@ -14622,6 +14629,10 @@ class TreeListSelectAllCheckboxDirective {
14622
14629
  }
14623
14630
  cdr.detectChanges();
14624
14631
  });
14632
+ this.sub.add(selectionService.selectAllCheckedStateChange.subscribe((selectAllCheckedState) => {
14633
+ host.checkedState = selectAllCheckedState;
14634
+ cdr.detectChanges();
14635
+ }));
14625
14636
  // set flag for conditional checkbox state logic
14626
14637
  ['pointerdown', 'keydown'].forEach(eventName => this.sub.add(renderer.listen(hostEl.nativeElement, eventName, (e) => {
14627
14638
  const isSpace = e.key && e.key === ' ';
@@ -14629,6 +14640,10 @@ class TreeListSelectAllCheckboxDirective {
14629
14640
  spaceOrPointer && (this.setState = false);
14630
14641
  })));
14631
14642
  }
14643
+ ngAfterViewInit() {
14644
+ this.host.checkedState = this.selectionService.selectAllCheckedState;
14645
+ this.cdr.detectChanges();
14646
+ }
14632
14647
  ngOnDestroy() {
14633
14648
  this.sub && this.sub.unsubscribe();
14634
14649
  }
@@ -20206,6 +20221,20 @@ class SelectableDirective {
20206
20221
  this.treelist.updateView();
20207
20222
  }
20208
20223
  this._selectedItems = value;
20224
+ const currentValue = value || [];
20225
+ const previousState = this.selectionService.selectAllCheckedState;
20226
+ if (currentValue.length > 0 && currentValue.length === this.treelist.view.total) {
20227
+ this.selectionService.selectAllCheckedState = true;
20228
+ }
20229
+ else if (currentValue.length === 0) {
20230
+ this.selectionService.selectAllCheckedState = false;
20231
+ }
20232
+ else {
20233
+ this.selectionService.selectAllCheckedState = 'indeterminate';
20234
+ }
20235
+ if (previousState !== this.selectionService.selectAllCheckedState) {
20236
+ this.selectionService.selectAllCheckedStateChange.next(this.selectionService.selectAllCheckedState);
20237
+ }
20209
20238
  }
20210
20239
  /**
20211
20240
  * Fires when the selected items are changed.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-treelist",
3
- "version": "18.5.2-develop.7",
3
+ "version": "18.5.2-develop.9",
4
4
  "description": "Kendo UI TreeList for Angular - Display hierarchical data in an Angular tree grid view that supports sorting, filtering, paging, and much more.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -24,7 +24,7 @@
24
24
  "package": {
25
25
  "productName": "Kendo UI for Angular",
26
26
  "productCode": "KENDOUIANGULAR",
27
- "publishDate": 1744877666,
27
+ "publishDate": 1744882847,
28
28
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
29
29
  }
30
30
  },
@@ -37,26 +37,26 @@
37
37
  "@progress/kendo-data-query": "^1.0.0",
38
38
  "@progress/kendo-drawing": "^1.21.0",
39
39
  "@progress/kendo-licensing": "^1.5.0",
40
- "@progress/kendo-angular-buttons": "18.5.2-develop.7",
41
- "@progress/kendo-angular-common": "18.5.2-develop.7",
42
- "@progress/kendo-angular-dateinputs": "18.5.2-develop.7",
43
- "@progress/kendo-angular-dropdowns": "18.5.2-develop.7",
44
- "@progress/kendo-angular-excel-export": "18.5.2-develop.7",
45
- "@progress/kendo-angular-icons": "18.5.2-develop.7",
46
- "@progress/kendo-angular-inputs": "18.5.2-develop.7",
47
- "@progress/kendo-angular-intl": "18.5.2-develop.7",
48
- "@progress/kendo-angular-l10n": "18.5.2-develop.7",
49
- "@progress/kendo-angular-label": "18.5.2-develop.7",
50
- "@progress/kendo-angular-pager": "18.5.2-develop.7",
51
- "@progress/kendo-angular-pdf-export": "18.5.2-develop.7",
52
- "@progress/kendo-angular-popup": "18.5.2-develop.7",
53
- "@progress/kendo-angular-toolbar": "18.5.2-develop.7",
54
- "@progress/kendo-angular-utils": "18.5.2-develop.7",
40
+ "@progress/kendo-angular-buttons": "18.5.2-develop.9",
41
+ "@progress/kendo-angular-common": "18.5.2-develop.9",
42
+ "@progress/kendo-angular-dateinputs": "18.5.2-develop.9",
43
+ "@progress/kendo-angular-dropdowns": "18.5.2-develop.9",
44
+ "@progress/kendo-angular-excel-export": "18.5.2-develop.9",
45
+ "@progress/kendo-angular-icons": "18.5.2-develop.9",
46
+ "@progress/kendo-angular-inputs": "18.5.2-develop.9",
47
+ "@progress/kendo-angular-intl": "18.5.2-develop.9",
48
+ "@progress/kendo-angular-l10n": "18.5.2-develop.9",
49
+ "@progress/kendo-angular-label": "18.5.2-develop.9",
50
+ "@progress/kendo-angular-pager": "18.5.2-develop.9",
51
+ "@progress/kendo-angular-pdf-export": "18.5.2-develop.9",
52
+ "@progress/kendo-angular-popup": "18.5.2-develop.9",
53
+ "@progress/kendo-angular-toolbar": "18.5.2-develop.9",
54
+ "@progress/kendo-angular-utils": "18.5.2-develop.9",
55
55
  "rxjs": "^6.5.3 || ^7.0.0"
56
56
  },
57
57
  "dependencies": {
58
58
  "tslib": "^2.3.1",
59
- "@progress/kendo-angular-schematics": "18.5.2-develop.7",
59
+ "@progress/kendo-angular-schematics": "18.5.2-develop.9",
60
60
  "@progress/kendo-common": "^1.0.1",
61
61
  "@progress/kendo-file-saver": "^1.0.0"
62
62
  },
@@ -2,17 +2,21 @@
2
2
  * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { ChangeDetectorRef, ElementRef, OnDestroy, Renderer2 } from '@angular/core';
5
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy, Renderer2 } from '@angular/core';
6
6
  import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
7
7
  import { SelectionService } from '../../selection/selection.service';
8
8
  import * as i0 from "@angular/core";
9
9
  /**
10
10
  * @hidden
11
11
  */
12
- export declare class TreeListSelectAllCheckboxDirective implements OnDestroy {
12
+ export declare class TreeListSelectAllCheckboxDirective implements AfterViewInit, OnDestroy {
13
+ private host;
14
+ private selectionService;
15
+ private cdr;
13
16
  private sub;
14
17
  private setState;
15
18
  constructor(host: CheckBoxComponent, hostEl: ElementRef, selectionService: SelectionService, cdr: ChangeDetectorRef, renderer: Renderer2);
19
+ ngAfterViewInit(): void;
16
20
  ngOnDestroy(): void;
17
21
  static ɵfac: i0.ɵɵFactoryDeclaration<TreeListSelectAllCheckboxDirective, never>;
18
22
  static ɵdir: i0.ɵɵDirectiveDeclaration<TreeListSelectAllCheckboxDirective, "[kendoTreeListSelectAllCheckbox]", never, {}, {}, never, never, true, never>;
@@ -4,13 +4,13 @@ const schematics_1 = require("@angular-devkit/schematics");
4
4
  function default_1(options) {
5
5
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'TreeListModule', package: 'treelist', peerDependencies: {
6
6
  // peer dep of the dropdowns
7
- '@progress/kendo-angular-treeview': '18.5.2-develop.7',
7
+ '@progress/kendo-angular-treeview': '18.5.2-develop.9',
8
8
  // peer dependency of kendo-angular-inputs
9
- '@progress/kendo-angular-dialog': '18.5.2-develop.7',
9
+ '@progress/kendo-angular-dialog': '18.5.2-develop.9',
10
10
  // peer dependency of kendo-angular-icons
11
11
  '@progress/kendo-svg-icons': '^4.0.0',
12
12
  // peer dependency of kendo-angular-dateinputs
13
- '@progress/kendo-angular-navigation': '18.5.2-develop.7',
13
+ '@progress/kendo-angular-navigation': '18.5.2-develop.9',
14
14
  } });
15
15
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
16
16
  }
@@ -14,6 +14,7 @@ export declare const defaultSelected: (_item: any) => boolean;
14
14
  */
15
15
  export declare class SelectionService {
16
16
  changes: Subject<SelectionChangeEvent>;
17
+ selectAllCheckedStateChange: Subject<any>;
17
18
  state: any[];
18
19
  set settings(value: any);
19
20
  get settings(): any;
@@ -25,6 +26,7 @@ export declare class SelectionService {
25
26
  isCellSelected: any;
26
27
  enabled: boolean;
27
28
  dragging: boolean;
29
+ selectAllCheckedState: any;
28
30
  private view;
29
31
  private columnsContainer;
30
32
  private _settings;