@progress/kendo-angular-treelist 18.5.2-develop.1 → 18.5.2-develop.11
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/esm2022/package-metadata.mjs +2 -2
- package/esm2022/rendering/header/select-all-checkbox.directive.mjs +14 -0
- package/esm2022/rendering/table-body.component.mjs +1 -2
- package/esm2022/selection/selectable.directive.mjs +14 -0
- package/esm2022/selection/selection.service.mjs +2 -0
- package/fesm2022/progress-kendo-angular-treelist.mjs +33 -4
- package/package.json +18 -18
- package/rendering/header/select-all-checkbox.directive.d.ts +6 -2
- package/schematics/ngAdd/index.js +3 -3
- package/selection/selection.service.d.ts +2 -0
@@ -10,7 +10,7 @@ export const packageMetadata = {
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
11
11
|
productCode: 'KENDOUIANGULAR',
|
12
12
|
productCodes: ['KENDOUIANGULAR'],
|
13
|
-
publishDate:
|
14
|
-
version: '18.5.2-develop.
|
13
|
+
publishDate: 1744903848,
|
14
|
+
version: '18.5.2-develop.11',
|
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
|
-
|
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:
|
53
|
-
version: '18.5.2-develop.
|
52
|
+
publishDate: 1744903848,
|
53
|
+
version: '18.5.2-develop.11',
|
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
|
-
|
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.
|
3
|
+
"version": "18.5.2-develop.11",
|
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":
|
27
|
+
"publishDate": 1744903848,
|
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.
|
41
|
-
"@progress/kendo-angular-common": "18.5.2-develop.
|
42
|
-
"@progress/kendo-angular-dateinputs": "18.5.2-develop.
|
43
|
-
"@progress/kendo-angular-dropdowns": "18.5.2-develop.
|
44
|
-
"@progress/kendo-angular-excel-export": "18.5.2-develop.
|
45
|
-
"@progress/kendo-angular-icons": "18.5.2-develop.
|
46
|
-
"@progress/kendo-angular-inputs": "18.5.2-develop.
|
47
|
-
"@progress/kendo-angular-intl": "18.5.2-develop.
|
48
|
-
"@progress/kendo-angular-l10n": "18.5.2-develop.
|
49
|
-
"@progress/kendo-angular-label": "18.5.2-develop.
|
50
|
-
"@progress/kendo-angular-pager": "18.5.2-develop.
|
51
|
-
"@progress/kendo-angular-pdf-export": "18.5.2-develop.
|
52
|
-
"@progress/kendo-angular-popup": "18.5.2-develop.
|
53
|
-
"@progress/kendo-angular-toolbar": "18.5.2-develop.
|
54
|
-
"@progress/kendo-angular-utils": "18.5.2-develop.
|
40
|
+
"@progress/kendo-angular-buttons": "18.5.2-develop.11",
|
41
|
+
"@progress/kendo-angular-common": "18.5.2-develop.11",
|
42
|
+
"@progress/kendo-angular-dateinputs": "18.5.2-develop.11",
|
43
|
+
"@progress/kendo-angular-dropdowns": "18.5.2-develop.11",
|
44
|
+
"@progress/kendo-angular-excel-export": "18.5.2-develop.11",
|
45
|
+
"@progress/kendo-angular-icons": "18.5.2-develop.11",
|
46
|
+
"@progress/kendo-angular-inputs": "18.5.2-develop.11",
|
47
|
+
"@progress/kendo-angular-intl": "18.5.2-develop.11",
|
48
|
+
"@progress/kendo-angular-l10n": "18.5.2-develop.11",
|
49
|
+
"@progress/kendo-angular-label": "18.5.2-develop.11",
|
50
|
+
"@progress/kendo-angular-pager": "18.5.2-develop.11",
|
51
|
+
"@progress/kendo-angular-pdf-export": "18.5.2-develop.11",
|
52
|
+
"@progress/kendo-angular-popup": "18.5.2-develop.11",
|
53
|
+
"@progress/kendo-angular-toolbar": "18.5.2-develop.11",
|
54
|
+
"@progress/kendo-angular-utils": "18.5.2-develop.11",
|
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.
|
59
|
+
"@progress/kendo-angular-schematics": "18.5.2-develop.11",
|
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
|
+
'@progress/kendo-angular-treeview': '18.5.2-develop.11',
|
8
8
|
// peer dependency of kendo-angular-inputs
|
9
|
-
'@progress/kendo-angular-dialog': '18.5.2-develop.
|
9
|
+
'@progress/kendo-angular-dialog': '18.5.2-develop.11',
|
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.
|
13
|
+
'@progress/kendo-angular-navigation': '18.5.2-develop.11',
|
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;
|