@zanichelli/albe-web-components 19.2.1-RC → 19.2.2
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/CHANGELOG.md +44 -0
- package/dist/cjs/{index-938c9669.js → index-c38e5b9e.js} +2 -2
- package/dist/cjs/{index-938c9669.js.map → index-c38e5b9e.js.map} +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{utils-e8b453d5.js → utils-b1859d65.js} +7 -1
- package/dist/cjs/utils-b1859d65.js.map +1 -0
- package/dist/cjs/web-components-library.cjs.js +1 -1
- package/dist/cjs/z-app-header_12.cjs.entry.js +5 -4
- package/dist/cjs/z-app-header_12.cjs.entry.js.map +1 -1
- package/dist/cjs/z-book-card-deprecated.cjs.entry.js +1 -1
- package/dist/cjs/z-book-card.cjs.entry.js +1 -1
- package/dist/cjs/z-book-card.cjs.entry.js.map +1 -1
- package/dist/cjs/z-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/z-color-picker.cjs.entry.js +1 -1
- package/dist/cjs/z-combobox.cjs.entry.js +125 -96
- package/dist/cjs/z-combobox.cjs.entry.js.map +1 -1
- package/dist/cjs/z-menu.cjs.entry.js +1 -1
- package/dist/cjs/z-myz-card-info.cjs.entry.js +1 -1
- package/dist/cjs/z-myz-list-item.cjs.entry.js +1 -1
- package/dist/cjs/z-popover.cjs.entry.js +1 -1
- package/dist/cjs/z-select.cjs.entry.js +100 -134
- package/dist/cjs/z-select.cjs.entry.js.map +1 -1
- package/dist/cjs/z-skip-to-content.cjs.entry.js +1 -1
- package/dist/cjs/z-slideshow.cjs.entry.js +1 -1
- package/dist/cjs/z-table.cjs.entry.js +2 -2
- package/dist/cjs/z-toast-notification-list.cjs.entry.js +2 -1
- package/dist/cjs/z-toast-notification-list.cjs.entry.js.map +1 -1
- package/dist/cjs/z-toggle-switch.cjs.entry.js +1 -1
- package/dist/cjs/z-tool.cjs.entry.js +1 -1
- package/dist/cjs/z-tr.cjs.entry.js +2 -2
- package/dist/collection/components/book-card/z-book-card/styles.css +2 -1
- package/dist/collection/components/list/z-list-group/index.js +21 -2
- package/dist/collection/components/list/z-list-group/index.js.map +1 -1
- package/dist/collection/components/list/z-list-group/index.stories.js +3 -0
- package/dist/collection/components/list/z-list-group/index.stories.js.map +1 -1
- package/dist/collection/components/z-combobox/index.js +141 -98
- package/dist/collection/components/z-combobox/index.js.map +1 -1
- package/dist/collection/components/z-combobox/index.stories.js +2 -0
- package/dist/collection/components/z-combobox/index.stories.js.map +1 -1
- package/dist/collection/components/z-combobox/styles.css +41 -0
- package/dist/collection/components/z-searchbar/styles.css +1 -1
- package/dist/collection/components/z-select/index.js +99 -142
- package/dist/collection/components/z-select/index.js.map +1 -1
- package/dist/collection/components/z-select/styles.css +9 -2
- package/dist/collection/components/z-toast-notification-list/index.js +2 -1
- package/dist/collection/components/z-toast-notification-list/index.js.map +1 -1
- package/dist/collection/utils/utils.js +5 -0
- package/dist/collection/utils/utils.js.map +1 -1
- package/dist/components/index12.js +1 -1
- package/dist/components/index16.js +5 -3
- package/dist/components/index16.js.map +1 -1
- package/dist/components/index24.js +1 -1
- package/dist/components/index25.js +2 -2
- package/dist/components/index25.js.map +1 -1
- package/dist/components/utils.js +6 -1
- package/dist/components/utils.js.map +1 -1
- package/dist/components/z-book-card.js +1 -1
- package/dist/components/z-book-card.js.map +1 -1
- package/dist/components/z-combobox.js +128 -100
- package/dist/components/z-combobox.js.map +1 -1
- package/dist/components/z-select.js +101 -135
- package/dist/components/z-select.js.map +1 -1
- package/dist/components/z-skip-to-content.js +1 -1
- package/dist/components/z-slideshow.js +1 -1
- package/dist/components/z-toast-notification-list.js +2 -1
- package/dist/components/z-toast-notification-list.js.map +1 -1
- package/dist/esm/{index-83248f5c.js → index-a0b957e0.js} +2 -2
- package/dist/esm/{index-83248f5c.js.map → index-a0b957e0.js.map} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{utils-1b64bcd9.js → utils-8d6ca808.js} +7 -2
- package/dist/esm/utils-8d6ca808.js.map +1 -0
- package/dist/esm/web-components-library.js +1 -1
- package/dist/esm/z-app-header_12.entry.js +5 -4
- package/dist/esm/z-app-header_12.entry.js.map +1 -1
- package/dist/esm/z-book-card-deprecated.entry.js +1 -1
- package/dist/esm/z-book-card.entry.js +1 -1
- package/dist/esm/z-book-card.entry.js.map +1 -1
- package/dist/esm/z-breadcrumb.entry.js +1 -1
- package/dist/esm/z-color-picker.entry.js +1 -1
- package/dist/esm/z-combobox.entry.js +125 -96
- package/dist/esm/z-combobox.entry.js.map +1 -1
- package/dist/esm/z-menu.entry.js +1 -1
- package/dist/esm/z-myz-card-info.entry.js +1 -1
- package/dist/esm/z-myz-list-item.entry.js +1 -1
- package/dist/esm/z-popover.entry.js +1 -1
- package/dist/esm/z-select.entry.js +100 -134
- package/dist/esm/z-select.entry.js.map +1 -1
- package/dist/esm/z-skip-to-content.entry.js +1 -1
- package/dist/esm/z-slideshow.entry.js +1 -1
- package/dist/esm/z-table.entry.js +2 -2
- package/dist/esm/z-toast-notification-list.entry.js +2 -1
- package/dist/esm/z-toast-notification-list.entry.js.map +1 -1
- package/dist/esm/z-toggle-switch.entry.js +1 -1
- package/dist/esm/z-tool.entry.js +1 -1
- package/dist/esm/z-tr.entry.js +2 -2
- package/dist/types/components/list/z-list-group/index.d.ts +4 -0
- package/dist/types/components/list/z-list-group/index.stories.d.ts +1 -0
- package/dist/types/components/z-combobox/index.d.ts +10 -11
- package/dist/types/components/z-combobox/index.stories.d.ts +1 -0
- package/dist/types/components/z-select/index.d.ts +5 -7
- package/dist/types/components.d.ts +16 -0
- package/dist/types/utils/utils.d.ts +2 -0
- package/dist/web-components-library/index.esm.js +1 -1
- package/{www/build/p-a5146ef3.entry.js → dist/web-components-library/p-05be939d.entry.js} +2 -2
- package/dist/web-components-library/{p-a5146ef3.entry.js.map → p-05be939d.entry.js.map} +1 -1
- package/dist/web-components-library/{p-1a0c206d.js → p-061e28d6.js} +2 -2
- package/dist/web-components-library/p-061e28d6.js.map +1 -0
- package/dist/web-components-library/{p-4844c774.js → p-0b03b0e3.js} +2 -2
- package/dist/web-components-library/p-1b972597.entry.js +2 -0
- package/dist/web-components-library/{p-862989b6.entry.js.map → p-1b972597.entry.js.map} +1 -1
- package/dist/web-components-library/{p-19103e70.entry.js → p-35d73edf.entry.js} +2 -2
- package/dist/web-components-library/p-43adca09.entry.js +2 -0
- package/{www/build/p-2d4cf6ff.entry.js.map → dist/web-components-library/p-43adca09.entry.js.map} +1 -1
- package/{www/build/p-47813782.entry.js → dist/web-components-library/p-447a6391.entry.js} +2 -2
- package/dist/web-components-library/p-8503c87a.entry.js +2 -0
- package/dist/web-components-library/p-8503c87a.entry.js.map +1 -0
- package/dist/web-components-library/{p-a8609510.entry.js → p-869295ce.entry.js} +2 -2
- package/dist/web-components-library/{p-771dea79.entry.js → p-9814f864.entry.js} +2 -2
- package/{www/build/p-c5d52872.entry.js → dist/web-components-library/p-a3f9a5da.entry.js} +2 -2
- package/dist/web-components-library/p-a8790237.entry.js +2 -0
- package/dist/web-components-library/p-a8790237.entry.js.map +1 -0
- package/dist/web-components-library/{p-613987cd.entry.js → p-accbc381.entry.js} +2 -2
- package/dist/web-components-library/{p-613987cd.entry.js.map → p-accbc381.entry.js.map} +1 -1
- package/{www/build/p-8a53fefb.entry.js → dist/web-components-library/p-b0324c7d.entry.js} +2 -2
- package/dist/web-components-library/{p-c12f93e4.entry.js → p-bd76ca35.entry.js} +2 -2
- package/dist/web-components-library/p-c3e03e41.entry.js +2 -0
- package/dist/web-components-library/p-c3e03e41.entry.js.map +1 -0
- package/dist/web-components-library/{p-5905cca0.entry.js → p-ec1270db.entry.js} +2 -2
- package/{www/build/p-55e5e53a.entry.js → dist/web-components-library/p-f2c2ad04.entry.js} +2 -2
- package/dist/web-components-library/p-f7e65eb0.entry.js +2 -0
- package/dist/web-components-library/{p-26ed6c96.entry.js → p-fbce9614.entry.js} +2 -2
- package/dist/web-components-library/web-components-library.esm.js +1 -1
- package/dist/web-components-library/web-components-library.esm.js.map +1 -1
- package/package.json +2 -3
- package/www/build/index.esm.js +1 -1
- package/{dist/web-components-library/p-a5146ef3.entry.js → www/build/p-05be939d.entry.js} +2 -2
- package/www/build/{p-a5146ef3.entry.js.map → p-05be939d.entry.js.map} +1 -1
- package/www/build/{p-1a0c206d.js → p-061e28d6.js} +2 -2
- package/www/build/p-061e28d6.js.map +1 -0
- package/www/build/{p-4844c774.js → p-0b03b0e3.js} +2 -2
- package/www/build/p-1b972597.entry.js +2 -0
- package/www/build/{p-862989b6.entry.js.map → p-1b972597.entry.js.map} +1 -1
- package/www/build/{p-19103e70.entry.js → p-35d73edf.entry.js} +2 -2
- package/www/build/p-43adca09.entry.js +2 -0
- package/{dist/web-components-library/p-2d4cf6ff.entry.js.map → www/build/p-43adca09.entry.js.map} +1 -1
- package/{dist/web-components-library/p-47813782.entry.js → www/build/p-447a6391.entry.js} +2 -2
- package/www/build/p-4b38182a.js +2 -0
- package/www/build/p-8503c87a.entry.js +2 -0
- package/www/build/p-8503c87a.entry.js.map +1 -0
- package/www/build/{p-a8609510.entry.js → p-869295ce.entry.js} +2 -2
- package/www/build/{p-771dea79.entry.js → p-9814f864.entry.js} +2 -2
- package/{dist/web-components-library/p-c5d52872.entry.js → www/build/p-a3f9a5da.entry.js} +2 -2
- package/www/build/p-a8790237.entry.js +2 -0
- package/www/build/p-a8790237.entry.js.map +1 -0
- package/www/build/{p-613987cd.entry.js → p-accbc381.entry.js} +2 -2
- package/www/build/{p-613987cd.entry.js.map → p-accbc381.entry.js.map} +1 -1
- package/{dist/web-components-library/p-8a53fefb.entry.js → www/build/p-b0324c7d.entry.js} +2 -2
- package/www/build/{p-c12f93e4.entry.js → p-bd76ca35.entry.js} +2 -2
- package/www/build/p-c3e03e41.entry.js +2 -0
- package/www/build/p-c3e03e41.entry.js.map +1 -0
- package/www/build/{p-5905cca0.entry.js → p-ec1270db.entry.js} +2 -2
- package/{dist/web-components-library/p-55e5e53a.entry.js → www/build/p-f2c2ad04.entry.js} +2 -2
- package/www/build/p-f7e65eb0.entry.js +2 -0
- package/www/build/{p-26ed6c96.entry.js → p-fbce9614.entry.js} +2 -2
- package/www/build/web-components-library.esm.js +1 -1
- package/www/build/web-components-library.esm.js.map +1 -1
- package/www/index.html +1 -1
- package/dist/cjs/utils-e8b453d5.js.map +0 -1
- package/dist/esm/utils-1b64bcd9.js.map +0 -1
- package/dist/web-components-library/p-1a0c206d.js.map +0 -1
- package/dist/web-components-library/p-2d4cf6ff.entry.js +0 -2
- package/dist/web-components-library/p-3ba7621b.entry.js +0 -2
- package/dist/web-components-library/p-58aeaf21.entry.js +0 -2
- package/dist/web-components-library/p-58aeaf21.entry.js.map +0 -1
- package/dist/web-components-library/p-5e2f6ab7.entry.js +0 -2
- package/dist/web-components-library/p-5e2f6ab7.entry.js.map +0 -1
- package/dist/web-components-library/p-862989b6.entry.js +0 -2
- package/dist/web-components-library/p-daa442e6.entry.js +0 -2
- package/dist/web-components-library/p-daa442e6.entry.js.map +0 -1
- package/www/build/p-156f9df4.js +0 -2
- package/www/build/p-1a0c206d.js.map +0 -1
- package/www/build/p-2d4cf6ff.entry.js +0 -2
- package/www/build/p-3ba7621b.entry.js +0 -2
- package/www/build/p-58aeaf21.entry.js +0 -2
- package/www/build/p-58aeaf21.entry.js.map +0 -1
- package/www/build/p-5e2f6ab7.entry.js +0 -2
- package/www/build/p-5e2f6ab7.entry.js.map +0 -1
- package/www/build/p-862989b6.entry.js +0 -2
- package/www/build/p-daa442e6.entry.js +0 -2
- package/www/build/p-daa442e6.entry.js.map +0 -1
- /package/dist/web-components-library/{p-4844c774.js.map → p-0b03b0e3.js.map} +0 -0
- /package/dist/web-components-library/{p-19103e70.entry.js.map → p-35d73edf.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-47813782.entry.js.map → p-447a6391.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-a8609510.entry.js.map → p-869295ce.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-771dea79.entry.js.map → p-9814f864.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-c5d52872.entry.js.map → p-a3f9a5da.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-8a53fefb.entry.js.map → p-b0324c7d.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-c12f93e4.entry.js.map → p-bd76ca35.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-5905cca0.entry.js.map → p-ec1270db.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-55e5e53a.entry.js.map → p-f2c2ad04.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-3ba7621b.entry.js.map → p-f7e65eb0.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-26ed6c96.entry.js.map → p-fbce9614.entry.js.map} +0 -0
- /package/www/build/{p-4844c774.js.map → p-0b03b0e3.js.map} +0 -0
- /package/www/build/{p-19103e70.entry.js.map → p-35d73edf.entry.js.map} +0 -0
- /package/www/build/{p-47813782.entry.js.map → p-447a6391.entry.js.map} +0 -0
- /package/www/build/{p-a8609510.entry.js.map → p-869295ce.entry.js.map} +0 -0
- /package/www/build/{p-771dea79.entry.js.map → p-9814f864.entry.js.map} +0 -0
- /package/www/build/{p-c5d52872.entry.js.map → p-a3f9a5da.entry.js.map} +0 -0
- /package/www/build/{p-8a53fefb.entry.js.map → p-b0324c7d.entry.js.map} +0 -0
- /package/www/build/{p-c12f93e4.entry.js.map → p-bd76ca35.entry.js.map} +0 -0
- /package/www/build/{p-5905cca0.entry.js.map → p-ec1270db.entry.js.map} +0 -0
- /package/www/build/{p-55e5e53a.entry.js.map → p-f2c2ad04.entry.js.map} +0 -0
- /package/www/build/{p-3ba7621b.entry.js.map → p-f7e65eb0.entry.js.map} +0 -0
- /package/www/build/{p-26ed6c96.entry.js.map → p-fbce9614.entry.js.map} +0 -0
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
2
|
import { ControlSize, KeyboardCode, ListDividerType, ListSize } from "../../beans";
|
|
3
|
-
import { boolean, getClickedElement, getElementTree, randomId } from "../../utils/utils";
|
|
3
|
+
import { boolean, getClickedElement, getElementTree, getPlainText, randomId } from "../../utils/utils";
|
|
4
4
|
export class ZSelect {
|
|
5
5
|
constructor() {
|
|
6
|
-
this.flattenedList = [];
|
|
7
6
|
this.itemsList = [];
|
|
8
|
-
this.itemIdKeyMap = {};
|
|
9
|
-
this.resetKey = -1;
|
|
10
7
|
this.htmlid = `id-${randomId()}`;
|
|
11
8
|
this.items = [];
|
|
12
9
|
this.name = undefined;
|
|
@@ -37,9 +34,6 @@ export class ZSelect {
|
|
|
37
34
|
this.itemsList = this.getInitialItemsArray();
|
|
38
35
|
this.selectedItem = this.findSelectedItem(this.itemsList);
|
|
39
36
|
}
|
|
40
|
-
getFocusedItemHandler(e) {
|
|
41
|
-
this.focusedItemId = e.target.id;
|
|
42
|
-
}
|
|
43
37
|
/** get the input selected options */
|
|
44
38
|
async getSelectedItem() {
|
|
45
39
|
return this.selectedItem;
|
|
@@ -79,7 +73,6 @@ export class ZSelect {
|
|
|
79
73
|
}
|
|
80
74
|
componentWillRender() {
|
|
81
75
|
this.filterItems(this.searchString);
|
|
82
|
-
this.updateFlattenedList();
|
|
83
76
|
}
|
|
84
77
|
getInitialItemsArray() {
|
|
85
78
|
return typeof this.items === "string" ? JSON.parse(this.items) : this.items;
|
|
@@ -94,6 +87,15 @@ export class ZSelect {
|
|
|
94
87
|
var _a;
|
|
95
88
|
return (_a = this.selectedItem) === null || _a === void 0 ? void 0 : _a.id;
|
|
96
89
|
}
|
|
90
|
+
getOptionId(item) {
|
|
91
|
+
return `${this.htmlid}_key_${item.id}`;
|
|
92
|
+
}
|
|
93
|
+
getResetOptionId() {
|
|
94
|
+
return `${this.htmlid}_key_reset`;
|
|
95
|
+
}
|
|
96
|
+
getItemIdFromOptionId(optionId) {
|
|
97
|
+
return optionId.replace(`${this.htmlid}_key_`, ``);
|
|
98
|
+
}
|
|
97
99
|
getGroupedItems() {
|
|
98
100
|
if (!this.itemsList.length) {
|
|
99
101
|
return [];
|
|
@@ -105,33 +107,13 @@ export class ZSelect {
|
|
|
105
107
|
return group;
|
|
106
108
|
}, {}));
|
|
107
109
|
}
|
|
108
|
-
updateFlattenedList() {
|
|
109
|
-
let orderedItems;
|
|
110
|
-
if (this.hasGroupItems) {
|
|
111
|
-
orderedItems = this.getGroupedItems()
|
|
112
|
-
.map((item) => item[1])
|
|
113
|
-
.flat();
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
orderedItems = this.itemsList;
|
|
117
|
-
}
|
|
118
|
-
this.flattenedList = this.flattenTreeItems(orderedItems);
|
|
119
|
-
this.itemIdKeyMap = {};
|
|
120
|
-
this.flattenedList.forEach(({ item, key }) => {
|
|
121
|
-
this.itemIdKeyMap[item.id] = key;
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
getPlainText(html) {
|
|
125
|
-
const doc = new DOMParser().parseFromString(html, "text/html");
|
|
126
|
-
return doc.body.textContent || "";
|
|
127
|
-
}
|
|
128
110
|
filterItems(searchString) {
|
|
129
111
|
let prevList = this.mapSelectedItemToItemsArray();
|
|
130
112
|
if (!(searchString === null || searchString === void 0 ? void 0 : searchString.length)) {
|
|
131
113
|
this.itemsList = prevList;
|
|
132
114
|
return;
|
|
133
115
|
}
|
|
134
|
-
prevList = prevList.map((item) => (Object.assign(Object.assign({}, item), { name:
|
|
116
|
+
prevList = prevList.map((item) => (Object.assign(Object.assign({}, item), { name: getPlainText(item.name) })));
|
|
135
117
|
if (this.hasTreeItems) {
|
|
136
118
|
this.itemsList = this.filterTree(prevList, searchString, false);
|
|
137
119
|
}
|
|
@@ -153,7 +135,7 @@ export class ZSelect {
|
|
|
153
135
|
const match = item.name.toUpperCase().includes(searchString.toUpperCase());
|
|
154
136
|
const newItem = Object.assign({}, item);
|
|
155
137
|
if (newItem.children && newItem.children.length > 0) {
|
|
156
|
-
newItem.children = this.filterTree(newItem.children.map((item) => (Object.assign(Object.assign({}, item), { name:
|
|
138
|
+
newItem.children = this.filterTree(newItem.children.map((item) => (Object.assign(Object.assign({}, item), { name: getPlainText(item.name) }))), searchString, match);
|
|
157
139
|
}
|
|
158
140
|
if (match) {
|
|
159
141
|
newItem.name = this.getHighlightedText(newItem.name, searchString);
|
|
@@ -227,83 +209,76 @@ export class ZSelect {
|
|
|
227
209
|
this.searchString = null;
|
|
228
210
|
}
|
|
229
211
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
212
|
+
handleResetClick() {
|
|
213
|
+
this.selectedItem = null;
|
|
214
|
+
this.searchString = null;
|
|
215
|
+
this.focusedItemId = "";
|
|
216
|
+
this.emitResetSelect();
|
|
217
|
+
this.toggleSelectUl();
|
|
218
|
+
}
|
|
219
|
+
handleInputKeyDown(e) {
|
|
220
|
+
switch (e.code) {
|
|
221
|
+
case KeyboardCode.ENTER:
|
|
222
|
+
case KeyboardCode.SPACE:
|
|
223
|
+
if (this.focusedItemId) {
|
|
224
|
+
if (this.focusedItemId === this.getResetOptionId()) {
|
|
225
|
+
this.handleResetClick();
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
const itemId = this.getItemIdFromOptionId(this.focusedItemId);
|
|
229
|
+
const item = this.itemsList.find((e) => e.id === itemId) || null;
|
|
230
|
+
if (item) {
|
|
231
|
+
this.selectedItem = item;
|
|
232
|
+
this.emitOptionSelect();
|
|
233
|
+
this.toggleSelectUl();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
239
236
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
237
|
+
break;
|
|
238
|
+
case KeyboardCode.ARROW_DOWN:
|
|
239
|
+
case KeyboardCode.ARROW_UP:
|
|
240
|
+
this.arrowsSelectNav(e);
|
|
241
|
+
break;
|
|
244
242
|
}
|
|
245
|
-
return flatItems;
|
|
246
243
|
}
|
|
247
|
-
arrowsSelectNav(e
|
|
248
|
-
const showResetIcon = this.resetItem && !!this.selectedItem;
|
|
244
|
+
arrowsSelectNav(e) {
|
|
249
245
|
const arrows = [KeyboardCode.ARROW_DOWN, KeyboardCode.ARROW_UP];
|
|
250
246
|
if (!arrows.includes(e.key)) {
|
|
251
247
|
return;
|
|
252
248
|
}
|
|
253
249
|
e.preventDefault();
|
|
254
250
|
e.stopPropagation();
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
item: { id: "__RESET_ITEM__" },
|
|
259
|
-
key: this.resetKey,
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
if (!flatItems.length) {
|
|
251
|
+
const currElem = this.focusedItemId ? this.host.querySelector(`#${this.focusedItemId}`) : null;
|
|
252
|
+
const options = Array.from(this.host.querySelectorAll('[role="option"]'));
|
|
253
|
+
if (!options.length) {
|
|
263
254
|
return;
|
|
264
255
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
const k = this.itemIdKeyMap[idOrReset];
|
|
271
|
-
currentIndex = flatItems.findIndex((f) => f.key === k);
|
|
272
|
-
}
|
|
256
|
+
const currElemIndex = currElem ? options.indexOf(currElem) : null;
|
|
257
|
+
const firstElemIndex = 0;
|
|
258
|
+
const lastElemIndex = options.length - 1;
|
|
273
259
|
if (!this.isOpen) {
|
|
274
260
|
this.toggleSelectUl();
|
|
275
|
-
if (
|
|
276
|
-
this.focusSelectItem(
|
|
261
|
+
if (this.selectedItem) {
|
|
262
|
+
this.focusSelectItem(this.getOptionId(this.selectedItem));
|
|
277
263
|
return;
|
|
278
264
|
}
|
|
279
265
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
if (newIndex === lastIndex) {
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
newIndex = newIndex + 1;
|
|
288
|
-
} while (flatItems[newIndex].item.disabled);
|
|
266
|
+
let nextElem = null;
|
|
267
|
+
if (e.code === KeyboardCode.ARROW_DOWN) {
|
|
268
|
+
nextElem =
|
|
269
|
+
currElemIndex === null ? options[firstElemIndex] : options[currElemIndex + 1] || options[lastElemIndex];
|
|
289
270
|
}
|
|
290
|
-
else {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
newIndex = newIndex - 1;
|
|
296
|
-
} while (flatItems[newIndex].item.disabled);
|
|
271
|
+
else if (e.code === KeyboardCode.ARROW_UP) {
|
|
272
|
+
nextElem =
|
|
273
|
+
currElemIndex === null ? options[lastElemIndex] : options[currElemIndex - 1] || options[firstElemIndex];
|
|
297
274
|
}
|
|
298
|
-
this.focusSelectItem(
|
|
275
|
+
this.focusSelectItem(nextElem.id);
|
|
299
276
|
}
|
|
300
|
-
focusSelectItem(
|
|
301
|
-
|
|
302
|
-
const elem = this.host.querySelector(`#${
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
elem.focus();
|
|
306
|
-
}
|
|
277
|
+
focusSelectItem(optionId) {
|
|
278
|
+
this.focusedItemId = optionId;
|
|
279
|
+
const elem = this.host.querySelector(`#${optionId}`);
|
|
280
|
+
// @ts-expect-error 'container' does not exist in type 'ScrollIntoViewOptions'
|
|
281
|
+
elem.scrollIntoView({ block: "nearest", container: "nearest" });
|
|
307
282
|
}
|
|
308
283
|
toggleSelectUl(selfFocusOnClose = false) {
|
|
309
284
|
var _a;
|
|
@@ -356,35 +331,33 @@ export class ZSelect {
|
|
|
356
331
|
if (!this.itemsList.length) {
|
|
357
332
|
return;
|
|
358
333
|
}
|
|
359
|
-
const foundItem = this.itemsList.
|
|
360
|
-
if (foundItem
|
|
334
|
+
const foundItem = this.itemsList.find((item) => item.name.toLowerCase().charAt(0) === letter.toLowerCase());
|
|
335
|
+
if (foundItem) {
|
|
361
336
|
if (!this.isOpen) {
|
|
362
337
|
this.toggleSelectUl();
|
|
363
338
|
}
|
|
364
|
-
this.focusSelectItem(this.
|
|
339
|
+
this.focusSelectItem(this.getOptionId(foundItem));
|
|
365
340
|
}
|
|
366
341
|
}
|
|
367
342
|
renderInput() {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
}
|
|
387
|
-
} }));
|
|
343
|
+
let value = null;
|
|
344
|
+
if (this.selectedItem) {
|
|
345
|
+
value = getPlainText(this.selectedItem.name);
|
|
346
|
+
}
|
|
347
|
+
if (this.isOpen && this.searchString !== undefined) {
|
|
348
|
+
value = this.searchString;
|
|
349
|
+
}
|
|
350
|
+
return [
|
|
351
|
+
h("z-input", { class: {
|
|
352
|
+
"active-select": this.isOpen,
|
|
353
|
+
"cursor-select": !this.autocomplete,
|
|
354
|
+
}, id: `${this.htmlid}_input`, htmlid: `${this.htmlid}_select_input`, placeholder: this.placeholder, value: value, label: this.label, autocomplete: "off", "aria-label": this.ariaLabel, icon: this.isOpen ? "caret-up" : "caret-down", hasclearicon: false, message: false, name: this.name, disabled: this.disabled, readonly: this.readonly || (!this.hasAutocomplete() && this.isOpen), status: this.isOpen ? undefined : this.status, size: this.size, role: "combobox", "html-aria-expanded": this.isOpen ? "true" : "false", "html-aria-controls": `${this.htmlid}_list`, "html-aria-activedescendant": this.isOpen ? this.focusedItemId : "", "html-aria-autocomplete": this.hasAutocomplete() ? "list" : undefined, onClick: (e) => this.handleInputClick(e), onKeyDown: (e) => this.handleInputKeyDown(e), onInputChange: (e) => this.handleInputChange(e), onKeyPress: (e) => {
|
|
355
|
+
if (!this.hasAutocomplete()) {
|
|
356
|
+
e.preventDefault();
|
|
357
|
+
this.scrollToLetter(e.key);
|
|
358
|
+
}
|
|
359
|
+
} }),
|
|
360
|
+
];
|
|
388
361
|
}
|
|
389
362
|
renderSelectUl() {
|
|
390
363
|
return (h("div", { class: this.isOpen ? "open" : "closed" }, h("div", { class: {
|
|
@@ -398,22 +371,22 @@ export class ZSelect {
|
|
|
398
371
|
} }, this.resetItem && this.renderResetItem(), this.renderSelectUlItems()))));
|
|
399
372
|
}
|
|
400
373
|
renderResetItem() {
|
|
374
|
+
const hidden = !this.selectedItem || !this.resetItem;
|
|
401
375
|
return (h("z-list-element", { class: {
|
|
402
|
-
"hide":
|
|
376
|
+
"hide": hidden,
|
|
403
377
|
"reset-item": true,
|
|
404
378
|
"reset-item-margin": !this.hasGroupItems,
|
|
405
|
-
}, clickable: true, disabled: false, dividerType: ListDividerType.ELEMENT, role: "option", "html-tabindex": 0, "aria-selected": "false",
|
|
406
|
-
this.selectedItem = null;
|
|
407
|
-
this.searchString = null;
|
|
408
|
-
this.emitResetSelect();
|
|
409
|
-
}, onKeyDown: (e) => this.arrowsSelectNav(e, this.resetKey) }, h("div", { class: {
|
|
379
|
+
}, clickable: true, disabled: false, dividerType: ListDividerType.ELEMENT, role: hidden ? "presentation" : "option", "html-tabindex": 0, "aria-selected": "false", "aria-label": hidden ? undefined : this.resetItem, id: this.getResetOptionId(), size: this.hasTreeItems ? ListSize.MEDIUM : this.listSizeType(), onClickItem: () => this.handleResetClick() }, h("div", { class: {
|
|
410
380
|
"reset-item-content": true,
|
|
411
381
|
"tree-list-reset-item": this.hasTreeItems,
|
|
412
|
-
|
|
382
|
+
"active": this.focusedItemId === this.getResetOptionId(),
|
|
383
|
+
}, "aria-hidden": "true" }, h("z-icon", { name: "multiply-circled" }), h("span", null, this.resetItem))));
|
|
413
384
|
}
|
|
414
385
|
renderItem(item, lastItem) {
|
|
415
|
-
|
|
416
|
-
|
|
386
|
+
return (h("z-list-element", { clickable: !item.disabled, disabled: item.disabled, dividerType: lastItem ? ListDividerType.HEADER : ListDividerType.ELEMENT, role: item.disabled ? "presentation" : "option", "html-tabindex": -1, "aria-selected": item.selected ? "true" : "false", "aria-label": item.disabled ? undefined : getPlainText(item.name), id: this.getOptionId(item), size: this.listSizeType(), onClickItem: () => this.selectItem(item) }, h("div", { class: {
|
|
387
|
+
"list-element-container": true,
|
|
388
|
+
"active": this.focusedItemId === this.getOptionId(item),
|
|
389
|
+
}, "aria-hidden": "true" }, h("div", { class: {
|
|
417
390
|
"selected": !!item.selected,
|
|
418
391
|
"list-element-content": true,
|
|
419
392
|
}, innerHTML: item.name }), item.icon && h("z-tag", { icon: item.icon }))));
|
|
@@ -448,7 +421,6 @@ export class ZSelect {
|
|
|
448
421
|
}
|
|
449
422
|
renderTreeItems(item, isLastChild, parentHasSiblings, isTopLevel, disabledAncestor) {
|
|
450
423
|
var _a, _b;
|
|
451
|
-
const thisItemKey = this.itemIdKeyMap[item.id];
|
|
452
424
|
const isDisabled = item.disabled || disabledAncestor;
|
|
453
425
|
const hasDivider = this.hasGroupItems
|
|
454
426
|
? undefined
|
|
@@ -462,23 +434,17 @@ export class ZSelect {
|
|
|
462
434
|
return (h("z-list-element", { clickable: !item.disabled, disabled: isDisabled, class: {
|
|
463
435
|
"grouped-tree-parent-node": this.hasGroupItems && !!((_a = item.children) === null || _a === void 0 ? void 0 : _a.length),
|
|
464
436
|
"tree-search-item": this.hasGroupItems && isTopLevel && !((_b = item.children) === null || _b === void 0 ? void 0 : _b.length) && !!this.searchString,
|
|
465
|
-
}, size: this.listSizeType(), dividerType: hasDivider, hasTreeItems: this.hasTreeItems, "html-tabindex": null }, h("div", { id:
|
|
466
|
-
this.arrowsSelectNav(e, thisItemKey);
|
|
467
|
-
if (e.key === KeyboardCode.ENTER) {
|
|
468
|
-
this.selectItem(item);
|
|
469
|
-
}
|
|
470
|
-
} }, h("span", { class: "item ellipsis" }, h("span", { class: {
|
|
437
|
+
}, size: this.listSizeType(), dividerType: hasDivider, hasTreeItems: this.hasTreeItems, "html-tabindex": null, role: "presentation" }, h("div", { id: this.getOptionId(item), role: isDisabled ? "presentation" : "option", "aria-label": isDisabled ? undefined : getPlainText(item.name), class: { "list-element": true, "active": this.focusedItemId === this.getOptionId(item) }, onClick: () => this.selectItem(item) }, h("span", { class: "item ellipsis", "aria-hidden": "true" }, h("span", { class: {
|
|
471
438
|
"item-label": true,
|
|
472
439
|
"selected": !!item.selected,
|
|
473
|
-
}, title: item.name, innerHTML: item.name })), item.icon && h("z-tag", { icon: item.icon })), item.children && item.children.length > 0 ? (h("z-list",
|
|
440
|
+
}, title: item.name, innerHTML: item.name })), item.icon && h("z-tag", { icon: item.icon })), item.children && item.children.length > 0 ? (h("z-list", { role: "presentation" }, h("div", { class: "children-node" }, item.children.map((child, index, arr) => this.renderTreeItems(child, index === arr.length - 1, arr.length > 1, false, // isTopLevel = false for children
|
|
474
441
|
isDisabled))))) : null));
|
|
475
442
|
}
|
|
476
443
|
renderGroupedTree() {
|
|
477
444
|
const groupedItems = this.getGroupedItems();
|
|
478
445
|
return groupedItems.map(([category, items], index, entries) => {
|
|
479
446
|
const parentHasSiblings = Object.values(groupedItems).some((groupItems) => groupItems.length > 1);
|
|
480
|
-
|
|
481
|
-
return (h("z-list-group", { "divider-type": index === entries.length - 1 ? undefined : ListDividerType.ELEMENT, hasTreeItems: true }, h("span", { class: "body-3-sb z-list-group-title", slot: "header-title" }, category), h("z-list", null, items.map((item, i, arr) => [
|
|
447
|
+
return (h("z-list-group", { "divider-type": index === entries.length - 1 ? undefined : ListDividerType.ELEMENT, hasTreeItems: true, "aria-labelledby": `${this.htmlid}_tree_${index}` }, h("span", { class: "body-3-sb z-list-group-title", slot: "header-title", id: `${this.htmlid}_tree_${index}`, "aria-hidden": "true" }, category), h("z-list", { role: "presentation" }, items.map((item, i, arr) => [
|
|
482
448
|
this.renderTreeItems(item, i === arr.length - 1, parentHasSiblings, true, item.disabled),
|
|
483
449
|
i < arr.length - 1 ? (h("z-divider", { key: `divider-${i}`, style: { zIndex: "100", height: "var(--border-size-small)" } })) : null,
|
|
484
450
|
])), index !== entries.length - 1 && h("z-divider", { style: { zIndex: "100", height: "var(--border-size-small)" } })));
|
|
@@ -488,14 +454,14 @@ export class ZSelect {
|
|
|
488
454
|
const groupedItems = this.getGroupedItems();
|
|
489
455
|
return groupedItems.map(([key, items], index) => {
|
|
490
456
|
const isLastGroup = groupedItems.length === index + 1;
|
|
491
|
-
return (h("z-list-group", { "divider-type": ListDividerType.ELEMENT }, h("span", { class: "body-3-sb z-list-group-title", slot: "header-title" }, key), items.map((item, subindex) => {
|
|
457
|
+
return (h("z-list-group", { "divider-type": ListDividerType.ELEMENT, "aria-labelledby": `${this.htmlid}_group_${index}` }, h("span", { class: "body-3-sb z-list-group-title", slot: "header-title", id: `${this.htmlid}_group_${index}`, "aria-hidden": "true" }, key), items.map((item, subindex) => {
|
|
492
458
|
const isLastItem = items.length === subindex + 1;
|
|
493
459
|
return this.renderItem(item, isLastGroup && isLastItem);
|
|
494
460
|
})));
|
|
495
461
|
});
|
|
496
462
|
}
|
|
497
463
|
renderNoSearchResults() {
|
|
498
|
-
return (h("z-list-element", { class: "no-results", size: this.hasTreeItems ? ListSize.MEDIUM : this.listSizeType(), "html-tabindex": null }, this.noresultslabel));
|
|
464
|
+
return (h("z-list-element", { class: "no-results", size: this.hasTreeItems ? ListSize.MEDIUM : this.listSizeType(), "html-tabindex": null, role: "presentation" }, this.noresultslabel));
|
|
499
465
|
}
|
|
500
466
|
renderMessage() {
|
|
501
467
|
if (boolean(this.message) === false) {
|
|
@@ -504,7 +470,7 @@ export class ZSelect {
|
|
|
504
470
|
return (h("z-input-message", { message: boolean(this.message) === true ? undefined : this.message, status: this.status, class: this.size, disabled: this.disabled }));
|
|
505
471
|
}
|
|
506
472
|
render() {
|
|
507
|
-
return (h("div", { key: '
|
|
473
|
+
return (h("div", { key: '85aeff414269872f796631044ffcafe9e500d6e6', class: "select-wrapper" }, this.renderInput(), this.renderSelectUl(), this.renderMessage()));
|
|
508
474
|
}
|
|
509
475
|
static get is() { return "z-select"; }
|
|
510
476
|
static get encapsulation() { return "scoped"; }
|
|
@@ -985,14 +951,5 @@ export class ZSelect {
|
|
|
985
951
|
"methodName": "watchItems"
|
|
986
952
|
}];
|
|
987
953
|
}
|
|
988
|
-
static get listeners() {
|
|
989
|
-
return [{
|
|
990
|
-
"name": "ariaDescendantFocus",
|
|
991
|
-
"method": "getFocusedItemHandler",
|
|
992
|
-
"target": undefined,
|
|
993
|
-
"capture": false,
|
|
994
|
-
"passive": false
|
|
995
|
-
}];
|
|
996
|
-
}
|
|
997
954
|
}
|
|
998
955
|
//# sourceMappingURL=index.js.map
|