@progress/kendo-angular-treeview 13.2.0-develop.4 → 13.2.0-develop.6

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.
@@ -16,6 +16,10 @@ export declare const isChecked: (item: object, index: string) => CheckedState;
16
16
  * @hidden
17
17
  */
18
18
  export declare const isDisabled: (item: object, index: string) => boolean;
19
+ /**
20
+ * @hidden
21
+ */
22
+ export declare const hasCheckbox: (item: object, index: string) => boolean;
19
23
  /**
20
24
  * @hidden
21
25
  */
@@ -161,7 +161,9 @@ export class CheckDirective {
161
161
  }
162
162
  }
163
163
  checkNode(node) {
164
- if (!isPresent(node.item.dataItem) || this.treeView.isDisabled(node.item.dataItem, node.item.index)) {
164
+ if (!isPresent(node.item.dataItem) ||
165
+ this.treeView.isDisabled(node.item.dataItem, node.item.index) ||
166
+ !this.treeView.hasCheckbox(node.item.dataItem, node.item.index)) {
165
167
  return;
166
168
  }
167
169
  const currentKey = this.itemKey(node.item);
@@ -173,8 +175,11 @@ export class CheckDirective {
173
175
  const descendants = fetchLoadedDescendants(node, ({ item }) => (this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren ?
174
176
  this.treeView.isVisible(item.dataItem, item.index) :
175
177
  this.treeView.isVisible(item.dataItem, item.index) &&
176
- !this.treeView.isDisabled(item.dataItem, item.index)));
177
- pendingCheck.push(...descendants.filter((item) => this.options.checkDisabledChildren || !this.treeView.isDisabled(item.item.dataItem, item.item.index))
178
+ !this.treeView.isDisabled(item.dataItem, item.index) &&
179
+ this.treeView.hasCheckbox(item.dataItem, item.index)));
180
+ pendingCheck.push(...descendants.filter((item) => this.options.checkDisabledChildren ||
181
+ !this.treeView.isDisabled(item.item.dataItem, item.item.index) ||
182
+ this.treeView.hasCheckbox(item.item.dataItem, item.item.index))
178
183
  .map(({ item }) => this.itemKey(item)));
179
184
  }
180
185
  const shouldCheck = !this.state.has(currentKey);
@@ -196,7 +201,8 @@ export class CheckDirective {
196
201
  const parentKey = this.itemKey(currentParent.item);
197
202
  const isDisabled = this.treeView.isDisabled(currentParent.item.dataItem, currentParent.item.index);
198
203
  const allChildrenSelected = currentParent.children.every(item => this.state.has(this.itemKey(item)));
199
- if ((!isDisabled || this.options.checkDisabledChildren) && allChildrenSelected) {
204
+ const hasCheckbox = this.treeView.hasCheckbox(currentParent.item.dataItem, currentParent.item.index);
205
+ if (hasCheckbox && (!isDisabled || this.options.checkDisabledChildren) && allChildrenSelected) {
200
206
  this.state.add(parentKey);
201
207
  }
202
208
  else {
@@ -229,13 +235,16 @@ export class CheckDirective {
229
235
  lookup.children.forEach(item => {
230
236
  // ensure both the parent item and each child node is enabled
231
237
  if ((!this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index) &&
232
- !this.treeView.isDisabled(item.dataItem, item.index)) ||
238
+ !this.treeView.isDisabled(item.dataItem, item.index)) &&
239
+ (this.treeView.hasCheckbox(lookup.item.dataItem, lookup.item.index) &&
240
+ this.treeView.hasCheckbox(item.dataItem, item.index)) ||
233
241
  this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren) {
234
242
  this.state.add(this.itemKey(item));
235
243
  }
236
244
  if (this.treeView.disableParentNodesOnly &&
237
245
  !this.options.checkDisabledChildren &&
238
- this.treeView.isDisabled(item.dataItem, item.index)) {
246
+ (this.treeView.isDisabled(item.dataItem, item.index) ||
247
+ !this.treeView.hasCheckbox(item.dataItem, item.index))) {
239
248
  disabledItems.add(this.itemKey(item));
240
249
  }
241
250
  });
@@ -14,6 +14,10 @@ export const isChecked = () => 'none';
14
14
  * @hidden
15
15
  */
16
16
  export const isDisabled = () => false;
17
+ /**
18
+ * @hidden
19
+ */
20
+ export const hasCheckbox = () => true;
17
21
  /**
18
22
  * @hidden
19
23
  */
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-treeview',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1688648287,
13
- version: '13.2.0-develop.4',
12
+ publishDate: 1688730718,
13
+ version: '13.2.0-develop.6',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
15
15
  };
@@ -72,6 +72,7 @@ export class TreeViewGroupComponent {
72
72
  this.singleRecordSubscriptions = new Subscription();
73
73
  this.isChecked = () => 'none';
74
74
  this.isDisabled = () => false;
75
+ this.hasCheckbox = () => true;
75
76
  this.isExpanded = () => false;
76
77
  this.isVisible = () => true;
77
78
  this.isSelected = () => false;
@@ -296,7 +297,7 @@ export class TreeViewGroupComponent {
296
297
  }
297
298
  }
298
299
  TreeViewGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeViewGroupComponent, deps: [{ token: i1.ExpandStateService }, { token: i2.LoadingNotificationService }, { token: i3.IndexBuilderService }, { token: i4.TreeViewLookupService }, { token: i5.NavigationService }, { token: i6.NodeChildrenService }, { token: i7.DataChangeNotificationService }, { token: i0.ChangeDetectorRef }, { token: i8.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
299
- TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: { checkboxes: "checkboxes", expandIcons: "expandIcons", disabled: "disabled", selectable: "selectable", touchActions: "touchActions", disableParentNodesOnly: "disableParentNodesOnly", loadOnDemand: "loadOnDemand", trackBy: "trackBy", nodes: "nodes", textField: "textField", parentDataItem: "parentDataItem", parentIndex: "parentIndex", nodeTemplateRef: "nodeTemplateRef", loadMoreButtonTemplateRef: "loadMoreButtonTemplateRef", loadMoreService: "loadMoreService", size: "size", expandDisabledNodes: "expandDisabledNodes", isChecked: "isChecked", isDisabled: "isDisabled", isExpanded: "isExpanded", isVisible: "isVisible", isSelected: "isSelected", children: "children", hasChildren: "hasChildren" }, host: { properties: { "class.k-treeview-group": "this.kGroupClass", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: `
300
+ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: { checkboxes: "checkboxes", expandIcons: "expandIcons", disabled: "disabled", selectable: "selectable", touchActions: "touchActions", disableParentNodesOnly: "disableParentNodesOnly", loadOnDemand: "loadOnDemand", trackBy: "trackBy", nodes: "nodes", textField: "textField", parentDataItem: "parentDataItem", parentIndex: "parentIndex", nodeTemplateRef: "nodeTemplateRef", loadMoreButtonTemplateRef: "loadMoreButtonTemplateRef", loadMoreService: "loadMoreService", size: "size", expandDisabledNodes: "expandDisabledNodes", isChecked: "isChecked", isDisabled: "isDisabled", hasCheckbox: "hasCheckbox", isExpanded: "isExpanded", isVisible: "isVisible", isSelected: "isSelected", children: "children", hasChildren: "hasChildren" }, host: { properties: { "class.k-treeview-group": "this.kGroupClass", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: `
300
301
  <li
301
302
  *ngFor="let node of data; let index = index; trackBy: trackBy"
302
303
  class="k-treeview-item"
@@ -333,7 +334,7 @@ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
333
334
  </kendo-icon-wrapper>
334
335
  </span>
335
336
  <kendo-checkbox
336
- *ngIf="checkboxes"
337
+ *ngIf="checkboxes && hasCheckbox(node, nodeIndex(index))"
337
338
  [class.k-disabled]="isItemDisabled(node, index)"
338
339
  [size]="size"
339
340
  [node]="node"
@@ -385,6 +386,7 @@ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
385
386
  [hasChildren]="hasChildren"
386
387
  [isChecked]="isChecked"
387
388
  [isDisabled]="isDisabled"
389
+ [hasCheckbox]="hasCheckbox"
388
390
  [disabled]="isItemDisabled(node, index)"
389
391
  [expandDisabledNodes]="expandDisabledNodes"
390
392
  [isExpanded]="isExpanded"
@@ -444,7 +446,7 @@ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
444
446
  </span>
445
447
  </div>
446
448
  </li>
447
- `, isInline: true, components: [{ type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i10.CheckBoxComponent, selector: "kendo-checkbox", inputs: ["id", "isChecked", "node", "index", "labelText", "tabindex", "size"], outputs: ["checkStateChange"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.TreeViewItemDirective, selector: "[kendoTreeViewItem]", inputs: ["dataItem", "index", "parentDataItem", "parentIndex", "role", "loadOnDemand", "checkable", "selectable", "expandable", "isChecked", "isDisabled", "isVisible", "isExpanded", "isSelected"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.LoadingIndicatorDirective, selector: "[kendoTreeViewLoading]", inputs: ["kendoTreeViewLoading"] }, { type: i14.TreeViewItemContentDirective, selector: "[kendoTreeViewItemContent]", inputs: ["dataItem", "index", "initialSelection", "isSelected"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i11.NgSwitchDefault, selector: "[ngSwitchDefault]" }], animations: [
449
+ `, isInline: true, components: [{ type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i10.CheckBoxComponent, selector: "kendo-checkbox", inputs: ["id", "isChecked", "node", "index", "labelText", "tabindex", "size"], outputs: ["checkStateChange"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.TreeViewItemDirective, selector: "[kendoTreeViewItem]", inputs: ["dataItem", "index", "parentDataItem", "parentIndex", "role", "loadOnDemand", "checkable", "selectable", "expandable", "isChecked", "isDisabled", "isVisible", "isExpanded", "isSelected"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.LoadingIndicatorDirective, selector: "[kendoTreeViewLoading]", inputs: ["kendoTreeViewLoading"] }, { type: i14.TreeViewItemContentDirective, selector: "[kendoTreeViewItemContent]", inputs: ["dataItem", "index", "initialSelection", "isSelected"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i11.NgSwitchDefault, selector: "[ngSwitchDefault]" }], animations: [
448
450
  trigger('toggle', [
449
451
  transition('void => *', [
450
452
  style({ height: 0 }),
@@ -510,7 +512,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
510
512
  </kendo-icon-wrapper>
511
513
  </span>
512
514
  <kendo-checkbox
513
- *ngIf="checkboxes"
515
+ *ngIf="checkboxes && hasCheckbox(node, nodeIndex(index))"
514
516
  [class.k-disabled]="isItemDisabled(node, index)"
515
517
  [size]="size"
516
518
  [node]="node"
@@ -562,6 +564,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
562
564
  [hasChildren]="hasChildren"
563
565
  [isChecked]="isChecked"
564
566
  [isDisabled]="isDisabled"
567
+ [hasCheckbox]="hasCheckbox"
565
568
  [disabled]="isItemDisabled(node, index)"
566
569
  [expandDisabledNodes]="expandDisabledNodes"
567
570
  [isExpanded]="isExpanded"
@@ -667,6 +670,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
667
670
  type: Input
668
671
  }], isDisabled: [{
669
672
  type: Input
673
+ }], hasCheckbox: [{
674
+ type: Input
670
675
  }], isExpanded: [{
671
676
  type: Input
672
677
  }], isVisible: [{
@@ -9,7 +9,7 @@ import { BehaviorSubject, of, Subscription } from 'rxjs';
9
9
  import { validatePackage } from '@progress/kendo-licensing';
10
10
  import { packageMetadata } from './package-metadata';
11
11
  import { DataChangeNotificationService } from './data-change-notification.service';
12
- import { hasChildren, isChecked, isDisabled, isExpanded, isSelected, isVisible, trackBy } from './default-callbacks';
12
+ import { hasCheckbox, hasChildren, isChecked, isDisabled, isExpanded, isSelected, isVisible, trackBy } from './default-callbacks';
13
13
  import { ExpandStateService } from './expand-state.service';
14
14
  import { IndexBuilderService } from './index-builder.service';
15
15
  import { LoadingNotificationService } from './loading-notification.service';
@@ -209,6 +209,12 @@ export class TreeViewComponent {
209
209
  * A function which determines if a specific node is disabled.
210
210
  */
211
211
  this.isDisabled = isDisabled;
212
+ /**
213
+ * A function which determines if a specific node has a checkbox.
214
+ *
215
+ * > If there is no checkbox for a node, then this node is not checkable and is excluded from any built-in check functionality.
216
+ */
217
+ this.hasCheckbox = hasCheckbox;
212
218
  /**
213
219
  * A callback which determines whether a TreeView node should be rendered as hidden. The utility .k-hidden class is used to hide the nodes.
214
220
  * Useful for custom filtering implementations.
@@ -634,7 +640,7 @@ export class TreeViewComponent {
634
640
  }
635
641
  }
636
642
  TreeViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeViewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ExpandStateService }, { token: i2.NavigationService }, { token: i3.NodeChildrenService }, { token: i4.SelectionService }, { token: i5.TreeViewLookupService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i6.DataChangeNotificationService }, { token: i7.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
637
- TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewComponent, selector: "kendo-treeview", inputs: { filterInputPlaceholder: "filterInputPlaceholder", expandDisabledNodes: "expandDisabledNodes", animate: "animate", nodeTemplateRef: ["nodeTemplate", "nodeTemplateRef"], loadMoreButtonTemplateRef: ["loadMoreButtonTemplate", "loadMoreButtonTemplateRef"], trackBy: "trackBy", nodes: "nodes", textField: "textField", hasChildren: "hasChildren", isChecked: "isChecked", isDisabled: "isDisabled", isExpanded: "isExpanded", isSelected: "isSelected", isVisible: "isVisible", navigable: "navigable", children: "children", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", size: "size", disableParentNodesOnly: "disableParentNodesOnly" }, outputs: { childrenLoaded: "childrenLoaded", onBlur: "blur", onFocus: "focus", expand: "expand", collapse: "collapse", nodeDragStart: "nodeDragStart", nodeDrag: "nodeDrag", filterStateChange: "filterStateChange", nodeDrop: "nodeDrop", nodeDragEnd: "nodeDragEnd", addItem: "addItem", removeItem: "removeItem", checkedChange: "checkedChange", selectionChange: "selectionChange", filterChange: "filterChange", nodeClick: "nodeClick", nodeDblClick: "nodeDblClick" }, host: { properties: { "class.k-treeview": "this.classNames", "attr.dir": "this.direction", "@.disabled": "this.animate" } }, providers: providers, queries: [{ propertyName: "nodeTemplateQuery", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: "loadMoreButtonTemplateQuery", first: true, predicate: LoadMoreButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "assetsContainer", first: true, predicate: ["assetsContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbox", first: true, predicate: ["searchbox"], descendants: true }], exportAs: ["kendoTreeView"], usesOnChanges: true, ngImport: i0, template: `
643
+ TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewComponent, selector: "kendo-treeview", inputs: { filterInputPlaceholder: "filterInputPlaceholder", expandDisabledNodes: "expandDisabledNodes", animate: "animate", nodeTemplateRef: ["nodeTemplate", "nodeTemplateRef"], loadMoreButtonTemplateRef: ["loadMoreButtonTemplate", "loadMoreButtonTemplateRef"], trackBy: "trackBy", nodes: "nodes", textField: "textField", hasChildren: "hasChildren", isChecked: "isChecked", isDisabled: "isDisabled", hasCheckbox: "hasCheckbox", isExpanded: "isExpanded", isSelected: "isSelected", isVisible: "isVisible", navigable: "navigable", children: "children", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", size: "size", disableParentNodesOnly: "disableParentNodesOnly" }, outputs: { childrenLoaded: "childrenLoaded", onBlur: "blur", onFocus: "focus", expand: "expand", collapse: "collapse", nodeDragStart: "nodeDragStart", nodeDrag: "nodeDrag", filterStateChange: "filterStateChange", nodeDrop: "nodeDrop", nodeDragEnd: "nodeDragEnd", addItem: "addItem", removeItem: "removeItem", checkedChange: "checkedChange", selectionChange: "selectionChange", filterChange: "filterChange", nodeClick: "nodeClick", nodeDblClick: "nodeDblClick" }, host: { properties: { "class.k-treeview": "this.classNames", "attr.dir": "this.direction", "@.disabled": "this.animate" } }, providers: providers, queries: [{ propertyName: "nodeTemplateQuery", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: "loadMoreButtonTemplateQuery", first: true, predicate: LoadMoreButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "assetsContainer", first: true, predicate: ["assetsContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbox", first: true, predicate: ["searchbox"], descendants: true }], exportAs: ["kendoTreeView"], usesOnChanges: true, ngImport: i0, template: `
638
644
  <span
639
645
  class="k-treeview-filter"
640
646
  *ngIf="filterable"
@@ -671,6 +677,7 @@ TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
671
677
  [hasChildren]="hasChildren"
672
678
  [isChecked]="isChecked"
673
679
  [isDisabled]="isDisabled"
680
+ [hasCheckbox]="hasCheckbox"
674
681
  [disableParentNodesOnly]="disableParentNodesOnly"
675
682
  [isExpanded]="isExpanded"
676
683
  [isSelected]="isSelected"
@@ -685,7 +692,7 @@ TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
685
692
  >
686
693
  </ul>
687
694
  <ng-container #assetsContainer></ng-container>
688
- `, isInline: true, components: [{ type: i8.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i10.TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.Default });
695
+ `, isInline: true, components: [{ type: i8.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i10.TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.Default });
689
696
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeViewComponent, decorators: [{
690
697
  type: Component,
691
698
  args: [{
@@ -730,6 +737,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
730
737
  [hasChildren]="hasChildren"
731
738
  [isChecked]="isChecked"
732
739
  [isDisabled]="isDisabled"
740
+ [hasCheckbox]="hasCheckbox"
733
741
  [disableParentNodesOnly]="disableParentNodesOnly"
734
742
  [isExpanded]="isExpanded"
735
743
  [isSelected]="isSelected"
@@ -827,6 +835,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
827
835
  type: Input
828
836
  }], isDisabled: [{
829
837
  type: Input
838
+ }], hasCheckbox: [{
839
+ type: Input
830
840
  }], isExpanded: [{
831
841
  type: Input
832
842
  }], isSelected: [{
@@ -28,8 +28,8 @@ const packageMetadata = {
28
28
  name: '@progress/kendo-angular-treeview',
29
29
  productName: 'Kendo UI for Angular',
30
30
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
31
- publishDate: 1688648287,
32
- version: '13.2.0-develop.4',
31
+ publishDate: 1688730718,
32
+ version: '13.2.0-develop.6',
33
33
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
34
34
  };
35
35
 
@@ -57,6 +57,10 @@ const isChecked = () => 'none';
57
57
  * @hidden
58
58
  */
59
59
  const isDisabled = () => false;
60
+ /**
61
+ * @hidden
62
+ */
63
+ const hasCheckbox = () => true;
60
64
  /**
61
65
  * @hidden
62
66
  */
@@ -1552,6 +1556,7 @@ class TreeViewGroupComponent {
1552
1556
  this.singleRecordSubscriptions = new Subscription();
1553
1557
  this.isChecked = () => 'none';
1554
1558
  this.isDisabled = () => false;
1559
+ this.hasCheckbox = () => true;
1555
1560
  this.isExpanded = () => false;
1556
1561
  this.isVisible = () => true;
1557
1562
  this.isSelected = () => false;
@@ -1776,7 +1781,7 @@ class TreeViewGroupComponent {
1776
1781
  }
1777
1782
  }
1778
1783
  TreeViewGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeViewGroupComponent, deps: [{ token: ExpandStateService }, { token: LoadingNotificationService }, { token: IndexBuilderService }, { token: TreeViewLookupService }, { token: NavigationService }, { token: NodeChildrenService }, { token: DataChangeNotificationService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
1779
- TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: { checkboxes: "checkboxes", expandIcons: "expandIcons", disabled: "disabled", selectable: "selectable", touchActions: "touchActions", disableParentNodesOnly: "disableParentNodesOnly", loadOnDemand: "loadOnDemand", trackBy: "trackBy", nodes: "nodes", textField: "textField", parentDataItem: "parentDataItem", parentIndex: "parentIndex", nodeTemplateRef: "nodeTemplateRef", loadMoreButtonTemplateRef: "loadMoreButtonTemplateRef", loadMoreService: "loadMoreService", size: "size", expandDisabledNodes: "expandDisabledNodes", isChecked: "isChecked", isDisabled: "isDisabled", isExpanded: "isExpanded", isVisible: "isVisible", isSelected: "isSelected", children: "children", hasChildren: "hasChildren" }, host: { properties: { "class.k-treeview-group": "this.kGroupClass", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: `
1784
+ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: { checkboxes: "checkboxes", expandIcons: "expandIcons", disabled: "disabled", selectable: "selectable", touchActions: "touchActions", disableParentNodesOnly: "disableParentNodesOnly", loadOnDemand: "loadOnDemand", trackBy: "trackBy", nodes: "nodes", textField: "textField", parentDataItem: "parentDataItem", parentIndex: "parentIndex", nodeTemplateRef: "nodeTemplateRef", loadMoreButtonTemplateRef: "loadMoreButtonTemplateRef", loadMoreService: "loadMoreService", size: "size", expandDisabledNodes: "expandDisabledNodes", isChecked: "isChecked", isDisabled: "isDisabled", hasCheckbox: "hasCheckbox", isExpanded: "isExpanded", isVisible: "isVisible", isSelected: "isSelected", children: "children", hasChildren: "hasChildren" }, host: { properties: { "class.k-treeview-group": "this.kGroupClass", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: `
1780
1785
  <li
1781
1786
  *ngFor="let node of data; let index = index; trackBy: trackBy"
1782
1787
  class="k-treeview-item"
@@ -1813,7 +1818,7 @@ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
1813
1818
  </kendo-icon-wrapper>
1814
1819
  </span>
1815
1820
  <kendo-checkbox
1816
- *ngIf="checkboxes"
1821
+ *ngIf="checkboxes && hasCheckbox(node, nodeIndex(index))"
1817
1822
  [class.k-disabled]="isItemDisabled(node, index)"
1818
1823
  [size]="size"
1819
1824
  [node]="node"
@@ -1865,6 +1870,7 @@ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
1865
1870
  [hasChildren]="hasChildren"
1866
1871
  [isChecked]="isChecked"
1867
1872
  [isDisabled]="isDisabled"
1873
+ [hasCheckbox]="hasCheckbox"
1868
1874
  [disabled]="isItemDisabled(node, index)"
1869
1875
  [expandDisabledNodes]="expandDisabledNodes"
1870
1876
  [isExpanded]="isExpanded"
@@ -1924,7 +1930,7 @@ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
1924
1930
  </span>
1925
1931
  </div>
1926
1932
  </li>
1927
- `, isInline: true, components: [{ type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["id", "isChecked", "node", "index", "labelText", "tabindex", "size"], outputs: ["checkStateChange"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TreeViewItemDirective, selector: "[kendoTreeViewItem]", inputs: ["dataItem", "index", "parentDataItem", "parentIndex", "role", "loadOnDemand", "checkable", "selectable", "expandable", "isChecked", "isDisabled", "isVisible", "isExpanded", "isSelected"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: LoadingIndicatorDirective, selector: "[kendoTreeViewLoading]", inputs: ["kendoTreeViewLoading"] }, { type: TreeViewItemContentDirective, selector: "[kendoTreeViewItemContent]", inputs: ["dataItem", "index", "initialSelection", "isSelected"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i11.NgSwitchDefault, selector: "[ngSwitchDefault]" }], animations: [
1933
+ `, isInline: true, components: [{ type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["id", "isChecked", "node", "index", "labelText", "tabindex", "size"], outputs: ["checkStateChange"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TreeViewItemDirective, selector: "[kendoTreeViewItem]", inputs: ["dataItem", "index", "parentDataItem", "parentIndex", "role", "loadOnDemand", "checkable", "selectable", "expandable", "isChecked", "isDisabled", "isVisible", "isExpanded", "isSelected"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: LoadingIndicatorDirective, selector: "[kendoTreeViewLoading]", inputs: ["kendoTreeViewLoading"] }, { type: TreeViewItemContentDirective, selector: "[kendoTreeViewItemContent]", inputs: ["dataItem", "index", "initialSelection", "isSelected"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i11.NgSwitchDefault, selector: "[ngSwitchDefault]" }], animations: [
1928
1934
  trigger('toggle', [
1929
1935
  transition('void => *', [
1930
1936
  style({ height: 0 }),
@@ -1990,7 +1996,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1990
1996
  </kendo-icon-wrapper>
1991
1997
  </span>
1992
1998
  <kendo-checkbox
1993
- *ngIf="checkboxes"
1999
+ *ngIf="checkboxes && hasCheckbox(node, nodeIndex(index))"
1994
2000
  [class.k-disabled]="isItemDisabled(node, index)"
1995
2001
  [size]="size"
1996
2002
  [node]="node"
@@ -2042,6 +2048,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2042
2048
  [hasChildren]="hasChildren"
2043
2049
  [isChecked]="isChecked"
2044
2050
  [isDisabled]="isDisabled"
2051
+ [hasCheckbox]="hasCheckbox"
2045
2052
  [disabled]="isItemDisabled(node, index)"
2046
2053
  [expandDisabledNodes]="expandDisabledNodes"
2047
2054
  [isExpanded]="isExpanded"
@@ -2147,6 +2154,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2147
2154
  type: Input
2148
2155
  }], isDisabled: [{
2149
2156
  type: Input
2157
+ }], hasCheckbox: [{
2158
+ type: Input
2150
2159
  }], isExpanded: [{
2151
2160
  type: Input
2152
2161
  }], isVisible: [{
@@ -2332,6 +2341,12 @@ class TreeViewComponent {
2332
2341
  * A function which determines if a specific node is disabled.
2333
2342
  */
2334
2343
  this.isDisabled = isDisabled;
2344
+ /**
2345
+ * A function which determines if a specific node has a checkbox.
2346
+ *
2347
+ * > If there is no checkbox for a node, then this node is not checkable and is excluded from any built-in check functionality.
2348
+ */
2349
+ this.hasCheckbox = hasCheckbox;
2335
2350
  /**
2336
2351
  * A callback which determines whether a TreeView node should be rendered as hidden. The utility .k-hidden class is used to hide the nodes.
2337
2352
  * Useful for custom filtering implementations.
@@ -2757,7 +2772,7 @@ class TreeViewComponent {
2757
2772
  }
2758
2773
  }
2759
2774
  TreeViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeViewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: ExpandStateService }, { token: NavigationService }, { token: NodeChildrenService }, { token: SelectionService }, { token: TreeViewLookupService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: DataChangeNotificationService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
2760
- TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewComponent, selector: "kendo-treeview", inputs: { filterInputPlaceholder: "filterInputPlaceholder", expandDisabledNodes: "expandDisabledNodes", animate: "animate", nodeTemplateRef: ["nodeTemplate", "nodeTemplateRef"], loadMoreButtonTemplateRef: ["loadMoreButtonTemplate", "loadMoreButtonTemplateRef"], trackBy: "trackBy", nodes: "nodes", textField: "textField", hasChildren: "hasChildren", isChecked: "isChecked", isDisabled: "isDisabled", isExpanded: "isExpanded", isSelected: "isSelected", isVisible: "isVisible", navigable: "navigable", children: "children", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", size: "size", disableParentNodesOnly: "disableParentNodesOnly" }, outputs: { childrenLoaded: "childrenLoaded", onBlur: "blur", onFocus: "focus", expand: "expand", collapse: "collapse", nodeDragStart: "nodeDragStart", nodeDrag: "nodeDrag", filterStateChange: "filterStateChange", nodeDrop: "nodeDrop", nodeDragEnd: "nodeDragEnd", addItem: "addItem", removeItem: "removeItem", checkedChange: "checkedChange", selectionChange: "selectionChange", filterChange: "filterChange", nodeClick: "nodeClick", nodeDblClick: "nodeDblClick" }, host: { properties: { "class.k-treeview": "this.classNames", "attr.dir": "this.direction", "@.disabled": "this.animate" } }, providers: providers, queries: [{ propertyName: "nodeTemplateQuery", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: "loadMoreButtonTemplateQuery", first: true, predicate: LoadMoreButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "assetsContainer", first: true, predicate: ["assetsContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbox", first: true, predicate: ["searchbox"], descendants: true }], exportAs: ["kendoTreeView"], usesOnChanges: true, ngImport: i0, template: `
2775
+ TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewComponent, selector: "kendo-treeview", inputs: { filterInputPlaceholder: "filterInputPlaceholder", expandDisabledNodes: "expandDisabledNodes", animate: "animate", nodeTemplateRef: ["nodeTemplate", "nodeTemplateRef"], loadMoreButtonTemplateRef: ["loadMoreButtonTemplate", "loadMoreButtonTemplateRef"], trackBy: "trackBy", nodes: "nodes", textField: "textField", hasChildren: "hasChildren", isChecked: "isChecked", isDisabled: "isDisabled", hasCheckbox: "hasCheckbox", isExpanded: "isExpanded", isSelected: "isSelected", isVisible: "isVisible", navigable: "navigable", children: "children", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", size: "size", disableParentNodesOnly: "disableParentNodesOnly" }, outputs: { childrenLoaded: "childrenLoaded", onBlur: "blur", onFocus: "focus", expand: "expand", collapse: "collapse", nodeDragStart: "nodeDragStart", nodeDrag: "nodeDrag", filterStateChange: "filterStateChange", nodeDrop: "nodeDrop", nodeDragEnd: "nodeDragEnd", addItem: "addItem", removeItem: "removeItem", checkedChange: "checkedChange", selectionChange: "selectionChange", filterChange: "filterChange", nodeClick: "nodeClick", nodeDblClick: "nodeDblClick" }, host: { properties: { "class.k-treeview": "this.classNames", "attr.dir": "this.direction", "@.disabled": "this.animate" } }, providers: providers, queries: [{ propertyName: "nodeTemplateQuery", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: "loadMoreButtonTemplateQuery", first: true, predicate: LoadMoreButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "assetsContainer", first: true, predicate: ["assetsContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbox", first: true, predicate: ["searchbox"], descendants: true }], exportAs: ["kendoTreeView"], usesOnChanges: true, ngImport: i0, template: `
2761
2776
  <span
2762
2777
  class="k-treeview-filter"
2763
2778
  *ngIf="filterable"
@@ -2794,6 +2809,7 @@ TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
2794
2809
  [hasChildren]="hasChildren"
2795
2810
  [isChecked]="isChecked"
2796
2811
  [isDisabled]="isDisabled"
2812
+ [hasCheckbox]="hasCheckbox"
2797
2813
  [disableParentNodesOnly]="disableParentNodesOnly"
2798
2814
  [isExpanded]="isExpanded"
2799
2815
  [isSelected]="isSelected"
@@ -2808,7 +2824,7 @@ TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
2808
2824
  >
2809
2825
  </ul>
2810
2826
  <ng-container #assetsContainer></ng-container>
2811
- `, isInline: true, components: [{ type: i8.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.Default });
2827
+ `, isInline: true, components: [{ type: i8.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.Default });
2812
2828
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeViewComponent, decorators: [{
2813
2829
  type: Component,
2814
2830
  args: [{
@@ -2853,6 +2869,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2853
2869
  [hasChildren]="hasChildren"
2854
2870
  [isChecked]="isChecked"
2855
2871
  [isDisabled]="isDisabled"
2872
+ [hasCheckbox]="hasCheckbox"
2856
2873
  [disableParentNodesOnly]="disableParentNodesOnly"
2857
2874
  [isExpanded]="isExpanded"
2858
2875
  [isSelected]="isSelected"
@@ -2950,6 +2967,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2950
2967
  type: Input
2951
2968
  }], isDisabled: [{
2952
2969
  type: Input
2970
+ }], hasCheckbox: [{
2971
+ type: Input
2953
2972
  }], isExpanded: [{
2954
2973
  type: Input
2955
2974
  }], isSelected: [{
@@ -3123,7 +3142,9 @@ class CheckDirective {
3123
3142
  }
3124
3143
  }
3125
3144
  checkNode(node) {
3126
- if (!isPresent(node.item.dataItem) || this.treeView.isDisabled(node.item.dataItem, node.item.index)) {
3145
+ if (!isPresent(node.item.dataItem) ||
3146
+ this.treeView.isDisabled(node.item.dataItem, node.item.index) ||
3147
+ !this.treeView.hasCheckbox(node.item.dataItem, node.item.index)) {
3127
3148
  return;
3128
3149
  }
3129
3150
  const currentKey = this.itemKey(node.item);
@@ -3135,8 +3156,11 @@ class CheckDirective {
3135
3156
  const descendants = fetchLoadedDescendants(node, ({ item }) => (this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren ?
3136
3157
  this.treeView.isVisible(item.dataItem, item.index) :
3137
3158
  this.treeView.isVisible(item.dataItem, item.index) &&
3138
- !this.treeView.isDisabled(item.dataItem, item.index)));
3139
- pendingCheck.push(...descendants.filter((item) => this.options.checkDisabledChildren || !this.treeView.isDisabled(item.item.dataItem, item.item.index))
3159
+ !this.treeView.isDisabled(item.dataItem, item.index) &&
3160
+ this.treeView.hasCheckbox(item.dataItem, item.index)));
3161
+ pendingCheck.push(...descendants.filter((item) => this.options.checkDisabledChildren ||
3162
+ !this.treeView.isDisabled(item.item.dataItem, item.item.index) ||
3163
+ this.treeView.hasCheckbox(item.item.dataItem, item.item.index))
3140
3164
  .map(({ item }) => this.itemKey(item)));
3141
3165
  }
3142
3166
  const shouldCheck = !this.state.has(currentKey);
@@ -3158,7 +3182,8 @@ class CheckDirective {
3158
3182
  const parentKey = this.itemKey(currentParent.item);
3159
3183
  const isDisabled = this.treeView.isDisabled(currentParent.item.dataItem, currentParent.item.index);
3160
3184
  const allChildrenSelected = currentParent.children.every(item => this.state.has(this.itemKey(item)));
3161
- if ((!isDisabled || this.options.checkDisabledChildren) && allChildrenSelected) {
3185
+ const hasCheckbox = this.treeView.hasCheckbox(currentParent.item.dataItem, currentParent.item.index);
3186
+ if (hasCheckbox && (!isDisabled || this.options.checkDisabledChildren) && allChildrenSelected) {
3162
3187
  this.state.add(parentKey);
3163
3188
  }
3164
3189
  else {
@@ -3191,13 +3216,16 @@ class CheckDirective {
3191
3216
  lookup.children.forEach(item => {
3192
3217
  // ensure both the parent item and each child node is enabled
3193
3218
  if ((!this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index) &&
3194
- !this.treeView.isDisabled(item.dataItem, item.index)) ||
3219
+ !this.treeView.isDisabled(item.dataItem, item.index)) &&
3220
+ (this.treeView.hasCheckbox(lookup.item.dataItem, lookup.item.index) &&
3221
+ this.treeView.hasCheckbox(item.dataItem, item.index)) ||
3195
3222
  this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren) {
3196
3223
  this.state.add(this.itemKey(item));
3197
3224
  }
3198
3225
  if (this.treeView.disableParentNodesOnly &&
3199
3226
  !this.options.checkDisabledChildren &&
3200
- this.treeView.isDisabled(item.dataItem, item.index)) {
3227
+ (this.treeView.isDisabled(item.dataItem, item.index) ||
3228
+ !this.treeView.hasCheckbox(item.dataItem, item.index))) {
3201
3229
  disabledItems.add(this.itemKey(item));
3202
3230
  }
3203
3231
  });
@@ -28,8 +28,8 @@ const packageMetadata = {
28
28
  name: '@progress/kendo-angular-treeview',
29
29
  productName: 'Kendo UI for Angular',
30
30
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
31
- publishDate: 1688648287,
32
- version: '13.2.0-develop.4',
31
+ publishDate: 1688730718,
32
+ version: '13.2.0-develop.6',
33
33
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
34
34
  };
35
35
 
@@ -57,6 +57,10 @@ const isChecked = () => 'none';
57
57
  * @hidden
58
58
  */
59
59
  const isDisabled = () => false;
60
+ /**
61
+ * @hidden
62
+ */
63
+ const hasCheckbox = () => true;
60
64
  /**
61
65
  * @hidden
62
66
  */
@@ -1548,6 +1552,7 @@ class TreeViewGroupComponent {
1548
1552
  this.singleRecordSubscriptions = new Subscription();
1549
1553
  this.isChecked = () => 'none';
1550
1554
  this.isDisabled = () => false;
1555
+ this.hasCheckbox = () => true;
1551
1556
  this.isExpanded = () => false;
1552
1557
  this.isVisible = () => true;
1553
1558
  this.isSelected = () => false;
@@ -1772,7 +1777,7 @@ class TreeViewGroupComponent {
1772
1777
  }
1773
1778
  }
1774
1779
  TreeViewGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeViewGroupComponent, deps: [{ token: ExpandStateService }, { token: LoadingNotificationService }, { token: IndexBuilderService }, { token: TreeViewLookupService }, { token: NavigationService }, { token: NodeChildrenService }, { token: DataChangeNotificationService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
1775
- TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: { checkboxes: "checkboxes", expandIcons: "expandIcons", disabled: "disabled", selectable: "selectable", touchActions: "touchActions", disableParentNodesOnly: "disableParentNodesOnly", loadOnDemand: "loadOnDemand", trackBy: "trackBy", nodes: "nodes", textField: "textField", parentDataItem: "parentDataItem", parentIndex: "parentIndex", nodeTemplateRef: "nodeTemplateRef", loadMoreButtonTemplateRef: "loadMoreButtonTemplateRef", loadMoreService: "loadMoreService", size: "size", expandDisabledNodes: "expandDisabledNodes", isChecked: "isChecked", isDisabled: "isDisabled", isExpanded: "isExpanded", isVisible: "isVisible", isSelected: "isSelected", children: "children", hasChildren: "hasChildren" }, host: { properties: { "class.k-treeview-group": "this.kGroupClass", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: `
1780
+ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: { checkboxes: "checkboxes", expandIcons: "expandIcons", disabled: "disabled", selectable: "selectable", touchActions: "touchActions", disableParentNodesOnly: "disableParentNodesOnly", loadOnDemand: "loadOnDemand", trackBy: "trackBy", nodes: "nodes", textField: "textField", parentDataItem: "parentDataItem", parentIndex: "parentIndex", nodeTemplateRef: "nodeTemplateRef", loadMoreButtonTemplateRef: "loadMoreButtonTemplateRef", loadMoreService: "loadMoreService", size: "size", expandDisabledNodes: "expandDisabledNodes", isChecked: "isChecked", isDisabled: "isDisabled", hasCheckbox: "hasCheckbox", isExpanded: "isExpanded", isVisible: "isVisible", isSelected: "isSelected", children: "children", hasChildren: "hasChildren" }, host: { properties: { "class.k-treeview-group": "this.kGroupClass", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: `
1776
1781
  <li
1777
1782
  *ngFor="let node of data; let index = index; trackBy: trackBy"
1778
1783
  class="k-treeview-item"
@@ -1809,7 +1814,7 @@ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
1809
1814
  </kendo-icon-wrapper>
1810
1815
  </span>
1811
1816
  <kendo-checkbox
1812
- *ngIf="checkboxes"
1817
+ *ngIf="checkboxes && hasCheckbox(node, nodeIndex(index))"
1813
1818
  [class.k-disabled]="isItemDisabled(node, index)"
1814
1819
  [size]="size"
1815
1820
  [node]="node"
@@ -1861,6 +1866,7 @@ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
1861
1866
  [hasChildren]="hasChildren"
1862
1867
  [isChecked]="isChecked"
1863
1868
  [isDisabled]="isDisabled"
1869
+ [hasCheckbox]="hasCheckbox"
1864
1870
  [disabled]="isItemDisabled(node, index)"
1865
1871
  [expandDisabledNodes]="expandDisabledNodes"
1866
1872
  [isExpanded]="isExpanded"
@@ -1920,7 +1926,7 @@ TreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
1920
1926
  </span>
1921
1927
  </div>
1922
1928
  </li>
1923
- `, isInline: true, components: [{ type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["id", "isChecked", "node", "index", "labelText", "tabindex", "size"], outputs: ["checkStateChange"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TreeViewItemDirective, selector: "[kendoTreeViewItem]", inputs: ["dataItem", "index", "parentDataItem", "parentIndex", "role", "loadOnDemand", "checkable", "selectable", "expandable", "isChecked", "isDisabled", "isVisible", "isExpanded", "isSelected"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: LoadingIndicatorDirective, selector: "[kendoTreeViewLoading]", inputs: ["kendoTreeViewLoading"] }, { type: TreeViewItemContentDirective, selector: "[kendoTreeViewItemContent]", inputs: ["dataItem", "index", "initialSelection", "isSelected"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i11.NgSwitchDefault, selector: "[ngSwitchDefault]" }], animations: [
1929
+ `, isInline: true, components: [{ type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["id", "isChecked", "node", "index", "labelText", "tabindex", "size"], outputs: ["checkStateChange"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TreeViewItemDirective, selector: "[kendoTreeViewItem]", inputs: ["dataItem", "index", "parentDataItem", "parentIndex", "role", "loadOnDemand", "checkable", "selectable", "expandable", "isChecked", "isDisabled", "isVisible", "isExpanded", "isSelected"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: LoadingIndicatorDirective, selector: "[kendoTreeViewLoading]", inputs: ["kendoTreeViewLoading"] }, { type: TreeViewItemContentDirective, selector: "[kendoTreeViewItemContent]", inputs: ["dataItem", "index", "initialSelection", "isSelected"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i11.NgSwitchDefault, selector: "[ngSwitchDefault]" }], animations: [
1924
1930
  trigger('toggle', [
1925
1931
  transition('void => *', [
1926
1932
  style({ height: 0 }),
@@ -1986,7 +1992,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1986
1992
  </kendo-icon-wrapper>
1987
1993
  </span>
1988
1994
  <kendo-checkbox
1989
- *ngIf="checkboxes"
1995
+ *ngIf="checkboxes && hasCheckbox(node, nodeIndex(index))"
1990
1996
  [class.k-disabled]="isItemDisabled(node, index)"
1991
1997
  [size]="size"
1992
1998
  [node]="node"
@@ -2038,6 +2044,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2038
2044
  [hasChildren]="hasChildren"
2039
2045
  [isChecked]="isChecked"
2040
2046
  [isDisabled]="isDisabled"
2047
+ [hasCheckbox]="hasCheckbox"
2041
2048
  [disabled]="isItemDisabled(node, index)"
2042
2049
  [expandDisabledNodes]="expandDisabledNodes"
2043
2050
  [isExpanded]="isExpanded"
@@ -2143,6 +2150,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2143
2150
  type: Input
2144
2151
  }], isDisabled: [{
2145
2152
  type: Input
2153
+ }], hasCheckbox: [{
2154
+ type: Input
2146
2155
  }], isExpanded: [{
2147
2156
  type: Input
2148
2157
  }], isVisible: [{
@@ -2328,6 +2337,12 @@ class TreeViewComponent {
2328
2337
  * A function which determines if a specific node is disabled.
2329
2338
  */
2330
2339
  this.isDisabled = isDisabled;
2340
+ /**
2341
+ * A function which determines if a specific node has a checkbox.
2342
+ *
2343
+ * > If there is no checkbox for a node, then this node is not checkable and is excluded from any built-in check functionality.
2344
+ */
2345
+ this.hasCheckbox = hasCheckbox;
2331
2346
  /**
2332
2347
  * A callback which determines whether a TreeView node should be rendered as hidden. The utility .k-hidden class is used to hide the nodes.
2333
2348
  * Useful for custom filtering implementations.
@@ -2753,7 +2768,7 @@ class TreeViewComponent {
2753
2768
  }
2754
2769
  }
2755
2770
  TreeViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeViewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: ExpandStateService }, { token: NavigationService }, { token: NodeChildrenService }, { token: SelectionService }, { token: TreeViewLookupService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: DataChangeNotificationService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
2756
- TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewComponent, selector: "kendo-treeview", inputs: { filterInputPlaceholder: "filterInputPlaceholder", expandDisabledNodes: "expandDisabledNodes", animate: "animate", nodeTemplateRef: ["nodeTemplate", "nodeTemplateRef"], loadMoreButtonTemplateRef: ["loadMoreButtonTemplate", "loadMoreButtonTemplateRef"], trackBy: "trackBy", nodes: "nodes", textField: "textField", hasChildren: "hasChildren", isChecked: "isChecked", isDisabled: "isDisabled", isExpanded: "isExpanded", isSelected: "isSelected", isVisible: "isVisible", navigable: "navigable", children: "children", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", size: "size", disableParentNodesOnly: "disableParentNodesOnly" }, outputs: { childrenLoaded: "childrenLoaded", onBlur: "blur", onFocus: "focus", expand: "expand", collapse: "collapse", nodeDragStart: "nodeDragStart", nodeDrag: "nodeDrag", filterStateChange: "filterStateChange", nodeDrop: "nodeDrop", nodeDragEnd: "nodeDragEnd", addItem: "addItem", removeItem: "removeItem", checkedChange: "checkedChange", selectionChange: "selectionChange", filterChange: "filterChange", nodeClick: "nodeClick", nodeDblClick: "nodeDblClick" }, host: { properties: { "class.k-treeview": "this.classNames", "attr.dir": "this.direction", "@.disabled": "this.animate" } }, providers: providers, queries: [{ propertyName: "nodeTemplateQuery", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: "loadMoreButtonTemplateQuery", first: true, predicate: LoadMoreButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "assetsContainer", first: true, predicate: ["assetsContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbox", first: true, predicate: ["searchbox"], descendants: true }], exportAs: ["kendoTreeView"], usesOnChanges: true, ngImport: i0, template: `
2771
+ TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TreeViewComponent, selector: "kendo-treeview", inputs: { filterInputPlaceholder: "filterInputPlaceholder", expandDisabledNodes: "expandDisabledNodes", animate: "animate", nodeTemplateRef: ["nodeTemplate", "nodeTemplateRef"], loadMoreButtonTemplateRef: ["loadMoreButtonTemplate", "loadMoreButtonTemplateRef"], trackBy: "trackBy", nodes: "nodes", textField: "textField", hasChildren: "hasChildren", isChecked: "isChecked", isDisabled: "isDisabled", hasCheckbox: "hasCheckbox", isExpanded: "isExpanded", isSelected: "isSelected", isVisible: "isVisible", navigable: "navigable", children: "children", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", size: "size", disableParentNodesOnly: "disableParentNodesOnly" }, outputs: { childrenLoaded: "childrenLoaded", onBlur: "blur", onFocus: "focus", expand: "expand", collapse: "collapse", nodeDragStart: "nodeDragStart", nodeDrag: "nodeDrag", filterStateChange: "filterStateChange", nodeDrop: "nodeDrop", nodeDragEnd: "nodeDragEnd", addItem: "addItem", removeItem: "removeItem", checkedChange: "checkedChange", selectionChange: "selectionChange", filterChange: "filterChange", nodeClick: "nodeClick", nodeDblClick: "nodeDblClick" }, host: { properties: { "class.k-treeview": "this.classNames", "attr.dir": "this.direction", "@.disabled": "this.animate" } }, providers: providers, queries: [{ propertyName: "nodeTemplateQuery", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: "loadMoreButtonTemplateQuery", first: true, predicate: LoadMoreButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "assetsContainer", first: true, predicate: ["assetsContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbox", first: true, predicate: ["searchbox"], descendants: true }], exportAs: ["kendoTreeView"], usesOnChanges: true, ngImport: i0, template: `
2757
2772
  <span
2758
2773
  class="k-treeview-filter"
2759
2774
  *ngIf="filterable"
@@ -2790,6 +2805,7 @@ TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
2790
2805
  [hasChildren]="hasChildren"
2791
2806
  [isChecked]="isChecked"
2792
2807
  [isDisabled]="isDisabled"
2808
+ [hasCheckbox]="hasCheckbox"
2793
2809
  [disableParentNodesOnly]="disableParentNodesOnly"
2794
2810
  [isExpanded]="isExpanded"
2795
2811
  [isSelected]="isSelected"
@@ -2804,7 +2820,7 @@ TreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
2804
2820
  >
2805
2821
  </ul>
2806
2822
  <ng-container #assetsContainer></ng-container>
2807
- `, isInline: true, components: [{ type: i8.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.Default });
2823
+ `, isInline: true, components: [{ type: i8.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: TreeViewGroupComponent, selector: "[kendoTreeViewGroup]", inputs: ["checkboxes", "expandIcons", "disabled", "selectable", "touchActions", "disableParentNodesOnly", "loadOnDemand", "trackBy", "nodes", "textField", "parentDataItem", "parentIndex", "nodeTemplateRef", "loadMoreButtonTemplateRef", "loadMoreService", "size", "expandDisabledNodes", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isVisible", "isSelected", "children", "hasChildren"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.Default });
2808
2824
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TreeViewComponent, decorators: [{
2809
2825
  type: Component,
2810
2826
  args: [{
@@ -2849,6 +2865,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2849
2865
  [hasChildren]="hasChildren"
2850
2866
  [isChecked]="isChecked"
2851
2867
  [isDisabled]="isDisabled"
2868
+ [hasCheckbox]="hasCheckbox"
2852
2869
  [disableParentNodesOnly]="disableParentNodesOnly"
2853
2870
  [isExpanded]="isExpanded"
2854
2871
  [isSelected]="isSelected"
@@ -2946,6 +2963,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2946
2963
  type: Input
2947
2964
  }], isDisabled: [{
2948
2965
  type: Input
2966
+ }], hasCheckbox: [{
2967
+ type: Input
2949
2968
  }], isExpanded: [{
2950
2969
  type: Input
2951
2970
  }], isSelected: [{
@@ -3119,7 +3138,9 @@ class CheckDirective {
3119
3138
  }
3120
3139
  }
3121
3140
  checkNode(node) {
3122
- if (!isPresent(node.item.dataItem) || this.treeView.isDisabled(node.item.dataItem, node.item.index)) {
3141
+ if (!isPresent(node.item.dataItem) ||
3142
+ this.treeView.isDisabled(node.item.dataItem, node.item.index) ||
3143
+ !this.treeView.hasCheckbox(node.item.dataItem, node.item.index)) {
3123
3144
  return;
3124
3145
  }
3125
3146
  const currentKey = this.itemKey(node.item);
@@ -3131,8 +3152,11 @@ class CheckDirective {
3131
3152
  const descendants = fetchLoadedDescendants(node, ({ item }) => (this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren ?
3132
3153
  this.treeView.isVisible(item.dataItem, item.index) :
3133
3154
  this.treeView.isVisible(item.dataItem, item.index) &&
3134
- !this.treeView.isDisabled(item.dataItem, item.index)));
3135
- pendingCheck.push(...descendants.filter((item) => this.options.checkDisabledChildren || !this.treeView.isDisabled(item.item.dataItem, item.item.index))
3155
+ !this.treeView.isDisabled(item.dataItem, item.index) &&
3156
+ this.treeView.hasCheckbox(item.dataItem, item.index)));
3157
+ pendingCheck.push(...descendants.filter((item) => this.options.checkDisabledChildren ||
3158
+ !this.treeView.isDisabled(item.item.dataItem, item.item.index) ||
3159
+ this.treeView.hasCheckbox(item.item.dataItem, item.item.index))
3136
3160
  .map(({ item }) => this.itemKey(item)));
3137
3161
  }
3138
3162
  const shouldCheck = !this.state.has(currentKey);
@@ -3154,7 +3178,8 @@ class CheckDirective {
3154
3178
  const parentKey = this.itemKey(currentParent.item);
3155
3179
  const isDisabled = this.treeView.isDisabled(currentParent.item.dataItem, currentParent.item.index);
3156
3180
  const allChildrenSelected = currentParent.children.every(item => this.state.has(this.itemKey(item)));
3157
- if ((!isDisabled || this.options.checkDisabledChildren) && allChildrenSelected) {
3181
+ const hasCheckbox = this.treeView.hasCheckbox(currentParent.item.dataItem, currentParent.item.index);
3182
+ if (hasCheckbox && (!isDisabled || this.options.checkDisabledChildren) && allChildrenSelected) {
3158
3183
  this.state.add(parentKey);
3159
3184
  }
3160
3185
  else {
@@ -3187,13 +3212,16 @@ class CheckDirective {
3187
3212
  lookup.children.forEach(item => {
3188
3213
  // ensure both the parent item and each child node is enabled
3189
3214
  if ((!this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index) &&
3190
- !this.treeView.isDisabled(item.dataItem, item.index)) ||
3215
+ !this.treeView.isDisabled(item.dataItem, item.index)) &&
3216
+ (this.treeView.hasCheckbox(lookup.item.dataItem, lookup.item.index) &&
3217
+ this.treeView.hasCheckbox(item.dataItem, item.index)) ||
3191
3218
  this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren) {
3192
3219
  this.state.add(this.itemKey(item));
3193
3220
  }
3194
3221
  if (this.treeView.disableParentNodesOnly &&
3195
3222
  !this.options.checkDisabledChildren &&
3196
- this.treeView.isDisabled(item.dataItem, item.index)) {
3223
+ (this.treeView.isDisabled(item.dataItem, item.index) ||
3224
+ !this.treeView.hasCheckbox(item.dataItem, item.index))) {
3197
3225
  disabledItems.add(this.itemKey(item));
3198
3226
  }
3199
3227
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-treeview",
3
- "version": "13.2.0-develop.4",
3
+ "version": "13.2.0-develop.6",
4
4
  "description": "Kendo UI TreeView for Angular",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -23,15 +23,15 @@
23
23
  "@angular/core": "13 - 16",
24
24
  "@angular/platform-browser": "13 - 16",
25
25
  "@progress/kendo-licensing": "^1.0.2",
26
- "@progress/kendo-angular-common": "13.2.0-develop.4",
27
- "@progress/kendo-angular-inputs": "13.2.0-develop.4",
28
- "@progress/kendo-angular-icons": "13.2.0-develop.4",
29
- "@progress/kendo-angular-l10n": "13.2.0-develop.4",
26
+ "@progress/kendo-angular-common": "13.2.0-develop.6",
27
+ "@progress/kendo-angular-inputs": "13.2.0-develop.6",
28
+ "@progress/kendo-angular-icons": "13.2.0-develop.6",
29
+ "@progress/kendo-angular-l10n": "13.2.0-develop.6",
30
30
  "rxjs": "^6.5.3 || ^7.0.0"
31
31
  },
32
32
  "dependencies": {
33
33
  "tslib": "^2.3.1",
34
- "@progress/kendo-angular-schematics": "13.2.0-develop.4",
34
+ "@progress/kendo-angular-schematics": "13.2.0-develop.6",
35
35
  "@progress/kendo-common": "^0.2.0",
36
36
  "@progress/kendo-draggable": "^3.0.2"
37
37
  },
@@ -4,10 +4,10 @@ const schematics_1 = require("@angular-devkit/schematics");
4
4
  function default_1(options) {
5
5
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'TreeViewModule', package: 'treeview', peerDependencies: {
6
6
  // Peers of kendo-angular-inputs
7
- '@progress/kendo-angular-buttons': '13.2.0-develop.4',
8
- '@progress/kendo-angular-dialog': '13.2.0-develop.4',
9
- '@progress/kendo-angular-intl': '13.2.0-develop.4',
10
- '@progress/kendo-angular-popup': '13.2.0-develop.4',
7
+ '@progress/kendo-angular-buttons': '13.2.0-develop.6',
8
+ '@progress/kendo-angular-dialog': '13.2.0-develop.6',
9
+ '@progress/kendo-angular-intl': '13.2.0-develop.6',
10
+ '@progress/kendo-angular-popup': '13.2.0-develop.6',
11
11
  '@progress/kendo-drawing': '^1.9.3',
12
12
  // Peer dependency of icons
13
13
  '@progress/kendo-svg-icons': '^1.0.0'
@@ -83,6 +83,7 @@ export declare class TreeViewGroupComponent implements OnChanges, OnInit, OnDest
83
83
  constructor(expandService: ExpandStateService, loadingService: LoadingNotificationService, indexBuilder: IndexBuilderService, treeViewLookupService: TreeViewLookupService, navigationService: NavigationService, nodeChildrenService: NodeChildrenService, dataChangeNotification: DataChangeNotificationService, changeDetectorRef: ChangeDetectorRef, localization: LocalizationService);
84
84
  isChecked: (item: object, index: string) => CheckedState;
85
85
  isDisabled: (item: object, index: string) => boolean;
86
+ hasCheckbox: (item: object, index: string) => boolean;
86
87
  isExpanded: (item: object, index: string) => boolean;
87
88
  isVisible: (item: object, index: string) => boolean;
88
89
  isSelected: (item: object, index: string) => boolean;
@@ -116,5 +117,5 @@ export declare class TreeViewGroupComponent implements OnChanges, OnInit, OnDest
116
117
  private reselectItemAt;
117
118
  private registerLoadedNodes;
118
119
  static ɵfac: i0.ɵɵFactoryDeclaration<TreeViewGroupComponent, never>;
119
- static ɵcmp: i0.ɵɵComponentDeclaration<TreeViewGroupComponent, "[kendoTreeViewGroup]", never, { "checkboxes": "checkboxes"; "expandIcons": "expandIcons"; "disabled": "disabled"; "selectable": "selectable"; "touchActions": "touchActions"; "disableParentNodesOnly": "disableParentNodesOnly"; "loadOnDemand": "loadOnDemand"; "trackBy": "trackBy"; "nodes": "nodes"; "textField": "textField"; "parentDataItem": "parentDataItem"; "parentIndex": "parentIndex"; "nodeTemplateRef": "nodeTemplateRef"; "loadMoreButtonTemplateRef": "loadMoreButtonTemplateRef"; "loadMoreService": "loadMoreService"; "size": "size"; "expandDisabledNodes": "expandDisabledNodes"; "isChecked": "isChecked"; "isDisabled": "isDisabled"; "isExpanded": "isExpanded"; "isVisible": "isVisible"; "isSelected": "isSelected"; "children": "children"; "hasChildren": "hasChildren"; }, {}, never, never>;
120
+ static ɵcmp: i0.ɵɵComponentDeclaration<TreeViewGroupComponent, "[kendoTreeViewGroup]", never, { "checkboxes": "checkboxes"; "expandIcons": "expandIcons"; "disabled": "disabled"; "selectable": "selectable"; "touchActions": "touchActions"; "disableParentNodesOnly": "disableParentNodesOnly"; "loadOnDemand": "loadOnDemand"; "trackBy": "trackBy"; "nodes": "nodes"; "textField": "textField"; "parentDataItem": "parentDataItem"; "parentIndex": "parentIndex"; "nodeTemplateRef": "nodeTemplateRef"; "loadMoreButtonTemplateRef": "loadMoreButtonTemplateRef"; "loadMoreService": "loadMoreService"; "size": "size"; "expandDisabledNodes": "expandDisabledNodes"; "isChecked": "isChecked"; "isDisabled": "isDisabled"; "hasCheckbox": "hasCheckbox"; "isExpanded": "isExpanded"; "isVisible": "isVisible"; "isSelected": "isSelected"; "children": "children"; "hasChildren": "hasChildren"; }, {}, never, never>;
120
121
  }
@@ -250,6 +250,12 @@ export declare class TreeViewComponent implements OnChanges, OnInit, AfterViewIn
250
250
  * A function which determines if a specific node is disabled.
251
251
  */
252
252
  isDisabled: (item: object, index: string) => boolean;
253
+ /**
254
+ * A function which determines if a specific node has a checkbox.
255
+ *
256
+ * > If there is no checkbox for a node, then this node is not checkable and is excluded from any built-in check functionality.
257
+ */
258
+ hasCheckbox: (item: object, index: string) => boolean;
253
259
  /**
254
260
  * A function which determines if a specific node is expanded.
255
261
  */
@@ -427,5 +433,5 @@ export declare class TreeViewComponent implements OnChanges, OnInit, AfterViewIn
427
433
  private verifyLoadMoreService;
428
434
  private registerLookupItems;
429
435
  static ɵfac: i0.ɵɵFactoryDeclaration<TreeViewComponent, never>;
430
- static ɵcmp: i0.ɵɵComponentDeclaration<TreeViewComponent, "kendo-treeview", ["kendoTreeView"], { "filterInputPlaceholder": "filterInputPlaceholder"; "expandDisabledNodes": "expandDisabledNodes"; "animate": "animate"; "nodeTemplateRef": "nodeTemplate"; "loadMoreButtonTemplateRef": "loadMoreButtonTemplate"; "trackBy": "trackBy"; "nodes": "nodes"; "textField": "textField"; "hasChildren": "hasChildren"; "isChecked": "isChecked"; "isDisabled": "isDisabled"; "isExpanded": "isExpanded"; "isSelected": "isSelected"; "isVisible": "isVisible"; "navigable": "navigable"; "children": "children"; "loadOnDemand": "loadOnDemand"; "filterable": "filterable"; "filter": "filter"; "size": "size"; "disableParentNodesOnly": "disableParentNodesOnly"; }, { "childrenLoaded": "childrenLoaded"; "onBlur": "blur"; "onFocus": "focus"; "expand": "expand"; "collapse": "collapse"; "nodeDragStart": "nodeDragStart"; "nodeDrag": "nodeDrag"; "filterStateChange": "filterStateChange"; "nodeDrop": "nodeDrop"; "nodeDragEnd": "nodeDragEnd"; "addItem": "addItem"; "removeItem": "removeItem"; "checkedChange": "checkedChange"; "selectionChange": "selectionChange"; "filterChange": "filterChange"; "nodeClick": "nodeClick"; "nodeDblClick": "nodeDblClick"; }, ["nodeTemplateQuery", "loadMoreButtonTemplateQuery"], never>;
436
+ static ɵcmp: i0.ɵɵComponentDeclaration<TreeViewComponent, "kendo-treeview", ["kendoTreeView"], { "filterInputPlaceholder": "filterInputPlaceholder"; "expandDisabledNodes": "expandDisabledNodes"; "animate": "animate"; "nodeTemplateRef": "nodeTemplate"; "loadMoreButtonTemplateRef": "loadMoreButtonTemplate"; "trackBy": "trackBy"; "nodes": "nodes"; "textField": "textField"; "hasChildren": "hasChildren"; "isChecked": "isChecked"; "isDisabled": "isDisabled"; "hasCheckbox": "hasCheckbox"; "isExpanded": "isExpanded"; "isSelected": "isSelected"; "isVisible": "isVisible"; "navigable": "navigable"; "children": "children"; "loadOnDemand": "loadOnDemand"; "filterable": "filterable"; "filter": "filter"; "size": "size"; "disableParentNodesOnly": "disableParentNodesOnly"; }, { "childrenLoaded": "childrenLoaded"; "onBlur": "blur"; "onFocus": "focus"; "expand": "expand"; "collapse": "collapse"; "nodeDragStart": "nodeDragStart"; "nodeDrag": "nodeDrag"; "filterStateChange": "filterStateChange"; "nodeDrop": "nodeDrop"; "nodeDragEnd": "nodeDragEnd"; "addItem": "addItem"; "removeItem": "removeItem"; "checkedChange": "checkedChange"; "selectionChange": "selectionChange"; "filterChange": "filterChange"; "nodeClick": "nodeClick"; "nodeDblClick": "nodeDblClick"; }, ["nodeTemplateQuery", "loadMoreButtonTemplateQuery"], never>;
431
437
  }