@zanichelli/zanichelli-it-frontend-kit 0.1.2 → 0.1.3

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.
Files changed (107) hide show
  1. package/dist/types/components/menubar/menu/menu.d.ts +2 -2
  2. package/dist/types/components/menubar/menubar.d.ts +4 -1
  3. package/dist/types/components/menubar/mobile-menubar/mobile-menubar.d.ts +4 -3
  4. package/dist/types/components.d.ts +8 -8
  5. package/dist/zanichelli-it-frontend-kit/index-BQ_orCyU.js +4170 -0
  6. package/dist/zanichelli-it-frontend-kit/index-BQ_orCyU.js.map +1 -0
  7. package/dist/zanichelli-it-frontend-kit/index.esm.js +10 -0
  8. package/dist/zanichelli-it-frontend-kit/index.esm.js.map +1 -1
  9. package/dist/zanichelli-it-frontend-kit/menu-Cd2leC2L.js +46 -0
  10. package/dist/zanichelli-it-frontend-kit/menu-Cd2leC2L.js.map +1 -0
  11. package/dist/{collection/utils/utils.js → zanichelli-it-frontend-kit/utils-CaxAWyZI.js} +7 -3
  12. package/dist/zanichelli-it-frontend-kit/utils-CaxAWyZI.js.map +1 -0
  13. package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.css +993 -1
  14. package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.esm.js +49 -1
  15. package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.esm.js.map +1 -1
  16. package/dist/zanichelli-it-frontend-kit/zanit-menubar.entry.esm.js.map +1 -0
  17. package/dist/{components/zanit-menubar.js → zanichelli-it-frontend-kit/zanit-menubar.entry.js} +36 -60
  18. package/dist/zanichelli-it-frontend-kit/zanit-menubar.entry.js.map +1 -0
  19. package/dist/zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.esm.js.map +1 -0
  20. package/dist/{components/p-CWNmI_TK.js → zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.js} +31 -96
  21. package/dist/zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.js.map +1 -0
  22. package/dist/zanichelli-it-frontend-kit/zanit-search-form.entry.esm.js.map +1 -0
  23. package/dist/{components/p-Cphl7FvH.js → zanichelli-it-frontend-kit/zanit-search-form.entry.js} +13 -53
  24. package/dist/zanichelli-it-frontend-kit/zanit-search-form.entry.js.map +1 -0
  25. package/package.json +1 -1
  26. package/www/build/index-BQ_orCyU.js +4170 -0
  27. package/www/build/index-BQ_orCyU.js.map +1 -0
  28. package/www/build/index.esm.js +10 -0
  29. package/www/build/index.esm.js.map +1 -1
  30. package/www/build/menu-Cd2leC2L.js +46 -0
  31. package/www/build/menu-Cd2leC2L.js.map +1 -0
  32. package/www/build/utils-CaxAWyZI.js +21 -0
  33. package/www/build/utils-CaxAWyZI.js.map +1 -0
  34. package/www/build/zanichelli-it-frontend-kit.css +993 -1
  35. package/www/build/zanichelli-it-frontend-kit.esm.js +49 -1
  36. package/www/build/zanichelli-it-frontend-kit.esm.js.map +1 -1
  37. package/www/build/zanit-menubar.entry.esm.js.map +1 -0
  38. package/{dist/collection/components/menubar/menubar.js → www/build/zanit-menubar.entry.js} +46 -177
  39. package/www/build/zanit-menubar.entry.js.map +1 -0
  40. package/www/build/zanit-mobile-menubar.entry.esm.js.map +1 -0
  41. package/www/build/zanit-mobile-menubar.entry.js +159 -0
  42. package/www/build/zanit-mobile-menubar.entry.js.map +1 -0
  43. package/www/build/zanit-search-form.entry.esm.js.map +1 -0
  44. package/{dist/collection/components/menubar/search-form/search-form.js → www/build/zanit-search-form.entry.js} +23 -101
  45. package/www/build/zanit-search-form.entry.js.map +1 -0
  46. package/www/index.html +185 -37
  47. package/dist/cjs/index-C45Wd3rZ.js +0 -1535
  48. package/dist/cjs/index-C45Wd3rZ.js.map +0 -1
  49. package/dist/cjs/index.cjs.js +0 -5
  50. package/dist/cjs/index.cjs.js.map +0 -1
  51. package/dist/cjs/loader.cjs.js +0 -15
  52. package/dist/cjs/loader.cjs.js.map +0 -1
  53. package/dist/cjs/zanichelli-it-frontend-kit.cjs.js +0 -27
  54. package/dist/cjs/zanichelli-it-frontend-kit.cjs.js.map +0 -1
  55. package/dist/cjs/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.cjs.js.map +0 -1
  56. package/dist/cjs/zanit-menubar_3.cjs.entry.js +0 -648
  57. package/dist/cjs/zanit-menubar_3.cjs.entry.js.map +0 -1
  58. package/dist/collection/collection-manifest.json +0 -14
  59. package/dist/collection/components/menubar/menu/menu.css +0 -98
  60. package/dist/collection/components/menubar/menu/menu.js +0 -34
  61. package/dist/collection/components/menubar/menu/menu.js.map +0 -1
  62. package/dist/collection/components/menubar/menubar.css +0 -171
  63. package/dist/collection/components/menubar/menubar.js.map +0 -1
  64. package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.css +0 -114
  65. package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.js +0 -280
  66. package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.js.map +0 -1
  67. package/dist/collection/components/menubar/search-form/search-form.css +0 -147
  68. package/dist/collection/components/menubar/search-form/search-form.js.map +0 -1
  69. package/dist/collection/index.js +0 -11
  70. package/dist/collection/index.js.map +0 -1
  71. package/dist/collection/utils/types.js +0 -2
  72. package/dist/collection/utils/types.js.map +0 -1
  73. package/dist/collection/utils/utils.js.map +0 -1
  74. package/dist/components/index.js +0 -1293
  75. package/dist/components/index.js.map +0 -1
  76. package/dist/components/p-CWNmI_TK.js.map +0 -1
  77. package/dist/components/p-Cphl7FvH.js.map +0 -1
  78. package/dist/components/zanit-menubar.js.map +0 -1
  79. package/dist/components/zanit-mobile-menubar.js +0 -9
  80. package/dist/components/zanit-mobile-menubar.js.map +0 -1
  81. package/dist/components/zanit-search-form.js +0 -9
  82. package/dist/components/zanit-search-form.js.map +0 -1
  83. package/dist/esm/index-BGwuI2U_.js +0 -1507
  84. package/dist/esm/index-BGwuI2U_.js.map +0 -1
  85. package/dist/esm/index.js +0 -4
  86. package/dist/esm/index.js.map +0 -1
  87. package/dist/esm/loader.js +0 -13
  88. package/dist/esm/loader.js.map +0 -1
  89. package/dist/esm/zanichelli-it-frontend-kit.js +0 -23
  90. package/dist/esm/zanichelli-it-frontend-kit.js.map +0 -1
  91. package/dist/esm/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.js.map +0 -1
  92. package/dist/esm/zanit-menubar_3.entry.js +0 -644
  93. package/dist/esm/zanit-menubar_3.entry.js.map +0 -1
  94. package/dist/index.cjs.js +0 -1
  95. package/dist/index.js +0 -1
  96. package/dist/zanichelli-it-frontend-kit/p-BGwuI2U_.js +0 -3
  97. package/dist/zanichelli-it-frontend-kit/p-BGwuI2U_.js.map +0 -1
  98. package/dist/zanichelli-it-frontend-kit/p-b064a657.entry.js +0 -2
  99. package/dist/zanichelli-it-frontend-kit/p-b064a657.entry.js.map +0 -1
  100. package/dist/zanichelli-it-frontend-kit/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.esm.js.map +0 -1
  101. package/www/build/p-984b8fa6.css +0 -1
  102. package/www/build/p-BGwuI2U_.js +0 -3
  103. package/www/build/p-BGwuI2U_.js.map +0 -1
  104. package/www/build/p-b064a657.entry.js +0 -2
  105. package/www/build/p-b064a657.entry.js.map +0 -1
  106. package/www/build/p-ff7fd122.js +0 -2
  107. package/www/build/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.esm.js.map +0 -1
@@ -1,644 +0,0 @@
1
- import { h, r as registerInstance, a as getElement, F as Fragment, c as createEvent } from './index-BGwuI2U_.js';
2
-
3
- /**
4
- * Check if an element contains an event target by checking its composedPath.
5
- * Useful when an event target may come from a component's shadow DOM.
6
- */
7
- const containsTarget = (ancestor, event) => {
8
- return event
9
- .composedPath()
10
- .filter((el) => el !== document && el !== window.window)
11
- .some((el) => ancestor.contains(el));
12
- };
13
- /** Move the focus to `next` element, set tabindex to 0 for `next` and -1 to `current`. */
14
- const moveFocus = (current, next) => {
15
- current.tabIndex = -1;
16
- next.tabIndex = 0;
17
- next.focus();
18
- };
19
-
20
- const DEFAULT_GROUP_KEY = 'default';
21
- const DEFAULT_GROUP = {
22
- id: DEFAULT_GROUP_KEY,
23
- label: DEFAULT_GROUP_KEY,
24
- };
25
- /** Get the items grouped by their group. */
26
- const getGroupedItems = (items) => {
27
- const groups = items.reduce((grouped, item) => {
28
- const itemGroup = grouped.find(({ group }) => group.id === (item.group?.id || DEFAULT_GROUP.id));
29
- if (!itemGroup) {
30
- grouped.push({ group: item.group ?? DEFAULT_GROUP, items: [item] });
31
- }
32
- else {
33
- itemGroup.items.push(item);
34
- }
35
- return grouped;
36
- }, []);
37
- // Sort to keep default group at the end
38
- return groups.sort((a, b) => (a.group.id === DEFAULT_GROUP_KEY ? 1 : b.group.id === DEFAULT_GROUP_KEY ? -1 : 0));
39
- };
40
- /**
41
- * Floating menu component. It shows a list of items that can be grouped.
42
- */
43
- const Menu = ({ controlledBy, items, current, onItemKeyDown }) => {
44
- if (!items?.length) {
45
- return null;
46
- }
47
- const groups = getGroupedItems(items);
48
- return (h("div", { class: "menu-wrapper", role: "none" },
49
- h("div", { class: "menu", "aria-labelledby": controlledBy ?? undefined, role: "menu" }, groups.map(({ group, items }) => (h("div", { class: { group: true, highlight: items.some((item) => item.highlight) } },
50
- group.id !== DEFAULT_GROUP_KEY ? (h("div", { class: "group-name", id: group.id }, group.label)) : groups.length > 1 ? (
51
- // empty div to keep the same height as the other groups
52
- h("div", { class: "group-name" })) : null,
53
- h("ul", { class: "menu-list", role: "group", "aria-labelledby": group.id !== DEFAULT_GROUP_KEY ? group.id : undefined }, items.map((item) => (h("li", { role: "none" }, item.href && (h("a", { class: { 'menu-item': true, 'active': current === item.id }, href: item.href, role: "menuitem", tabIndex: -1, "aria-current": current === item.id ? 'page' : 'false', onKeyDown: (event) => onItemKeyDown(event) }, item.label))))))))))));
54
- };
55
-
56
- const menubarCss = ":host{position:relative;z-index:2;display:flex;width:100%;background-color:#fff;color:var(--gray900);font-family:var(--font-family-sans)}:host,*,::before,::after{box-sizing:border-box}*:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}ul{padding:0;margin:0;list-style:none}a{color:var(--gray900);cursor:pointer;text-decoration:none}button{all:unset;cursor:pointer}:host nav{width:100%}.shadow-wrapper{position:relative;z-index:1;display:flex;width:100%}.shadow-wrapper::after{position:absolute;top:0;right:0;width:100%;height:100%;background:transparent;box-shadow:var(--shadow-1);content:'';pointer-events:none}.width-limiter{position:relative;display:flex;width:100%;max-width:var(--zanit-menubar-max-width, 1366px);margin:0 auto}.shadow-wrapper+.shadow-wrapper{z-index:0}.sub-menubar>ul{gap:28px}.width-limiter>ul,.sub-menubar>ul{position:relative;display:flex;width:100%;align-items:center;padding:0 var(--grid-margin);margin-right:auto;margin-left:auto;gap:20px}.shadow-wrapper>.width-limiter,.shadow-wrapper>ul{width:100%;max-width:var(--zanit-menubar-max-width, 1366px)}ul.menubar{padding-right:0}.menubar z-ghost-loading{display:block;width:120px;height:1.25rem}.menubar>li[role='separator']{width:1px;height:1.25rem;background-color:#000}.menubar-item{position:relative;display:flex;align-items:center;padding:14px 0;font-size:1rem;gap:8px;line-height:1.25rem}.menubar .menubar-item{text-transform:uppercase}.menubar-item [data-text]{display:flex;flex-direction:column}.menubar-item.active>[data-text],.menubar-item:hover>[data-text],.menubar-item:focus:focus-visible>[data-text]{font-weight:var(--font-bd)}.menubar-item>[data-text]::after{height:0;content:attr(data-text) / '';font-weight:var(--font-bd);letter-spacing:normal;pointer-events:none;user-select:none;visibility:hidden}.sub-menubar:not(.visible){display:none}.sub-menubar .menubar-item.active::after{position:absolute;z-index:-1;bottom:0;left:-4px;width:calc(100% + 8px);height:4px;background-color:var(--red500);content:''}zanit-search-form{margin-left:auto}";
57
-
58
- const menuCss$1 = ".menu-wrapper{width:100%;background-color:#fff}.menu{position:relative;display:flex;width:100%;flex-direction:column;gap:32px 0}.menu .group{display:flex;flex-direction:column}.menu .group .group-name{border-bottom:1px solid currentcolor;margin-bottom:4px;color:var(--red500);font-size:0.875rem;font-weight:var(--font-rg)}.menu .group .menu-list{display:flex;flex-direction:column;gap:4px}.menu .group .menu-list .menu-item{border-bottom:2px solid transparent;font-size:0.875rem;font-weight:var(--font-md)}.menu .menu-list .menu-item.active,.menu .menu-list .menu-item:hover{border-bottom-color:var(--red500)}.menu .group.highlight .menu-list .menu-item{font-size:1rem}@media (width >= 768px){.menu-wrapper{position:absolute;top:100%;left:0;display:flex;justify-content:center;box-shadow:var(--shadow-1)}.menu{display:grid;width:100%;max-width:var(--zanit-menubar-max-width, 1366px);padding:16px var(--grid-margin);gap:0 24px;grid-auto-columns:minmax(0, max-content);grid-auto-flow:column;grid-template-rows:minmax(0, max-content) max-content}.menu .group{display:grid;grid-row:1 / -1;grid-template-columns:1fr;grid-template-rows:subgrid}@supports not (grid-template-rows: subgrid){.menu .group{grid-template-rows:repeat(auto-fit, minmax(0, max-content))}}.menu .group .group-name{border:none;margin-bottom:16px}.menu .group .menu-list .menu-item{font-size:1rem}.menu .group.highlight .menu-list .menu-item{font-size:1.5rem}.menu .group.highlight .menu-list{gap:24px}}";
59
-
60
- const ZanitMenubar = class {
61
- constructor(hostRef) {
62
- registerInstance(this, hostRef);
63
- }
64
- get host() { return getElement(this); }
65
- /** Menubar items extracted from `data`. */
66
- items = [];
67
- /** ID of the currently open menu. */
68
- openMenu = undefined;
69
- /** ID of the item to show the subitems navbar for. */
70
- openNavbar = undefined;
71
- isMobile = false;
72
- loading = false;
73
- /** The data to build the menu (as an array of `MenubarItem` or a JSON array) or the url to fetch to retrieve it. */
74
- data;
75
- /** ID of the current active item. */
76
- current = undefined;
77
- /**
78
- * Delay in milliseconds before closing the menu after a mouseout event.
79
- * Useful to avoid immediate closing when the pointer briefly leaves the component.
80
- */
81
- mouseOutTimeout = 1000;
82
- /** Initial search query. */
83
- searchQuery = undefined;
84
- timerId;
85
- /** Setup the list of items. */
86
- async parseData(data) {
87
- if (!data) {
88
- return;
89
- }
90
- if (data instanceof URL) {
91
- this.items = await this.fetchData(data);
92
- }
93
- else if (data instanceof Promise) {
94
- this.loading = true;
95
- this.items = await data;
96
- this.loading = false;
97
- }
98
- else if (typeof data === 'string') {
99
- try {
100
- this.items = JSON.parse(data);
101
- if (!Array.isArray(this.items) || !this.items?.every((item) => item)) {
102
- throw new Error('Expected an array of MenubarItem objects.');
103
- }
104
- }
105
- catch {
106
- let url;
107
- try {
108
- url = new URL(data);
109
- }
110
- catch {
111
- throw new Error('Invalid string provided for `data` property: not a valid url or JSON.');
112
- }
113
- this.items = await this.fetchData(url);
114
- }
115
- }
116
- else if (Array.isArray(data) && data.every((item) => item)) {
117
- this.items = data;
118
- }
119
- else {
120
- throw new Error('Invalid `data` property value. Expected an url, a JSON or an array/promise of MenubarItem objects.');
121
- }
122
- }
123
- onItemsChange() {
124
- this.initTabindex();
125
- }
126
- async connectedCallback() {
127
- const mobileMediaQuery = window.matchMedia('(width < 768px)');
128
- this.isMobile = mobileMediaQuery.matches;
129
- mobileMediaQuery.onchange = (mql) => {
130
- this.isMobile = mql.matches;
131
- this.initTabindex();
132
- this.openMenu = undefined;
133
- };
134
- await this.parseData(this.data);
135
- this.initTabindex();
136
- }
137
- /** Close any open menu when clicking outside. */
138
- handleOutsideClick(event) {
139
- if (!this.openMenu || containsTarget(this.host, event)) {
140
- return;
141
- }
142
- this.openMenu = undefined;
143
- }
144
- /** Close any open menu when pressing Escape or Tab. */
145
- handleKeydown(event) {
146
- switch (event.key) {
147
- case 'Escape':
148
- case 'Tab':
149
- this.openMenu = undefined;
150
- break;
151
- }
152
- }
153
- handleMouseover() {
154
- clearTimeout(this.timerId);
155
- }
156
- handleMouseout(event) {
157
- this.timerId = window.setTimeout(() => {
158
- if (!this.openMenu || containsTarget(this.host, event)) {
159
- return;
160
- }
161
- this.openMenu = undefined;
162
- }, this.mouseOutTimeout);
163
- }
164
- /** Close the menu when it loses focus. */
165
- handleFocusout(event) {
166
- const relatedTarget = event.relatedTarget;
167
- if (!this.openMenu || this.host.shadowRoot.querySelector('.menu')?.contains(relatedTarget)) {
168
- return;
169
- }
170
- this.openMenu = undefined;
171
- }
172
- /** Fetch data from passed URL. */
173
- async fetchData(url) {
174
- try {
175
- this.loading = true;
176
- const data = await (await fetch(url)).json();
177
- this.loading = false;
178
- if (!Array.isArray(data) || !data.every((item) => item)) {
179
- throw new Error('Invalid data structure. Expected an array of MenuItem objects.');
180
- }
181
- return data;
182
- }
183
- catch (error) {
184
- this.loading = false;
185
- console.error('Error fetching menubar data:', error);
186
- throw new Error('Failed to fetch menubar data from the provided URL.', { cause: error });
187
- }
188
- }
189
- /** Initialize tabindex on menuitems of menubars, setting -1 to all but the first one. */
190
- initTabindex() {
191
- setTimeout(() => {
192
- this.host.shadowRoot.querySelectorAll('[role="menubar"]')?.forEach((menubar) => {
193
- menubar
194
- .querySelectorAll('[role="menuitem"]')
195
- ?.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'));
196
- });
197
- }, 100);
198
- }
199
- /** Indicates whether the element has to be highlighted by checking whether it is set as current or one of its descendants is. */
200
- isActive(item) {
201
- if (item.id === this.current) {
202
- return true;
203
- }
204
- if (item.menuItems?.length) {
205
- return item.menuItems.some((menuItem) => menuItem.id === this.current);
206
- }
207
- if (item.navbarItems?.length) {
208
- const isActive = item.navbarItems.some((navbarItem) => this.isActive(navbarItem));
209
- if (isActive) {
210
- return true;
211
- }
212
- }
213
- return false;
214
- }
215
- /** Opens the menu associated with the menubar `item`, if any. */
216
- showMenu(item) {
217
- if (!item.menuItems?.length) {
218
- return;
219
- }
220
- this.openMenu = item.id;
221
- }
222
- /** Get all elements with `menuitem` role inside parent's `menubar`. * */
223
- getParentMenubarElements(itemEl) {
224
- return Array.from(itemEl?.closest('[role="menubar"]')?.querySelectorAll(':scope > li a[role="menuitem"]') ?? []);
225
- }
226
- /** Move the focus to the previous menubar item, or the last one. Then open its menu if any other menu was open. */
227
- focusPreviousItem(itemEl) {
228
- const menubarElements = this.getParentMenubarElements(itemEl);
229
- itemEl.tabIndex = -1;
230
- const currentIndex = menubarElements.indexOf(itemEl);
231
- const prevItem = menubarElements[(currentIndex - 1 + menubarElements.length) % menubarElements.length]; // get previous item or last one
232
- prevItem.tabIndex = 0;
233
- prevItem.focus();
234
- // open the item's menu if any other menu was open
235
- if (prevItem.ariaHasPopup === 'true' && this.openMenu) {
236
- this.openMenu = prevItem.id;
237
- }
238
- }
239
- /** Move the focus to the next menubar item, or the first one. Then open its menu if any other menu was open. */
240
- focusNextItem(itemEl) {
241
- const menubarElements = this.getParentMenubarElements(itemEl);
242
- itemEl.tabIndex = -1;
243
- const currentIndex = menubarElements.indexOf(itemEl);
244
- const nextItem = menubarElements[(currentIndex + 1) % menubarElements.length]; // get next item or first one
245
- nextItem.tabIndex = 0;
246
- nextItem.focus();
247
- // open the item's menu if any other menu was open
248
- if (nextItem.ariaHasPopup === 'true' && this.openMenu) {
249
- this.openMenu = nextItem.id;
250
- }
251
- }
252
- /** Handles keyboard navigation on menubar items. */
253
- handleItemKeydown(event, item) {
254
- const target = event.target;
255
- switch (event.key) {
256
- case 'Home': {
257
- event.preventDefault();
258
- event.stopPropagation();
259
- const firstItem = this.getParentMenubarElements(target)[0];
260
- moveFocus(target, firstItem);
261
- break;
262
- }
263
- case 'End': {
264
- event.preventDefault();
265
- event.stopPropagation();
266
- const lastItem = this.getParentMenubarElements(target).pop();
267
- moveFocus(target, lastItem);
268
- break;
269
- }
270
- case 'ArrowUp': {
271
- if (!item.menuItems?.length) {
272
- break;
273
- }
274
- event.preventDefault();
275
- event.stopPropagation();
276
- this.openMenu = item.id;
277
- // focus last item of the menu
278
- setTimeout(() => {
279
- const menuItems = Array.from(this.host.shadowRoot.querySelectorAll(`[aria-labelledby=${item.id}] [role="menuitem"]`));
280
- moveFocus(target, menuItems[menuItems.length - 1]);
281
- }, 100);
282
- break;
283
- }
284
- case 'ArrowRight': {
285
- event.preventDefault();
286
- event.stopPropagation();
287
- this.focusNextItem(target);
288
- break;
289
- }
290
- case 'ArrowDown': {
291
- if (!item.menuItems?.length) {
292
- break;
293
- }
294
- this.openMenu = item.id;
295
- setTimeout(() => {
296
- // focus first item of the menu
297
- const firsMenuItem = this.host.shadowRoot.querySelector(`[aria-labelledby=${item.id}] [role="menuitem"]`);
298
- firsMenuItem.tabIndex = 0;
299
- firsMenuItem.focus();
300
- }, 100);
301
- break;
302
- }
303
- case 'ArrowLeft': {
304
- event.preventDefault();
305
- event.stopPropagation();
306
- this.focusPreviousItem(target);
307
- break;
308
- }
309
- }
310
- }
311
- /** Get the previous element with `role=group`. */
312
- getPreviousGroup(groupContainer) {
313
- const groups = Array.from(groupContainer?.closest('[role="menu"]')?.querySelectorAll('[role="group"]') ?? []);
314
- const currentIndex = groups.indexOf(groupContainer);
315
- return groups[currentIndex - 1];
316
- }
317
- /** Get the next element with `role=group`. */
318
- getNextGroup(groupContainer) {
319
- const groups = Array.from(groupContainer?.closest('[role="menu"]')?.querySelectorAll('[role="group"]') ?? []);
320
- const currentIndex = groups.indexOf(groupContainer);
321
- return groups[currentIndex + 1];
322
- }
323
- /** Handles keyboard navigation events from `Menu` component. */
324
- handleMenuKeydown(event) {
325
- const itemElement = event.target;
326
- const items = Array.from(itemElement.closest('[role="menu"]')?.querySelectorAll('[role="menuitem"]') ?? []);
327
- const currentIndex = items.indexOf(itemElement);
328
- switch (event.key) {
329
- case 'ArrowUp': {
330
- event.preventDefault();
331
- event.stopPropagation();
332
- const prevItem = items[currentIndex - 1] || items[items.length - 1];
333
- moveFocus(itemElement, prevItem);
334
- break;
335
- }
336
- // Move the focus to the first item of the next group if any, otherwise move it to the next menubar item
337
- case 'ArrowRight': {
338
- event.preventDefault();
339
- event.stopPropagation();
340
- const currentGroup = itemElement.closest('[role=group]');
341
- const nextGroup = this.getNextGroup(currentGroup);
342
- if (!nextGroup) {
343
- itemElement.tabIndex = -1;
344
- const menuTriggerId = itemElement.closest('[role="menu"][aria-labelledby]').getAttribute('aria-labelledby');
345
- const focusedItem = this.host.shadowRoot.getElementById(menuTriggerId);
346
- this.focusNextItem(focusedItem);
347
- break;
348
- }
349
- const nextGroupItems = (nextGroup.querySelectorAll('[role="menuitem"]') ?? []);
350
- moveFocus(itemElement, nextGroupItems[0]);
351
- break;
352
- }
353
- case 'ArrowDown': {
354
- event.preventDefault();
355
- event.stopPropagation();
356
- const nextItem = items[currentIndex + 1] || items[0];
357
- moveFocus(itemElement, nextItem);
358
- break;
359
- }
360
- // Move the focus to the first item of the previous group if any, otherwise move it to the previous menubar item
361
- case 'ArrowLeft': {
362
- event.preventDefault();
363
- event.stopPropagation();
364
- const currentGroup = itemElement.closest('[role=group]');
365
- const prevGroup = this.getPreviousGroup(currentGroup);
366
- if (!prevGroup) {
367
- itemElement.tabIndex = -1;
368
- const menuTriggerId = itemElement.closest('[role="menu"][aria-labelledby]').getAttribute('aria-labelledby');
369
- const focusedItem = this.host.shadowRoot.getElementById(menuTriggerId);
370
- this.focusPreviousItem(focusedItem);
371
- break;
372
- }
373
- const prevGroupItems = (prevGroup.querySelectorAll('[role="menuitem"]') ?? []);
374
- moveFocus(itemElement, prevGroupItems[0]);
375
- break;
376
- }
377
- case 'Home':
378
- // Move to the first menu item
379
- event.preventDefault();
380
- event.stopPropagation();
381
- moveFocus(itemElement, items[0]);
382
- break;
383
- case 'End':
384
- // Move to the last menu item
385
- event.preventDefault();
386
- event.stopPropagation();
387
- moveFocus(itemElement, items[items.length - 1]);
388
- break;
389
- }
390
- }
391
- render() {
392
- if (this.isMobile) {
393
- return (h("zanit-mobile-menubar", { items: this.items, current: this.current, searchQuery: this.searchQuery, loading: this.loading }));
394
- }
395
- return (h("nav", { "aria-label": "Zanichelli.it" }, h("div", { class: "shadow-wrapper" }, h("div", { class: "width-limiter" }, h("ul", { class: "menubar", role: "menubar", "aria-label": "Zanichelli.it" }, this.loading &&
396
- [...new Array(4)].map((_, index) => (h(Fragment, null, h("li", { role: "none" }, h("div", { class: "menubar-item" }, h("z-ghost-loading", null))), index < 3 && h("li", { role: "separator" })))), this.items?.map((item, index) => (h(Fragment, null, h("li", { role: "none" }, h("a", { class: { 'menubar-item': true, 'active': this.isActive(item) }, href: item.href, id: item.id, role: "menuitem", tabIndex: -1, "aria-expanded": item.menuItems?.length ? (this.openMenu === item.id ? 'true' : 'false') : undefined, "aria-haspopup": item.menuItems?.length ? 'true' : 'false', "aria-current": this.current === item.id ? 'page' : 'false', onPointerOver: () => this.showMenu(item), onKeyDown: (event) => this.handleItemKeydown(event, item) }, h("span", { "data-text": item.label }, item.label), item.menuItems?.length > 0 && (h("z-icon", { name: this.openMenu === item.id ? 'chevron-up' : 'chevron-down', width: "0.875rem", height: "0.875rem" })))), index < this.items?.length - 1 && h("li", { role: "separator" }))))), h("zanit-search-form", { searchQuery: this.searchQuery, onResetSearch: () => (this.searchQuery = undefined) })), this.items.map((item) => this.openMenu === item.id && (h(Menu, { controlledBy: item.id, items: item.menuItems, current: this.current, onItemKeyDown: (event) => this.handleMenuKeydown(event) })))), this.items?.map((item) => item.navbarItems?.length && (h("nav", { class: { 'sub-menubar': true, 'shadow-wrapper': true, 'visible': this.isActive(item) } }, h("ul", { role: "menubar" }, item.navbarItems.map((subitem) => (h(Fragment, null, h("li", { role: "none" }, h("a", { class: { 'menubar-item': true, 'active': this.isActive(subitem) }, href: subitem.href, id: subitem.id, role: "menuitem", tabIndex: -1, "aria-haspopup": subitem.menuItems?.length ? 'true' : 'false', "aria-expanded": subitem.menuItems?.length ? (this.openMenu === subitem.id ? 'true' : 'false') : undefined, "aria-current": this.current === item.id ? 'page' : 'false', onPointerOver: () => this.showMenu(subitem), onKeyDown: (event) => this.handleItemKeydown(event, subitem) }, h("span", null, subitem.label), subitem.menuItems?.length > 0 && (h("z-icon", { name: this.openMenu === subitem.id ? 'chevron-up' : 'chevron-down', width: "0.75rem", height: "0.75rem" })))))))), item.navbarItems.map((subitem) => this.openMenu === subitem.id && (h(Menu, { controlledBy: subitem.id, items: subitem.menuItems, current: this.current, onItemKeyDown: (event) => this.handleMenuKeydown(event) }))))))));
397
- }
398
- static get watchers() { return {
399
- "data": ["parseData"],
400
- "items": ["onItemsChange"]
401
- }; }
402
- };
403
- ZanitMenubar.style = menubarCss + menuCss$1;
404
-
405
- const mobileMenubarCss = ":host{position:relative;z-index:2;display:block;width:100%;max-width:100%;background-color:#fff;color:var(--gray900);fill:var(--gray900);font-family:var(--font-family-sans)}:host,*,::before,::after{box-sizing:border-box}*:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}ul{padding:0;margin:0;list-style:none}a{color:var(--gray900);cursor:pointer;text-decoration:none}button{all:unset;cursor:pointer}nav{display:flex;width:100%;align-items:center;padding:8px var(--grid-margin)}nav::after{position:absolute;top:0;right:0;width:100%;height:100%;background:transparent;box-shadow:var(--shadow-1);content:'';pointer-events:none}.burger-button{margin-left:auto}.mobile-menu{position:absolute;top:100%;left:0;display:flex;width:100%;flex-direction:column;padding:16px var(--grid-margin) 32px;background-color:#fff;box-shadow:var(--shadow-2);gap:8px}.mobile-menu li{width:100%}.mobile-menu .items-container{display:flex;min-height:256px;flex-direction:column;gap:8px}.mobile-menu .items-container z-ghost-loading{width:40%;height:1.2rem}.mobile-menu .items-container .menubar-item{display:block;width:100%;padding:8px 0;font-size:1rem;text-align:left}.mobile-menu .items-container li:not(:last-child) .menubar-item{border-bottom:1px solid #000}[role='menuitem'].parent{display:flex;width:fit-content;align-items:center;padding:0;border:none;font-size:0.875rem;gap:8px}";
406
-
407
- const menuCss = ".menu-wrapper{width:100%;background-color:#fff}.menu{position:relative;display:flex;width:100%;flex-direction:column;gap:32px 0}.menu .group{display:flex;flex-direction:column}.menu .group .group-name{border-bottom:1px solid currentcolor;margin-bottom:4px;color:var(--red500);font-size:0.875rem;font-weight:var(--font-rg)}.menu .group .menu-list{display:flex;flex-direction:column;gap:4px}.menu .group .menu-list .menu-item{border-bottom:2px solid transparent;font-size:0.875rem;font-weight:var(--font-md)}.menu .menu-list .menu-item.active,.menu .menu-list .menu-item:hover{border-bottom-color:var(--red500)}.menu .group.highlight .menu-list .menu-item{font-size:1rem}@media (width >= 768px){.menu-wrapper{position:absolute;top:100%;left:0;display:flex;justify-content:center;box-shadow:var(--shadow-1)}.menu{display:grid;width:100%;max-width:var(--zanit-menubar-max-width, 1366px);padding:16px var(--grid-margin);gap:0 24px;grid-auto-columns:minmax(0, max-content);grid-auto-flow:column;grid-template-rows:minmax(0, max-content) max-content}.menu .group{display:grid;grid-row:1 / -1;grid-template-columns:1fr;grid-template-rows:subgrid}@supports not (grid-template-rows: subgrid){.menu .group{grid-template-rows:repeat(auto-fit, minmax(0, max-content))}}.menu .group .group-name{border:none;margin-bottom:16px}.menu .group .menu-list .menu-item{font-size:1rem}.menu .group.highlight .menu-list .menu-item{font-size:1.5rem}.menu .group.highlight .menu-list{gap:24px}}";
408
-
409
- const ZanitMobileMenubar = class {
410
- constructor(hostRef) {
411
- registerInstance(this, hostRef);
412
- }
413
- get host() { return getElement(this); }
414
- /** ID of the current active item. */
415
- current = undefined;
416
- /** Menubar items. */
417
- items = [];
418
- /** Initial search query. */
419
- searchQuery = undefined;
420
- /** Whether the menubar is loading the data. */
421
- loading = false;
422
- parentItem = undefined;
423
- menuItems = undefined;
424
- /** Whether the items to render come from a menubar or a menu. */
425
- menuType = undefined;
426
- open;
427
- onItemsChange() {
428
- this.setupData(this.items);
429
- }
430
- /**
431
- * Find the current item and take its parent, `menuItems` or the `navbarItems`.
432
- * @returns True if an item matches the `current` prop, false otherwise.
433
- */
434
- setupData(items, parent) {
435
- for (const item of items) {
436
- if (item.id === this.current) {
437
- const type = item.menuItems?.length ? 'menu' : 'menubar';
438
- this.parentItem = parent;
439
- this.menuType = type;
440
- this.menuItems = item.menuItems || item.navbarItems;
441
- return true;
442
- }
443
- if (item.menuItems?.some(({ id }) => id === this.current)) {
444
- this.parentItem = parent;
445
- this.menuType = 'menu';
446
- this.menuItems = item.menuItems;
447
- return true;
448
- }
449
- if (item.navbarItems?.length) {
450
- return this.setupData(item.navbarItems, item);
451
- }
452
- }
453
- return false;
454
- }
455
- get menuItemsElement() {
456
- return Array.from(this.host.shadowRoot.querySelectorAll('[role="menuitem"]'));
457
- }
458
- /** Initialize tabindex on menuitems, setting -1 to all but the first one. */
459
- initTabindex() {
460
- this.menuItemsElement.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'));
461
- }
462
- toggleMenu() {
463
- if (this.open) {
464
- this.open = false;
465
- }
466
- else {
467
- this.open = true;
468
- setTimeout(() => {
469
- this.initTabindex();
470
- this.menuItemsElement[0]?.focus();
471
- }, 200);
472
- }
473
- }
474
- /** Handles keyboard navigation on mobile menu. */
475
- handleItemKeydown(event) {
476
- switch (event.key) {
477
- case 'ArrowUp': {
478
- event.preventDefault();
479
- event.stopPropagation();
480
- const items = this.menuItemsElement;
481
- const currentIndex = items.indexOf(event.target);
482
- const prevItem = items[(currentIndex - 1 + items.length) % items.length];
483
- moveFocus(items[currentIndex], prevItem);
484
- break;
485
- }
486
- case 'ArrowDown': {
487
- event.preventDefault();
488
- event.stopPropagation();
489
- const items = this.menuItemsElement;
490
- const currentIndex = items.indexOf(event.target);
491
- const nextItem = items[(currentIndex + 1) % items.length];
492
- moveFocus(items[currentIndex], nextItem);
493
- break;
494
- }
495
- case 'Home': {
496
- event.preventDefault();
497
- event.stopPropagation();
498
- moveFocus(event.target, this.menuItemsElement[0]);
499
- break;
500
- }
501
- case 'End': {
502
- event.preventDefault();
503
- event.stopPropagation();
504
- moveFocus(event.target, this.menuItemsElement.pop());
505
- break;
506
- }
507
- }
508
- }
509
- connectedCallback() {
510
- this.setupData(this.items);
511
- }
512
- /** Close the menu when clicking outside. */
513
- handleOutsideClick(event) {
514
- if (containsTarget(this.host, event)) {
515
- return;
516
- }
517
- this.open = false;
518
- }
519
- /** Close the menu when pressing Escape or Tab. */
520
- handleKeydown(event) {
521
- switch (event.key) {
522
- case 'Escape':
523
- this.open = false;
524
- break;
525
- case 'Tab':
526
- if (containsTarget(this.host, event)) {
527
- break;
528
- }
529
- this.open = false;
530
- break;
531
- }
532
- }
533
- /** Close the menu when the focus goes out. */
534
- handleFocusout(event) {
535
- if (containsTarget(this.host, event)) {
536
- return;
537
- }
538
- this.open = false;
539
- }
540
- render() {
541
- return (h("nav", { key: 'df6d04c4bb8343ec62fe69df3f01f6f47b4367cf', "aria-label": "Zanichelli.it" }, h("z-logo", { key: '3403d6548e16d131c4ce81c624e761e523b65562', imageAlt: "Logo Zanichelli", link: "/", height: 32, width: 126 }), h("button", { key: '198db21866d9a2b86e9094ae0d6d84c48953f3a6', class: "burger-button", type: "button", "aria-expanded": this.open ? 'true' : 'false', "aria-controls": "mobile-menu", "aria-label": this.open ? 'Chiudi menù' : 'Apri menù', onClick: () => this.toggleMenu() }, h("z-icon", { key: '549b5327194978ee9b23fb8a2839d73d06bfd6f8', name: this.open ? 'multiply' : 'burger-menu', width: "1.5rem", height: "1.5rem" })), this.open && (h("ul", { key: '27933ec0651b98039598a5e1d26d144ea7c3c73a', class: "mobile-menu", role: "menubar" }, h("li", { key: '09f8dbe1534e0f97df17e34a6f9b075f8dce10dd', role: "none" }, h("zanit-search-form", { key: '64e5fa4b8d9217646da95204583da333ec0f8f6d', searchQuery: this.searchQuery, onResetSearch: () => (this.searchQuery = undefined) })), !this.loading && this.current && (h("li", { key: 'b5dcca1a67de785caa2f5247c850437abb20e5e2', role: "none" }, h("a", { key: '14d386b83ef96ae92070e9e738fdf70e6e0e6ef2', class: "parent", href: this.parentItem?.href ?? '/', id: this.parentItem?.id ?? undefined, role: "menuitem", tabIndex: -1, onKeyDown: (event) => this.handleItemKeydown(event) }, h("z-icon", { key: '7851e7a47f5723029d9ce0bf85e4010025509caf', name: "arrow-left", width: "0.5rem", height: "0.5rem" }), h("span", { key: 'ab158b0c1350eedbb4c4270b2d9d111ae732af95' }, this.parentItem?.label ?? 'Home')))), this.loading && (h("div", { key: '9d4a6b292cbf067a3f5b743daff5a26bfcfaf403', class: "items-container", role: "none" }, [...new Array(4)].map(() => (h("li", { role: "none" }, h("div", { class: "menubar-item", role: "none" }, h("z-ghost-loading", null))))))), this.menuType === 'menu' ? (h(Menu, { items: this.menuItems, current: this.current, onItemKeyDown: (event) => this.handleItemKeydown(event) })) : (this.menuItems?.length && (h("div", { class: "items-container", role: "none" }, this.menuItems.map((item) => (h("li", { role: "none" }, h("a", { class: {
542
- 'menu-item': this.menuType === 'menu',
543
- 'menubar-item': this.menuType === 'menubar',
544
- }, href: item.href, id: item.id, role: "menuitem", "aria-current": this.current === item.id ? 'page' : 'false', tabIndex: -1, onKeyDown: (event) => this.handleItemKeydown(event) }, h("span", { "data-text": item.label }, item.label))))))))))));
545
- }
546
- static get watchers() { return {
547
- "items": ["onItemsChange"],
548
- "current": ["onItemsChange"]
549
- }; }
550
- };
551
- ZanitMobileMenubar.style = mobileMenubarCss + menuCss;
552
-
553
- const searchFormCss = ":host,*,::before,::after{box-sizing:border-box}*:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}button{all:unset;cursor:pointer}@media (width < 768px){.searchbar{display:flex;align-items:center;border:1px solid #000;border-radius:4px}.searchbar>*:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}.searchbar button[type='reset']{display:flex;padding:0 0 0 8px;cursor:pointer}.searchbar input{width:100%;height:100%;padding:4px 8px;border:none;background-color:#fff;font-family:var(--font-family-sans);font-size:1rem}.searchbar input[type='search']::-webkit-search-cancel-button,.searchbar input[type='search']::-webkit-search-decoration{appearance:none}.searchbar input::placeholder{color:var(--gray500)}.searchbar .searchbar-button{padding:4px 8px;border-left:1px solid #000;background:var(--zanit-accent-color);border-bottom-right-radius:3px;border-top-right-radius:3px}.searchbar input:focus:focus-visible,.searchbar .searchbar-button:focus:focus-visible{z-index:1}}@media (width >= 768px){.searchbar{display:flex;font-size:1.5rem}.searchbar.searchbar-open{position:absolute;width:100%;height:100%;inset:0}.searchbar .input-wrapper{display:none;width:100%;align-items:center;padding:0 0 0 var(--grid-margin);background-color:#fff;gap:14px}.searchbar .input-wrapper:not(.hide){display:flex}.searchbar button[type='reset']{display:flex;align-items:center;border-radius:4px;cursor:pointer}.searchbar input{z-index:1;width:100%;height:100%;padding:8px 14px 8px 0;border:none;background-color:#fff;font-family:var(--font-family-sans);font-size:inherit}.searchbar input[type='search']::-webkit-search-cancel-button,.searchbar input[type='search']::-webkit-search-decoration{appearance:none}.searchbar input::placeholder{color:var(--gray500)}.searchbar .searchbar-button{display:flex;align-items:center;padding:8px 16px;border-right:1px solid #000;border-left:1px solid #000;background:var(--zanit-accent-color);font-family:inherit;font-size:inherit;gap:64px;line-height:1}.searchbar input:focus:focus-visible,.searchbar .searchbar-button:focus:focus-visible{z-index:1}}@media (width >= 768px) and (width < 1152px){.searchbar .searchbar-button>.searchbar-button-label{display:none}}";
554
-
555
- const ZanitSearchForm = class {
556
- constructor(hostRef) {
557
- registerInstance(this, hostRef);
558
- this.search = createEvent(this, "search");
559
- this.resetSearch = createEvent(this, "resetSearch");
560
- }
561
- formElement;
562
- get host() { return getElement(this); }
563
- isMobile = false;
564
- /** Indicates whether the searchbar is visible and usable. */
565
- showSearchbar = false;
566
- /** Search query to apply. */
567
- _searchQuery = undefined;
568
- /** Initial search query */
569
- searchQuery = undefined;
570
- onSearchQueryChange() {
571
- this._searchQuery = this.searchQuery;
572
- if (this.searchQuery) {
573
- this.showSearchbar = true;
574
- }
575
- }
576
- /** Focus searchbar input when it becomes visible. */
577
- onShowSearchbar() {
578
- if (!this.showSearchbar) {
579
- return;
580
- }
581
- setTimeout(() => {
582
- const searchbarInput = this.host.shadowRoot.querySelector('#searchbar-input');
583
- if (this.showSearchbar && !this.searchQuery) {
584
- searchbarInput.focus();
585
- }
586
- }, 100);
587
- }
588
- /** Emitted on search form submission. */
589
- search;
590
- resetSearch;
591
- async connectedCallback() {
592
- this.showSearchbar = !!this.searchQuery;
593
- const mobileMediaQuery = window.matchMedia('(width < 768px)');
594
- this.isMobile = mobileMediaQuery.matches;
595
- mobileMediaQuery.onchange = (mql) => {
596
- this.isMobile = mql.matches;
597
- };
598
- }
599
- /** Close open searchbar when clicking outside. */
600
- handleOutsideClick(event) {
601
- if (this.showSearchbar && this.formElement && !containsTarget(this.formElement, event)) {
602
- this.showSearchbar = false;
603
- }
604
- }
605
- resetSearchQuery() {
606
- this.searchQuery = undefined;
607
- this.resetSearch.emit();
608
- }
609
- handleInputChange(event) {
610
- this._searchQuery = event.target.value;
611
- if (!this._searchQuery) {
612
- this.searchQuery = undefined;
613
- }
614
- }
615
- onSearchSubmit(event) {
616
- event.preventDefault();
617
- if (!this._searchQuery) {
618
- return;
619
- }
620
- this.showSearchbar = false;
621
- const searchEv = this.search.emit({ query: this._searchQuery });
622
- // do not submit the form if the event default behavior was prevented
623
- if (searchEv.defaultPrevented) {
624
- return;
625
- }
626
- this.formElement.submit();
627
- }
628
- render() {
629
- if (this.isMobile) {
630
- return (h("form", { class: "searchbar", ref: (el) => (this.formElement = el), role: "search", "aria-label": "Cerca", method: "get", action: "/ricerca", onSubmit: (event) => this.onSearchSubmit(event), onReset: () => this.resetSearchQuery() }, this.searchQuery && (h("button", { type: "reset", "aria-label": "Svuota campo di ricerca" }, h("z-icon", { name: "multiply-circled", width: "1rem", height: "1rem" }))), h("input", { id: "searchbar-input", name: "q", type: "search", placeholder: "Cerca per parola chiave o ISBN", onInput: (event) => this.handleInputChange(event), value: this.searchQuery, required: true }), h("button", { class: "searchbar-button", "aria-controls": "searchbar-input", "aria-label": "Cerca", type: "submit" }, h("z-icon", { name: "search", width: "1.25rem", height: "1.25rem" }))));
631
- }
632
- return (h("form", { class: { 'searchbar': true, 'searchbar-open': this.showSearchbar }, ref: (el) => (this.formElement = el), role: "search", "aria-label": "Cerca", method: "get", action: "/ricerca", onSubmit: (event) => this.onSearchSubmit(event), onReset: () => this.resetSearchQuery() }, h("div", { class: { 'hide': !this.showSearchbar, 'input-wrapper': true }, role: "none" }, this.searchQuery && (h("button", { type: "reset", "aria-label": "Svuota campo di ricerca" }, h("z-icon", { name: "multiply-circled", width: "1.5rem", height: "1.5rem" }))), h("input", { id: "searchbar-input", name: "q", type: "search", placeholder: "Cerca per parola chiave o ISBN", onInput: (event) => this.handleInputChange(event), value: this.searchQuery, required: true })), h("button", { class: "searchbar-button", "aria-label": "Cerca", "aria-controls": "searchbar-input", type: this.showSearchbar ? 'submit' : 'button', onClick: () => (this.showSearchbar = true) }, this.showSearchbar ? null : h("span", { class: "searchbar-button-label" }, "Cerca"), h("z-icon", { name: "search", width: "2rem", height: "2rem" }))));
633
- }
634
- static get watchers() { return {
635
- "searchQuery": ["onSearchQueryChange"],
636
- "showSearchbar": ["onShowSearchbar"]
637
- }; }
638
- };
639
- ZanitSearchForm.style = searchFormCss;
640
-
641
- export { ZanitMenubar as zanit_menubar, ZanitMobileMenubar as zanit_mobile_menubar, ZanitSearchForm as zanit_search_form };
642
- //# sourceMappingURL=zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.js.map
643
-
644
- //# sourceMappingURL=zanit-menubar_3.entry.js.map