@progress/kendo-angular-treelist 17.0.2-develop.5 → 17.0.2-develop.7
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/header.component.mjs +7 -2
- package/esm2022/rendering/header/select-all-checkbox.directive.mjs +61 -0
- package/esm2022/selection/selectable.directive.mjs +6 -0
- package/fesm2022/progress-kendo-angular-treelist.mjs +246 -187
- package/package.json +17 -16
- package/rendering/header/select-all-checkbox.directive.d.ts +20 -0
- package/schematics/ngAdd/index.js +3 -3
- package/selection/selectable.directive.d.ts +4 -0
|
@@ -9,7 +9,7 @@ export const packageMetadata = {
|
|
|
9
9
|
name: '@progress/kendo-angular-treelist',
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
12
|
-
publishDate:
|
|
13
|
-
version: '17.0.2-develop.
|
|
12
|
+
publishDate: 1731668811,
|
|
13
|
+
version: '17.0.2-develop.7',
|
|
14
14
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
15
15
|
};
|
|
@@ -36,6 +36,7 @@ import { FilterMenuComponent } from '../../filtering/menu/filter-menu.component'
|
|
|
36
36
|
import { LogicalCellDirective } from '../../navigation/logical-cell.directive';
|
|
37
37
|
import { LogicalRowDirective } from '../../navigation/logical-row.directive';
|
|
38
38
|
import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
|
|
39
|
+
import { TreeListSelectAllCheckboxDirective } from './select-all-checkbox.directive';
|
|
39
40
|
import * as i0 from "@angular/core";
|
|
40
41
|
import * as i1 from "../../common/single-popup.service";
|
|
41
42
|
import * as i2 from "../../dragdrop/drag-hint.service";
|
|
@@ -469,6 +470,7 @@ export class HeaderComponent {
|
|
|
469
470
|
<kendo-checkbox
|
|
470
471
|
[inputAttributes]="{'aria-label': messageFor('selectAllRowsCheckboxLabel')}"
|
|
471
472
|
kendoTreeListFocusable
|
|
473
|
+
kendoTreeListSelectAllCheckbox
|
|
472
474
|
(checkedStateChange)="selectAllChange($event)"
|
|
473
475
|
></kendo-checkbox>
|
|
474
476
|
</ng-template>
|
|
@@ -543,7 +545,7 @@ export class HeaderComponent {
|
|
|
543
545
|
[logicalSlaveCellsCount]="unlockedColumnsCount"
|
|
544
546
|
>
|
|
545
547
|
</tr>
|
|
546
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: LogicalRowDirective, selector: "[kendoTreeListLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "isNew", "totalColumns"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoTreeListLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "column", "colIndex", "colSpan", "rowSpan", "dataRowIndex", "dataItem", "expandable"] }, { kind: "directive", type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FilterMenuComponent, selector: "kendo-treelist-filter-menu", inputs: ["column", "filter"] }, { kind: "component", type: ColumnMenuComponent, selector: "kendo-treelist-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { kind: "directive", type: ColumnHandleDirective, selector: "[kendoTreeListColumnHandle]", inputs: ["columns", "column"] }, { kind: "component", type: FilterRowComponent, selector: "[kendoTreeListFilterRow]", inputs: ["columns", "filter", "logicalRowIndex", "lockedColumnsCount"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }] });
|
|
548
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: LogicalRowDirective, selector: "[kendoTreeListLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "isNew", "totalColumns"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoTreeListLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "column", "colIndex", "colSpan", "rowSpan", "dataRowIndex", "dataItem", "expandable"] }, { kind: "directive", type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FilterMenuComponent, selector: "kendo-treelist-filter-menu", inputs: ["column", "filter"] }, { kind: "component", type: ColumnMenuComponent, selector: "kendo-treelist-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { kind: "directive", type: ColumnHandleDirective, selector: "[kendoTreeListColumnHandle]", inputs: ["columns", "column"] }, { kind: "component", type: FilterRowComponent, selector: "[kendoTreeListFilterRow]", inputs: ["columns", "filter", "logicalRowIndex", "lockedColumnsCount"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { kind: "directive", type: TreeListSelectAllCheckboxDirective, selector: "[kendoTreeListSelectAllCheckbox]" }] });
|
|
547
549
|
}
|
|
548
550
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
549
551
|
type: Component,
|
|
@@ -656,6 +658,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
656
658
|
<kendo-checkbox
|
|
657
659
|
[inputAttributes]="{'aria-label': messageFor('selectAllRowsCheckboxLabel')}"
|
|
658
660
|
kendoTreeListFocusable
|
|
661
|
+
kendoTreeListSelectAllCheckbox
|
|
659
662
|
(checkedStateChange)="selectAllChange($event)"
|
|
660
663
|
></kendo-checkbox>
|
|
661
664
|
</ng-template>
|
|
@@ -732,7 +735,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
732
735
|
</tr>
|
|
733
736
|
`,
|
|
734
737
|
standalone: true,
|
|
735
|
-
imports: [NgFor, LogicalRowDirective, NgIf, LogicalCellDirective, DropTargetDirective, DraggableDirective, DraggableColumnDirective, NgClass, NgStyle,
|
|
738
|
+
imports: [NgFor, LogicalRowDirective, NgIf, LogicalCellDirective, DropTargetDirective, DraggableDirective, DraggableColumnDirective, NgClass, NgStyle,
|
|
739
|
+
FilterMenuComponent, ColumnMenuComponent, TemplateContextDirective, IconWrapperComponent, FocusableDirective, ColumnHandleDirective, FilterRowComponent,
|
|
740
|
+
CheckBoxComponent, TreeListSelectAllCheckboxDirective]
|
|
736
741
|
}]
|
|
737
742
|
}], ctorParameters: function () { return [{ type: i1.SinglePopupService }, { type: i2.DragHintService }, { type: i3.DropCueService }, { type: i4.ColumnReorderService }, { type: i5.SortService }, { type: i6.SelectionService }, { type: i7.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { totalColumnLevels: [{
|
|
738
743
|
type: Input
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { ChangeDetectorRef, Directive, ElementRef, NgZone, Renderer2 } from '@angular/core';
|
|
6
|
+
import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
|
|
7
|
+
import { SelectionService } from '../../selection/selection.service';
|
|
8
|
+
import { Subscription } from 'rxjs';
|
|
9
|
+
import { SelectableDirective } from '../../selection/selectable.directive';
|
|
10
|
+
import { isPresent } from '@progress/kendo-angular-common';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@progress/kendo-angular-inputs";
|
|
13
|
+
import * as i2 from "../../selection/selection.service";
|
|
14
|
+
import * as i3 from "../../selection/selectable.directive";
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
*/
|
|
18
|
+
export class TreeListSelectAllCheckboxDirective {
|
|
19
|
+
sub = new Subscription();
|
|
20
|
+
setState = true;
|
|
21
|
+
constructor(host, hostEl, selectionService, selectableDirective, cdr, zone, renderer) {
|
|
22
|
+
this.sub = selectionService.changes.subscribe(eventData => {
|
|
23
|
+
// omit setting the state when the selection change comes from clicking the checkbox, and clear the flag
|
|
24
|
+
if (!this.setState) {
|
|
25
|
+
this.setState = true;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const allSelected = eventData.sender.view.total === selectableDirective.stateArray.length;
|
|
29
|
+
const noneSelected = selectableDirective.stateArray.length === 0;
|
|
30
|
+
const someSelected = !noneSelected && !allSelected;
|
|
31
|
+
if (allSelected && host.checkedState !== true) {
|
|
32
|
+
host.checkedState = true;
|
|
33
|
+
}
|
|
34
|
+
else if (someSelected && host.checkedState !== 'indeterminate') {
|
|
35
|
+
host.checkedState = 'indeterminate';
|
|
36
|
+
}
|
|
37
|
+
else if (noneSelected && host.checkedState !== false) {
|
|
38
|
+
host.checkedState = false;
|
|
39
|
+
}
|
|
40
|
+
cdr.markForCheck();
|
|
41
|
+
});
|
|
42
|
+
// set flag for conditional checkbox state logic
|
|
43
|
+
['pointerdown', 'keydown'].forEach(eventName => this.sub.add(renderer.listen(hostEl.nativeElement, eventName, (e) => {
|
|
44
|
+
const isSpace = e.key && e.key === ' ';
|
|
45
|
+
const spaceOrPointer = !isPresent(e.key) || isSpace;
|
|
46
|
+
spaceOrPointer && (this.setState = false);
|
|
47
|
+
})));
|
|
48
|
+
}
|
|
49
|
+
ngOnDestroy() {
|
|
50
|
+
this.sub && this.sub.unsubscribe();
|
|
51
|
+
}
|
|
52
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeListSelectAllCheckboxDirective, deps: [{ token: i1.CheckBoxComponent }, { token: i0.ElementRef }, { token: i2.SelectionService }, { token: i3.SelectableDirective }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
53
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TreeListSelectAllCheckboxDirective, isStandalone: true, selector: "[kendoTreeListSelectAllCheckbox]", ngImport: i0 });
|
|
54
|
+
}
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeListSelectAllCheckboxDirective, decorators: [{
|
|
56
|
+
type: Directive,
|
|
57
|
+
args: [{
|
|
58
|
+
selector: '[kendoTreeListSelectAllCheckbox]',
|
|
59
|
+
standalone: true
|
|
60
|
+
}]
|
|
61
|
+
}], ctorParameters: function () { return [{ type: i1.CheckBoxComponent }, { type: i0.ElementRef }, { type: i2.SelectionService }, { type: i3.SelectableDirective }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; } });
|
|
@@ -27,6 +27,7 @@ import { plusIcon, cancelIcon, lockIcon, unlockIcon, insertMiddleIcon, caretAltD
|
|
|
27
27
|
import * as i95 from '@progress/kendo-angular-pager';
|
|
28
28
|
import { PagerContextService, PagerNavigationService, PagerTemplateDirective, KENDO_PAGER } from '@progress/kendo-angular-pager';
|
|
29
29
|
import { getter, setter } from '@progress/kendo-common';
|
|
30
|
+
import * as i1$5 from '@progress/kendo-angular-inputs';
|
|
30
31
|
import { NumericTextBoxComponent, CheckBoxComponent, TextBoxComponent, RadioButtonComponent } from '@progress/kendo-angular-inputs';
|
|
31
32
|
import * as i1$3 from '@progress/kendo-angular-intl';
|
|
32
33
|
import { DropDownListComponent, AutoCompleteComponent } from '@progress/kendo-angular-dropdowns';
|
|
@@ -45,8 +46,8 @@ const packageMetadata = {
|
|
|
45
46
|
name: '@progress/kendo-angular-treelist',
|
|
46
47
|
productName: 'Kendo UI for Angular',
|
|
47
48
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
48
|
-
publishDate:
|
|
49
|
-
version: '17.0.2-develop.
|
|
49
|
+
publishDate: 1731668811,
|
|
50
|
+
version: '17.0.2-develop.7',
|
|
50
51
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
51
52
|
};
|
|
52
53
|
|
|
@@ -13308,6 +13309,243 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
13308
13309
|
type: Input
|
|
13309
13310
|
}] } });
|
|
13310
13311
|
|
|
13312
|
+
const defaultColumnKeyGetter = (_column, columnIndex) => columnIndex;
|
|
13313
|
+
/**
|
|
13314
|
+
* A directive which controls the selection state. [See example](slug:selection_treelist).
|
|
13315
|
+
*/
|
|
13316
|
+
class SelectableDirective {
|
|
13317
|
+
treelist;
|
|
13318
|
+
/**
|
|
13319
|
+
* @hidden
|
|
13320
|
+
*/
|
|
13321
|
+
set selectable(value) {
|
|
13322
|
+
if (typeof value === 'object') { // add method to normalize this
|
|
13323
|
+
this._settings = value;
|
|
13324
|
+
}
|
|
13325
|
+
else {
|
|
13326
|
+
this._settings = {
|
|
13327
|
+
enabled: value
|
|
13328
|
+
};
|
|
13329
|
+
}
|
|
13330
|
+
this.state = createState(this._settings);
|
|
13331
|
+
this.state.fromArray(this._selectedItems || []);
|
|
13332
|
+
if (this._settings.enabled !== false) {
|
|
13333
|
+
this.treelist.isSelected = this._settings.mode === 'cell' ? this.cellSelected : this.rowSelected;
|
|
13334
|
+
this.subscribeSelection();
|
|
13335
|
+
}
|
|
13336
|
+
else {
|
|
13337
|
+
this.treelist.isSelected = () => false;
|
|
13338
|
+
this.unsubscribeSelection();
|
|
13339
|
+
}
|
|
13340
|
+
this.treelist.updateView();
|
|
13341
|
+
}
|
|
13342
|
+
/**
|
|
13343
|
+
* Specifies the selected items.
|
|
13344
|
+
*/
|
|
13345
|
+
set selectedItems(value) {
|
|
13346
|
+
if (!value) {
|
|
13347
|
+
this.state.clear();
|
|
13348
|
+
}
|
|
13349
|
+
else if (value !== this.lastChange) {
|
|
13350
|
+
this.state.fromArray(value);
|
|
13351
|
+
this.treelist.updateView();
|
|
13352
|
+
}
|
|
13353
|
+
this._selectedItems = value;
|
|
13354
|
+
}
|
|
13355
|
+
/**
|
|
13356
|
+
* Fires when the selected items are changed.
|
|
13357
|
+
*/
|
|
13358
|
+
selectedItemsChange = new EventEmitter();
|
|
13359
|
+
/**
|
|
13360
|
+
* The field name or a function that specify the dataItems key.
|
|
13361
|
+
*/
|
|
13362
|
+
set itemKey(value) {
|
|
13363
|
+
if (isString(value)) {
|
|
13364
|
+
this._keyGetter = getter(String(value));
|
|
13365
|
+
}
|
|
13366
|
+
else {
|
|
13367
|
+
this._keyGetter = value;
|
|
13368
|
+
}
|
|
13369
|
+
}
|
|
13370
|
+
/**
|
|
13371
|
+
* The field name or a function that specify the columns key.
|
|
13372
|
+
*/
|
|
13373
|
+
set columnKey(value) {
|
|
13374
|
+
if (isString(value)) {
|
|
13375
|
+
this._columnKeyGetter = getter(String(value));
|
|
13376
|
+
}
|
|
13377
|
+
else if (value) {
|
|
13378
|
+
this._columnKeyGetter = value;
|
|
13379
|
+
}
|
|
13380
|
+
}
|
|
13381
|
+
/**
|
|
13382
|
+
* @hidden
|
|
13383
|
+
*/
|
|
13384
|
+
get stateArray() {
|
|
13385
|
+
return this.state.toArray();
|
|
13386
|
+
}
|
|
13387
|
+
get keyGetter() {
|
|
13388
|
+
return this._keyGetter || this.treelist.idGetter;
|
|
13389
|
+
}
|
|
13390
|
+
get columnKeyGetter() {
|
|
13391
|
+
return this._columnKeyGetter || defaultColumnKeyGetter;
|
|
13392
|
+
}
|
|
13393
|
+
subscriptions;
|
|
13394
|
+
state = new RowSelectionState();
|
|
13395
|
+
_settings;
|
|
13396
|
+
lastChange;
|
|
13397
|
+
_columnKeyGetter;
|
|
13398
|
+
_keyGetter;
|
|
13399
|
+
_selectedItems = [];
|
|
13400
|
+
constructor(treelist) {
|
|
13401
|
+
this.treelist = treelist;
|
|
13402
|
+
this.cellSelected = this.cellSelected.bind(this);
|
|
13403
|
+
this.rowSelected = this.rowSelected.bind(this);
|
|
13404
|
+
this.selectionChange = this.selectionChange.bind(this);
|
|
13405
|
+
this.updateColumnIndices = this.updateColumnIndices.bind(this);
|
|
13406
|
+
this.treelist.selectable = this.selectable = true;
|
|
13407
|
+
}
|
|
13408
|
+
ngOnDestroy() {
|
|
13409
|
+
this.unsubscribeSelection();
|
|
13410
|
+
}
|
|
13411
|
+
/**
|
|
13412
|
+
* @hidden
|
|
13413
|
+
*/
|
|
13414
|
+
cellSelected(dataItem, column, columnIndex) {
|
|
13415
|
+
return this.state.has(this.keyGetter(dataItem), this.columnKeyGetter(column, columnIndex));
|
|
13416
|
+
}
|
|
13417
|
+
/**
|
|
13418
|
+
* @hidden
|
|
13419
|
+
*/
|
|
13420
|
+
rowSelected(dataItem) {
|
|
13421
|
+
return this.state.has(this.keyGetter(dataItem));
|
|
13422
|
+
}
|
|
13423
|
+
selectionChange({ action, items }) {
|
|
13424
|
+
if (action === 'select' || action === 'add') {
|
|
13425
|
+
if (action === 'select') {
|
|
13426
|
+
this.state.clear();
|
|
13427
|
+
}
|
|
13428
|
+
items.forEach(item => {
|
|
13429
|
+
this.state.add(this.keyGetter(item.dataItem), this.columnKeyGetter(item.column, item.columnIndex));
|
|
13430
|
+
});
|
|
13431
|
+
}
|
|
13432
|
+
else {
|
|
13433
|
+
items.forEach(item => {
|
|
13434
|
+
this.state.remove(this.keyGetter(item.dataItem), this.columnKeyGetter(item.column, item.columnIndex));
|
|
13435
|
+
});
|
|
13436
|
+
}
|
|
13437
|
+
this.emitSelectedItemsChange();
|
|
13438
|
+
}
|
|
13439
|
+
emitSelectedItemsChange() {
|
|
13440
|
+
this.lastChange = this.state.toArray();
|
|
13441
|
+
this.selectedItemsChange.emit(this.lastChange);
|
|
13442
|
+
}
|
|
13443
|
+
subscribeSelection() {
|
|
13444
|
+
this.unsubscribeSelection();
|
|
13445
|
+
this.subscriptions = this.treelist.selectionChange.subscribe(this.selectionChange);
|
|
13446
|
+
if (this._settings.mode === 'cell') {
|
|
13447
|
+
this.subscriptions.add(this.treelist.columnOrderChange.subscribe(this.updateColumnIndices));
|
|
13448
|
+
this.subscriptions.add(this.treelist.columnLockedChange.subscribe(this.updateColumnIndices));
|
|
13449
|
+
}
|
|
13450
|
+
}
|
|
13451
|
+
unsubscribeSelection() {
|
|
13452
|
+
if (this.subscriptions) {
|
|
13453
|
+
this.subscriptions.unsubscribe();
|
|
13454
|
+
this.subscriptions = null;
|
|
13455
|
+
}
|
|
13456
|
+
}
|
|
13457
|
+
updateColumnIndices() {
|
|
13458
|
+
if (!this._columnKeyGetter) {
|
|
13459
|
+
const changes = new Map();
|
|
13460
|
+
const currentIndices = [];
|
|
13461
|
+
this.leafColumns.forEach((column) => {
|
|
13462
|
+
currentIndices.push(column);
|
|
13463
|
+
});
|
|
13464
|
+
this.treelist.columnsContainer.refresh();
|
|
13465
|
+
const leafColumns = this.leafColumns;
|
|
13466
|
+
currentIndices.forEach((column, index) => {
|
|
13467
|
+
if (column !== leafColumns[index]) {
|
|
13468
|
+
changes.set(index, leafColumns.indexOf(column));
|
|
13469
|
+
}
|
|
13470
|
+
});
|
|
13471
|
+
if (changes.size && this.state.updateColumKeys(changes)) {
|
|
13472
|
+
this.emitSelectedItemsChange();
|
|
13473
|
+
}
|
|
13474
|
+
}
|
|
13475
|
+
}
|
|
13476
|
+
get leafColumns() {
|
|
13477
|
+
return this.treelist.lockedLeafColumns.toArray().concat(this.treelist.nonLockedLeafColumns.toArray());
|
|
13478
|
+
}
|
|
13479
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectableDirective, deps: [{ token: TreeListComponent }], target: i0.ɵɵFactoryTarget.Directive });
|
|
13480
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SelectableDirective, isStandalone: true, selector: "[kendoTreeListSelectable]", inputs: { selectable: "selectable", selectedItems: "selectedItems", itemKey: "itemKey", columnKey: "columnKey" }, outputs: { selectedItemsChange: "selectedItemsChange" }, exportAs: ["kendoTreeListSelectable"], ngImport: i0 });
|
|
13481
|
+
}
|
|
13482
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectableDirective, decorators: [{
|
|
13483
|
+
type: Directive,
|
|
13484
|
+
args: [{
|
|
13485
|
+
exportAs: 'kendoTreeListSelectable',
|
|
13486
|
+
selector: '[kendoTreeListSelectable]',
|
|
13487
|
+
standalone: true
|
|
13488
|
+
}]
|
|
13489
|
+
}], ctorParameters: function () { return [{ type: TreeListComponent }]; }, propDecorators: { selectable: [{
|
|
13490
|
+
type: Input
|
|
13491
|
+
}], selectedItems: [{
|
|
13492
|
+
type: Input
|
|
13493
|
+
}], selectedItemsChange: [{
|
|
13494
|
+
type: Output
|
|
13495
|
+
}], itemKey: [{
|
|
13496
|
+
type: Input
|
|
13497
|
+
}], columnKey: [{
|
|
13498
|
+
type: Input
|
|
13499
|
+
}] } });
|
|
13500
|
+
|
|
13501
|
+
/**
|
|
13502
|
+
* @hidden
|
|
13503
|
+
*/
|
|
13504
|
+
class TreeListSelectAllCheckboxDirective {
|
|
13505
|
+
sub = new Subscription();
|
|
13506
|
+
setState = true;
|
|
13507
|
+
constructor(host, hostEl, selectionService, selectableDirective, cdr, zone, renderer) {
|
|
13508
|
+
this.sub = selectionService.changes.subscribe(eventData => {
|
|
13509
|
+
// omit setting the state when the selection change comes from clicking the checkbox, and clear the flag
|
|
13510
|
+
if (!this.setState) {
|
|
13511
|
+
this.setState = true;
|
|
13512
|
+
return;
|
|
13513
|
+
}
|
|
13514
|
+
const allSelected = eventData.sender.view.total === selectableDirective.stateArray.length;
|
|
13515
|
+
const noneSelected = selectableDirective.stateArray.length === 0;
|
|
13516
|
+
const someSelected = !noneSelected && !allSelected;
|
|
13517
|
+
if (allSelected && host.checkedState !== true) {
|
|
13518
|
+
host.checkedState = true;
|
|
13519
|
+
}
|
|
13520
|
+
else if (someSelected && host.checkedState !== 'indeterminate') {
|
|
13521
|
+
host.checkedState = 'indeterminate';
|
|
13522
|
+
}
|
|
13523
|
+
else if (noneSelected && host.checkedState !== false) {
|
|
13524
|
+
host.checkedState = false;
|
|
13525
|
+
}
|
|
13526
|
+
cdr.markForCheck();
|
|
13527
|
+
});
|
|
13528
|
+
// set flag for conditional checkbox state logic
|
|
13529
|
+
['pointerdown', 'keydown'].forEach(eventName => this.sub.add(renderer.listen(hostEl.nativeElement, eventName, (e) => {
|
|
13530
|
+
const isSpace = e.key && e.key === ' ';
|
|
13531
|
+
const spaceOrPointer = !isPresent$1(e.key) || isSpace;
|
|
13532
|
+
spaceOrPointer && (this.setState = false);
|
|
13533
|
+
})));
|
|
13534
|
+
}
|
|
13535
|
+
ngOnDestroy() {
|
|
13536
|
+
this.sub && this.sub.unsubscribe();
|
|
13537
|
+
}
|
|
13538
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeListSelectAllCheckboxDirective, deps: [{ token: i1$5.CheckBoxComponent }, { token: i0.ElementRef }, { token: SelectionService }, { token: SelectableDirective }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
13539
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TreeListSelectAllCheckboxDirective, isStandalone: true, selector: "[kendoTreeListSelectAllCheckbox]", ngImport: i0 });
|
|
13540
|
+
}
|
|
13541
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeListSelectAllCheckboxDirective, decorators: [{
|
|
13542
|
+
type: Directive,
|
|
13543
|
+
args: [{
|
|
13544
|
+
selector: '[kendoTreeListSelectAllCheckbox]',
|
|
13545
|
+
standalone: true
|
|
13546
|
+
}]
|
|
13547
|
+
}], ctorParameters: function () { return [{ type: i1$5.CheckBoxComponent }, { type: i0.ElementRef }, { type: SelectionService }, { type: SelectableDirective }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; } });
|
|
13548
|
+
|
|
13311
13549
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
13312
13550
|
const mergeObjects = (...args) => Object.assign.apply(null, [{}].concat(args));
|
|
13313
13551
|
const directions = initialDirection => initialDirection === "asc" ? ["asc", "desc"] : ["desc", "asc"];
|
|
@@ -13734,6 +13972,7 @@ class HeaderComponent {
|
|
|
13734
13972
|
<kendo-checkbox
|
|
13735
13973
|
[inputAttributes]="{'aria-label': messageFor('selectAllRowsCheckboxLabel')}"
|
|
13736
13974
|
kendoTreeListFocusable
|
|
13975
|
+
kendoTreeListSelectAllCheckbox
|
|
13737
13976
|
(checkedStateChange)="selectAllChange($event)"
|
|
13738
13977
|
></kendo-checkbox>
|
|
13739
13978
|
</ng-template>
|
|
@@ -13808,7 +14047,7 @@ class HeaderComponent {
|
|
|
13808
14047
|
[logicalSlaveCellsCount]="unlockedColumnsCount"
|
|
13809
14048
|
>
|
|
13810
14049
|
</tr>
|
|
13811
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: LogicalRowDirective, selector: "[kendoTreeListLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "isNew", "totalColumns"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoTreeListLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "column", "colIndex", "colSpan", "rowSpan", "dataRowIndex", "dataItem", "expandable"] }, { kind: "directive", type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FilterMenuComponent, selector: "kendo-treelist-filter-menu", inputs: ["column", "filter"] }, { kind: "component", type: ColumnMenuComponent, selector: "kendo-treelist-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { kind: "directive", type: ColumnHandleDirective, selector: "[kendoTreeListColumnHandle]", inputs: ["columns", "column"] }, { kind: "component", type: FilterRowComponent, selector: "[kendoTreeListFilterRow]", inputs: ["columns", "filter", "logicalRowIndex", "lockedColumnsCount"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }] });
|
|
14050
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: LogicalRowDirective, selector: "[kendoTreeListLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "isNew", "totalColumns"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoTreeListLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "column", "colIndex", "colSpan", "rowSpan", "dataRowIndex", "dataItem", "expandable"] }, { kind: "directive", type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FilterMenuComponent, selector: "kendo-treelist-filter-menu", inputs: ["column", "filter"] }, { kind: "component", type: ColumnMenuComponent, selector: "kendo-treelist-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { kind: "directive", type: ColumnHandleDirective, selector: "[kendoTreeListColumnHandle]", inputs: ["columns", "column"] }, { kind: "component", type: FilterRowComponent, selector: "[kendoTreeListFilterRow]", inputs: ["columns", "filter", "logicalRowIndex", "lockedColumnsCount"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { kind: "directive", type: TreeListSelectAllCheckboxDirective, selector: "[kendoTreeListSelectAllCheckbox]" }] });
|
|
13812
14051
|
}
|
|
13813
14052
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
13814
14053
|
type: Component,
|
|
@@ -13921,6 +14160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
13921
14160
|
<kendo-checkbox
|
|
13922
14161
|
[inputAttributes]="{'aria-label': messageFor('selectAllRowsCheckboxLabel')}"
|
|
13923
14162
|
kendoTreeListFocusable
|
|
14163
|
+
kendoTreeListSelectAllCheckbox
|
|
13924
14164
|
(checkedStateChange)="selectAllChange($event)"
|
|
13925
14165
|
></kendo-checkbox>
|
|
13926
14166
|
</ng-template>
|
|
@@ -13997,7 +14237,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
13997
14237
|
</tr>
|
|
13998
14238
|
`,
|
|
13999
14239
|
standalone: true,
|
|
14000
|
-
imports: [NgFor, LogicalRowDirective, NgIf, LogicalCellDirective, DropTargetDirective, DraggableDirective, DraggableColumnDirective, NgClass, NgStyle,
|
|
14240
|
+
imports: [NgFor, LogicalRowDirective, NgIf, LogicalCellDirective, DropTargetDirective, DraggableDirective, DraggableColumnDirective, NgClass, NgStyle,
|
|
14241
|
+
FilterMenuComponent, ColumnMenuComponent, TemplateContextDirective, IconWrapperComponent, FocusableDirective, ColumnHandleDirective, FilterRowComponent,
|
|
14242
|
+
CheckBoxComponent, TreeListSelectAllCheckboxDirective]
|
|
14001
14243
|
}]
|
|
14002
14244
|
}], ctorParameters: function () { return [{ type: SinglePopupService }, { type: DragHintService }, { type: DropCueService }, { type: ColumnReorderService }, { type: SortService }, { type: SelectionService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { totalColumnLevels: [{
|
|
14003
14245
|
type: Input
|
|
@@ -18508,189 +18750,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
18508
18750
|
type: Input
|
|
18509
18751
|
}] } });
|
|
18510
18752
|
|
|
18511
|
-
const defaultColumnKeyGetter = (_column, columnIndex) => columnIndex;
|
|
18512
|
-
/**
|
|
18513
|
-
* A directive which controls the selection state. [See example](slug:selection_treelist).
|
|
18514
|
-
*/
|
|
18515
|
-
class SelectableDirective {
|
|
18516
|
-
treelist;
|
|
18517
|
-
/**
|
|
18518
|
-
* @hidden
|
|
18519
|
-
*/
|
|
18520
|
-
set selectable(value) {
|
|
18521
|
-
if (typeof value === 'object') { // add method to normalize this
|
|
18522
|
-
this._settings = value;
|
|
18523
|
-
}
|
|
18524
|
-
else {
|
|
18525
|
-
this._settings = {
|
|
18526
|
-
enabled: value
|
|
18527
|
-
};
|
|
18528
|
-
}
|
|
18529
|
-
this.state = createState(this._settings);
|
|
18530
|
-
this.state.fromArray(this._selectedItems || []);
|
|
18531
|
-
if (this._settings.enabled !== false) {
|
|
18532
|
-
this.treelist.isSelected = this._settings.mode === 'cell' ? this.cellSelected : this.rowSelected;
|
|
18533
|
-
this.subscribeSelection();
|
|
18534
|
-
}
|
|
18535
|
-
else {
|
|
18536
|
-
this.treelist.isSelected = () => false;
|
|
18537
|
-
this.unsubscribeSelection();
|
|
18538
|
-
}
|
|
18539
|
-
this.treelist.updateView();
|
|
18540
|
-
}
|
|
18541
|
-
/**
|
|
18542
|
-
* Specifies the selected items.
|
|
18543
|
-
*/
|
|
18544
|
-
set selectedItems(value) {
|
|
18545
|
-
if (!value) {
|
|
18546
|
-
this.state.clear();
|
|
18547
|
-
}
|
|
18548
|
-
else if (value !== this.lastChange) {
|
|
18549
|
-
this.state.fromArray(value);
|
|
18550
|
-
this.treelist.updateView();
|
|
18551
|
-
}
|
|
18552
|
-
this._selectedItems = value;
|
|
18553
|
-
}
|
|
18554
|
-
/**
|
|
18555
|
-
* Fires when the selected items are changed.
|
|
18556
|
-
*/
|
|
18557
|
-
selectedItemsChange = new EventEmitter();
|
|
18558
|
-
/**
|
|
18559
|
-
* The field name or a function that specify the dataItems key.
|
|
18560
|
-
*/
|
|
18561
|
-
set itemKey(value) {
|
|
18562
|
-
if (isString(value)) {
|
|
18563
|
-
this._keyGetter = getter(String(value));
|
|
18564
|
-
}
|
|
18565
|
-
else {
|
|
18566
|
-
this._keyGetter = value;
|
|
18567
|
-
}
|
|
18568
|
-
}
|
|
18569
|
-
/**
|
|
18570
|
-
* The field name or a function that specify the columns key.
|
|
18571
|
-
*/
|
|
18572
|
-
set columnKey(value) {
|
|
18573
|
-
if (isString(value)) {
|
|
18574
|
-
this._columnKeyGetter = getter(String(value));
|
|
18575
|
-
}
|
|
18576
|
-
else if (value) {
|
|
18577
|
-
this._columnKeyGetter = value;
|
|
18578
|
-
}
|
|
18579
|
-
}
|
|
18580
|
-
get keyGetter() {
|
|
18581
|
-
return this._keyGetter || this.treelist.idGetter;
|
|
18582
|
-
}
|
|
18583
|
-
get columnKeyGetter() {
|
|
18584
|
-
return this._columnKeyGetter || defaultColumnKeyGetter;
|
|
18585
|
-
}
|
|
18586
|
-
subscriptions;
|
|
18587
|
-
state = new RowSelectionState();
|
|
18588
|
-
_settings;
|
|
18589
|
-
lastChange;
|
|
18590
|
-
_columnKeyGetter;
|
|
18591
|
-
_keyGetter;
|
|
18592
|
-
_selectedItems = [];
|
|
18593
|
-
constructor(treelist) {
|
|
18594
|
-
this.treelist = treelist;
|
|
18595
|
-
this.cellSelected = this.cellSelected.bind(this);
|
|
18596
|
-
this.rowSelected = this.rowSelected.bind(this);
|
|
18597
|
-
this.selectionChange = this.selectionChange.bind(this);
|
|
18598
|
-
this.updateColumnIndices = this.updateColumnIndices.bind(this);
|
|
18599
|
-
this.treelist.selectable = this.selectable = true;
|
|
18600
|
-
}
|
|
18601
|
-
ngOnDestroy() {
|
|
18602
|
-
this.unsubscribeSelection();
|
|
18603
|
-
}
|
|
18604
|
-
/**
|
|
18605
|
-
* @hidden
|
|
18606
|
-
*/
|
|
18607
|
-
cellSelected(dataItem, column, columnIndex) {
|
|
18608
|
-
return this.state.has(this.keyGetter(dataItem), this.columnKeyGetter(column, columnIndex));
|
|
18609
|
-
}
|
|
18610
|
-
/**
|
|
18611
|
-
* @hidden
|
|
18612
|
-
*/
|
|
18613
|
-
rowSelected(dataItem) {
|
|
18614
|
-
return this.state.has(this.keyGetter(dataItem));
|
|
18615
|
-
}
|
|
18616
|
-
selectionChange({ action, items }) {
|
|
18617
|
-
if (action === 'select' || action === 'add') {
|
|
18618
|
-
if (action === 'select') {
|
|
18619
|
-
this.state.clear();
|
|
18620
|
-
}
|
|
18621
|
-
items.forEach(item => {
|
|
18622
|
-
this.state.add(this.keyGetter(item.dataItem), this.columnKeyGetter(item.column, item.columnIndex));
|
|
18623
|
-
});
|
|
18624
|
-
}
|
|
18625
|
-
else {
|
|
18626
|
-
items.forEach(item => {
|
|
18627
|
-
this.state.remove(this.keyGetter(item.dataItem), this.columnKeyGetter(item.column, item.columnIndex));
|
|
18628
|
-
});
|
|
18629
|
-
}
|
|
18630
|
-
this.emitSelectedItemsChange();
|
|
18631
|
-
}
|
|
18632
|
-
emitSelectedItemsChange() {
|
|
18633
|
-
this.lastChange = this.state.toArray();
|
|
18634
|
-
this.selectedItemsChange.emit(this.lastChange);
|
|
18635
|
-
}
|
|
18636
|
-
subscribeSelection() {
|
|
18637
|
-
this.unsubscribeSelection();
|
|
18638
|
-
this.subscriptions = this.treelist.selectionChange.subscribe(this.selectionChange);
|
|
18639
|
-
if (this._settings.mode === 'cell') {
|
|
18640
|
-
this.subscriptions.add(this.treelist.columnOrderChange.subscribe(this.updateColumnIndices));
|
|
18641
|
-
this.subscriptions.add(this.treelist.columnLockedChange.subscribe(this.updateColumnIndices));
|
|
18642
|
-
}
|
|
18643
|
-
}
|
|
18644
|
-
unsubscribeSelection() {
|
|
18645
|
-
if (this.subscriptions) {
|
|
18646
|
-
this.subscriptions.unsubscribe();
|
|
18647
|
-
this.subscriptions = null;
|
|
18648
|
-
}
|
|
18649
|
-
}
|
|
18650
|
-
updateColumnIndices() {
|
|
18651
|
-
if (!this._columnKeyGetter) {
|
|
18652
|
-
const changes = new Map();
|
|
18653
|
-
const currentIndices = [];
|
|
18654
|
-
this.leafColumns.forEach((column) => {
|
|
18655
|
-
currentIndices.push(column);
|
|
18656
|
-
});
|
|
18657
|
-
this.treelist.columnsContainer.refresh();
|
|
18658
|
-
const leafColumns = this.leafColumns;
|
|
18659
|
-
currentIndices.forEach((column, index) => {
|
|
18660
|
-
if (column !== leafColumns[index]) {
|
|
18661
|
-
changes.set(index, leafColumns.indexOf(column));
|
|
18662
|
-
}
|
|
18663
|
-
});
|
|
18664
|
-
if (changes.size && this.state.updateColumKeys(changes)) {
|
|
18665
|
-
this.emitSelectedItemsChange();
|
|
18666
|
-
}
|
|
18667
|
-
}
|
|
18668
|
-
}
|
|
18669
|
-
get leafColumns() {
|
|
18670
|
-
return this.treelist.lockedLeafColumns.toArray().concat(this.treelist.nonLockedLeafColumns.toArray());
|
|
18671
|
-
}
|
|
18672
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectableDirective, deps: [{ token: TreeListComponent }], target: i0.ɵɵFactoryTarget.Directive });
|
|
18673
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SelectableDirective, isStandalone: true, selector: "[kendoTreeListSelectable]", inputs: { selectable: "selectable", selectedItems: "selectedItems", itemKey: "itemKey", columnKey: "columnKey" }, outputs: { selectedItemsChange: "selectedItemsChange" }, exportAs: ["kendoTreeListSelectable"], ngImport: i0 });
|
|
18674
|
-
}
|
|
18675
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectableDirective, decorators: [{
|
|
18676
|
-
type: Directive,
|
|
18677
|
-
args: [{
|
|
18678
|
-
exportAs: 'kendoTreeListSelectable',
|
|
18679
|
-
selector: '[kendoTreeListSelectable]',
|
|
18680
|
-
standalone: true
|
|
18681
|
-
}]
|
|
18682
|
-
}], ctorParameters: function () { return [{ type: TreeListComponent }]; }, propDecorators: { selectable: [{
|
|
18683
|
-
type: Input
|
|
18684
|
-
}], selectedItems: [{
|
|
18685
|
-
type: Input
|
|
18686
|
-
}], selectedItemsChange: [{
|
|
18687
|
-
type: Output
|
|
18688
|
-
}], itemKey: [{
|
|
18689
|
-
type: Input
|
|
18690
|
-
}], columnKey: [{
|
|
18691
|
-
type: Input
|
|
18692
|
-
}] } });
|
|
18693
|
-
|
|
18694
18753
|
/**
|
|
18695
18754
|
* Represents the Kendo UI TreeListSpacer component for Angular.
|
|
18696
18755
|
* Used to give additional white space between the Pager inner elements,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-treelist",
|
|
3
|
-
"version": "17.0.2-develop.
|
|
3
|
+
"version": "17.0.2-develop.7",
|
|
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",
|
|
@@ -31,25 +31,26 @@
|
|
|
31
31
|
"@progress/kendo-data-query": "^1.0.0",
|
|
32
32
|
"@progress/kendo-drawing": "^1.21.0",
|
|
33
33
|
"@progress/kendo-licensing": "^1.0.2",
|
|
34
|
-
"@progress/kendo-angular-buttons": "17.0.2-develop.
|
|
35
|
-
"@progress/kendo-angular-common": "17.0.2-develop.
|
|
36
|
-
"@progress/kendo-angular-dateinputs": "17.0.2-develop.
|
|
37
|
-
"@progress/kendo-angular-dropdowns": "17.0.2-develop.
|
|
38
|
-
"@progress/kendo-angular-excel-export": "17.0.2-develop.
|
|
39
|
-
"@progress/kendo-angular-icons": "17.0.2-develop.
|
|
40
|
-
"@progress/kendo-angular-inputs": "17.0.2-develop.
|
|
41
|
-
"@progress/kendo-angular-intl": "17.0.2-develop.
|
|
42
|
-
"@progress/kendo-angular-l10n": "17.0.2-develop.
|
|
43
|
-
"@progress/kendo-angular-label": "17.0.2-develop.
|
|
44
|
-
"@progress/kendo-angular-
|
|
45
|
-
"@progress/kendo-angular-
|
|
46
|
-
"@progress/kendo-angular-
|
|
47
|
-
"@progress/kendo-angular-
|
|
34
|
+
"@progress/kendo-angular-buttons": "17.0.2-develop.7",
|
|
35
|
+
"@progress/kendo-angular-common": "17.0.2-develop.7",
|
|
36
|
+
"@progress/kendo-angular-dateinputs": "17.0.2-develop.7",
|
|
37
|
+
"@progress/kendo-angular-dropdowns": "17.0.2-develop.7",
|
|
38
|
+
"@progress/kendo-angular-excel-export": "17.0.2-develop.7",
|
|
39
|
+
"@progress/kendo-angular-icons": "17.0.2-develop.7",
|
|
40
|
+
"@progress/kendo-angular-inputs": "17.0.2-develop.7",
|
|
41
|
+
"@progress/kendo-angular-intl": "17.0.2-develop.7",
|
|
42
|
+
"@progress/kendo-angular-l10n": "17.0.2-develop.7",
|
|
43
|
+
"@progress/kendo-angular-label": "17.0.2-develop.7",
|
|
44
|
+
"@progress/kendo-angular-pager": "17.0.2-develop.7",
|
|
45
|
+
"@progress/kendo-angular-pdf-export": "17.0.2-develop.7",
|
|
46
|
+
"@progress/kendo-angular-popup": "17.0.2-develop.7",
|
|
47
|
+
"@progress/kendo-angular-toolbar": "17.0.2-develop.7",
|
|
48
|
+
"@progress/kendo-angular-utils": "17.0.2-develop.7",
|
|
48
49
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
49
50
|
},
|
|
50
51
|
"dependencies": {
|
|
51
52
|
"tslib": "^2.3.1",
|
|
52
|
-
"@progress/kendo-angular-schematics": "17.0.2-develop.
|
|
53
|
+
"@progress/kendo-angular-schematics": "17.0.2-develop.7",
|
|
53
54
|
"@progress/kendo-common": "^1.0.1",
|
|
54
55
|
"@progress/kendo-file-saver": "^1.0.0"
|
|
55
56
|
},
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { ChangeDetectorRef, ElementRef, NgZone, OnDestroy, Renderer2 } from '@angular/core';
|
|
6
|
+
import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
|
|
7
|
+
import { SelectionService } from '../../selection/selection.service';
|
|
8
|
+
import { SelectableDirective } from '../../selection/selectable.directive';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
/**
|
|
11
|
+
* @hidden
|
|
12
|
+
*/
|
|
13
|
+
export declare class TreeListSelectAllCheckboxDirective implements OnDestroy {
|
|
14
|
+
private sub;
|
|
15
|
+
private setState;
|
|
16
|
+
constructor(host: CheckBoxComponent, hostEl: ElementRef, selectionService: SelectionService, selectableDirective: SelectableDirective, cdr: ChangeDetectorRef, zone: NgZone, renderer: Renderer2);
|
|
17
|
+
ngOnDestroy(): void;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TreeListSelectAllCheckboxDirective, never>;
|
|
19
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TreeListSelectAllCheckboxDirective, "[kendoTreeListSelectAllCheckbox]", never, {}, {}, never, never, true, never>;
|
|
20
|
+
}
|
|
@@ -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': '17.0.2-develop.
|
|
7
|
+
'@progress/kendo-angular-treeview': '17.0.2-develop.7',
|
|
8
8
|
// peer dependency of kendo-angular-inputs
|
|
9
|
-
'@progress/kendo-angular-dialog': '17.0.2-develop.
|
|
9
|
+
'@progress/kendo-angular-dialog': '17.0.2-develop.7',
|
|
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': '17.0.2-develop.
|
|
13
|
+
'@progress/kendo-angular-navigation': '17.0.2-develop.7',
|
|
14
14
|
} });
|
|
15
15
|
return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
|
|
16
16
|
}
|
|
@@ -43,6 +43,10 @@ export declare class SelectableDirective implements OnDestroy {
|
|
|
43
43
|
* The field name or a function that specify the columns key.
|
|
44
44
|
*/
|
|
45
45
|
set columnKey(value: string | ((column: any, columnIndex: number) => any));
|
|
46
|
+
/**
|
|
47
|
+
* @hidden
|
|
48
|
+
*/
|
|
49
|
+
get stateArray(): any[];
|
|
46
50
|
protected get keyGetter(): any;
|
|
47
51
|
protected get columnKeyGetter(): any;
|
|
48
52
|
protected subscriptions: any;
|