@zanichelli/albe-web-components 16.0.0 → 16.1.0-rc2
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 +2 -0
- package/dist/cjs/{index-5cc0f0ca.js → index-53f82896.js} +7 -3
- package/dist/cjs/index-53f82896.js.map +1 -0
- package/dist/cjs/{index-066b8da0.js → index-597156d1.js} +2 -2
- package/dist/cjs/{index-066b8da0.js.map → index-597156d1.js.map} +1 -1
- package/dist/cjs/{index-98822eac.js → index-9e2052c7.js} +3 -3
- package/dist/cjs/{index-98822eac.js.map → index-9e2052c7.js.map} +1 -1
- package/dist/cjs/index-bab7a651.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/web-components-library.cjs.js +1 -1
- package/dist/cjs/z-app-header_12.cjs.entry.js +4 -5
- package/dist/cjs/z-app-header_12.cjs.entry.js.map +1 -1
- package/dist/cjs/z-card.cjs.entry.js +5 -5
- package/dist/cjs/z-card.cjs.entry.js.map +1 -1
- package/dist/cjs/z-select.cjs.entry.js +4 -4
- package/dist/cjs/z-select.cjs.entry.js.map +1 -1
- package/dist/cjs/z-table.cjs.entry.js +3 -3
- package/dist/cjs/z-td.cjs.entry.js +1 -1
- package/dist/cjs/z-th.cjs.entry.js +1 -1
- package/dist/cjs/z-tr.cjs.entry.js +3 -3
- package/dist/collection/beans/index.js.map +1 -1
- package/dist/collection/components/table/cells/z-td/index.js +30 -2
- package/dist/collection/components/table/cells/z-td/index.js.map +1 -1
- package/dist/collection/components/table/cells/z-td/styles.css +4 -0
- package/dist/collection/components/table/cells/z-th/styles.css +4 -0
- package/dist/collection/components/z-button-sort/test.e2e.js +16 -0
- package/dist/collection/components/z-button-sort/test.e2e.js.map +1 -1
- package/dist/collection/components/z-card/index.js +5 -5
- package/dist/collection/components/z-card/index.js.map +1 -1
- package/dist/collection/components/z-card/index.spec.js +26 -7
- package/dist/collection/components/z-card/index.spec.js.map +1 -1
- package/dist/collection/components/z-card/index.stories.js +17 -6
- package/dist/collection/components/z-card/index.stories.js.map +1 -1
- package/dist/collection/components/z-card/styles.css +10 -2
- package/dist/collection/components/z-chip/test.e2e.js +32 -0
- package/dist/collection/components/z-chip/test.e2e.js.map +1 -0
- package/dist/collection/components/z-combobox/test.e2e.js +45 -0
- package/dist/collection/components/z-combobox/test.e2e.js.map +1 -0
- package/dist/collection/components/z-searchbar/index.js +3 -22
- package/dist/collection/components/z-searchbar/index.js.map +1 -1
- package/dist/collection/components/z-searchbar/index.spec.js +1 -5
- package/dist/collection/components/z-searchbar/index.spec.js.map +1 -1
- package/dist/collection/components/z-searchbar/index.stories.js +131 -4
- package/dist/collection/components/z-searchbar/index.stories.js.map +1 -1
- package/dist/collection/components/z-searchbar/styles.css +94 -11
- package/dist/collection/components/z-searchbar/test.e2e.js +90 -0
- package/dist/collection/components/z-searchbar/test.e2e.js.map +1 -0
- package/dist/collection/components/z-select/index.js +3 -3
- package/dist/collection/components/z-select/index.js.map +1 -1
- package/dist/collection/components/z-select/index.spec.js +71 -0
- package/dist/collection/components/z-select/index.spec.js.map +1 -1
- package/dist/collection/components/z-select/index.stories.js +13 -0
- package/dist/collection/components/z-select/index.stories.js.map +1 -1
- package/dist/collection/components/z-select/styles.css +5 -0
- package/dist/collection/components/z-select/test.e2e.js +121 -0
- package/dist/collection/components/z-select/test.e2e.js.map +1 -0
- package/dist/collection/components/z-tag/styles.css +4 -0
- package/dist/collection/components/z-toggle-button/test.e2e.js +12 -0
- package/dist/collection/components/z-toggle-button/test.e2e.js.map +1 -0
- package/dist/collection/components/z-toggle-switch/test.e2e.js +22 -0
- package/dist/collection/components/z-toggle-switch/test.e2e.js.map +1 -0
- package/dist/components/index2.js.map +1 -1
- package/dist/components/index23.js +3 -5
- package/dist/components/index23.js.map +1 -1
- package/dist/components/index24.js +1 -1
- package/dist/components/index24.js.map +1 -1
- package/dist/components/z-card.js +5 -5
- package/dist/components/z-card.js.map +1 -1
- package/dist/components/z-select.js +24 -18
- package/dist/components/z-select.js.map +1 -1
- package/dist/components/z-td.js +8 -3
- package/dist/components/z-td.js.map +1 -1
- package/dist/components/z-th.js +1 -1
- package/dist/components/z-th.js.map +1 -1
- package/dist/esm/{index-18018bb5.js → index-7a28ff39.js} +2 -2
- package/dist/esm/{index-18018bb5.js.map → index-7a28ff39.js.map} +1 -1
- package/dist/esm/{index-292b4dd2.js → index-a52fd166.js} +8 -4
- package/dist/esm/index-a52fd166.js.map +1 -0
- package/dist/esm/index-b7dbacb4.js.map +1 -1
- package/dist/esm/{index-50bbb22e.js → index-ebb8a94a.js} +3 -3
- package/dist/esm/{index-50bbb22e.js.map → index-ebb8a94a.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/web-components-library.js +1 -1
- package/dist/esm/z-app-header_12.entry.js +4 -5
- package/dist/esm/z-app-header_12.entry.js.map +1 -1
- package/dist/esm/z-card.entry.js +5 -5
- package/dist/esm/z-card.entry.js.map +1 -1
- package/dist/esm/z-select.entry.js +4 -4
- package/dist/esm/z-select.entry.js.map +1 -1
- package/dist/esm/z-table.entry.js +3 -3
- package/dist/esm/z-td.entry.js +1 -1
- package/dist/esm/z-th.entry.js +1 -1
- package/dist/esm/z-tr.entry.js +3 -3
- package/dist/types/beans/index.d.ts +1 -0
- package/dist/types/components/table/cells/z-td/index.d.ts +5 -1
- package/dist/types/components/z-card/index.d.ts +3 -3
- package/dist/types/components/z-card/index.stories.d.ts +6 -1
- package/dist/types/components/z-searchbar/index.d.ts +0 -2
- package/dist/types/components/z-searchbar/index.stories.d.ts +64 -1
- package/dist/types/components.d.ts +10 -10
- package/dist/web-components-library/p-088a31dc.entry.js +2 -0
- package/dist/web-components-library/p-088a31dc.entry.js.map +1 -0
- package/dist/web-components-library/{p-ae94e377.js → p-191168fc.js} +2 -2
- package/dist/web-components-library/p-26b5c84d.js +2 -0
- package/{www/build/p-8de7ea6e.js.map → dist/web-components-library/p-26b5c84d.js.map} +1 -1
- package/dist/web-components-library/p-2a888e7e.entry.js +2 -0
- package/dist/web-components-library/{p-83eff308.entry.js → p-3f745628.entry.js} +2 -2
- package/dist/web-components-library/p-3f745628.entry.js.map +1 -0
- package/dist/web-components-library/p-57ecb5a7.entry.js +2 -0
- package/dist/web-components-library/p-57ecb5a7.entry.js.map +1 -0
- package/dist/web-components-library/p-6037cdf3.js.map +1 -1
- package/dist/web-components-library/p-6e252465.js +2 -0
- package/dist/web-components-library/p-6e252465.js.map +1 -0
- package/dist/web-components-library/p-8c125a3f.entry.js +2 -0
- package/dist/web-components-library/{p-c6b269ce.entry.js → p-a1d52560.entry.js} +2 -2
- package/dist/web-components-library/p-ed2c8484.entry.js +2 -0
- package/dist/web-components-library/web-components-library.esm.js +1 -1
- package/package.json +2 -1
- package/www/build/p-088a31dc.entry.js +2 -0
- package/www/build/p-088a31dc.entry.js.map +1 -0
- package/www/build/{p-ae94e377.js → p-191168fc.js} +2 -2
- package/www/build/p-215344e7.js +2 -0
- package/www/build/p-26b5c84d.js +2 -0
- package/{dist/web-components-library/p-8de7ea6e.js.map → www/build/p-26b5c84d.js.map} +1 -1
- package/www/build/p-2a888e7e.entry.js +2 -0
- package/www/build/{p-83eff308.entry.js → p-3f745628.entry.js} +2 -2
- package/www/build/p-3f745628.entry.js.map +1 -0
- package/www/build/p-57ecb5a7.entry.js +2 -0
- package/www/build/p-57ecb5a7.entry.js.map +1 -0
- package/www/build/p-6037cdf3.js.map +1 -1
- package/www/build/p-6e252465.js +2 -0
- package/www/build/p-6e252465.js.map +1 -0
- package/www/build/p-8c125a3f.entry.js +2 -0
- package/www/build/{p-c6b269ce.entry.js → p-a1d52560.entry.js} +2 -2
- package/www/build/p-ed2c8484.entry.js +2 -0
- package/www/build/web-components-library.esm.js +1 -1
- package/www/index.html +1 -1
- package/dist/cjs/index-5cc0f0ca.js.map +0 -1
- package/dist/collection/components/z-logo/test.e2e.js +0 -32
- package/dist/collection/components/z-logo/test.e2e.js.map +0 -1
- package/dist/collection/snowflakes/myz/list/z-myz-list-item/test.e2e.js +0 -35
- package/dist/collection/snowflakes/myz/list/z-myz-list-item/test.e2e.js.map +0 -1
- package/dist/esm/index-292b4dd2.js.map +0 -1
- package/dist/web-components-library/p-18690383.entry.js +0 -2
- package/dist/web-components-library/p-18690383.entry.js.map +0 -1
- package/dist/web-components-library/p-1edbac5f.entry.js +0 -2
- package/dist/web-components-library/p-5a5481be.entry.js +0 -2
- package/dist/web-components-library/p-5a5481be.entry.js.map +0 -1
- package/dist/web-components-library/p-83eff308.entry.js.map +0 -1
- package/dist/web-components-library/p-8de7ea6e.js +0 -2
- package/dist/web-components-library/p-9f2a7cf0.js +0 -2
- package/dist/web-components-library/p-9f2a7cf0.js.map +0 -1
- package/dist/web-components-library/p-bf2a057d.entry.js +0 -2
- package/dist/web-components-library/p-e0323da3.entry.js +0 -2
- package/www/build/p-18690383.entry.js +0 -2
- package/www/build/p-18690383.entry.js.map +0 -1
- package/www/build/p-1edbac5f.entry.js +0 -2
- package/www/build/p-5a5481be.entry.js +0 -2
- package/www/build/p-5a5481be.entry.js.map +0 -1
- package/www/build/p-774b449d.js +0 -2
- package/www/build/p-83eff308.entry.js.map +0 -1
- package/www/build/p-8de7ea6e.js +0 -2
- package/www/build/p-9f2a7cf0.js +0 -2
- package/www/build/p-9f2a7cf0.js.map +0 -1
- package/www/build/p-bf2a057d.entry.js +0 -2
- package/www/build/p-e0323da3.entry.js +0 -2
- /package/dist/web-components-library/{p-ae94e377.js.map → p-191168fc.js.map} +0 -0
- /package/dist/web-components-library/{p-1edbac5f.entry.js.map → p-2a888e7e.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-bf2a057d.entry.js.map → p-8c125a3f.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-c6b269ce.entry.js.map → p-a1d52560.entry.js.map} +0 -0
- /package/dist/web-components-library/{p-e0323da3.entry.js.map → p-ed2c8484.entry.js.map} +0 -0
- /package/www/build/{p-ae94e377.js.map → p-191168fc.js.map} +0 -0
- /package/www/build/{p-1edbac5f.entry.js.map → p-2a888e7e.entry.js.map} +0 -0
- /package/www/build/{p-bf2a057d.entry.js.map → p-8c125a3f.entry.js.map} +0 -0
- /package/www/build/{p-c6b269ce.entry.js.map → p-a1d52560.entry.js.map} +0 -0
- /package/www/build/{p-e0323da3.entry.js.map → p-ed2c8484.entry.js.map} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
--z-searchbar-tag-text-color: var(--color-primary03);
|
|
3
3
|
--z-searchbar-tag-bg: var(--color-hover-primary);
|
|
4
|
+
--z-searchbar-item-height: 44px;
|
|
4
5
|
|
|
5
6
|
z-index: 15;
|
|
6
7
|
display: flex;
|
|
@@ -14,6 +15,12 @@
|
|
|
14
15
|
box-sizing: border-box;
|
|
15
16
|
}
|
|
16
17
|
|
|
18
|
+
:host::part(list-item-container) {
|
|
19
|
+
display: block;
|
|
20
|
+
min-height: unset;
|
|
21
|
+
padding: 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
17
24
|
.input-container {
|
|
18
25
|
position: relative;
|
|
19
26
|
display: flex;
|
|
@@ -78,12 +85,80 @@
|
|
|
78
85
|
}
|
|
79
86
|
|
|
80
87
|
.results z-list-element {
|
|
88
|
+
position: relative;
|
|
81
89
|
display: block;
|
|
82
90
|
}
|
|
83
91
|
|
|
92
|
+
z-list-element > .item-search {
|
|
93
|
+
padding: var(--space-unit) 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
z-list z-list-element::before {
|
|
97
|
+
position: absolute;
|
|
98
|
+
z-index: 100;
|
|
99
|
+
top: 5px;
|
|
100
|
+
left: -20px;
|
|
101
|
+
width: 8px;
|
|
102
|
+
height: 1em;
|
|
103
|
+
border-bottom: 1px solid var(--color-disabled01-icon);
|
|
104
|
+
border-left: 1px solid var(--color-disabled01-icon);
|
|
105
|
+
content: "";
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
z-list z-list-element::after {
|
|
110
|
+
position: absolute;
|
|
111
|
+
z-index: 100;
|
|
112
|
+
top: 5px;
|
|
113
|
+
left: -20px;
|
|
114
|
+
width: 8px;
|
|
115
|
+
height: 100%;
|
|
116
|
+
border-left: 1px solid var(--color-disabled01-icon);
|
|
117
|
+
content: "";
|
|
118
|
+
cursor: pointer;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
z-list z-list-element:last-child::after {
|
|
122
|
+
display: none;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
z-list > z-list-element::before,
|
|
126
|
+
z-list > z-list-element::after,
|
|
127
|
+
z-list > z-list-group > z-list-element::before,
|
|
128
|
+
z-list > z-list-group > z-list-element::after {
|
|
129
|
+
display: none;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
z-list > div.children-node {
|
|
133
|
+
padding-left: calc(var(--space-unit) * 3);
|
|
134
|
+
}
|
|
135
|
+
|
|
84
136
|
.results z-list-element > .list-element {
|
|
85
137
|
display: flex;
|
|
86
138
|
justify-content: space-between;
|
|
139
|
+
padding: calc(var(--space-unit) * 1.25) 0;
|
|
140
|
+
cursor: pointer;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.results z-list-element > .list-element .item.ellipsis {
|
|
144
|
+
overflow: hidden;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.results z-list-element .list-element::after {
|
|
148
|
+
position: absolute;
|
|
149
|
+
top: 0;
|
|
150
|
+
right: 0;
|
|
151
|
+
display: block;
|
|
152
|
+
width: 100%;
|
|
153
|
+
height: 44px;
|
|
154
|
+
content: "";
|
|
155
|
+
transform: translateX(-100%);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.results z-list-element > .list-element:hover,
|
|
159
|
+
.results z-list-element > .list-element:hover::after {
|
|
160
|
+
background-color: var(--color-surface02);
|
|
161
|
+
cursor: pointer;
|
|
87
162
|
}
|
|
88
163
|
|
|
89
164
|
.results z-list-element > .list-element > z-tag {
|
|
@@ -107,7 +182,7 @@
|
|
|
107
182
|
column-gap: calc(var(--space-unit) * 1.5);
|
|
108
183
|
fill: var(--color-default-icon);
|
|
109
184
|
font-size: var(--font-size-2);
|
|
110
|
-
line-height: var(--font-size-
|
|
185
|
+
line-height: var(--font-size-6);
|
|
111
186
|
}
|
|
112
187
|
|
|
113
188
|
.results .item.ellipsis > .item-label {
|
|
@@ -120,10 +195,6 @@
|
|
|
120
195
|
background: var(--color-primary03);
|
|
121
196
|
}
|
|
122
197
|
|
|
123
|
-
.results .item.has-category {
|
|
124
|
-
padding-left: calc(var(--space-unit) * 3);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
198
|
.results .item.item-search {
|
|
128
199
|
--z-icon-height: 16px;
|
|
129
200
|
--z-icon-width: 16px;
|
|
@@ -165,6 +236,10 @@
|
|
|
165
236
|
.results .item.ellipsis > .item-label {
|
|
166
237
|
height: 24px;
|
|
167
238
|
}
|
|
239
|
+
|
|
240
|
+
.results z-list-element > .list-element > z-tag {
|
|
241
|
+
min-width: max-content;
|
|
242
|
+
}
|
|
168
243
|
}
|
|
169
244
|
|
|
170
245
|
/* Desktop breakpoint */
|
|
@@ -191,12 +266,20 @@
|
|
|
191
266
|
--z-icon-width: 16px;
|
|
192
267
|
}
|
|
193
268
|
|
|
194
|
-
:host([size="small"])
|
|
195
|
-
|
|
196
|
-
padding: 0;
|
|
269
|
+
:host([size="small"]) z-list-element > .list-element,
|
|
270
|
+
:host([size="small"]) z-list-element > .item-search {
|
|
271
|
+
padding: calc(var(--space-unit) * 0.75) 0;
|
|
197
272
|
}
|
|
198
273
|
|
|
199
|
-
:host([size="x-small"])
|
|
200
|
-
|
|
201
|
-
padding: 0;
|
|
274
|
+
:host([size="x-small"]) z-list-element > .list-element,
|
|
275
|
+
:host([size="x-small"]) z-list-element > .item-search {
|
|
276
|
+
padding: calc(var(--space-unit) / 2) 0;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
:host([size="small"]) z-list-element .list-element::after {
|
|
280
|
+
height: 36px;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
:host([size="x-small"]) z-list-element .list-element::after {
|
|
284
|
+
height: 32px;
|
|
202
285
|
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { newE2EPage } from "@stencil/core/testing";
|
|
2
|
+
describe("z-searchbar test end2end", () => {
|
|
3
|
+
it("Emit searchTyping event", async () => {
|
|
4
|
+
const page = await newE2EPage();
|
|
5
|
+
await page.setContent(`
|
|
6
|
+
<z-searchbar placeholder="Cerca" search-button-label="Cerca"></z-searchbar>
|
|
7
|
+
`);
|
|
8
|
+
const searchbar = await page.find("z-searchbar");
|
|
9
|
+
const input = await page.find("z-searchbar >>> z-input div input");
|
|
10
|
+
const searchTypingEvent = await page.spyOnEvent("searchTyping");
|
|
11
|
+
expect(searchbar).not.toBeNull();
|
|
12
|
+
expect(input).not.toBeNull();
|
|
13
|
+
await input.type("A");
|
|
14
|
+
await page.waitForChanges();
|
|
15
|
+
await page.waitForEvent("searchTyping");
|
|
16
|
+
expect(searchTypingEvent).toHaveReceivedEvent();
|
|
17
|
+
});
|
|
18
|
+
it("Emit searchSubmit event", async () => {
|
|
19
|
+
const page = await newE2EPage();
|
|
20
|
+
await page.setContent(`
|
|
21
|
+
<z-searchbar placeholder="Cerca" show-search-button="true"></z-searchbar>
|
|
22
|
+
`);
|
|
23
|
+
const searchbar = await page.find("z-searchbar");
|
|
24
|
+
const input = await page.find("z-searchbar >>> z-input div input");
|
|
25
|
+
const button = await page.find("z-searchbar >>> z-button");
|
|
26
|
+
const searchSubmitEvent = await page.spyOnEvent("searchSubmit");
|
|
27
|
+
expect(searchbar).not.toBeNull();
|
|
28
|
+
expect(input).not.toBeNull();
|
|
29
|
+
await input.type("Test");
|
|
30
|
+
await page.waitForChanges();
|
|
31
|
+
await button.click();
|
|
32
|
+
await page.waitForChanges();
|
|
33
|
+
expect(searchSubmitEvent).toHaveReceivedEvent();
|
|
34
|
+
});
|
|
35
|
+
it("Emit searchItemClick event with basic items structure", async () => {
|
|
36
|
+
const page = await newE2EPage();
|
|
37
|
+
const items = JSON.stringify([
|
|
38
|
+
{
|
|
39
|
+
label: "first item",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: "second item",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
label: "third item",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
label: "fourth item",
|
|
49
|
+
},
|
|
50
|
+
]);
|
|
51
|
+
await page.setContent(`
|
|
52
|
+
<z-searchbar
|
|
53
|
+
prevent-submit="false"
|
|
54
|
+
show-search-button="false"
|
|
55
|
+
search-button-icon-only="false"
|
|
56
|
+
autocomplete="true"
|
|
57
|
+
autocomplete-min-chars="3"
|
|
58
|
+
results-count=""
|
|
59
|
+
results-items='${items}'
|
|
60
|
+
results-ellipsis="true"
|
|
61
|
+
search-helper-label="Cerca {searchString}"
|
|
62
|
+
sort-results-items="false"
|
|
63
|
+
value=""
|
|
64
|
+
placeholder="my placeholder"
|
|
65
|
+
htmlid="myIdAutocomplete"
|
|
66
|
+
style="
|
|
67
|
+
--z-searchbar-results-height: ;
|
|
68
|
+
--z-searchbar-tag-text-color: var(--color-primary03);
|
|
69
|
+
--z-searchbar-tag-bg: var(--color-hover-primary);
|
|
70
|
+
"
|
|
71
|
+
size="big"
|
|
72
|
+
variant="primary"
|
|
73
|
+
></z-searchbar>
|
|
74
|
+
`);
|
|
75
|
+
const searchbar = await page.find("z-searchbar");
|
|
76
|
+
const input = await page.find("z-searchbar >>> z-input div input");
|
|
77
|
+
const searchItemClickEvent = await page.spyOnEvent("searchItemClick");
|
|
78
|
+
expect(searchbar).not.toBeNull();
|
|
79
|
+
expect(input).not.toBeNull();
|
|
80
|
+
await input.type("Test");
|
|
81
|
+
await page.waitForChanges();
|
|
82
|
+
await page.waitForEvent("searchTyping");
|
|
83
|
+
const item = await page.find("z-searchbar >>> #list-item-myIdAutocomplete-0");
|
|
84
|
+
expect(item).not.toBeNull();
|
|
85
|
+
await item.click();
|
|
86
|
+
await page.waitForChanges();
|
|
87
|
+
expect(searchItemClickEvent).toHaveReceivedEvent();
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=test.e2e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.e2e.js","sourceRoot":"","sources":["../../../../src/components/z-searchbar/test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import {newE2EPage} from \"@stencil/core/testing\";\n\ndescribe(\"z-searchbar test end2end\", () => {\n it(\"Emit searchTyping event\", async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <z-searchbar placeholder=\"Cerca\" search-button-label=\"Cerca\"></z-searchbar>\n `);\n const searchbar = await page.find(\"z-searchbar\");\n const input = await page.find(\"z-searchbar >>> z-input div input\");\n const searchTypingEvent = await page.spyOnEvent(\"searchTyping\");\n\n expect(searchbar).not.toBeNull();\n expect(input).not.toBeNull();\n\n await input.type(\"A\");\n await page.waitForChanges();\n await page.waitForEvent(\"searchTyping\");\n\n expect(searchTypingEvent).toHaveReceivedEvent();\n });\n\n it(\"Emit searchSubmit event\", async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <z-searchbar placeholder=\"Cerca\" show-search-button=\"true\"></z-searchbar>\n `);\n const searchbar = await page.find(\"z-searchbar\");\n const input = await page.find(\"z-searchbar >>> z-input div input\");\n const button = await page.find(\"z-searchbar >>> z-button\");\n const searchSubmitEvent = await page.spyOnEvent(\"searchSubmit\");\n\n expect(searchbar).not.toBeNull();\n expect(input).not.toBeNull();\n\n await input.type(\"Test\");\n await page.waitForChanges();\n\n await button.click();\n await page.waitForChanges();\n\n expect(searchSubmitEvent).toHaveReceivedEvent();\n });\n\n it(\"Emit searchItemClick event with basic items structure\", async () => {\n const page = await newE2EPage();\n const items = JSON.stringify([\n {\n label: \"first item\",\n },\n {\n label: \"second item\",\n },\n {\n label: \"third item\",\n },\n {\n label: \"fourth item\",\n },\n ]);\n await page.setContent(`\n <z-searchbar\n prevent-submit=\"false\"\n show-search-button=\"false\"\n search-button-icon-only=\"false\"\n autocomplete=\"true\"\n autocomplete-min-chars=\"3\"\n results-count=\"\"\n results-items='${items}'\n results-ellipsis=\"true\"\n search-helper-label=\"Cerca {searchString}\"\n sort-results-items=\"false\"\n value=\"\"\n placeholder=\"my placeholder\"\n htmlid=\"myIdAutocomplete\"\n style=\"\n --z-searchbar-results-height: ;\n --z-searchbar-tag-text-color: var(--color-primary03);\n --z-searchbar-tag-bg: var(--color-hover-primary);\n \"\n size=\"big\"\n variant=\"primary\"\n ></z-searchbar>\n `);\n const searchbar = await page.find(\"z-searchbar\");\n const input = await page.find(\"z-searchbar >>> z-input div input\");\n const searchItemClickEvent = await page.spyOnEvent(\"searchItemClick\");\n\n expect(searchbar).not.toBeNull();\n expect(input).not.toBeNull();\n\n await input.type(\"Test\");\n await page.waitForChanges();\n await page.waitForEvent(\"searchTyping\");\n\n const item = await page.find(\"z-searchbar >>> #list-item-myIdAutocomplete-0\");\n expect(item).not.toBeNull();\n\n await item.click();\n await page.waitForChanges();\n\n expect(searchItemClickEvent).toHaveReceivedEvent();\n });\n});\n"]}
|
|
@@ -265,10 +265,10 @@ export class ZSelect {
|
|
|
265
265
|
}, onKeyDown: (e) => this.arrowsSelectNav(e, 0) }, h("div", { class: "reset-item-content" }, h("z-icon", { name: "multiply-circled" }), h("span", null, this.resetItem))));
|
|
266
266
|
}
|
|
267
267
|
renderItem(item, key, lastItem) {
|
|
268
|
-
return (h("z-list-element", { clickable: !item.disabled, disabled: item.disabled, dividerType: lastItem ? ListDividerType.HEADER : ListDividerType.ELEMENT, role: "option", tabindex: item.disabled || !this.isOpen ? -1 : 0, "aria-selected": item.selected ? "true" : "false", id: `${this.htmlid}_${key}`, size: this.listSizeType(), onClickItem: () => this.selectItem(item, true), onKeyDown: (e) => this.arrowsSelectNav(e, key) }, h("div", { class: "list-element-container" },
|
|
268
|
+
return (h("z-list-element", { clickable: !item.disabled, disabled: item.disabled, dividerType: lastItem ? ListDividerType.HEADER : ListDividerType.ELEMENT, role: "option", tabindex: item.disabled || !this.isOpen ? -1 : 0, "aria-selected": item.selected ? "true" : "false", id: `${this.htmlid}_${key}`, size: this.listSizeType(), onClickItem: () => this.selectItem(item, true), onKeyDown: (e) => this.arrowsSelectNav(e, key) }, h("div", { class: "list-element-container" }, h("span", { class: {
|
|
269
269
|
"selected": !!item.selected,
|
|
270
270
|
"list-element-content": true,
|
|
271
|
-
}, innerHTML: item.name }))));
|
|
271
|
+
}, innerHTML: item.name }), item.icon && h("z-tag", { icon: item.icon }))));
|
|
272
272
|
}
|
|
273
273
|
listSizeType() {
|
|
274
274
|
if (this.size === ControlSize.SMALL || this.size === ControlSize.X_SMALL) {
|
|
@@ -314,7 +314,7 @@ export class ZSelect {
|
|
|
314
314
|
return (h("z-input-message", { message: boolean(this.message) === true ? undefined : this.message, status: this.status, class: this.size }));
|
|
315
315
|
}
|
|
316
316
|
render() {
|
|
317
|
-
return (h("div", { key: '
|
|
317
|
+
return (h("div", { key: '16a8b264460cb21cd19258694e04f7c58ca5bc26', class: "select-wrapper" }, this.renderInput(), this.renderSelectUl(), this.renderMessage()));
|
|
318
318
|
}
|
|
319
319
|
static get is() { return "z-select"; }
|
|
320
320
|
static get encapsulation() { return "scoped"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/z-select/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Element, Event, EventEmitter, Listen, Method, Prop, State, Watch, h} from \"@stencil/core\";\nimport {ControlSize, InputStatus, KeyboardCode, ListDividerType, ListSize, SelectItem} from \"../../beans\";\nimport {boolean, getClickedElement, getElementTree, handleKeyboardSubmit, randomId} from \"../../utils/utils\";\n\n@Component({\n tag: \"z-select\",\n styleUrl: \"styles.css\",\n shadow: false,\n scoped: true,\n})\nexport class ZSelect {\n @Element() element: HTMLZSelectElement;\n\n /** the id of the input element */\n @Prop()\n htmlid = `id-${randomId()}`;\n\n /** the input select options */\n @Prop()\n items: SelectItem[] | string;\n\n /** the input name */\n @Prop()\n name?: string;\n\n /** the input label */\n @Prop()\n label?: string;\n\n /** the input aria-label */\n @Prop()\n ariaLabel = \"\";\n\n /** the input is disabled */\n @Prop()\n disabled?: boolean = false;\n\n /** the input is readonly */\n @Prop()\n readonly?: boolean = false;\n\n /** the input placeholder (optional) */\n @Prop()\n placeholder?: string;\n\n /** the input html title (optional) */\n @Prop()\n htmltitle?: string;\n\n /** the input status (optional) */\n @Prop()\n status?: InputStatus;\n\n /** input helper message (optional) - if set to `false` message won't be displayed */\n @Prop()\n message?: string | boolean = true;\n\n /** the input has autocomplete option */\n @Prop()\n autocomplete?: boolean = false;\n\n /** no result text message */\n @Prop()\n noresultslabel?: string = \"Nessun risultato\";\n\n /** */\n @Prop()\n hasGroupItems?: boolean;\n\n /** When fixed, it occupies space and pushes down next elements. */\n @Prop()\n isfixed?: boolean = false;\n\n /** */\n @Prop()\n resetItem?: string;\n\n /** Available sizes: `big`, `small` and `x-small`. Defaults to `big`. */\n @Prop()\n size?: ControlSize = ControlSize.BIG;\n\n @State()\n isOpen = false;\n\n @State()\n selectedItem: null | SelectItem = null;\n\n @State()\n focusedItemId: string;\n\n @State()\n searchString: null | string;\n\n private itemsList: SelectItem[] = [];\n\n constructor() {\n this.toggleSelectUl = this.toggleSelectUl.bind(this);\n this.selectItem = this.selectItem.bind(this);\n this.handleSelectFocus = this.handleSelectFocus.bind(this);\n }\n\n @Watch(\"items\")\n watchItems(): void {\n this.itemsList = this.getInitialItemsArray();\n this.selectedItem = this.itemsList.find((item: SelectItem) => item.selected);\n }\n\n @Listen(\"ariaDescendantFocus\")\n getFocusedItemHandler(e: CustomEvent): void {\n this.focusedItemId = (e.target as Element).id;\n }\n\n /** get the input selected options */\n @Method()\n async getSelectedItem(): Promise<SelectItem> {\n return this.selectedItem;\n }\n\n /** get the input value */\n @Method()\n async getValue(): Promise<string> {\n return this.getSelectedValue();\n }\n\n /** set the input value */\n @Method()\n async setValue(value: string | string[]): Promise<void> {\n let values: string[] = [];\n if (typeof value === \"string\") {\n values.push(value);\n } else {\n values = value;\n }\n\n this.selectedItem = this.itemsList.find((item: SelectItem) => values.includes(item.id));\n }\n\n /** Emitted on select option selection, returns select id, selected item id */\n @Event()\n optionSelect: EventEmitter;\n\n private emitOptionSelect(): void {\n this.optionSelect.emit({\n id: this.htmlid,\n selected: this.getSelectedValue(),\n });\n }\n\n /** Emitted on reset selected item, returns select id, selected item id */\n @Event()\n resetSelect: EventEmitter;\n\n private emitResetSelect(): void {\n this.resetSelect.emit({\n id: this.htmlid,\n });\n }\n\n componentWillLoad(): void {\n this.watchItems();\n }\n\n componentWillRender(): void {\n this.filterItems(this.searchString);\n }\n\n private getInitialItemsArray(): SelectItem[] {\n return typeof this.items === \"string\" ? JSON.parse(this.items) : this.items;\n }\n\n private mapSelectedItemToItemsArray(): SelectItem[] {\n const initialItemsList = this.getInitialItemsArray();\n\n return initialItemsList.map((item: SelectItem) => {\n item.selected = item.id === this.selectedItem?.id;\n\n return item;\n });\n }\n\n private getSelectedValue(): string {\n return this.selectedItem?.id;\n }\n\n private filterItems(searchString: string): void {\n const prevList = this.mapSelectedItemToItemsArray();\n if (!searchString?.length) {\n this.itemsList = prevList;\n } else {\n this.itemsList = prevList\n .filter((item: SelectItem) => {\n return item.name.toUpperCase().includes(searchString.toUpperCase());\n })\n .map((item: SelectItem) => {\n const start = item.name.toUpperCase().indexOf(searchString.toUpperCase());\n const end = start + searchString.length;\n const newName =\n item.name.substring(0, start) +\n `<strong>${item.name.substring(start, end)}</strong>` +\n item.name.substring(end, item.name.length);\n item.name = newName;\n\n return item;\n });\n }\n }\n\n private hasAutocomplete(): boolean {\n return boolean(this.autocomplete) === true;\n }\n\n private handleInputChange(e: CustomEvent): void {\n this.searchString = e.detail.value;\n if (!this.isOpen) {\n this.toggleSelectUl();\n }\n }\n\n private selectItem(item: null | SelectItem, selected: boolean): void {\n if (item && item.disabled) {\n return;\n }\n\n this.itemsList = this.mapSelectedItemToItemsArray();\n this.itemsList = this.itemsList.map((i: SelectItem) => {\n i.selected = false;\n if (i.id === item?.id) {\n i.selected = selected;\n }\n\n return i;\n });\n\n this.selectedItem = this.itemsList.find((item: SelectItem) => item.selected);\n\n this.emitOptionSelect();\n\n if (this.searchString) {\n this.searchString = null;\n }\n }\n\n private arrowsSelectNav(e: KeyboardEvent, key: number): void {\n const showResetIcon = this.resetItem && !!this.selectedItem;\n const arrows = [KeyboardCode.ARROW_DOWN, KeyboardCode.ARROW_UP];\n if (!arrows.includes(e.key as KeyboardCode)) {\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n if (!this.isOpen) {\n this.toggleSelectUl();\n }\n\n let index: number;\n\n if (this.resetItem) {\n if (e.key === KeyboardCode.ARROW_DOWN) {\n index = key + 1 === this.itemsList.length + 1 ? +!showResetIcon : key + 1;\n } else if (e.key === KeyboardCode.ARROW_UP) {\n index = key <= +!showResetIcon ? this.itemsList.length : key - 1;\n }\n }\n\n if (!this.resetItem) {\n if (e.key === KeyboardCode.ARROW_DOWN) {\n index = key + 1 === this.itemsList.length ? 0 : key + 1;\n } else if (e.key === KeyboardCode.ARROW_UP) {\n index = key <= 0 ? this.itemsList.length - 1 : key - 1;\n }\n }\n\n this.focusSelectItem(index);\n }\n\n private focusSelectItem(index: number): void {\n const focusElem: HTMLLIElement = this.element.querySelector(`#${this.htmlid}_${index}`);\n if (focusElem) {\n focusElem.focus();\n }\n }\n\n private toggleSelectUl(selfFocusOnClose = false): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n if (!this.isOpen) {\n document.addEventListener(\"click\", this.handleSelectFocus);\n document.addEventListener(\"keyup\", this.handleSelectFocus);\n } else {\n document.removeEventListener(\"click\", this.handleSelectFocus);\n document.removeEventListener(\"keyup\", this.handleSelectFocus);\n if (selfFocusOnClose) {\n (this.element.querySelector(`#${this.htmlid}_input`) as HTMLInputElement).focus();\n }\n }\n\n this.focusedItemId = \"\";\n this.isOpen = !this.isOpen;\n }\n\n private handleInputClick(e: MouseEvent | KeyboardEvent): void {\n const cp = e.composedPath();\n const clearIcon = cp.find((item: HTMLElement) => item.classList && item.classList.contains(\"reset-icon\"));\n if (clearIcon) {\n e.stopPropagation();\n\n return;\n }\n\n this.toggleSelectUl();\n }\n\n private handleSelectFocus(e: MouseEvent | KeyboardEvent): void {\n if (e instanceof KeyboardEvent && e.key === KeyboardCode.ESC) {\n e.stopPropagation();\n\n return this.toggleSelectUl(true);\n }\n\n if (e instanceof KeyboardEvent && e.key !== KeyboardCode.TAB && e.key !== KeyboardCode.ENTER) {\n return;\n }\n\n const tree = getElementTree(getClickedElement());\n const parent = tree.find((elem: HTMLElement) => {\n return elem.nodeName.toLowerCase() === \"z-input\" && elem.id === `${this.htmlid}_input`;\n });\n\n if (!parent) {\n this.toggleSelectUl(e instanceof MouseEvent ? true : false);\n }\n }\n\n private scrollToLetter(letter: string): void {\n const foundItem = this.itemsList.find((item: SelectItem) => item.name.charAt(0) === letter);\n if (foundItem) {\n this.focusSelectItem(this.itemsList.indexOf(foundItem));\n }\n }\n\n private renderInput(): HTMLZInputElement {\n return (\n <z-input\n class={{\n \"active-select\": this.isOpen,\n \"cursor-select\": !this.autocomplete,\n }}\n id={`${this.htmlid}_input`}\n htmlid={`${this.htmlid}_select_input`}\n placeholder={this.placeholder}\n value={!this.isOpen && this.selectedItem ? this.selectedItem.name.replace(/<[^>]+>/g, \"\") : null}\n label={this.label}\n aria-expanded={this.isOpen ? \"true\" : \"false\"}\n aria-label={this.ariaLabel}\n aria-controls={`${this.htmlid}_list`}\n aria-autocomplete={this.hasAutocomplete() ? \"list\" : \"none\"}\n aria-activedescendant={this.isOpen ? this.focusedItemId : \"\"}\n icon={this.isOpen ? \"caret-up\" : \"caret-down\"}\n hasclearicon={this.hasAutocomplete()}\n message={false}\n disabled={this.disabled}\n readonly={this.readonly || (!this.hasAutocomplete() && this.isOpen)}\n status={this.isOpen ? undefined : this.status}\n role=\"combobox\"\n size={this.size}\n onClick={(e: MouseEvent) => {\n this.handleInputClick(e);\n }}\n onKeyUp={(e: KeyboardEvent) => {\n if (e.keyCode !== 13) {\n e.preventDefault();\n }\n handleKeyboardSubmit(e, this.toggleSelectUl);\n }}\n onKeyDown={(e: KeyboardEvent) => {\n return this.arrowsSelectNav(\n e,\n this.selectedItem ? this.itemsList.indexOf(this.selectedItem) : this.resetItem ? 0 : -1\n );\n }}\n onInputChange={(e: CustomEvent) => {\n this.handleInputChange(e);\n }}\n onKeyPress={(e: KeyboardEvent) => {\n if (!this.hasAutocomplete()) {\n e.preventDefault();\n this.scrollToLetter(String.fromCharCode(e.keyCode));\n }\n }}\n />\n );\n }\n\n private renderSelectUl(): HTMLDivElement {\n return (\n <div\n class={this.isOpen ? \"open\" : \"closed\"}\n tabindex=\"-1\"\n >\n <div\n class={{\n \"ul-scroll-wrapper\": true,\n \"fixed\": this.isfixed,\n }}\n tabindex=\"-1\"\n >\n <z-list\n role=\"listbox\"\n aria-label={this.ariaLabel || this.label}\n tabindex={this.disabled || this.readonly || !this.isOpen ? -1 : 0}\n id={`${this.htmlid}_list`}\n aria-multiselectable={false}\n size={this.listSizeType()}\n class={{\n disabled: this.disabled,\n readonly: this.readonly,\n filled: !!this.selectedItem,\n [`input-${this.status}`]: !this.isOpen && !!this.status,\n }}\n >\n {this.resetItem && this.renderResetItem()}\n {this.renderSelectUlItems()}\n </z-list>\n </div>\n </div>\n );\n }\n\n private renderResetItem(): HTMLZListElementElement {\n return (\n <z-list-element\n class={{\n \"hide\": !this.selectedItem || !this.resetItem,\n \"reset-item\": true,\n \"reset-item-margin\": !this.hasGroupItems,\n }}\n clickable={true}\n disabled={false}\n dividerType={ListDividerType.ELEMENT}\n role=\"option\"\n tabindex=\"0\"\n aria-selected=\"false\"\n id={`${this.htmlid}_${this.resetItem ? \"0\" : \"none\"}`}\n size={this.listSizeType()}\n onClickItem={() => {\n this.selectedItem = null;\n this.searchString = null;\n this.emitResetSelect();\n }}\n onKeyDown={(e: KeyboardEvent) => this.arrowsSelectNav(e, 0)}\n >\n <div class=\"reset-item-content\">\n <z-icon name=\"multiply-circled\" />\n <span>{this.resetItem}</span>\n </div>\n </z-list-element>\n );\n }\n\n private renderItem(item: SelectItem, key: number, lastItem: boolean): HTMLZListElementElement {\n return (\n <z-list-element\n clickable={!item.disabled}\n disabled={item.disabled}\n dividerType={lastItem ? ListDividerType.HEADER : ListDividerType.ELEMENT}\n role=\"option\"\n tabindex={item.disabled || !this.isOpen ? -1 : 0}\n aria-selected={item.selected ? \"true\" : \"false\"}\n id={`${this.htmlid}_${key}`}\n size={this.listSizeType()}\n onClickItem={() => this.selectItem(item, true)}\n onKeyDown={(e: KeyboardEvent) => this.arrowsSelectNav(e, key)}\n >\n <div class=\"list-element-container\">\n {item.icon && <z-icon name={item.icon} />}\n <span\n class={{\n \"selected\": !!item.selected,\n \"list-element-content\": true,\n }}\n innerHTML={item.name}\n />\n </div>\n </z-list-element>\n );\n }\n\n private listSizeType(): ListSize {\n if (this.size === ControlSize.SMALL || this.size === ControlSize.X_SMALL) {\n return ListSize.SMALL;\n }\n\n return ListSize.MEDIUM;\n }\n\n private renderSelectUlItems(): HTMLZListElementElement | HTMLZListElementElement[] {\n if (!this.itemsList.length) {\n return this.renderNoSearchResults();\n }\n\n if (this.hasGroupItems) {\n return this.renderSelectGroupItems();\n }\n\n return this.itemsList.map((item: SelectItem, key, array) => {\n const lastItem = array.length === key + 1;\n const itemKey = this.resetItem ? key + 1 : key;\n\n return this.renderItem(item, itemKey, lastItem);\n });\n }\n\n private renderSelectGroupItems(): HTMLZListElementElement | HTMLZListElementElement[] {\n const newData = this.itemsList.reduce((group, item, index, array) => {\n const {category} = item;\n const lastItem = array.length === index + 1;\n const itemKey = this.resetItem ? index + 1 : index;\n const zListItem = this.renderItem(item, itemKey, lastItem);\n\n group[category] = group[category] ?? [];\n group[category].push(zListItem);\n\n return group;\n }, {});\n\n return Object.entries(newData as {[key: string]: HTMLZListElementElement[]}).map(([key, value]) => {\n return (\n <z-list-group divider-type={ListDividerType.ELEMENT}>\n <span\n class=\"body-3-sb z-list-group-title\"\n slot=\"header-title\"\n >\n {key}\n </span>\n {value.map((item) => item)}\n </z-list-group>\n );\n });\n }\n\n private renderNoSearchResults(): HTMLZListElementElement {\n return (\n <z-list-element\n color=\"blue500\"\n class=\"no-results\"\n size={this.listSizeType()}\n >\n <z-icon\n name=\"multiply-circle\"\n fill=\"blue500\"\n />\n {this.noresultslabel}\n </z-list-element>\n );\n }\n\n private renderMessage(): HTMLZInputMessageElement {\n if (boolean(this.message) === false) {\n return;\n }\n\n return (\n <z-input-message\n message={boolean(this.message) === true ? undefined : (this.message as string)}\n status={this.status}\n class={this.size}\n />\n );\n }\n\n render(): HTMLDivElement {\n return (\n <div class=\"select-wrapper\">\n {this.renderInput()}\n {this.renderSelectUl()}\n {this.renderMessage()}\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/z-select/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Element, Event, EventEmitter, Listen, Method, Prop, State, Watch, h} from \"@stencil/core\";\nimport {ControlSize, InputStatus, KeyboardCode, ListDividerType, ListSize, SelectItem} from \"../../beans\";\nimport {boolean, getClickedElement, getElementTree, handleKeyboardSubmit, randomId} from \"../../utils/utils\";\n\n@Component({\n tag: \"z-select\",\n styleUrl: \"styles.css\",\n shadow: false,\n scoped: true,\n})\nexport class ZSelect {\n @Element() element: HTMLZSelectElement;\n\n /** the id of the input element */\n @Prop()\n htmlid = `id-${randomId()}`;\n\n /** the input select options */\n @Prop()\n items: SelectItem[] | string;\n\n /** the input name */\n @Prop()\n name?: string;\n\n /** the input label */\n @Prop()\n label?: string;\n\n /** the input aria-label */\n @Prop()\n ariaLabel = \"\";\n\n /** the input is disabled */\n @Prop()\n disabled?: boolean = false;\n\n /** the input is readonly */\n @Prop()\n readonly?: boolean = false;\n\n /** the input placeholder (optional) */\n @Prop()\n placeholder?: string;\n\n /** the input html title (optional) */\n @Prop()\n htmltitle?: string;\n\n /** the input status (optional) */\n @Prop()\n status?: InputStatus;\n\n /** input helper message (optional) - if set to `false` message won't be displayed */\n @Prop()\n message?: string | boolean = true;\n\n /** the input has autocomplete option */\n @Prop()\n autocomplete?: boolean = false;\n\n /** no result text message */\n @Prop()\n noresultslabel?: string = \"Nessun risultato\";\n\n /** */\n @Prop()\n hasGroupItems?: boolean;\n\n /** When fixed, it occupies space and pushes down next elements. */\n @Prop()\n isfixed?: boolean = false;\n\n /** */\n @Prop()\n resetItem?: string;\n\n /** Available sizes: `big`, `small` and `x-small`. Defaults to `big`. */\n @Prop()\n size?: ControlSize = ControlSize.BIG;\n\n @State()\n isOpen = false;\n\n @State()\n selectedItem: null | SelectItem = null;\n\n @State()\n focusedItemId: string;\n\n @State()\n searchString: null | string;\n\n private itemsList: SelectItem[] = [];\n\n constructor() {\n this.toggleSelectUl = this.toggleSelectUl.bind(this);\n this.selectItem = this.selectItem.bind(this);\n this.handleSelectFocus = this.handleSelectFocus.bind(this);\n }\n\n @Watch(\"items\")\n watchItems(): void {\n this.itemsList = this.getInitialItemsArray();\n this.selectedItem = this.itemsList.find((item: SelectItem) => item.selected);\n }\n\n @Listen(\"ariaDescendantFocus\")\n getFocusedItemHandler(e: CustomEvent): void {\n this.focusedItemId = (e.target as Element).id;\n }\n\n /** get the input selected options */\n @Method()\n async getSelectedItem(): Promise<SelectItem> {\n return this.selectedItem;\n }\n\n /** get the input value */\n @Method()\n async getValue(): Promise<string> {\n return this.getSelectedValue();\n }\n\n /** set the input value */\n @Method()\n async setValue(value: string | string[]): Promise<void> {\n let values: string[] = [];\n if (typeof value === \"string\") {\n values.push(value);\n } else {\n values = value;\n }\n\n this.selectedItem = this.itemsList.find((item: SelectItem) => values.includes(item.id));\n }\n\n /** Emitted on select option selection, returns select id, selected item id */\n @Event()\n optionSelect: EventEmitter;\n\n private emitOptionSelect(): void {\n this.optionSelect.emit({\n id: this.htmlid,\n selected: this.getSelectedValue(),\n });\n }\n\n /** Emitted on reset selected item, returns select id, selected item id */\n @Event()\n resetSelect: EventEmitter;\n\n private emitResetSelect(): void {\n this.resetSelect.emit({\n id: this.htmlid,\n });\n }\n\n componentWillLoad(): void {\n this.watchItems();\n }\n\n componentWillRender(): void {\n this.filterItems(this.searchString);\n }\n\n private getInitialItemsArray(): SelectItem[] {\n return typeof this.items === \"string\" ? JSON.parse(this.items) : this.items;\n }\n\n private mapSelectedItemToItemsArray(): SelectItem[] {\n const initialItemsList = this.getInitialItemsArray();\n\n return initialItemsList.map((item: SelectItem) => {\n item.selected = item.id === this.selectedItem?.id;\n\n return item;\n });\n }\n\n private getSelectedValue(): string {\n return this.selectedItem?.id;\n }\n\n private filterItems(searchString: string): void {\n const prevList = this.mapSelectedItemToItemsArray();\n if (!searchString?.length) {\n this.itemsList = prevList;\n } else {\n this.itemsList = prevList\n .filter((item: SelectItem) => {\n return item.name.toUpperCase().includes(searchString.toUpperCase());\n })\n .map((item: SelectItem) => {\n const start = item.name.toUpperCase().indexOf(searchString.toUpperCase());\n const end = start + searchString.length;\n const newName =\n item.name.substring(0, start) +\n `<strong>${item.name.substring(start, end)}</strong>` +\n item.name.substring(end, item.name.length);\n item.name = newName;\n\n return item;\n });\n }\n }\n\n private hasAutocomplete(): boolean {\n return boolean(this.autocomplete) === true;\n }\n\n private handleInputChange(e: CustomEvent): void {\n this.searchString = e.detail.value;\n if (!this.isOpen) {\n this.toggleSelectUl();\n }\n }\n\n private selectItem(item: null | SelectItem, selected: boolean): void {\n if (item && item.disabled) {\n return;\n }\n\n this.itemsList = this.mapSelectedItemToItemsArray();\n this.itemsList = this.itemsList.map((i: SelectItem) => {\n i.selected = false;\n if (i.id === item?.id) {\n i.selected = selected;\n }\n\n return i;\n });\n\n this.selectedItem = this.itemsList.find((item: SelectItem) => item.selected);\n\n this.emitOptionSelect();\n\n if (this.searchString) {\n this.searchString = null;\n }\n }\n\n private arrowsSelectNav(e: KeyboardEvent, key: number): void {\n const showResetIcon = this.resetItem && !!this.selectedItem;\n const arrows = [KeyboardCode.ARROW_DOWN, KeyboardCode.ARROW_UP];\n if (!arrows.includes(e.key as KeyboardCode)) {\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n if (!this.isOpen) {\n this.toggleSelectUl();\n }\n\n let index: number;\n\n if (this.resetItem) {\n if (e.key === KeyboardCode.ARROW_DOWN) {\n index = key + 1 === this.itemsList.length + 1 ? +!showResetIcon : key + 1;\n } else if (e.key === KeyboardCode.ARROW_UP) {\n index = key <= +!showResetIcon ? this.itemsList.length : key - 1;\n }\n }\n\n if (!this.resetItem) {\n if (e.key === KeyboardCode.ARROW_DOWN) {\n index = key + 1 === this.itemsList.length ? 0 : key + 1;\n } else if (e.key === KeyboardCode.ARROW_UP) {\n index = key <= 0 ? this.itemsList.length - 1 : key - 1;\n }\n }\n\n this.focusSelectItem(index);\n }\n\n private focusSelectItem(index: number): void {\n const focusElem: HTMLLIElement = this.element.querySelector(`#${this.htmlid}_${index}`);\n if (focusElem) {\n focusElem.focus();\n }\n }\n\n private toggleSelectUl(selfFocusOnClose = false): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n if (!this.isOpen) {\n document.addEventListener(\"click\", this.handleSelectFocus);\n document.addEventListener(\"keyup\", this.handleSelectFocus);\n } else {\n document.removeEventListener(\"click\", this.handleSelectFocus);\n document.removeEventListener(\"keyup\", this.handleSelectFocus);\n if (selfFocusOnClose) {\n (this.element.querySelector(`#${this.htmlid}_input`) as HTMLInputElement).focus();\n }\n }\n\n this.focusedItemId = \"\";\n this.isOpen = !this.isOpen;\n }\n\n private handleInputClick(e: MouseEvent | KeyboardEvent): void {\n const cp = e.composedPath();\n const clearIcon = cp.find((item: HTMLElement) => item.classList && item.classList.contains(\"reset-icon\"));\n if (clearIcon) {\n e.stopPropagation();\n\n return;\n }\n\n this.toggleSelectUl();\n }\n\n private handleSelectFocus(e: MouseEvent | KeyboardEvent): void {\n if (e instanceof KeyboardEvent && e.key === KeyboardCode.ESC) {\n e.stopPropagation();\n\n return this.toggleSelectUl(true);\n }\n\n if (e instanceof KeyboardEvent && e.key !== KeyboardCode.TAB && e.key !== KeyboardCode.ENTER) {\n return;\n }\n\n const tree = getElementTree(getClickedElement());\n const parent = tree.find((elem: HTMLElement) => {\n return elem.nodeName.toLowerCase() === \"z-input\" && elem.id === `${this.htmlid}_input`;\n });\n\n if (!parent) {\n this.toggleSelectUl(e instanceof MouseEvent ? true : false);\n }\n }\n\n private scrollToLetter(letter: string): void {\n const foundItem = this.itemsList.find((item: SelectItem) => item.name.charAt(0) === letter);\n if (foundItem) {\n this.focusSelectItem(this.itemsList.indexOf(foundItem));\n }\n }\n\n private renderInput(): HTMLZInputElement {\n return (\n <z-input\n class={{\n \"active-select\": this.isOpen,\n \"cursor-select\": !this.autocomplete,\n }}\n id={`${this.htmlid}_input`}\n htmlid={`${this.htmlid}_select_input`}\n placeholder={this.placeholder}\n value={!this.isOpen && this.selectedItem ? this.selectedItem.name.replace(/<[^>]+>/g, \"\") : null}\n label={this.label}\n aria-expanded={this.isOpen ? \"true\" : \"false\"}\n aria-label={this.ariaLabel}\n aria-controls={`${this.htmlid}_list`}\n aria-autocomplete={this.hasAutocomplete() ? \"list\" : \"none\"}\n aria-activedescendant={this.isOpen ? this.focusedItemId : \"\"}\n icon={this.isOpen ? \"caret-up\" : \"caret-down\"}\n hasclearicon={this.hasAutocomplete()}\n message={false}\n disabled={this.disabled}\n readonly={this.readonly || (!this.hasAutocomplete() && this.isOpen)}\n status={this.isOpen ? undefined : this.status}\n role=\"combobox\"\n size={this.size}\n onClick={(e: MouseEvent) => {\n this.handleInputClick(e);\n }}\n onKeyUp={(e: KeyboardEvent) => {\n if (e.keyCode !== 13) {\n e.preventDefault();\n }\n handleKeyboardSubmit(e, this.toggleSelectUl);\n }}\n onKeyDown={(e: KeyboardEvent) => {\n return this.arrowsSelectNav(\n e,\n this.selectedItem ? this.itemsList.indexOf(this.selectedItem) : this.resetItem ? 0 : -1\n );\n }}\n onInputChange={(e: CustomEvent) => {\n this.handleInputChange(e);\n }}\n onKeyPress={(e: KeyboardEvent) => {\n if (!this.hasAutocomplete()) {\n e.preventDefault();\n this.scrollToLetter(String.fromCharCode(e.keyCode));\n }\n }}\n />\n );\n }\n\n private renderSelectUl(): HTMLDivElement {\n return (\n <div\n class={this.isOpen ? \"open\" : \"closed\"}\n tabindex=\"-1\"\n >\n <div\n class={{\n \"ul-scroll-wrapper\": true,\n \"fixed\": this.isfixed,\n }}\n tabindex=\"-1\"\n >\n <z-list\n role=\"listbox\"\n aria-label={this.ariaLabel || this.label}\n tabindex={this.disabled || this.readonly || !this.isOpen ? -1 : 0}\n id={`${this.htmlid}_list`}\n aria-multiselectable={false}\n size={this.listSizeType()}\n class={{\n disabled: this.disabled,\n readonly: this.readonly,\n filled: !!this.selectedItem,\n [`input-${this.status}`]: !this.isOpen && !!this.status,\n }}\n >\n {this.resetItem && this.renderResetItem()}\n {this.renderSelectUlItems()}\n </z-list>\n </div>\n </div>\n );\n }\n\n private renderResetItem(): HTMLZListElementElement {\n return (\n <z-list-element\n class={{\n \"hide\": !this.selectedItem || !this.resetItem,\n \"reset-item\": true,\n \"reset-item-margin\": !this.hasGroupItems,\n }}\n clickable={true}\n disabled={false}\n dividerType={ListDividerType.ELEMENT}\n role=\"option\"\n tabindex=\"0\"\n aria-selected=\"false\"\n id={`${this.htmlid}_${this.resetItem ? \"0\" : \"none\"}`}\n size={this.listSizeType()}\n onClickItem={() => {\n this.selectedItem = null;\n this.searchString = null;\n this.emitResetSelect();\n }}\n onKeyDown={(e: KeyboardEvent) => this.arrowsSelectNav(e, 0)}\n >\n <div class=\"reset-item-content\">\n <z-icon name=\"multiply-circled\" />\n <span>{this.resetItem}</span>\n </div>\n </z-list-element>\n );\n }\n\n private renderItem(item: SelectItem, key: number, lastItem: boolean): HTMLZListElementElement {\n return (\n <z-list-element\n clickable={!item.disabled}\n disabled={item.disabled}\n dividerType={lastItem ? ListDividerType.HEADER : ListDividerType.ELEMENT}\n role=\"option\"\n tabindex={item.disabled || !this.isOpen ? -1 : 0}\n aria-selected={item.selected ? \"true\" : \"false\"}\n id={`${this.htmlid}_${key}`}\n size={this.listSizeType()}\n onClickItem={() => this.selectItem(item, true)}\n onKeyDown={(e: KeyboardEvent) => this.arrowsSelectNav(e, key)}\n >\n <div class=\"list-element-container\">\n <span\n class={{\n \"selected\": !!item.selected,\n \"list-element-content\": true,\n }}\n innerHTML={item.name}\n />\n\n {item.icon && <z-tag icon={item.icon}></z-tag>}\n </div>\n </z-list-element>\n );\n }\n\n private listSizeType(): ListSize {\n if (this.size === ControlSize.SMALL || this.size === ControlSize.X_SMALL) {\n return ListSize.SMALL;\n }\n\n return ListSize.MEDIUM;\n }\n\n private renderSelectUlItems(): HTMLZListElementElement | HTMLZListElementElement[] {\n if (!this.itemsList.length) {\n return this.renderNoSearchResults();\n }\n\n if (this.hasGroupItems) {\n return this.renderSelectGroupItems();\n }\n\n return this.itemsList.map((item: SelectItem, key, array) => {\n const lastItem = array.length === key + 1;\n const itemKey = this.resetItem ? key + 1 : key;\n\n return this.renderItem(item, itemKey, lastItem);\n });\n }\n\n private renderSelectGroupItems(): HTMLZListElementElement | HTMLZListElementElement[] {\n const newData = this.itemsList.reduce((group, item, index, array) => {\n const {category} = item;\n const lastItem = array.length === index + 1;\n const itemKey = this.resetItem ? index + 1 : index;\n const zListItem = this.renderItem(item, itemKey, lastItem);\n\n group[category] = group[category] ?? [];\n group[category].push(zListItem);\n\n return group;\n }, {});\n\n return Object.entries(newData as {[key: string]: HTMLZListElementElement[]}).map(([key, value]) => {\n return (\n <z-list-group divider-type={ListDividerType.ELEMENT}>\n <span\n class=\"body-3-sb z-list-group-title\"\n slot=\"header-title\"\n >\n {key}\n </span>\n {value.map((item) => item)}\n </z-list-group>\n );\n });\n }\n\n private renderNoSearchResults(): HTMLZListElementElement {\n return (\n <z-list-element\n color=\"blue500\"\n class=\"no-results\"\n size={this.listSizeType()}\n >\n <z-icon\n name=\"multiply-circle\"\n fill=\"blue500\"\n />\n {this.noresultslabel}\n </z-list-element>\n );\n }\n\n private renderMessage(): HTMLZInputMessageElement {\n if (boolean(this.message) === false) {\n return;\n }\n\n return (\n <z-input-message\n message={boolean(this.message) === true ? undefined : (this.message as string)}\n status={this.status}\n class={this.size}\n />\n );\n }\n\n render(): HTMLDivElement {\n return (\n <div class=\"select-wrapper\">\n {this.renderInput()}\n {this.renderSelectUl()}\n {this.renderMessage()}\n </div>\n );\n }\n}\n"]}
|
|
@@ -623,5 +623,76 @@ describe("Suite test ZSelect", () => {
|
|
|
623
623
|
</z-select>
|
|
624
624
|
`);
|
|
625
625
|
});
|
|
626
|
+
it("Test render ZSelect aperta con elementi, elemento con icona", async () => {
|
|
627
|
+
const page = await newSpecPage({
|
|
628
|
+
components: [ZSelect],
|
|
629
|
+
html: `<z-select htmlid="checkid" placeholder="select here" label="default" items='[{"id":"item_0","name":"item 0","selected":false,"icon":"teacher"},{"id":"item_1","name":"item 1","selected":false}]'> </z-select>`,
|
|
630
|
+
});
|
|
631
|
+
page.rootInstance.isOpen = true;
|
|
632
|
+
await page.waitForChanges();
|
|
633
|
+
expect(page.root).toEqualHtml(`
|
|
634
|
+
<z-select htmlid="checkid" placeholder="select here" label="default" items='[{"id":"item_0","name":"item 0","selected":false,"icon":"teacher"},{"id":"item_1","name":"item 1","selected":false}]'>
|
|
635
|
+
<div class="select-wrapper">
|
|
636
|
+
<z-input
|
|
637
|
+
class="cursor-select active-select"
|
|
638
|
+
label="default"
|
|
639
|
+
id="checkid_input"
|
|
640
|
+
htmlid="checkid_select_input"
|
|
641
|
+
placeholder="select here"
|
|
642
|
+
icon="caret-up"
|
|
643
|
+
readonly=""
|
|
644
|
+
aria-label=""
|
|
645
|
+
aria-autocomplete="none"
|
|
646
|
+
aria-expanded="true"
|
|
647
|
+
aria-controls="checkid_list"
|
|
648
|
+
role="combobox"
|
|
649
|
+
size="big"
|
|
650
|
+
></z-input>
|
|
651
|
+
<div class="open" tabindex="-1">
|
|
652
|
+
<div class="ul-scroll-wrapper" tabindex="-1">
|
|
653
|
+
<z-list
|
|
654
|
+
role="listbox"
|
|
655
|
+
aria-label="default"
|
|
656
|
+
tabindex="0"
|
|
657
|
+
id="checkid_list"
|
|
658
|
+
size="medium"
|
|
659
|
+
>
|
|
660
|
+
<z-list-element
|
|
661
|
+
clickable=""
|
|
662
|
+
aria-selected="false"
|
|
663
|
+
dividertype="element"
|
|
664
|
+
role="option"
|
|
665
|
+
tabindex="0"
|
|
666
|
+
class=""
|
|
667
|
+
id="checkid_0"
|
|
668
|
+
size="medium"
|
|
669
|
+
>
|
|
670
|
+
<div class="list-element-container">
|
|
671
|
+
<span class="list-element-content">item 0</span>
|
|
672
|
+
<z-tag icon="teacher"></z-tag>
|
|
673
|
+
</div>
|
|
674
|
+
</z-list-element>
|
|
675
|
+
<z-list-element
|
|
676
|
+
clickable=""
|
|
677
|
+
aria-selected="false"
|
|
678
|
+
dividertype="header"
|
|
679
|
+
role="option"
|
|
680
|
+
tabindex="0"
|
|
681
|
+
class=""
|
|
682
|
+
id="checkid_1"
|
|
683
|
+
size="medium"
|
|
684
|
+
>
|
|
685
|
+
<div class="list-element-container">
|
|
686
|
+
<span class="list-element-content">item 1</span>
|
|
687
|
+
</div>
|
|
688
|
+
</z-list-element>
|
|
689
|
+
</z-list>
|
|
690
|
+
</div>
|
|
691
|
+
</div>
|
|
692
|
+
<z-input-message class="big"></z-input-message>
|
|
693
|
+
</div>
|
|
694
|
+
</z-select>
|
|
695
|
+
`);
|
|
696
|
+
});
|
|
626
697
|
});
|
|
627
698
|
//# sourceMappingURL=index.spec.js.map
|