@progress/kendo-angular-dropdowns 18.1.0-develop.2 → 18.1.0-develop.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dropdowntrees/checked-state/base-check.directive.d.ts +2 -2
- package/dropdowntrees/multiselecttree.component.d.ts +2 -2
- package/esm2022/comboboxes/multicolumncombobox.component.mjs +2 -6
- package/esm2022/common/list.component.mjs +1 -1
- package/esm2022/dropdownlist/dropdownlist.component.mjs +7 -2
- package/esm2022/dropdowntrees/checked-state/base-check.directive.mjs +7 -3
- package/esm2022/dropdowntrees/multiselecttree.component.mjs +28 -6
- package/esm2022/package-metadata.mjs +2 -2
- package/fesm2022/progress-kendo-angular-dropdowns.mjs +47 -20
- package/package.json +10 -10
- package/schematics/ngAdd/index.js +2 -2
|
@@ -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
|
|
26
|
-
* else the key consists of the item's value and
|
|
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)
|
|
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
|
|
493
|
-
* else the key consists of the item's value and
|
|
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)
|
|
494
494
|
*/
|
|
495
495
|
isHeterogeneous: boolean;
|
|
496
496
|
/**
|
|
@@ -179,14 +179,10 @@ export class MultiColumnComboBoxComponent extends ComboBoxComponent {
|
|
|
179
179
|
* @hidden
|
|
180
180
|
*/
|
|
181
181
|
getColumnWidth(index) {
|
|
182
|
-
|
|
183
|
-
if (this.totalColumnsWidth >= popupWidthNumber) {
|
|
182
|
+
if (!this.virtual) {
|
|
184
183
|
return this.columns.get(index).width;
|
|
185
184
|
}
|
|
186
|
-
|
|
187
|
-
return this.headerColumnWidths[index];
|
|
188
|
-
}
|
|
189
|
-
return this.columns.get(index).width;
|
|
185
|
+
return this.headerColumnWidths[index];
|
|
190
186
|
}
|
|
191
187
|
verifySettings() {
|
|
192
188
|
if (!isDevMode()) {
|
|
@@ -257,7 +257,7 @@ export class ListComponent {
|
|
|
257
257
|
let index;
|
|
258
258
|
if (item.getAttribute("role") === "group") {
|
|
259
259
|
index = parseInt(item.getAttribute("group-index"), 10);
|
|
260
|
-
this.currentGroup = this.dataService.groupAt(index)
|
|
260
|
+
this.currentGroup = this.dataService.groupAt(index)?.value;
|
|
261
261
|
}
|
|
262
262
|
else {
|
|
263
263
|
index = parseInt(item.getAttribute("index"), 10);
|
|
@@ -1003,7 +1003,6 @@ 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();
|
|
1007
1006
|
const popupWrapper = this.popupRef.popupElement;
|
|
1008
1007
|
const { min, max } = this.width;
|
|
1009
1008
|
popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);
|
|
@@ -1023,6 +1022,7 @@ export class DropDownListComponent {
|
|
|
1023
1022
|
this.subs.add(this.popupRef.popupOpen.subscribe(() => {
|
|
1024
1023
|
this.cdr.detectChanges();
|
|
1025
1024
|
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
|
|
1129
|
+
const searchInput = this.popupRef?.popupElement.querySelector('input[role="searchbox"]') || this.actionSheetSearchBar?.input.nativeElement;
|
|
1130
1130
|
if (searchInput) {
|
|
1131
1131
|
this.renderer.setAttribute(searchInput, 'aria-activedescendant', this.ariaActivedescendant);
|
|
1132
1132
|
}
|
|
@@ -1455,6 +1455,8 @@ 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');
|
|
1458
1460
|
if (this.filterable) {
|
|
1459
1461
|
this.actionSheetSearchBar.value = '';
|
|
1460
1462
|
this.filterChange.emit('');
|
|
@@ -1465,7 +1467,10 @@ export class DropDownListComponent {
|
|
|
1465
1467
|
this.windowSize = this.adaptiveService.size;
|
|
1466
1468
|
this.actionSheet.toggle(true);
|
|
1467
1469
|
this.cdr.detectChanges();
|
|
1470
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
|
|
1471
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.listBoxId);
|
|
1468
1472
|
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
1473
|
+
this.setAriaactivedescendant();
|
|
1469
1474
|
this.title = setActionSheetTitle(this.wrapper, this.title);
|
|
1470
1475
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
1471
1476
|
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
|
|
18
|
-
* else the key consists of the item's value and
|
|
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)
|
|
19
19
|
*/
|
|
20
20
|
isHeterogeneous;
|
|
21
21
|
addItem(item) {
|
|
@@ -36,7 +36,11 @@ 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 =>
|
|
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
|
+
});
|
|
40
44
|
this.checkedKeys.delete(key);
|
|
41
45
|
}
|
|
42
46
|
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
|
|
772
|
-
* else the key consists of the item's value and
|
|
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)
|
|
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
|
|
1119
|
+
const dataItem = this.dataItems.find(item => item.tagPositionIndex === index);
|
|
1120
1120
|
const itemKey = dataItem.key;
|
|
1121
1121
|
const lookup = this.lookup.itemLookup(itemKey);
|
|
1122
1122
|
const pendingCheck = [lookup.item];
|
|
@@ -1126,10 +1126,20 @@ 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 = [];
|
|
1129
1131
|
this.dataItems = this.dataItems.filter((_item, i) => {
|
|
1130
|
-
|
|
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);
|
|
1131
1142
|
});
|
|
1132
|
-
this.valueDepth = this.dataItems.map(i => i.level);
|
|
1133
1143
|
}
|
|
1134
1144
|
this.updateValue(this.dataItems);
|
|
1135
1145
|
if (!this.isFocused) {
|
|
@@ -1538,7 +1548,15 @@ export class MultiSelectTreeComponent {
|
|
|
1538
1548
|
const source = this.dataItems.map(item => item.dataItem);
|
|
1539
1549
|
this.tags = this.tagMapper(source);
|
|
1540
1550
|
this.disabledIndices = this.disabledItemsMapper();
|
|
1541
|
-
|
|
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
|
+
});
|
|
1542
1560
|
}
|
|
1543
1561
|
updateValue(value) {
|
|
1544
1562
|
const newValue = this.valuePrimitive ?
|
|
@@ -1630,6 +1648,8 @@ export class MultiSelectTreeComponent {
|
|
|
1630
1648
|
closeActionSheet() {
|
|
1631
1649
|
this.wrapper.nativeElement.focus();
|
|
1632
1650
|
this.actionSheet.toggle(false);
|
|
1651
|
+
this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
|
|
1652
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
|
|
1633
1653
|
if (this.filterable) {
|
|
1634
1654
|
this.actionSheetSearchBar.value = '';
|
|
1635
1655
|
this.filterChange.emit('');
|
|
@@ -1641,6 +1661,8 @@ export class MultiSelectTreeComponent {
|
|
|
1641
1661
|
this.actionSheet.toggle(true);
|
|
1642
1662
|
this.title = setActionSheetTitle(this.wrapper, this.title);
|
|
1643
1663
|
this.cdr.detectChanges();
|
|
1664
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.treeViewId);
|
|
1665
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
|
|
1644
1666
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
1645
1667
|
this.cdr.detectChanges();
|
|
1646
1668
|
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:
|
|
14
|
-
version: '18.1.0-develop.
|
|
13
|
+
publishDate: 1738834785,
|
|
14
|
+
version: '18.1.0-develop.20',
|
|
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:
|
|
41
|
-
version: '18.1.0-develop.
|
|
40
|
+
publishDate: 1738834785,
|
|
41
|
+
version: '18.1.0-develop.20',
|
|
42
42
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
43
43
|
};
|
|
44
44
|
|
|
@@ -2130,7 +2130,7 @@ class ListComponent {
|
|
|
2130
2130
|
let index;
|
|
2131
2131
|
if (item.getAttribute("role") === "group") {
|
|
2132
2132
|
index = parseInt(item.getAttribute("group-index"), 10);
|
|
2133
|
-
this.currentGroup = this.dataService.groupAt(index)
|
|
2133
|
+
this.currentGroup = this.dataService.groupAt(index)?.value;
|
|
2134
2134
|
}
|
|
2135
2135
|
else {
|
|
2136
2136
|
index = parseInt(item.getAttribute("index"), 10);
|
|
@@ -7895,7 +7895,6 @@ class DropDownListComponent {
|
|
|
7895
7895
|
});
|
|
7896
7896
|
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
|
|
7897
7897
|
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.listBoxId);
|
|
7898
|
-
this.setAriaactivedescendant();
|
|
7899
7898
|
const popupWrapper = this.popupRef.popupElement;
|
|
7900
7899
|
const { min, max } = this.width;
|
|
7901
7900
|
popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);
|
|
@@ -7915,6 +7914,7 @@ class DropDownListComponent {
|
|
|
7915
7914
|
this.subs.add(this.popupRef.popupOpen.subscribe(() => {
|
|
7916
7915
|
this.cdr.detectChanges();
|
|
7917
7916
|
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
7917
|
+
this.setAriaactivedescendant();
|
|
7918
7918
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
7919
7919
|
this.selectionService.focus(this.selectionService.focused);
|
|
7920
7920
|
this.opened.emit();
|
|
@@ -8018,7 +8018,7 @@ class DropDownListComponent {
|
|
|
8018
8018
|
setAriaactivedescendant() {
|
|
8019
8019
|
if (this.ariaActivedescendant) {
|
|
8020
8020
|
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-activedescendant', this.ariaActivedescendant);
|
|
8021
|
-
const searchInput = this.popupRef
|
|
8021
|
+
const searchInput = this.popupRef?.popupElement.querySelector('input[role="searchbox"]') || this.actionSheetSearchBar?.input.nativeElement;
|
|
8022
8022
|
if (searchInput) {
|
|
8023
8023
|
this.renderer.setAttribute(searchInput, 'aria-activedescendant', this.ariaActivedescendant);
|
|
8024
8024
|
}
|
|
@@ -8347,6 +8347,8 @@ class DropDownListComponent {
|
|
|
8347
8347
|
}
|
|
8348
8348
|
closeActionSheet() {
|
|
8349
8349
|
this.actionSheet.toggle(false);
|
|
8350
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
|
|
8351
|
+
this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
|
|
8350
8352
|
if (this.filterable) {
|
|
8351
8353
|
this.actionSheetSearchBar.value = '';
|
|
8352
8354
|
this.filterChange.emit('');
|
|
@@ -8357,7 +8359,10 @@ class DropDownListComponent {
|
|
|
8357
8359
|
this.windowSize = this.adaptiveService.size;
|
|
8358
8360
|
this.actionSheet.toggle(true);
|
|
8359
8361
|
this.cdr.detectChanges();
|
|
8362
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
|
|
8363
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.listBoxId);
|
|
8360
8364
|
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
8365
|
+
this.setAriaactivedescendant();
|
|
8361
8366
|
this.title = setActionSheetTitle(this.wrapper, this.title);
|
|
8362
8367
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
8363
8368
|
this.cdr.detectChanges();
|
|
@@ -12050,14 +12055,10 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
|
|
|
12050
12055
|
* @hidden
|
|
12051
12056
|
*/
|
|
12052
12057
|
getColumnWidth(index) {
|
|
12053
|
-
|
|
12054
|
-
if (this.totalColumnsWidth >= popupWidthNumber) {
|
|
12058
|
+
if (!this.virtual) {
|
|
12055
12059
|
return this.columns.get(index).width;
|
|
12056
12060
|
}
|
|
12057
|
-
|
|
12058
|
-
return this.headerColumnWidths[index];
|
|
12059
|
-
}
|
|
12060
|
-
return this.columns.get(index).width;
|
|
12061
|
+
return this.headerColumnWidths[index];
|
|
12061
12062
|
}
|
|
12062
12063
|
verifySettings() {
|
|
12063
12064
|
if (!isDevMode()) {
|
|
@@ -14682,8 +14683,8 @@ class BaseCheckDirective {
|
|
|
14682
14683
|
/**
|
|
14683
14684
|
* @hidden
|
|
14684
14685
|
* The flag is needed in order to determine how to construct the items map keys.
|
|
14685
|
-
* If `true`, then the key consists of the item's value and
|
|
14686
|
-
* else the key consists of the item's value and
|
|
14686
|
+
* If `true`, then the key consists of the item's value and level (depth),
|
|
14687
|
+
* else the key consists of the item's value and 0 (no leveling required)
|
|
14687
14688
|
*/
|
|
14688
14689
|
isHeterogeneous;
|
|
14689
14690
|
addItem(item) {
|
|
@@ -14704,7 +14705,11 @@ class BaseCheckDirective {
|
|
|
14704
14705
|
const key = this.getKey(item, level);
|
|
14705
14706
|
const candidate = { ...item, level, key };
|
|
14706
14707
|
this.checkedItems = this.checkedItems
|
|
14707
|
-
.filter(item =>
|
|
14708
|
+
.filter(item => {
|
|
14709
|
+
const valueMatch = valueFrom(item, this.valueField) === valueFrom(candidate, this.valueField);
|
|
14710
|
+
const levelMatch = item.level === candidate.level;
|
|
14711
|
+
return this.isHeterogeneous ? !(valueMatch && levelMatch) : !valueMatch;
|
|
14712
|
+
});
|
|
14708
14713
|
this.checkedKeys.delete(key);
|
|
14709
14714
|
}
|
|
14710
14715
|
isItemChecked(item) {
|
|
@@ -15790,8 +15795,8 @@ class MultiSelectTreeComponent {
|
|
|
15790
15795
|
/**
|
|
15791
15796
|
* @hidden
|
|
15792
15797
|
* The flag is needed in order to determine how to construct the items map keys.
|
|
15793
|
-
* If `true`, then the key consists of the item's value and
|
|
15794
|
-
* else the key consists of the item's value and
|
|
15798
|
+
* If `true`, then the key consists of the item's value and level (depth),
|
|
15799
|
+
* else the key consists of the item's value and 0 (no leveling required)
|
|
15795
15800
|
*/
|
|
15796
15801
|
isHeterogeneous;
|
|
15797
15802
|
/**
|
|
@@ -16138,7 +16143,7 @@ class MultiSelectTreeComponent {
|
|
|
16138
16143
|
}
|
|
16139
16144
|
else {
|
|
16140
16145
|
// Remove single tag when the child items are pre-fetched
|
|
16141
|
-
const dataItem = this.dataItems
|
|
16146
|
+
const dataItem = this.dataItems.find(item => item.tagPositionIndex === index);
|
|
16142
16147
|
const itemKey = dataItem.key;
|
|
16143
16148
|
const lookup = this.lookup.itemLookup(itemKey);
|
|
16144
16149
|
const pendingCheck = [lookup.item];
|
|
@@ -16148,10 +16153,20 @@ class MultiSelectTreeComponent {
|
|
|
16148
16153
|
pendingCheck.push(...this.removeParents(lookup.parent));
|
|
16149
16154
|
}
|
|
16150
16155
|
const keysToRemove = pendingCheck.map(item => item.key);
|
|
16156
|
+
// Holds the position indexes of the items to be removed
|
|
16157
|
+
const valueDepthIndices = [];
|
|
16151
16158
|
this.dataItems = this.dataItems.filter((_item, i) => {
|
|
16152
|
-
|
|
16159
|
+
const shouldStay = !keysToRemove.includes(_item.key) || this.disabledIndices.has(i);
|
|
16160
|
+
if (!shouldStay) {
|
|
16161
|
+
// We need to know the index position of the data item to be able to update the valueDepth array accordignly
|
|
16162
|
+
// as each data item's position is corresponding to the same position in valueDepth
|
|
16163
|
+
valueDepthIndices.push(i);
|
|
16164
|
+
}
|
|
16165
|
+
return shouldStay;
|
|
16166
|
+
});
|
|
16167
|
+
this.valueDepth = this.valueDepth.filter((_item, i) => {
|
|
16168
|
+
return !valueDepthIndices.includes(i) || this.disabledIndices.has(i);
|
|
16153
16169
|
});
|
|
16154
|
-
this.valueDepth = this.dataItems.map(i => i.level);
|
|
16155
16170
|
}
|
|
16156
16171
|
this.updateValue(this.dataItems);
|
|
16157
16172
|
if (!this.isFocused) {
|
|
@@ -16560,7 +16575,15 @@ class MultiSelectTreeComponent {
|
|
|
16560
16575
|
const source = this.dataItems.map(item => item.dataItem);
|
|
16561
16576
|
this.tags = this.tagMapper(source);
|
|
16562
16577
|
this.disabledIndices = this.disabledItemsMapper();
|
|
16563
|
-
|
|
16578
|
+
// Create a mapping of tags to position indices
|
|
16579
|
+
const tagIndexMap = new Map(this.tags.map((tag, index) => [JSON.stringify(tag), index]));
|
|
16580
|
+
// Modify dataItems by adding a property to hold the item's position as displayed in the tags
|
|
16581
|
+
this.dataItems.forEach(item => {
|
|
16582
|
+
const serializedDataItem = JSON.stringify(item.dataItem);
|
|
16583
|
+
item.tagPositionIndex = tagIndexMap.has(serializedDataItem)
|
|
16584
|
+
? tagIndexMap.get(serializedDataItem) // Use the index from tags if it exists
|
|
16585
|
+
: null; // Assign a null value if the dataItem is not visible in the tags
|
|
16586
|
+
});
|
|
16564
16587
|
}
|
|
16565
16588
|
updateValue(value) {
|
|
16566
16589
|
const newValue = this.valuePrimitive ?
|
|
@@ -16652,6 +16675,8 @@ class MultiSelectTreeComponent {
|
|
|
16652
16675
|
closeActionSheet() {
|
|
16653
16676
|
this.wrapper.nativeElement.focus();
|
|
16654
16677
|
this.actionSheet.toggle(false);
|
|
16678
|
+
this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
|
|
16679
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
|
|
16655
16680
|
if (this.filterable) {
|
|
16656
16681
|
this.actionSheetSearchBar.value = '';
|
|
16657
16682
|
this.filterChange.emit('');
|
|
@@ -16663,6 +16688,8 @@ class MultiSelectTreeComponent {
|
|
|
16663
16688
|
this.actionSheet.toggle(true);
|
|
16664
16689
|
this.title = setActionSheetTitle(this.wrapper, this.title);
|
|
16665
16690
|
this.cdr.detectChanges();
|
|
16691
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.treeViewId);
|
|
16692
|
+
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
|
|
16666
16693
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
16667
16694
|
this.cdr.detectChanges();
|
|
16668
16695
|
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.
|
|
3
|
+
"version": "18.1.0-develop.20",
|
|
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":
|
|
23
|
+
"publishDate": 1738834785,
|
|
24
24
|
"licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
|
|
25
25
|
}
|
|
26
26
|
},
|
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
"@angular/forms": "16 - 19",
|
|
32
32
|
"@angular/platform-browser": "16 - 19",
|
|
33
33
|
"@progress/kendo-licensing": "^1.0.2",
|
|
34
|
-
"@progress/kendo-angular-common": "18.1.0-develop.
|
|
35
|
-
"@progress/kendo-angular-utils": "18.1.0-develop.
|
|
36
|
-
"@progress/kendo-angular-l10n": "18.1.0-develop.
|
|
37
|
-
"@progress/kendo-angular-navigation": "18.1.0-develop.
|
|
38
|
-
"@progress/kendo-angular-popup": "18.1.0-develop.
|
|
39
|
-
"@progress/kendo-angular-icons": "18.1.0-develop.
|
|
40
|
-
"@progress/kendo-angular-treeview": "18.1.0-develop.
|
|
34
|
+
"@progress/kendo-angular-common": "18.1.0-develop.20",
|
|
35
|
+
"@progress/kendo-angular-utils": "18.1.0-develop.20",
|
|
36
|
+
"@progress/kendo-angular-l10n": "18.1.0-develop.20",
|
|
37
|
+
"@progress/kendo-angular-navigation": "18.1.0-develop.20",
|
|
38
|
+
"@progress/kendo-angular-popup": "18.1.0-develop.20",
|
|
39
|
+
"@progress/kendo-angular-icons": "18.1.0-develop.20",
|
|
40
|
+
"@progress/kendo-angular-treeview": "18.1.0-develop.20",
|
|
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.
|
|
45
|
+
"@progress/kendo-angular-schematics": "18.1.0-develop.20",
|
|
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.
|
|
7
|
+
'@progress/kendo-angular-inputs': '18.1.0-develop.20',
|
|
8
8
|
// peers of inputs
|
|
9
|
-
'@progress/kendo-angular-intl': '18.1.0-develop.
|
|
9
|
+
'@progress/kendo-angular-intl': '18.1.0-develop.20',
|
|
10
10
|
'@progress/kendo-drawing': '^1.17.2',
|
|
11
11
|
// Peer dependency of icons
|
|
12
12
|
'@progress/kendo-svg-icons': '^4.0.0'
|