@progress/kendo-angular-dropdowns 21.1.1-develop.1 → 21.2.0-develop.1

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.
@@ -27,7 +27,7 @@ import { ValueTemplateDirective } from '../common/templates/value-template.direc
27
27
  import { caretAltDownIcon, searchIcon, xIcon } from '@progress/kendo-svg-icons';
28
28
  import { AdaptiveRendererComponent } from '../common/adaptive-renderer.component';
29
29
  import { FilterInputDirective } from '../common/filter-input.directive';
30
- import { NgIf, NgClass, NgTemplateOutlet } from '@angular/common';
30
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
31
31
  import { LocalizedMessagesDirective } from '../common/localization/localized-messages.directive';
32
32
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
33
33
  import * as i0 from "@angular/core";
@@ -125,7 +125,7 @@ export class DropDownTreeComponent {
125
125
  return this.loading ? 'true' : null;
126
126
  }
127
127
  get hostAriaControls() {
128
- return this.isOpen ? this.treeViewId : undefined;
128
+ return this.isOpen ? this.treeViewId : null;
129
129
  }
130
130
  get id() {
131
131
  return this.focusableId;
@@ -1128,6 +1128,8 @@ export class DropDownTreeComponent {
1128
1128
  this.popupRef.close();
1129
1129
  this.popupRef = null;
1130
1130
  this.clearFilter();
1131
+ // Trigger change detection to update aria-controls attribute
1132
+ this.cdr.markForCheck();
1131
1133
  }
1132
1134
  }
1133
1135
  clearFilter() {
@@ -1332,7 +1334,7 @@ export class DropDownTreeComponent {
1332
1334
  this.removeTreeViewFromTabOrder();
1333
1335
  }
1334
1336
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.PopupService }, { token: i2.NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.LocalizationService }, { token: i4.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
1335
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DropDownTreeComponent, isStandalone: true, selector: "kendo-dropdowntree", inputs: { icon: "icon", svgIcon: "svgIcon", loading: "loading", clearButton: "clearButton", data: "data", value: "value", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", hasChildren: "hasChildren", fetchChildren: "fetchChildren", placeholder: "placeholder", popupSettings: "popupSettings", dataItem: "dataItem", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", itemDisabled: "itemDisabled", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", focusableId: "focusableId", adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle" }, outputs: { open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", onFocus: "focus", onBlur: "blur", valueChange: "valueChange", filterChange: "filterChange" }, host: { properties: { "class.k-dropdowntree": "this.hostClasses", "class.k-picker": "this.hostClasses", "attr.readonly": "this.isReadonly", "attr.aria-invalid": "this.hostAriaInvalid", "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.aria-busy": "this.isBusy", "attr.aria-controls": "this.hostAriaControls", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-autocomplete": "this.hostAriaAutocomplete", "class.k-readonly": "this.readonly" } }, providers: [
1337
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DropDownTreeComponent, isStandalone: true, selector: "kendo-dropdowntree", inputs: { icon: "icon", svgIcon: "svgIcon", loading: "loading", clearButton: "clearButton", data: "data", value: "value", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", hasChildren: "hasChildren", fetchChildren: "fetchChildren", placeholder: "placeholder", popupSettings: "popupSettings", dataItem: "dataItem", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", itemDisabled: "itemDisabled", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", focusableId: "focusableId", adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle" }, outputs: { open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", onFocus: "focus", onBlur: "blur", valueChange: "valueChange", filterChange: "filterChange" }, host: { properties: { "class.k-dropdowntree": "this.hostClasses", "class.k-picker": "this.hostClasses", "attr.readonly": "this.isReadonly", "attr.aria-invalid": "this.hostAriaInvalid", "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.aria-busy": "this.isBusy", "attr.aria-controls": "this.hostAriaControls", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-autocomplete": "this.hostAriaAutocomplete", "class.k-readonly": "this.readonly" } }, providers: [
1336
1338
  DataService,
1337
1339
  SelectionService,
1338
1340
  NavigationService,
@@ -1361,182 +1363,201 @@ export class DropDownTreeComponent {
1361
1363
  }
1362
1364
  ], queries: [{ propertyName: "noDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "nodeTemplate", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: "valueTemplate", first: true, predicate: ValueTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "adaptiveRendererComponent", first: true, predicate: AdaptiveRendererComponent, descendants: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "treeview", first: true, predicate: ["treeview"], descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], exportAs: ["kendoDropDownTree"], usesOnChanges: true, ngImport: i0, template: `
1363
1365
  <ng-container kendoDropDownTreeLocalizedMessages
1364
- i18n-noDataText="kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items"
1365
- noDataText="NO DATA FOUND"
1366
-
1367
- i18n-clearTitle="kendo.dropdowntree.clearTitle|The title of the clear button"
1368
- clearTitle="clear"
1369
-
1370
- i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
1371
- selectButtonText="Select"
1372
-
1373
- i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
1374
- filterInputLabel="Filter"
1375
-
1376
- i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
1377
- popupLabel="Options list"
1378
-
1379
- i18n-adaptiveCloseButtonTitle="kendo.dropdowntree.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
1380
- adaptiveCloseButtonTitle="Close"
1381
-
1382
- i18n-filterInputPlaceholder="kendo.dropdowntree.filterInputPlaceholder|The text for the input's placeholder when filtering is enabled"
1383
- filterInputPlaceholder="Filter"
1384
- >
1366
+ i18n-noDataText="kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items"
1367
+ noDataText="NO DATA FOUND"
1368
+
1369
+ i18n-clearTitle="kendo.dropdowntree.clearTitle|The title of the clear button"
1370
+ clearTitle="clear"
1371
+
1372
+ i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
1373
+ selectButtonText="Select"
1374
+
1375
+ i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
1376
+ filterInputLabel="Filter"
1377
+
1378
+ i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
1379
+ popupLabel="Options list"
1380
+
1381
+ i18n-adaptiveCloseButtonTitle="kendo.dropdowntree.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
1382
+ adaptiveCloseButtonTitle="Close"
1383
+
1384
+ i18n-filterInputPlaceholder="kendo.dropdowntree.filterInputPlaceholder|The text for the input's placeholder when filtering is enabled"
1385
+ filterInputPlaceholder="Filter"
1386
+ >
1385
1387
  </ng-container>
1386
1388
  <span
1387
- [attr.id]="valueLabelId"
1388
- class="k-input-inner"
1389
- (click)="$event.preventDefault()"
1390
- >
1391
- <span class="k-input-value-text" *ngIf="valueTemplate || text || placeholder">
1392
- <ng-template *ngIf="valueTemplate"
1389
+ [attr.id]="valueLabelId"
1390
+ class="k-input-inner"
1391
+ (click)="$event.preventDefault()"
1392
+ >
1393
+ @if (valueTemplate || text || placeholder) {
1394
+ <span class="k-input-value-text">
1395
+ @if (valueTemplate) {
1396
+ <ng-template
1393
1397
  [templateContext]="{
1394
1398
  templateRef: valueTemplate.templateRef,
1395
1399
  $implicit: dataItem
1396
1400
  }">
1397
1401
  </ng-template>
1398
- <ng-template [ngIf]="!valueTemplate"> {{ text || placeholder }} </ng-template>
1402
+ }
1403
+ @if (!valueTemplate) {
1404
+ {{ text || placeholder }}
1405
+ }
1399
1406
  </span>
1407
+ }
1400
1408
  </span>
1401
- <span
1402
- *ngIf="!loading && !readonly && clearButton && text?.length && !disabled"
1409
+ @if (!loading && !readonly && clearButton && text?.length && !disabled) {
1410
+ <span
1403
1411
  class="k-clear-value"
1404
1412
  [style.visibility]="clearButtonVisibility"
1405
1413
  [attr.title]="messageFor('clearTitle')"
1406
1414
  aria-hidden="true"
1407
1415
  (click)="clearValue($event)"
1408
- >
1409
- <kendo-icon-wrapper
1410
- name="x"
1411
- [svgIcon]="xIcon"
1412
1416
  >
1417
+ <kendo-icon-wrapper
1418
+ name="x"
1419
+ [svgIcon]="xIcon"
1420
+ >
1413
1421
  </kendo-icon-wrapper>
1414
- </span>
1415
- <span *ngIf="loading" class="k-i-loading k-input-loading-icon k-icon"></span>
1422
+ </span>
1423
+ }
1424
+ @if (loading) {
1425
+ <span class="k-i-loading k-input-loading-icon k-icon"></span>
1426
+ }
1416
1427
  <button
1417
- tabindex="-1"
1418
- type="button"
1419
- class="k-input-button k-button k-icon-button"
1420
- [ngClass]="selectButtonClasses"
1421
- [attr.aria-label]="messageFor('selectButtonText')"
1422
- [attr.disabled]="disabled ? '' : null"
1423
- >
1424
- <kendo-icon-wrapper
1425
- [name]="icon || 'caret-alt-down'"
1426
- innerCssClass="k-button-icon"
1427
- [svgIcon]="svgIcon || caretAltDownIcon"
1428
+ tabindex="-1"
1429
+ type="button"
1430
+ class="k-input-button k-button k-icon-button"
1431
+ [ngClass]="selectButtonClasses"
1432
+ [attr.aria-label]="messageFor('selectButtonText')"
1433
+ [attr.disabled]="disabled ? '' : null"
1434
+ >
1435
+ <kendo-icon-wrapper
1436
+ [name]="icon || 'caret-alt-down'"
1437
+ innerCssClass="k-button-icon"
1438
+ [svgIcon]="svgIcon || caretAltDownIcon"
1428
1439
  >
1429
- </kendo-icon-wrapper>
1440
+ </kendo-icon-wrapper>
1430
1441
  </button>
1431
1442
  <ng-template #popupTemplate>
1432
- <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
1443
+ <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
1433
1444
  </ng-template>
1434
1445
  <ng-container #container></ng-container>
1435
-
1446
+
1436
1447
  <kendo-adaptive-renderer
1437
- [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
1438
- [title]="adaptiveTitle"
1439
- [showTextInput]="filterable"
1440
- [subtitle]="adaptiveSubtitle"
1441
- (closePopup)="togglePopup(false)"
1442
- (textInputChange)="handleFilterInputChange($event)"
1443
- [placeholder]="placeholder"
1444
- [searchBarValue]="filter"
1445
- [filterable]="filterable">
1448
+ [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
1449
+ [title]="adaptiveTitle"
1450
+ [showTextInput]="filterable"
1451
+ [subtitle]="adaptiveSubtitle"
1452
+ (closePopup)="togglePopup(false)"
1453
+ (textInputChange)="handleFilterInputChange($event)"
1454
+ [placeholder]="placeholder"
1455
+ [searchBarValue]="filter"
1456
+ [filterable]="filterable">
1446
1457
  </kendo-adaptive-renderer>
1447
-
1458
+
1448
1459
  <ng-template #sharedPopupActionSheetTemplate>
1460
+ @if (filterable && !isActionSheetExpanded) {
1449
1461
  <span
1450
- *ngIf="filterable && !isActionSheetExpanded"
1451
- class="k-list-filter"
1452
- >
1453
- <span
1454
- class="k-textbox k-input"
1455
- [ngClass]="filterInputClasses"
1462
+ class="k-list-filter"
1463
+ >
1464
+ <span
1465
+ class="k-textbox k-input"
1466
+ [ngClass]="filterInputClasses"
1456
1467
  >
1457
- <span class="k-input-prefix">
1458
- <kendo-icon-wrapper
1459
- class="k-icon"
1460
- name="search"
1461
- [svgIcon]="searchIcon"
1462
- >
1463
- </kendo-icon-wrapper>
1464
- </span>
1465
- <input
1466
- #filterInput
1467
- (input)="handleFilterInputChange($event.target)"
1468
- [filterInput]="filterable && !touchEnabled"
1469
- (keydown.arrowdown)="handleKeydown($event, filterInput)"
1470
- (keydown.alt.arrowup)="handleKeydown($event, filterInput)"
1471
- (keydown.escape)="handleKeydown($event, filterInput)"
1472
- [attr.aria-label]="messageFor('filterInputLabel')"
1473
- [value]="filter"
1474
- class="k-input-inner"
1475
- role="textbox"
1468
+ <span class="k-input-prefix">
1469
+ <kendo-icon-wrapper
1470
+ class="k-icon"
1471
+ name="search"
1472
+ [svgIcon]="searchIcon"
1473
+ >
1474
+ </kendo-icon-wrapper>
1475
+ </span>
1476
+ <input
1477
+ #filterInput
1478
+ (input)="handleFilterInputChange($event.target)"
1479
+ [filterInput]="filterable && !touchEnabled"
1480
+ (keydown.arrowdown)="handleKeydown($event, filterInput)"
1481
+ (keydown.alt.arrowup)="handleKeydown($event, filterInput)"
1482
+ (keydown.escape)="handleKeydown($event, filterInput)"
1483
+ [attr.aria-label]="messageFor('filterInputLabel')"
1484
+ [value]="filter"
1485
+ class="k-input-inner"
1486
+ role="textbox"
1476
1487
  [kendoEventsOutsideAngular]="{
1477
1488
  blur: handleBlur
1478
1489
  }"
1479
- [scope]="this"
1480
- >
1481
- </span>
1490
+ [scope]="this"
1491
+ >
1492
+ </span>
1482
1493
  </span>
1483
- <!--header template-->
1494
+ }
1495
+ <!--header template-->
1496
+ @if (headerTemplate) {
1484
1497
  <ng-template
1485
- *ngIf="headerTemplate"
1486
1498
  [templateContext]="{
1487
1499
  templateRef: headerTemplate?.templateRef
1488
1500
  }">
1489
1501
  </ng-template>
1502
+ }
1503
+ @if (data.length !== 0 && !allNodesHidden) {
1490
1504
  <kendo-treeview
1491
- #treeview
1492
- [attr.id]="treeViewId"
1493
- *ngIf="data.length !== 0 && !allNodesHidden"
1494
- [size]="windowSize !== 'large' ? 'large' : size"
1495
- [nodes]="data"
1496
- [style.maxHeight.px]="listHeight"
1497
- [animate]="false"
1498
- [(selectedKeys)]="selectedKeys"
1499
- [selectBy]="selectBy"
1500
- [textField]="textField"
1501
- kendoTreeViewSelectable
1502
- [children]="children"
1503
- [hasChildren]="hasChildren"
1504
- [loadOnDemand]="loadOnDemand"
1505
- [isExpanded]="isNodeExpanded"
1506
- [isDisabled]="itemDisabled"
1507
- [nodeTemplate]="nodeTemplate"
1508
- [filter]="filter"
1509
- [isVisible]="isNodeVisible"
1510
- (focusout)="handleBlur($event)"
1511
- (keydown)="handleKeydown($event)"
1512
- (selectionChange)="onSelectionChange($event)"
1513
- (expand)="nodeExpand.emit($event)"
1514
- (collapse)="nodeCollapse.emit($event)"
1515
- (childrenLoaded)="onChildrenLoaded()"
1516
- >
1505
+ #treeview
1506
+ [attr.id]="treeViewId"
1507
+ [size]="windowSize !== 'large' ? 'large' : size"
1508
+ [nodes]="data"
1509
+ [style.maxHeight.px]="listHeight"
1510
+ [animate]="false"
1511
+ [(selectedKeys)]="selectedKeys"
1512
+ [selectBy]="selectBy"
1513
+ [textField]="textField"
1514
+ kendoTreeViewSelectable
1515
+ [children]="children"
1516
+ [hasChildren]="hasChildren"
1517
+ [loadOnDemand]="loadOnDemand"
1518
+ [isExpanded]="isNodeExpanded"
1519
+ [isDisabled]="itemDisabled"
1520
+ [nodeTemplate]="nodeTemplate"
1521
+ [filter]="filter"
1522
+ [isVisible]="isNodeVisible"
1523
+ (focusout)="handleBlur($event)"
1524
+ (keydown)="handleKeydown($event)"
1525
+ (selectionChange)="onSelectionChange($event)"
1526
+ (expand)="nodeExpand.emit($event)"
1527
+ (collapse)="nodeCollapse.emit($event)"
1528
+ (childrenLoaded)="onChildrenLoaded()"
1529
+ >
1517
1530
  </kendo-treeview>
1518
- <!--footer template-->
1531
+ }
1532
+ <!--footer template-->
1533
+ @if (footerTemplate) {
1519
1534
  <ng-template
1520
- *ngIf="footerTemplate"
1521
1535
  [templateContext]="{
1522
1536
  templateRef: footerTemplate?.templateRef
1523
1537
  }">
1524
1538
  </ng-template>
1525
- <!--no-data template-->
1526
- <div class="k-no-data" *ngIf="data.length === 0 || allNodesHidden">
1527
- <ng-template [ngIf]="noDataTemplate"
1539
+ }
1540
+ <!--no-data template-->
1541
+ @if (data.length === 0 || allNodesHidden) {
1542
+ <div class="k-no-data">
1543
+ @if (noDataTemplate) {
1544
+ <ng-template
1528
1545
  [templateContext]="{
1529
1546
  templateRef: noDataTemplate?.templateRef
1530
1547
  }">
1531
1548
  </ng-template>
1532
- <ng-template [ngIf]="!noDataTemplate">
1533
- <div>{{ messageFor('noDataText') }}</div>
1534
- </ng-template>
1549
+ }
1550
+ @if (!noDataTemplate) {
1551
+ <div>{{ messageFor('noDataText') }}</div>
1552
+ }
1535
1553
  </div>
1554
+ }
1536
1555
  </ng-template>
1537
-
1538
- <kendo-resize-sensor *ngIf="isOpen || isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
1539
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: SelectDirective, selector: "[kendoTreeViewSelectable]", inputs: ["isSelected", "selectBy", "kendoTreeViewSelectable", "selectedKeys"], outputs: ["selectedKeysChange"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1556
+
1557
+ @if (isOpen || isAdaptiveModeEnabled) {
1558
+ <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
1559
+ }
1560
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { 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: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: SelectDirective, selector: "[kendoTreeViewSelectable]", inputs: ["isSelected", "selectBy", "kendoTreeViewSelectable", "selectedKeys"], outputs: ["selectedKeysChange"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1540
1561
  }
1541
1562
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DropDownTreeComponent, decorators: [{
1542
1563
  type: Component,
@@ -1573,185 +1594,204 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1573
1594
  selector: 'kendo-dropdowntree',
1574
1595
  template: `
1575
1596
  <ng-container kendoDropDownTreeLocalizedMessages
1576
- i18n-noDataText="kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items"
1577
- noDataText="NO DATA FOUND"
1578
-
1579
- i18n-clearTitle="kendo.dropdowntree.clearTitle|The title of the clear button"
1580
- clearTitle="clear"
1581
-
1582
- i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
1583
- selectButtonText="Select"
1584
-
1585
- i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
1586
- filterInputLabel="Filter"
1587
-
1588
- i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
1589
- popupLabel="Options list"
1590
-
1591
- i18n-adaptiveCloseButtonTitle="kendo.dropdowntree.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
1592
- adaptiveCloseButtonTitle="Close"
1593
-
1594
- i18n-filterInputPlaceholder="kendo.dropdowntree.filterInputPlaceholder|The text for the input's placeholder when filtering is enabled"
1595
- filterInputPlaceholder="Filter"
1596
- >
1597
+ i18n-noDataText="kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items"
1598
+ noDataText="NO DATA FOUND"
1599
+
1600
+ i18n-clearTitle="kendo.dropdowntree.clearTitle|The title of the clear button"
1601
+ clearTitle="clear"
1602
+
1603
+ i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
1604
+ selectButtonText="Select"
1605
+
1606
+ i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
1607
+ filterInputLabel="Filter"
1608
+
1609
+ i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
1610
+ popupLabel="Options list"
1611
+
1612
+ i18n-adaptiveCloseButtonTitle="kendo.dropdowntree.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
1613
+ adaptiveCloseButtonTitle="Close"
1614
+
1615
+ i18n-filterInputPlaceholder="kendo.dropdowntree.filterInputPlaceholder|The text for the input's placeholder when filtering is enabled"
1616
+ filterInputPlaceholder="Filter"
1617
+ >
1597
1618
  </ng-container>
1598
1619
  <span
1599
- [attr.id]="valueLabelId"
1600
- class="k-input-inner"
1601
- (click)="$event.preventDefault()"
1602
- >
1603
- <span class="k-input-value-text" *ngIf="valueTemplate || text || placeholder">
1604
- <ng-template *ngIf="valueTemplate"
1620
+ [attr.id]="valueLabelId"
1621
+ class="k-input-inner"
1622
+ (click)="$event.preventDefault()"
1623
+ >
1624
+ @if (valueTemplate || text || placeholder) {
1625
+ <span class="k-input-value-text">
1626
+ @if (valueTemplate) {
1627
+ <ng-template
1605
1628
  [templateContext]="{
1606
1629
  templateRef: valueTemplate.templateRef,
1607
1630
  $implicit: dataItem
1608
1631
  }">
1609
1632
  </ng-template>
1610
- <ng-template [ngIf]="!valueTemplate"> {{ text || placeholder }} </ng-template>
1633
+ }
1634
+ @if (!valueTemplate) {
1635
+ {{ text || placeholder }}
1636
+ }
1611
1637
  </span>
1638
+ }
1612
1639
  </span>
1613
- <span
1614
- *ngIf="!loading && !readonly && clearButton && text?.length && !disabled"
1640
+ @if (!loading && !readonly && clearButton && text?.length && !disabled) {
1641
+ <span
1615
1642
  class="k-clear-value"
1616
1643
  [style.visibility]="clearButtonVisibility"
1617
1644
  [attr.title]="messageFor('clearTitle')"
1618
1645
  aria-hidden="true"
1619
1646
  (click)="clearValue($event)"
1620
- >
1621
- <kendo-icon-wrapper
1622
- name="x"
1623
- [svgIcon]="xIcon"
1624
1647
  >
1648
+ <kendo-icon-wrapper
1649
+ name="x"
1650
+ [svgIcon]="xIcon"
1651
+ >
1625
1652
  </kendo-icon-wrapper>
1626
- </span>
1627
- <span *ngIf="loading" class="k-i-loading k-input-loading-icon k-icon"></span>
1653
+ </span>
1654
+ }
1655
+ @if (loading) {
1656
+ <span class="k-i-loading k-input-loading-icon k-icon"></span>
1657
+ }
1628
1658
  <button
1629
- tabindex="-1"
1630
- type="button"
1631
- class="k-input-button k-button k-icon-button"
1632
- [ngClass]="selectButtonClasses"
1633
- [attr.aria-label]="messageFor('selectButtonText')"
1634
- [attr.disabled]="disabled ? '' : null"
1635
- >
1636
- <kendo-icon-wrapper
1637
- [name]="icon || 'caret-alt-down'"
1638
- innerCssClass="k-button-icon"
1639
- [svgIcon]="svgIcon || caretAltDownIcon"
1659
+ tabindex="-1"
1660
+ type="button"
1661
+ class="k-input-button k-button k-icon-button"
1662
+ [ngClass]="selectButtonClasses"
1663
+ [attr.aria-label]="messageFor('selectButtonText')"
1664
+ [attr.disabled]="disabled ? '' : null"
1665
+ >
1666
+ <kendo-icon-wrapper
1667
+ [name]="icon || 'caret-alt-down'"
1668
+ innerCssClass="k-button-icon"
1669
+ [svgIcon]="svgIcon || caretAltDownIcon"
1640
1670
  >
1641
- </kendo-icon-wrapper>
1671
+ </kendo-icon-wrapper>
1642
1672
  </button>
1643
1673
  <ng-template #popupTemplate>
1644
- <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
1674
+ <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
1645
1675
  </ng-template>
1646
1676
  <ng-container #container></ng-container>
1647
-
1677
+
1648
1678
  <kendo-adaptive-renderer
1649
- [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
1650
- [title]="adaptiveTitle"
1651
- [showTextInput]="filterable"
1652
- [subtitle]="adaptiveSubtitle"
1653
- (closePopup)="togglePopup(false)"
1654
- (textInputChange)="handleFilterInputChange($event)"
1655
- [placeholder]="placeholder"
1656
- [searchBarValue]="filter"
1657
- [filterable]="filterable">
1679
+ [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
1680
+ [title]="adaptiveTitle"
1681
+ [showTextInput]="filterable"
1682
+ [subtitle]="adaptiveSubtitle"
1683
+ (closePopup)="togglePopup(false)"
1684
+ (textInputChange)="handleFilterInputChange($event)"
1685
+ [placeholder]="placeholder"
1686
+ [searchBarValue]="filter"
1687
+ [filterable]="filterable">
1658
1688
  </kendo-adaptive-renderer>
1659
-
1689
+
1660
1690
  <ng-template #sharedPopupActionSheetTemplate>
1691
+ @if (filterable && !isActionSheetExpanded) {
1661
1692
  <span
1662
- *ngIf="filterable && !isActionSheetExpanded"
1663
- class="k-list-filter"
1664
- >
1665
- <span
1666
- class="k-textbox k-input"
1667
- [ngClass]="filterInputClasses"
1693
+ class="k-list-filter"
1694
+ >
1695
+ <span
1696
+ class="k-textbox k-input"
1697
+ [ngClass]="filterInputClasses"
1668
1698
  >
1669
- <span class="k-input-prefix">
1670
- <kendo-icon-wrapper
1671
- class="k-icon"
1672
- name="search"
1673
- [svgIcon]="searchIcon"
1674
- >
1675
- </kendo-icon-wrapper>
1676
- </span>
1677
- <input
1678
- #filterInput
1679
- (input)="handleFilterInputChange($event.target)"
1680
- [filterInput]="filterable && !touchEnabled"
1681
- (keydown.arrowdown)="handleKeydown($event, filterInput)"
1682
- (keydown.alt.arrowup)="handleKeydown($event, filterInput)"
1683
- (keydown.escape)="handleKeydown($event, filterInput)"
1684
- [attr.aria-label]="messageFor('filterInputLabel')"
1685
- [value]="filter"
1686
- class="k-input-inner"
1687
- role="textbox"
1699
+ <span class="k-input-prefix">
1700
+ <kendo-icon-wrapper
1701
+ class="k-icon"
1702
+ name="search"
1703
+ [svgIcon]="searchIcon"
1704
+ >
1705
+ </kendo-icon-wrapper>
1706
+ </span>
1707
+ <input
1708
+ #filterInput
1709
+ (input)="handleFilterInputChange($event.target)"
1710
+ [filterInput]="filterable && !touchEnabled"
1711
+ (keydown.arrowdown)="handleKeydown($event, filterInput)"
1712
+ (keydown.alt.arrowup)="handleKeydown($event, filterInput)"
1713
+ (keydown.escape)="handleKeydown($event, filterInput)"
1714
+ [attr.aria-label]="messageFor('filterInputLabel')"
1715
+ [value]="filter"
1716
+ class="k-input-inner"
1717
+ role="textbox"
1688
1718
  [kendoEventsOutsideAngular]="{
1689
1719
  blur: handleBlur
1690
1720
  }"
1691
- [scope]="this"
1692
- >
1693
- </span>
1721
+ [scope]="this"
1722
+ >
1723
+ </span>
1694
1724
  </span>
1695
- <!--header template-->
1725
+ }
1726
+ <!--header template-->
1727
+ @if (headerTemplate) {
1696
1728
  <ng-template
1697
- *ngIf="headerTemplate"
1698
1729
  [templateContext]="{
1699
1730
  templateRef: headerTemplate?.templateRef
1700
1731
  }">
1701
1732
  </ng-template>
1733
+ }
1734
+ @if (data.length !== 0 && !allNodesHidden) {
1702
1735
  <kendo-treeview
1703
- #treeview
1704
- [attr.id]="treeViewId"
1705
- *ngIf="data.length !== 0 && !allNodesHidden"
1706
- [size]="windowSize !== 'large' ? 'large' : size"
1707
- [nodes]="data"
1708
- [style.maxHeight.px]="listHeight"
1709
- [animate]="false"
1710
- [(selectedKeys)]="selectedKeys"
1711
- [selectBy]="selectBy"
1712
- [textField]="textField"
1713
- kendoTreeViewSelectable
1714
- [children]="children"
1715
- [hasChildren]="hasChildren"
1716
- [loadOnDemand]="loadOnDemand"
1717
- [isExpanded]="isNodeExpanded"
1718
- [isDisabled]="itemDisabled"
1719
- [nodeTemplate]="nodeTemplate"
1720
- [filter]="filter"
1721
- [isVisible]="isNodeVisible"
1722
- (focusout)="handleBlur($event)"
1723
- (keydown)="handleKeydown($event)"
1724
- (selectionChange)="onSelectionChange($event)"
1725
- (expand)="nodeExpand.emit($event)"
1726
- (collapse)="nodeCollapse.emit($event)"
1727
- (childrenLoaded)="onChildrenLoaded()"
1728
- >
1736
+ #treeview
1737
+ [attr.id]="treeViewId"
1738
+ [size]="windowSize !== 'large' ? 'large' : size"
1739
+ [nodes]="data"
1740
+ [style.maxHeight.px]="listHeight"
1741
+ [animate]="false"
1742
+ [(selectedKeys)]="selectedKeys"
1743
+ [selectBy]="selectBy"
1744
+ [textField]="textField"
1745
+ kendoTreeViewSelectable
1746
+ [children]="children"
1747
+ [hasChildren]="hasChildren"
1748
+ [loadOnDemand]="loadOnDemand"
1749
+ [isExpanded]="isNodeExpanded"
1750
+ [isDisabled]="itemDisabled"
1751
+ [nodeTemplate]="nodeTemplate"
1752
+ [filter]="filter"
1753
+ [isVisible]="isNodeVisible"
1754
+ (focusout)="handleBlur($event)"
1755
+ (keydown)="handleKeydown($event)"
1756
+ (selectionChange)="onSelectionChange($event)"
1757
+ (expand)="nodeExpand.emit($event)"
1758
+ (collapse)="nodeCollapse.emit($event)"
1759
+ (childrenLoaded)="onChildrenLoaded()"
1760
+ >
1729
1761
  </kendo-treeview>
1730
- <!--footer template-->
1762
+ }
1763
+ <!--footer template-->
1764
+ @if (footerTemplate) {
1731
1765
  <ng-template
1732
- *ngIf="footerTemplate"
1733
1766
  [templateContext]="{
1734
1767
  templateRef: footerTemplate?.templateRef
1735
1768
  }">
1736
1769
  </ng-template>
1737
- <!--no-data template-->
1738
- <div class="k-no-data" *ngIf="data.length === 0 || allNodesHidden">
1739
- <ng-template [ngIf]="noDataTemplate"
1770
+ }
1771
+ <!--no-data template-->
1772
+ @if (data.length === 0 || allNodesHidden) {
1773
+ <div class="k-no-data">
1774
+ @if (noDataTemplate) {
1775
+ <ng-template
1740
1776
  [templateContext]="{
1741
1777
  templateRef: noDataTemplate?.templateRef
1742
1778
  }">
1743
1779
  </ng-template>
1744
- <ng-template [ngIf]="!noDataTemplate">
1745
- <div>{{ messageFor('noDataText') }}</div>
1746
- </ng-template>
1780
+ }
1781
+ @if (!noDataTemplate) {
1782
+ <div>{{ messageFor('noDataText') }}</div>
1783
+ }
1747
1784
  </div>
1785
+ }
1748
1786
  </ng-template>
1749
-
1750
- <kendo-resize-sensor *ngIf="isOpen || isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
1751
- `,
1787
+
1788
+ @if (isOpen || isAdaptiveModeEnabled) {
1789
+ <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
1790
+ }
1791
+ `,
1752
1792
  changeDetection: ChangeDetectionStrategy.OnPush,
1753
1793
  standalone: true,
1754
- imports: [LocalizedMessagesDirective, NgIf, TemplateContextDirective, IconWrapperComponent, NgClass, NgTemplateOutlet, AdaptiveRendererComponent, FilterInputDirective, EventsOutsideAngularDirective, TreeViewComponent, SelectDirective, ResizeSensorComponent]
1794
+ imports: [LocalizedMessagesDirective, TemplateContextDirective, IconWrapperComponent, NgClass, NgTemplateOutlet, AdaptiveRendererComponent, FilterInputDirective, EventsOutsideAngularDirective, TreeViewComponent, SelectDirective, ResizeSensorComponent]
1755
1795
  }]
1756
1796
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.PopupService }, { type: i2.NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i3.LocalizationService }, { type: i4.AdaptiveService }], propDecorators: { icon: [{
1757
1797
  type: Input