@progress/kendo-angular-dropdowns 18.1.0-develop.30 → 18.1.0-develop.4

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.
@@ -36,12 +36,8 @@ export declare class ResponsiveRendererComponent {
36
36
  searchBarValue: string;
37
37
  animationDuration: number;
38
38
  xIcon: SVGIcon;
39
- private expanded;
40
39
  messageFor(key: string): string;
41
40
  onValueChange(value: string): void;
42
- onOverlayClick(): void;
43
- handleExpand(): void;
44
- handleClose(): void;
45
41
  static ɵfac: i0.ɵɵFactoryDeclaration<ResponsiveRendererComponent, never>;
46
42
  static ɵcmp: i0.ɵɵComponentDeclaration<ResponsiveRendererComponent, "responsive-renderer", never, { "title": { "alias": "title"; "required": false; }; "showActionButtons": { "alias": "showActionButtons"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "size": { "alias": "size"; "required": false; }; "showTextInput": { "alias": "showTextInput"; "required": false; }; "sharedPopupActionSheetTemplate": { "alias": "sharedPopupActionSheetTemplate"; "required": false; }; "isActionSheetExpanded": { "alias": "isActionSheetExpanded"; "required": false; }; "text": { "alias": "text"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, { "closePopup": "closePopup"; "textInputChange": "textInputChange"; "navigate": "navigate"; "onExpand": "onExpand"; "onCollapse": "onCollapse"; "onApply": "onApply"; "onCancel": "onCancel"; }, never, never, true, never>;
47
43
  }
@@ -22,8 +22,8 @@ export declare abstract class BaseCheckDirective {
22
22
  /**
23
23
  * @hidden
24
24
  * The flag is needed in order to determine how to construct the items map keys.
25
- * If `true`, then the key consists of the item's value and level (depth),
26
- * else the key consists of the item's value and 0 (no leveling required)
25
+ * If `true`, then the key consists of the item's value and 0 (no leveling required),
26
+ * else the key consists of the item's value and level (depth)
27
27
  */
28
28
  isHeterogeneous: boolean;
29
29
  /**
@@ -489,8 +489,8 @@ export declare class MultiSelectTreeComponent implements OnInit, OnDestroy, OnCh
489
489
  /**
490
490
  * @hidden
491
491
  * The flag is needed in order to determine how to construct the items map keys.
492
- * If `true`, then the key consists of the item's value and level (depth),
493
- * else the key consists of the item's value and 0 (no leveling required)
492
+ * If `true`, then the key consists of the item's value and 0 (no leveling required),
493
+ * else the key consists of the item's value and level (depth)
494
494
  */
495
495
  isHeterogeneous: boolean;
496
496
  /**
@@ -179,10 +179,14 @@ export class MultiColumnComboBoxComponent extends ComboBoxComponent {
179
179
  * @hidden
180
180
  */
181
181
  getColumnWidth(index) {
182
- if (!this.virtual) {
182
+ const popupWidthNumber = +(this.popupWidth.max.slice(0, -2));
183
+ if (this.totalColumnsWidth >= popupWidthNumber) {
183
184
  return this.columns.get(index).width;
184
185
  }
185
- return this.headerColumnWidths[index];
186
+ if (this.virtual && isPresent(this.headerColumnWidths[index])) {
187
+ return this.headerColumnWidths[index];
188
+ }
189
+ return this.columns.get(index).width;
186
190
  }
187
191
  verifySettings() {
188
192
  if (!isDevMode()) {
@@ -42,7 +42,6 @@ export class ResponsiveRendererComponent {
42
42
  searchBarValue = '';
43
43
  animationDuration = animationDuration;
44
44
  xIcon = xIcon;
45
- expanded = false;
46
45
  messageFor(key) {
47
46
  return this.localization.get(key);
48
47
  }
@@ -50,28 +49,15 @@ export class ResponsiveRendererComponent {
50
49
  this.searchBarValue = value;
51
50
  this.textInputChange.emit(value);
52
51
  }
53
- onOverlayClick() {
54
- if (this.expanded) {
55
- this.handleClose();
56
- }
57
- }
58
- handleExpand() {
59
- this.onExpand.emit();
60
- this.expanded = true;
61
- }
62
- handleClose() {
63
- this.closePopup.emit();
64
- this.expanded = false;
65
- }
66
52
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResponsiveRendererComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
67
53
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResponsiveRendererComponent, isStandalone: true, selector: "responsive-renderer", inputs: { title: "title", showActionButtons: "showActionButtons", subtitle: "subtitle", size: "size", showTextInput: "showTextInput", sharedPopupActionSheetTemplate: "sharedPopupActionSheetTemplate", isActionSheetExpanded: "isActionSheetExpanded", text: "text", placeholder: "placeholder" }, outputs: { closePopup: "closePopup", textInputChange: "textInputChange", navigate: "navigate", onExpand: "onExpand", onCollapse: "onCollapse", onApply: "onApply", onCancel: "onCancel" }, viewQueries: [{ propertyName: "actionSheet", first: true, predicate: ActionSheetComponent, descendants: true }, { propertyName: "actionSheetSearchBar", first: true, predicate: ["actionSheetSearchBar"], descendants: true }], ngImport: i0, template: `
68
54
  <kendo-actionsheet
69
55
  #actionSheet
70
56
  [animation]="{ duration: animationDuration }"
71
57
  [expanded]="isActionSheetExpanded"
72
- (overlayClick)="onOverlayClick()"
58
+ (overlayClick)="closePopup.emit()"
73
59
  (keydown)="navigate.emit($event)"
74
- (expand)="handleExpand()"
60
+ (expand)="onExpand.emit()"
75
61
  (collapse)="onCollapse.emit()"
76
62
  >
77
63
  <ng-template kendoActionSheetTemplate>
@@ -93,7 +79,7 @@ export class ResponsiveRendererComponent {
93
79
  [tabIndex]="-1"
94
80
  aria-hidden="true"
95
81
  innerCssClass="k-button-icon"
96
- (click)="handleClose()"
82
+ (click)="closePopup.emit()"
97
83
  ></button>
98
84
  </div>
99
85
  </div>
@@ -155,9 +141,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
155
141
  #actionSheet
156
142
  [animation]="{ duration: animationDuration }"
157
143
  [expanded]="isActionSheetExpanded"
158
- (overlayClick)="onOverlayClick()"
144
+ (overlayClick)="closePopup.emit()"
159
145
  (keydown)="navigate.emit($event)"
160
- (expand)="handleExpand()"
146
+ (expand)="onExpand.emit()"
161
147
  (collapse)="onCollapse.emit()"
162
148
  >
163
149
  <ng-template kendoActionSheetTemplate>
@@ -179,7 +165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
179
165
  [tabIndex]="-1"
180
166
  aria-hidden="true"
181
167
  innerCssClass="k-button-icon"
182
- (click)="handleClose()"
168
+ (click)="closePopup.emit()"
183
169
  ></button>
184
170
  </div>
185
171
  </div>
@@ -141,9 +141,6 @@ export class ListComponent {
141
141
  this.scrollToFocused = !changes['data'].isFirstChange();
142
142
  }
143
143
  this.setOverflow();
144
- this.zone.onStable.pipe(take(1)).subscribe(() => {
145
- this.setGroupAttributes();
146
- });
147
144
  }
148
145
  if (isChanged('virtual', changes, false)) {
149
146
  this.setOverflow();
@@ -260,7 +257,7 @@ export class ListComponent {
260
257
  let index;
261
258
  if (item.getAttribute("role") === "group") {
262
259
  index = parseInt(item.getAttribute("group-index"), 10);
263
- this.currentGroup = this.dataService.groupAt(index)?.value;
260
+ this.currentGroup = this.dataService.groupAt(index).value;
264
261
  }
265
262
  else {
266
263
  index = parseInt(item.getAttribute("index"), 10);
@@ -498,7 +495,7 @@ export class ListComponent {
498
495
  tabindex="-1"
499
496
  aria-hidden="true"
500
497
  [ngClass]="checkboxClasses"
501
- (change)="onCheckedChange($event, itemIndex + startFrom)"
498
+ (change)="onCheckedChange($event, itemIndex)"
502
499
  [checked]="isChecked(itemIndex)"
503
500
  />
504
501
  <ng-template *ngIf="template"
@@ -522,7 +519,7 @@ export class ListComponent {
522
519
  'minHeight.px' : virtual?.itemHeight,
523
520
  'boxSizing' : virtual ? 'border-box' : 'inherit'}"
524
521
  [attr.group-index]="dataItem.index"
525
- [attr.id]="optionPrefix + '-' + dataItem.groupIndex + '-' + dataItem.value.split(' ').join('')"
522
+ [attr.id]="optionPrefix + '-' + dataItem.groupIndex + '-' + dataItem.value"
526
523
  [attr.tabIndex]="-1"
527
524
  [style.width.px]="rowWidth ?? null">
528
525
  <span [class]="listGroupItemTextClass">
@@ -636,7 +633,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
636
633
  tabindex="-1"
637
634
  aria-hidden="true"
638
635
  [ngClass]="checkboxClasses"
639
- (change)="onCheckedChange($event, itemIndex + startFrom)"
636
+ (change)="onCheckedChange($event, itemIndex)"
640
637
  [checked]="isChecked(itemIndex)"
641
638
  />
642
639
  <ng-template *ngIf="template"
@@ -660,7 +657,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
660
657
  'minHeight.px' : virtual?.itemHeight,
661
658
  'boxSizing' : virtual ? 'border-box' : 'inherit'}"
662
659
  [attr.group-index]="dataItem.index"
663
- [attr.id]="optionPrefix + '-' + dataItem.groupIndex + '-' + dataItem.value.split(' ').join('')"
660
+ [attr.id]="optionPrefix + '-' + dataItem.groupIndex + '-' + dataItem.value"
664
661
  [attr.tabIndex]="-1"
665
662
  [style.width.px]="rowWidth ?? null">
666
663
  <span [class]="listGroupItemTextClass">
@@ -1003,6 +1003,7 @@ export class DropDownListComponent {
1003
1003
  });
1004
1004
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
1005
1005
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.listBoxId);
1006
+ this.setAriaactivedescendant();
1006
1007
  const popupWrapper = this.popupRef.popupElement;
1007
1008
  const { min, max } = this.width;
1008
1009
  popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);
@@ -1022,7 +1023,6 @@ export class DropDownListComponent {
1022
1023
  this.subs.add(this.popupRef.popupOpen.subscribe(() => {
1023
1024
  this.cdr.detectChanges();
1024
1025
  setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
1025
- this.setAriaactivedescendant();
1026
1026
  this.optionsList.scrollToItem(this.selectionService.focused);
1027
1027
  this.selectionService.focus(this.selectionService.focused);
1028
1028
  this.opened.emit();
@@ -1126,7 +1126,7 @@ export class DropDownListComponent {
1126
1126
  setAriaactivedescendant() {
1127
1127
  if (this.ariaActivedescendant) {
1128
1128
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-activedescendant', this.ariaActivedescendant);
1129
- const searchInput = this.popupRef?.popupElement.querySelector('input[role="searchbox"]') || this.actionSheetSearchBar?.input.nativeElement;
1129
+ const searchInput = this.popupRef.popupElement.querySelector('input[role="searchbox"]');
1130
1130
  if (searchInput) {
1131
1131
  this.renderer.setAttribute(searchInput, 'aria-activedescendant', this.ariaActivedescendant);
1132
1132
  }
@@ -1455,8 +1455,6 @@ export class DropDownListComponent {
1455
1455
  }
1456
1456
  closeActionSheet() {
1457
1457
  this.actionSheet.toggle(false);
1458
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
1459
- this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
1460
1458
  if (this.filterable) {
1461
1459
  this.actionSheetSearchBar.value = '';
1462
1460
  this.filterChange.emit('');
@@ -1467,10 +1465,7 @@ export class DropDownListComponent {
1467
1465
  this.windowSize = this.adaptiveService.size;
1468
1466
  this.actionSheet.toggle(true);
1469
1467
  this.cdr.detectChanges();
1470
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
1471
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.listBoxId);
1472
1468
  setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
1473
- this.setAriaactivedescendant();
1474
1469
  this.title = setActionSheetTitle(this.wrapper, this.title);
1475
1470
  updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
1476
1471
  this.cdr.detectChanges();
@@ -14,8 +14,8 @@ export class BaseCheckDirective {
14
14
  /**
15
15
  * @hidden
16
16
  * The flag is needed in order to determine how to construct the items map keys.
17
- * If `true`, then the key consists of the item's value and level (depth),
18
- * else the key consists of the item's value and 0 (no leveling required)
17
+ * If `true`, then the key consists of the item's value and 0 (no leveling required),
18
+ * else the key consists of the item's value and level (depth)
19
19
  */
20
20
  isHeterogeneous;
21
21
  addItem(item) {
@@ -36,11 +36,7 @@ export class BaseCheckDirective {
36
36
  const key = this.getKey(item, level);
37
37
  const candidate = { ...item, level, key };
38
38
  this.checkedItems = this.checkedItems
39
- .filter(item => {
40
- const valueMatch = valueFrom(item, this.valueField) === valueFrom(candidate, this.valueField);
41
- const levelMatch = item.level === candidate.level;
42
- return this.isHeterogeneous ? !(valueMatch && levelMatch) : !valueMatch;
43
- });
39
+ .filter(item => valueFrom(item, this.valueField) !== valueFrom(candidate, this.valueField));
44
40
  this.checkedKeys.delete(key);
45
41
  }
46
42
  isItemChecked(item) {
@@ -768,8 +768,8 @@ export class MultiSelectTreeComponent {
768
768
  /**
769
769
  * @hidden
770
770
  * The flag is needed in order to determine how to construct the items map keys.
771
- * If `true`, then the key consists of the item's value and level (depth),
772
- * else the key consists of the item's value and 0 (no leveling required)
771
+ * If `true`, then the key consists of the item's value and 0 (no leveling required),
772
+ * else the key consists of the item's value and level (depth)
773
773
  */
774
774
  isHeterogeneous;
775
775
  /**
@@ -1116,7 +1116,7 @@ export class MultiSelectTreeComponent {
1116
1116
  }
1117
1117
  else {
1118
1118
  // Remove single tag when the child items are pre-fetched
1119
- const dataItem = this.dataItems.find(item => item.tagPositionIndex === index);
1119
+ const dataItem = this.dataItems[index];
1120
1120
  const itemKey = dataItem.key;
1121
1121
  const lookup = this.lookup.itemLookup(itemKey);
1122
1122
  const pendingCheck = [lookup.item];
@@ -1126,20 +1126,10 @@ export class MultiSelectTreeComponent {
1126
1126
  pendingCheck.push(...this.removeParents(lookup.parent));
1127
1127
  }
1128
1128
  const keysToRemove = pendingCheck.map(item => item.key);
1129
- // Holds the position indexes of the items to be removed
1130
- const valueDepthIndices = [];
1131
1129
  this.dataItems = this.dataItems.filter((_item, i) => {
1132
- const shouldStay = !keysToRemove.includes(_item.key) || this.disabledIndices.has(i);
1133
- if (!shouldStay) {
1134
- // We need to know the index position of the data item to be able to update the valueDepth array accordignly
1135
- // as each data item's position is corresponding to the same position in valueDepth
1136
- valueDepthIndices.push(i);
1137
- }
1138
- return shouldStay;
1139
- });
1140
- this.valueDepth = this.valueDepth.filter((_item, i) => {
1141
- return !valueDepthIndices.includes(i) || this.disabledIndices.has(i);
1130
+ return !keysToRemove.includes(_item.key) || this.disabledIndices.has(i);
1142
1131
  });
1132
+ this.valueDepth = this.dataItems.map(i => i.level);
1143
1133
  }
1144
1134
  this.updateValue(this.dataItems);
1145
1135
  if (!this.isFocused) {
@@ -1548,15 +1538,7 @@ export class MultiSelectTreeComponent {
1548
1538
  const source = this.dataItems.map(item => item.dataItem);
1549
1539
  this.tags = this.tagMapper(source);
1550
1540
  this.disabledIndices = this.disabledItemsMapper();
1551
- // Create a mapping of tags to position indices
1552
- const tagIndexMap = new Map(this.tags.map((tag, index) => [JSON.stringify(tag), index]));
1553
- // Modify dataItems by adding a property to hold the item's position as displayed in the tags
1554
- this.dataItems.forEach(item => {
1555
- const serializedDataItem = JSON.stringify(item.dataItem);
1556
- item.tagPositionIndex = tagIndexMap.has(serializedDataItem)
1557
- ? tagIndexMap.get(serializedDataItem) // Use the index from tags if it exists
1558
- : null; // Assign a null value if the dataItem is not visible in the tags
1559
- });
1541
+ this.dataItems.sort((a, b) => this.tags.indexOf(a.dataItem) - this.tags.indexOf(b.dataItem));
1560
1542
  }
1561
1543
  updateValue(value) {
1562
1544
  const newValue = this.valuePrimitive ?
@@ -1648,8 +1630,6 @@ export class MultiSelectTreeComponent {
1648
1630
  closeActionSheet() {
1649
1631
  this.wrapper.nativeElement.focus();
1650
1632
  this.actionSheet.toggle(false);
1651
- this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
1652
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
1653
1633
  if (this.filterable) {
1654
1634
  this.actionSheetSearchBar.value = '';
1655
1635
  this.filterChange.emit('');
@@ -1661,8 +1641,6 @@ export class MultiSelectTreeComponent {
1661
1641
  this.actionSheet.toggle(true);
1662
1642
  this.title = setActionSheetTitle(this.wrapper, this.title);
1663
1643
  this.cdr.detectChanges();
1664
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.treeViewId);
1665
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
1666
1644
  updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
1667
1645
  this.cdr.detectChanges();
1668
1646
  this.opened.emit();
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1738962093,
14
- version: '18.1.0-develop.30',
13
+ publishDate: 1738318302,
14
+ version: '18.1.0-develop.4',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -37,8 +37,8 @@ const packageMetadata = {
37
37
  productName: 'Kendo UI for Angular',
38
38
  productCode: 'KENDOUIANGULAR',
39
39
  productCodes: ['KENDOUIANGULAR'],
40
- publishDate: 1738962093,
41
- version: '18.1.0-develop.30',
40
+ publishDate: 1738318302,
41
+ version: '18.1.0-develop.4',
42
42
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
43
43
  };
44
44
 
@@ -2014,9 +2014,6 @@ class ListComponent {
2014
2014
  this.scrollToFocused = !changes['data'].isFirstChange();
2015
2015
  }
2016
2016
  this.setOverflow();
2017
- this.zone.onStable.pipe(take(1)).subscribe(() => {
2018
- this.setGroupAttributes();
2019
- });
2020
2017
  }
2021
2018
  if (isChanged('virtual', changes, false)) {
2022
2019
  this.setOverflow();
@@ -2133,7 +2130,7 @@ class ListComponent {
2133
2130
  let index;
2134
2131
  if (item.getAttribute("role") === "group") {
2135
2132
  index = parseInt(item.getAttribute("group-index"), 10);
2136
- this.currentGroup = this.dataService.groupAt(index)?.value;
2133
+ this.currentGroup = this.dataService.groupAt(index).value;
2137
2134
  }
2138
2135
  else {
2139
2136
  index = parseInt(item.getAttribute("index"), 10);
@@ -2371,7 +2368,7 @@ class ListComponent {
2371
2368
  tabindex="-1"
2372
2369
  aria-hidden="true"
2373
2370
  [ngClass]="checkboxClasses"
2374
- (change)="onCheckedChange($event, itemIndex + startFrom)"
2371
+ (change)="onCheckedChange($event, itemIndex)"
2375
2372
  [checked]="isChecked(itemIndex)"
2376
2373
  />
2377
2374
  <ng-template *ngIf="template"
@@ -2395,7 +2392,7 @@ class ListComponent {
2395
2392
  'minHeight.px' : virtual?.itemHeight,
2396
2393
  'boxSizing' : virtual ? 'border-box' : 'inherit'}"
2397
2394
  [attr.group-index]="dataItem.index"
2398
- [attr.id]="optionPrefix + '-' + dataItem.groupIndex + '-' + dataItem.value.split(' ').join('')"
2395
+ [attr.id]="optionPrefix + '-' + dataItem.groupIndex + '-' + dataItem.value"
2399
2396
  [attr.tabIndex]="-1"
2400
2397
  [style.width.px]="rowWidth ?? null">
2401
2398
  <span [class]="listGroupItemTextClass">
@@ -2509,7 +2506,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2509
2506
  tabindex="-1"
2510
2507
  aria-hidden="true"
2511
2508
  [ngClass]="checkboxClasses"
2512
- (change)="onCheckedChange($event, itemIndex + startFrom)"
2509
+ (change)="onCheckedChange($event, itemIndex)"
2513
2510
  [checked]="isChecked(itemIndex)"
2514
2511
  />
2515
2512
  <ng-template *ngIf="template"
@@ -2533,7 +2530,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2533
2530
  'minHeight.px' : virtual?.itemHeight,
2534
2531
  'boxSizing' : virtual ? 'border-box' : 'inherit'}"
2535
2532
  [attr.group-index]="dataItem.index"
2536
- [attr.id]="optionPrefix + '-' + dataItem.groupIndex + '-' + dataItem.value.split(' ').join('')"
2533
+ [attr.id]="optionPrefix + '-' + dataItem.groupIndex + '-' + dataItem.value"
2537
2534
  [attr.tabIndex]="-1"
2538
2535
  [style.width.px]="rowWidth ?? null">
2539
2536
  <span [class]="listGroupItemTextClass">
@@ -2708,7 +2705,6 @@ class ResponsiveRendererComponent {
2708
2705
  searchBarValue = '';
2709
2706
  animationDuration = animationDuration;
2710
2707
  xIcon = xIcon;
2711
- expanded = false;
2712
2708
  messageFor(key) {
2713
2709
  return this.localization.get(key);
2714
2710
  }
@@ -2716,28 +2712,15 @@ class ResponsiveRendererComponent {
2716
2712
  this.searchBarValue = value;
2717
2713
  this.textInputChange.emit(value);
2718
2714
  }
2719
- onOverlayClick() {
2720
- if (this.expanded) {
2721
- this.handleClose();
2722
- }
2723
- }
2724
- handleExpand() {
2725
- this.onExpand.emit();
2726
- this.expanded = true;
2727
- }
2728
- handleClose() {
2729
- this.closePopup.emit();
2730
- this.expanded = false;
2731
- }
2732
2715
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResponsiveRendererComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
2733
2716
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResponsiveRendererComponent, isStandalone: true, selector: "responsive-renderer", inputs: { title: "title", showActionButtons: "showActionButtons", subtitle: "subtitle", size: "size", showTextInput: "showTextInput", sharedPopupActionSheetTemplate: "sharedPopupActionSheetTemplate", isActionSheetExpanded: "isActionSheetExpanded", text: "text", placeholder: "placeholder" }, outputs: { closePopup: "closePopup", textInputChange: "textInputChange", navigate: "navigate", onExpand: "onExpand", onCollapse: "onCollapse", onApply: "onApply", onCancel: "onCancel" }, viewQueries: [{ propertyName: "actionSheet", first: true, predicate: ActionSheetComponent, descendants: true }, { propertyName: "actionSheetSearchBar", first: true, predicate: ["actionSheetSearchBar"], descendants: true }], ngImport: i0, template: `
2734
2717
  <kendo-actionsheet
2735
2718
  #actionSheet
2736
2719
  [animation]="{ duration: animationDuration }"
2737
2720
  [expanded]="isActionSheetExpanded"
2738
- (overlayClick)="onOverlayClick()"
2721
+ (overlayClick)="closePopup.emit()"
2739
2722
  (keydown)="navigate.emit($event)"
2740
- (expand)="handleExpand()"
2723
+ (expand)="onExpand.emit()"
2741
2724
  (collapse)="onCollapse.emit()"
2742
2725
  >
2743
2726
  <ng-template kendoActionSheetTemplate>
@@ -2759,7 +2742,7 @@ class ResponsiveRendererComponent {
2759
2742
  [tabIndex]="-1"
2760
2743
  aria-hidden="true"
2761
2744
  innerCssClass="k-button-icon"
2762
- (click)="handleClose()"
2745
+ (click)="closePopup.emit()"
2763
2746
  ></button>
2764
2747
  </div>
2765
2748
  </div>
@@ -2821,9 +2804,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2821
2804
  #actionSheet
2822
2805
  [animation]="{ duration: animationDuration }"
2823
2806
  [expanded]="isActionSheetExpanded"
2824
- (overlayClick)="onOverlayClick()"
2807
+ (overlayClick)="closePopup.emit()"
2825
2808
  (keydown)="navigate.emit($event)"
2826
- (expand)="handleExpand()"
2809
+ (expand)="onExpand.emit()"
2827
2810
  (collapse)="onCollapse.emit()"
2828
2811
  >
2829
2812
  <ng-template kendoActionSheetTemplate>
@@ -2845,7 +2828,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2845
2828
  [tabIndex]="-1"
2846
2829
  aria-hidden="true"
2847
2830
  innerCssClass="k-button-icon"
2848
- (click)="handleClose()"
2831
+ (click)="closePopup.emit()"
2849
2832
  ></button>
2850
2833
  </div>
2851
2834
  </div>
@@ -7912,6 +7895,7 @@ class DropDownListComponent {
7912
7895
  });
7913
7896
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
7914
7897
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.listBoxId);
7898
+ this.setAriaactivedescendant();
7915
7899
  const popupWrapper = this.popupRef.popupElement;
7916
7900
  const { min, max } = this.width;
7917
7901
  popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);
@@ -7931,7 +7915,6 @@ class DropDownListComponent {
7931
7915
  this.subs.add(this.popupRef.popupOpen.subscribe(() => {
7932
7916
  this.cdr.detectChanges();
7933
7917
  setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
7934
- this.setAriaactivedescendant();
7935
7918
  this.optionsList.scrollToItem(this.selectionService.focused);
7936
7919
  this.selectionService.focus(this.selectionService.focused);
7937
7920
  this.opened.emit();
@@ -8035,7 +8018,7 @@ class DropDownListComponent {
8035
8018
  setAriaactivedescendant() {
8036
8019
  if (this.ariaActivedescendant) {
8037
8020
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-activedescendant', this.ariaActivedescendant);
8038
- const searchInput = this.popupRef?.popupElement.querySelector('input[role="searchbox"]') || this.actionSheetSearchBar?.input.nativeElement;
8021
+ const searchInput = this.popupRef.popupElement.querySelector('input[role="searchbox"]');
8039
8022
  if (searchInput) {
8040
8023
  this.renderer.setAttribute(searchInput, 'aria-activedescendant', this.ariaActivedescendant);
8041
8024
  }
@@ -8364,8 +8347,6 @@ class DropDownListComponent {
8364
8347
  }
8365
8348
  closeActionSheet() {
8366
8349
  this.actionSheet.toggle(false);
8367
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
8368
- this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
8369
8350
  if (this.filterable) {
8370
8351
  this.actionSheetSearchBar.value = '';
8371
8352
  this.filterChange.emit('');
@@ -8376,10 +8357,7 @@ class DropDownListComponent {
8376
8357
  this.windowSize = this.adaptiveService.size;
8377
8358
  this.actionSheet.toggle(true);
8378
8359
  this.cdr.detectChanges();
8379
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
8380
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.listBoxId);
8381
8360
  setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
8382
- this.setAriaactivedescendant();
8383
8361
  this.title = setActionSheetTitle(this.wrapper, this.title);
8384
8362
  updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
8385
8363
  this.cdr.detectChanges();
@@ -12072,10 +12050,14 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12072
12050
  * @hidden
12073
12051
  */
12074
12052
  getColumnWidth(index) {
12075
- if (!this.virtual) {
12053
+ const popupWidthNumber = +(this.popupWidth.max.slice(0, -2));
12054
+ if (this.totalColumnsWidth >= popupWidthNumber) {
12076
12055
  return this.columns.get(index).width;
12077
12056
  }
12078
- return this.headerColumnWidths[index];
12057
+ if (this.virtual && isPresent(this.headerColumnWidths[index])) {
12058
+ return this.headerColumnWidths[index];
12059
+ }
12060
+ return this.columns.get(index).width;
12079
12061
  }
12080
12062
  verifySettings() {
12081
12063
  if (!isDevMode()) {
@@ -14700,8 +14682,8 @@ class BaseCheckDirective {
14700
14682
  /**
14701
14683
  * @hidden
14702
14684
  * The flag is needed in order to determine how to construct the items map keys.
14703
- * If `true`, then the key consists of the item's value and level (depth),
14704
- * else the key consists of the item's value and 0 (no leveling required)
14685
+ * If `true`, then the key consists of the item's value and 0 (no leveling required),
14686
+ * else the key consists of the item's value and level (depth)
14705
14687
  */
14706
14688
  isHeterogeneous;
14707
14689
  addItem(item) {
@@ -14722,11 +14704,7 @@ class BaseCheckDirective {
14722
14704
  const key = this.getKey(item, level);
14723
14705
  const candidate = { ...item, level, key };
14724
14706
  this.checkedItems = this.checkedItems
14725
- .filter(item => {
14726
- const valueMatch = valueFrom(item, this.valueField) === valueFrom(candidate, this.valueField);
14727
- const levelMatch = item.level === candidate.level;
14728
- return this.isHeterogeneous ? !(valueMatch && levelMatch) : !valueMatch;
14729
- });
14707
+ .filter(item => valueFrom(item, this.valueField) !== valueFrom(candidate, this.valueField));
14730
14708
  this.checkedKeys.delete(key);
14731
14709
  }
14732
14710
  isItemChecked(item) {
@@ -15812,8 +15790,8 @@ class MultiSelectTreeComponent {
15812
15790
  /**
15813
15791
  * @hidden
15814
15792
  * The flag is needed in order to determine how to construct the items map keys.
15815
- * If `true`, then the key consists of the item's value and level (depth),
15816
- * else the key consists of the item's value and 0 (no leveling required)
15793
+ * If `true`, then the key consists of the item's value and 0 (no leveling required),
15794
+ * else the key consists of the item's value and level (depth)
15817
15795
  */
15818
15796
  isHeterogeneous;
15819
15797
  /**
@@ -16160,7 +16138,7 @@ class MultiSelectTreeComponent {
16160
16138
  }
16161
16139
  else {
16162
16140
  // Remove single tag when the child items are pre-fetched
16163
- const dataItem = this.dataItems.find(item => item.tagPositionIndex === index);
16141
+ const dataItem = this.dataItems[index];
16164
16142
  const itemKey = dataItem.key;
16165
16143
  const lookup = this.lookup.itemLookup(itemKey);
16166
16144
  const pendingCheck = [lookup.item];
@@ -16170,20 +16148,10 @@ class MultiSelectTreeComponent {
16170
16148
  pendingCheck.push(...this.removeParents(lookup.parent));
16171
16149
  }
16172
16150
  const keysToRemove = pendingCheck.map(item => item.key);
16173
- // Holds the position indexes of the items to be removed
16174
- const valueDepthIndices = [];
16175
16151
  this.dataItems = this.dataItems.filter((_item, i) => {
16176
- const shouldStay = !keysToRemove.includes(_item.key) || this.disabledIndices.has(i);
16177
- if (!shouldStay) {
16178
- // We need to know the index position of the data item to be able to update the valueDepth array accordignly
16179
- // as each data item's position is corresponding to the same position in valueDepth
16180
- valueDepthIndices.push(i);
16181
- }
16182
- return shouldStay;
16183
- });
16184
- this.valueDepth = this.valueDepth.filter((_item, i) => {
16185
- return !valueDepthIndices.includes(i) || this.disabledIndices.has(i);
16152
+ return !keysToRemove.includes(_item.key) || this.disabledIndices.has(i);
16186
16153
  });
16154
+ this.valueDepth = this.dataItems.map(i => i.level);
16187
16155
  }
16188
16156
  this.updateValue(this.dataItems);
16189
16157
  if (!this.isFocused) {
@@ -16592,15 +16560,7 @@ class MultiSelectTreeComponent {
16592
16560
  const source = this.dataItems.map(item => item.dataItem);
16593
16561
  this.tags = this.tagMapper(source);
16594
16562
  this.disabledIndices = this.disabledItemsMapper();
16595
- // Create a mapping of tags to position indices
16596
- const tagIndexMap = new Map(this.tags.map((tag, index) => [JSON.stringify(tag), index]));
16597
- // Modify dataItems by adding a property to hold the item's position as displayed in the tags
16598
- this.dataItems.forEach(item => {
16599
- const serializedDataItem = JSON.stringify(item.dataItem);
16600
- item.tagPositionIndex = tagIndexMap.has(serializedDataItem)
16601
- ? tagIndexMap.get(serializedDataItem) // Use the index from tags if it exists
16602
- : null; // Assign a null value if the dataItem is not visible in the tags
16603
- });
16563
+ this.dataItems.sort((a, b) => this.tags.indexOf(a.dataItem) - this.tags.indexOf(b.dataItem));
16604
16564
  }
16605
16565
  updateValue(value) {
16606
16566
  const newValue = this.valuePrimitive ?
@@ -16692,8 +16652,6 @@ class MultiSelectTreeComponent {
16692
16652
  closeActionSheet() {
16693
16653
  this.wrapper.nativeElement.focus();
16694
16654
  this.actionSheet.toggle(false);
16695
- this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
16696
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
16697
16655
  if (this.filterable) {
16698
16656
  this.actionSheetSearchBar.value = '';
16699
16657
  this.filterChange.emit('');
@@ -16705,8 +16663,6 @@ class MultiSelectTreeComponent {
16705
16663
  this.actionSheet.toggle(true);
16706
16664
  this.title = setActionSheetTitle(this.wrapper, this.title);
16707
16665
  this.cdr.detectChanges();
16708
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.treeViewId);
16709
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
16710
16666
  updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
16711
16667
  this.cdr.detectChanges();
16712
16668
  this.opened.emit();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-dropdowns",
3
- "version": "18.1.0-develop.30",
3
+ "version": "18.1.0-develop.4",
4
4
  "description": "A wide variety of native Angular dropdown components including AutoComplete, ComboBox, DropDownList, DropDownTree, MultiColumnComboBox, MultiSelect, and MultiSelectTree ",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -20,7 +20,7 @@
20
20
  "package": {
21
21
  "productName": "Kendo UI for Angular",
22
22
  "productCode": "KENDOUIANGULAR",
23
- "publishDate": 1738962093,
23
+ "publishDate": 1738318302,
24
24
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
25
25
  }
26
26
  },
@@ -30,19 +30,19 @@
30
30
  "@angular/core": "16 - 19",
31
31
  "@angular/forms": "16 - 19",
32
32
  "@angular/platform-browser": "16 - 19",
33
- "@progress/kendo-licensing": "^1.4.0",
34
- "@progress/kendo-angular-common": "18.1.0-develop.30",
35
- "@progress/kendo-angular-utils": "18.1.0-develop.30",
36
- "@progress/kendo-angular-l10n": "18.1.0-develop.30",
37
- "@progress/kendo-angular-navigation": "18.1.0-develop.30",
38
- "@progress/kendo-angular-popup": "18.1.0-develop.30",
39
- "@progress/kendo-angular-icons": "18.1.0-develop.30",
40
- "@progress/kendo-angular-treeview": "18.1.0-develop.30",
33
+ "@progress/kendo-licensing": "^1.0.2",
34
+ "@progress/kendo-angular-common": "18.1.0-develop.4",
35
+ "@progress/kendo-angular-utils": "18.1.0-develop.4",
36
+ "@progress/kendo-angular-l10n": "18.1.0-develop.4",
37
+ "@progress/kendo-angular-navigation": "18.1.0-develop.4",
38
+ "@progress/kendo-angular-popup": "18.1.0-develop.4",
39
+ "@progress/kendo-angular-icons": "18.1.0-develop.4",
40
+ "@progress/kendo-angular-treeview": "18.1.0-develop.4",
41
41
  "rxjs": "^6.5.3 || ^7.0.0"
42
42
  },
43
43
  "dependencies": {
44
44
  "tslib": "^2.3.1",
45
- "@progress/kendo-angular-schematics": "18.1.0-develop.30",
45
+ "@progress/kendo-angular-schematics": "18.1.0-develop.4",
46
46
  "@progress/kendo-common": "^1.0.1"
47
47
  },
48
48
  "schematics": "./schematics/collection.json",
@@ -4,9 +4,9 @@ const schematics_1 = require("@angular-devkit/schematics");
4
4
  function default_1(options) {
5
5
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'DropDownsModule', package: 'dropdowns', peerDependencies: {
6
6
  // peers of the treeview
7
- '@progress/kendo-angular-inputs': '18.1.0-develop.30',
7
+ '@progress/kendo-angular-inputs': '18.1.0-develop.4',
8
8
  // peers of inputs
9
- '@progress/kendo-angular-intl': '18.1.0-develop.30',
9
+ '@progress/kendo-angular-intl': '18.1.0-develop.4',
10
10
  '@progress/kendo-drawing': '^1.17.2',
11
11
  // Peer dependency of icons
12
12
  '@progress/kendo-svg-icons': '^4.0.0'