@zanichelli/zanichelli-it-frontend-kit 1.4.0-RC2 → 1.4.0

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 (117) hide show
  1. package/dist/cjs/index-BLzQAHAI.js +1578 -0
  2. package/dist/cjs/index-BLzQAHAI.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +5 -0
  4. package/dist/cjs/index.cjs.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +15 -0
  6. package/dist/cjs/loader.cjs.js.map +1 -0
  7. package/dist/cjs/zanichelli-it-frontend-kit.cjs.js +27 -0
  8. package/dist/cjs/zanichelli-it-frontend-kit.cjs.js.map +1 -0
  9. package/dist/cjs/zanit-back-to-top.zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.cjs.js.map +1 -0
  10. package/dist/cjs/zanit-back-to-top_4.cjs.entry.js +1024 -0
  11. package/dist/cjs/zanit-back-to-top_4.cjs.entry.js.map +1 -0
  12. package/dist/collection/collection-manifest.json +15 -0
  13. package/dist/collection/components/back-to-top/back-to-top.css +16 -0
  14. package/dist/collection/components/back-to-top/back-to-top.js +130 -0
  15. package/dist/collection/components/back-to-top/back-to-top.js.map +1 -0
  16. package/dist/collection/components/menubar/menu/menu.css +95 -0
  17. package/dist/collection/components/menubar/menu/menu.js +38 -0
  18. package/dist/collection/components/menubar/menu/menu.js.map +1 -0
  19. package/dist/collection/components/menubar/menubar.css +170 -0
  20. package/dist/{zanichelli-it-frontend-kit/zanit-menubar.entry.js → collection/components/menubar/menubar.js} +203 -25
  21. package/dist/collection/components/menubar/menubar.js.map +1 -0
  22. package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.css +122 -0
  23. package/{www/build/zanit-mobile-menubar.entry.js → dist/collection/components/menubar/mobile-menubar/mobile-menubar.js} +194 -24
  24. package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.js.map +1 -0
  25. package/dist/collection/components/menubar/search-form/search-form.css +232 -0
  26. package/dist/{zanichelli-it-frontend-kit/zanit-search-form.entry.js → collection/components/menubar/search-form/search-form.js} +174 -110
  27. package/dist/collection/components/menubar/search-form/search-form.js.map +1 -0
  28. package/dist/collection/components/menubar/search-form/suggestions.js +85 -0
  29. package/dist/collection/components/menubar/search-form/suggestions.js.map +1 -0
  30. package/dist/collection/index.js +11 -0
  31. package/dist/collection/index.js.map +1 -0
  32. package/dist/collection/utils/index.js +2 -0
  33. package/dist/collection/utils/index.js.map +1 -0
  34. package/dist/collection/utils/subjects.api.js +25 -0
  35. package/dist/collection/utils/subjects.api.js.map +1 -0
  36. package/dist/collection/utils/utils.js +25 -0
  37. package/dist/collection/utils/utils.js.map +1 -0
  38. package/dist/components/index.js +1335 -0
  39. package/dist/components/index.js.map +1 -0
  40. package/dist/{zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.js → components/p-CmameXB-.js} +87 -12
  41. package/dist/components/p-CmameXB-.js.map +1 -0
  42. package/{www/build/zanit-search-form.entry.js → dist/components/p-DNk0AZSw.js} +92 -13
  43. package/dist/components/p-DNk0AZSw.js.map +1 -0
  44. package/dist/{zanichelli-it-frontend-kit/zanit-back-to-top.entry.js → components/zanit-back-to-top.js} +34 -10
  45. package/dist/components/zanit-back-to-top.js.map +1 -0
  46. package/{www/build/zanit-menubar.entry.js → dist/components/zanit-menubar.js} +57 -12
  47. package/dist/components/zanit-menubar.js.map +1 -0
  48. package/dist/components/zanit-mobile-menubar.js +9 -0
  49. package/dist/components/zanit-mobile-menubar.js.map +1 -0
  50. package/dist/components/zanit-search-form.js +9 -0
  51. package/dist/components/zanit-search-form.js.map +1 -0
  52. package/dist/esm/index-DSdvvVFj.js +1549 -0
  53. package/dist/esm/index-DSdvvVFj.js.map +1 -0
  54. package/dist/esm/index.js +4 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/loader.js +13 -0
  57. package/dist/esm/loader.js.map +1 -0
  58. package/dist/esm/zanichelli-it-frontend-kit.js +23 -0
  59. package/dist/esm/zanichelli-it-frontend-kit.js.map +1 -0
  60. package/dist/esm/zanit-back-to-top.zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.js.map +1 -0
  61. package/dist/esm/zanit-back-to-top_4.entry.js +1019 -0
  62. package/dist/esm/zanit-back-to-top_4.entry.js.map +1 -0
  63. package/dist/index.cjs.js +1 -0
  64. package/dist/index.js +1 -0
  65. package/dist/zanichelli-it-frontend-kit/index.esm.js +0 -10
  66. package/dist/zanichelli-it-frontend-kit/index.esm.js.map +1 -1
  67. package/dist/zanichelli-it-frontend-kit/p-0f6b9e37.entry.js +2 -0
  68. package/dist/zanichelli-it-frontend-kit/p-0f6b9e37.entry.js.map +1 -0
  69. package/dist/zanichelli-it-frontend-kit/p-DSdvvVFj.js +3 -0
  70. package/dist/zanichelli-it-frontend-kit/p-DSdvvVFj.js.map +1 -0
  71. package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.css +1 -993
  72. package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.esm.js +1 -49
  73. package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.esm.js.map +1 -1
  74. package/dist/zanichelli-it-frontend-kit/zanit-back-to-top.zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.esm.js.map +1 -0
  75. package/package.json +1 -1
  76. package/www/build/index.esm.js +0 -10
  77. package/www/build/index.esm.js.map +1 -1
  78. package/www/build/p-0f6b9e37.entry.js +2 -0
  79. package/www/build/p-0f6b9e37.entry.js.map +1 -0
  80. package/www/build/p-43c395dc.css +1 -0
  81. package/www/build/p-9134b2b7.js +2 -0
  82. package/www/build/p-DSdvvVFj.js +3 -0
  83. package/www/build/p-DSdvvVFj.js.map +1 -0
  84. package/www/build/zanichelli-it-frontend-kit.css +1 -993
  85. package/www/build/zanichelli-it-frontend-kit.esm.js +1 -49
  86. package/www/build/zanichelli-it-frontend-kit.esm.js.map +1 -1
  87. package/www/build/zanit-back-to-top.zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.esm.js.map +1 -0
  88. package/www/index.html +2 -11
  89. package/dist/zanichelli-it-frontend-kit/index-DPw_TAEB.js +0 -4170
  90. package/dist/zanichelli-it-frontend-kit/index-DPw_TAEB.js.map +0 -1
  91. package/dist/zanichelli-it-frontend-kit/menu-BsP3cOc_.js +0 -46
  92. package/dist/zanichelli-it-frontend-kit/menu-BsP3cOc_.js.map +0 -1
  93. package/dist/zanichelli-it-frontend-kit/subjects.api-BRhngFD0.js +0 -54
  94. package/dist/zanichelli-it-frontend-kit/subjects.api-BRhngFD0.js.map +0 -1
  95. package/dist/zanichelli-it-frontend-kit/zanit-back-to-top.entry.esm.js.map +0 -1
  96. package/dist/zanichelli-it-frontend-kit/zanit-back-to-top.entry.js.map +0 -1
  97. package/dist/zanichelli-it-frontend-kit/zanit-menubar.entry.esm.js.map +0 -1
  98. package/dist/zanichelli-it-frontend-kit/zanit-menubar.entry.js.map +0 -1
  99. package/dist/zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.esm.js.map +0 -1
  100. package/dist/zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.js.map +0 -1
  101. package/dist/zanichelli-it-frontend-kit/zanit-search-form.entry.esm.js.map +0 -1
  102. package/dist/zanichelli-it-frontend-kit/zanit-search-form.entry.js.map +0 -1
  103. package/www/build/index-DPw_TAEB.js +0 -4170
  104. package/www/build/index-DPw_TAEB.js.map +0 -1
  105. package/www/build/menu-BsP3cOc_.js +0 -46
  106. package/www/build/menu-BsP3cOc_.js.map +0 -1
  107. package/www/build/subjects.api-BRhngFD0.js +0 -54
  108. package/www/build/subjects.api-BRhngFD0.js.map +0 -1
  109. package/www/build/zanit-back-to-top.entry.esm.js.map +0 -1
  110. package/www/build/zanit-back-to-top.entry.js +0 -64
  111. package/www/build/zanit-back-to-top.entry.js.map +0 -1
  112. package/www/build/zanit-menubar.entry.esm.js.map +0 -1
  113. package/www/build/zanit-menubar.entry.js.map +0 -1
  114. package/www/build/zanit-mobile-menubar.entry.esm.js.map +0 -1
  115. package/www/build/zanit-mobile-menubar.entry.js.map +0 -1
  116. package/www/build/zanit-search-form.entry.esm.js.map +0 -1
  117. package/www/build/zanit-search-form.entry.js.map +0 -1
@@ -1,16 +1,10 @@
1
- import { r as registerInstance, a as getElement, h } from './index-DPw_TAEB.js';
2
- import { M as Menu } from './menu-BsP3cOc_.js';
3
- import { S as SearchEnv, m as moveFocus, c as containsTarget } from './subjects.api-BRhngFD0.js';
4
-
5
- const mobileMenubarCss = ":host{position:relative;z-index:2;display:block;width:100%;max-width:100%;height:3rem;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-left:var(--grid-margin);gap:8px}nav::after{position:absolute;top:0;right:0;width:100%;height:100%;background:transparent;box-shadow:var(--shadow-1);content:'';pointer-events:none}z-logo{margin:8px 0}.mobile-menu{position:absolute;top:100%;left:0;display:flex;overflow:auto;width:100%;max-height:calc(100vh - 48px - var(--zanit-menubar-top-offset, 0px));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}zanit-search-form{margin-left:auto}";
6
-
7
- 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-md)}.menu .group .menu-list{display:flex;flex-direction:column;gap:8px}.menu .group .menu-list .menu-item{display:block;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}}";
8
-
9
- const ZanitMobileMenubar = class {
10
- constructor(hostRef) {
11
- registerInstance(this, hostRef);
12
- }
13
- get host() { return getElement(this); }
1
+ import { h } from "@stencil/core";
2
+ import { Menu } from "../menu/menu";
3
+ import { containsTarget, moveFocus } from "../../../utils";
4
+ import { SearchEnv } from "../../../utils/subjects.api";
5
+ /** Mobile menubar component. */
6
+ export class ZanitMobileMenubar {
7
+ host;
14
8
  /** IDs path of the current item. */
15
9
  currentPath = [];
16
10
  /** Menubar items. */
@@ -157,15 +151,191 @@ const ZanitMobileMenubar = class {
157
151
  'menubar-item': this.menuType === 'menubar',
158
152
  }, href: item.href, id: item.id, role: "menuitem", "aria-current": this.lastCurrent === item.id ? 'page' : 'false', tabIndex: -1, onKeyDown: (event) => this.handleItemKeydown(event), target: item.target }, h("span", { "data-text": item.label }, item.label))))))))))));
159
153
  }
154
+ static get is() { return "zanit-mobile-menubar"; }
155
+ static get encapsulation() { return "shadow"; }
160
156
  static get delegatesFocus() { return true; }
161
- static get watchers() { return {
162
- "items": ["onItemsChange"],
163
- "currentPath": ["onItemsChange"]
164
- }; }
165
- };
166
- ZanitMobileMenubar.style = mobileMenubarCss + menuCss;
167
-
168
- export { ZanitMobileMenubar as zanit_mobile_menubar };
169
- //# sourceMappingURL=zanit-mobile-menubar.entry.esm.js.map
170
-
171
- //# sourceMappingURL=zanit-mobile-menubar.entry.js.map
157
+ static get originalStyleUrls() {
158
+ return {
159
+ "$": ["mobile-menubar.css", "../menu/menu.css"]
160
+ };
161
+ }
162
+ static get styleUrls() {
163
+ return {
164
+ "$": ["mobile-menubar.css", "../menu/menu.css"]
165
+ };
166
+ }
167
+ static get properties() {
168
+ return {
169
+ "currentPath": {
170
+ "type": "unknown",
171
+ "attribute": "current-path",
172
+ "mutable": false,
173
+ "complexType": {
174
+ "original": "string[]",
175
+ "resolved": "string[]",
176
+ "references": {}
177
+ },
178
+ "required": false,
179
+ "optional": false,
180
+ "docs": {
181
+ "tags": [],
182
+ "text": "IDs path of the current item."
183
+ },
184
+ "getter": false,
185
+ "setter": false,
186
+ "defaultValue": "[]"
187
+ },
188
+ "items": {
189
+ "type": "unknown",
190
+ "attribute": "items",
191
+ "mutable": false,
192
+ "complexType": {
193
+ "original": "MenubarItem[]",
194
+ "resolved": "MenubarItem[]",
195
+ "references": {
196
+ "MenubarItem": {
197
+ "location": "import",
198
+ "path": "../../../utils",
199
+ "id": "src/utils/index.ts::MenubarItem"
200
+ }
201
+ }
202
+ },
203
+ "required": false,
204
+ "optional": false,
205
+ "docs": {
206
+ "tags": [],
207
+ "text": "Menubar items."
208
+ },
209
+ "getter": false,
210
+ "setter": false,
211
+ "defaultValue": "[]"
212
+ },
213
+ "searchQuery": {
214
+ "type": "string",
215
+ "attribute": "search-query",
216
+ "mutable": true,
217
+ "complexType": {
218
+ "original": "string | undefined",
219
+ "resolved": "string",
220
+ "references": {}
221
+ },
222
+ "required": false,
223
+ "optional": false,
224
+ "docs": {
225
+ "tags": [],
226
+ "text": "Initial search query."
227
+ },
228
+ "getter": false,
229
+ "setter": false,
230
+ "reflect": false,
231
+ "defaultValue": "undefined"
232
+ },
233
+ "loading": {
234
+ "type": "boolean",
235
+ "attribute": "loading",
236
+ "mutable": false,
237
+ "complexType": {
238
+ "original": "boolean",
239
+ "resolved": "boolean",
240
+ "references": {}
241
+ },
242
+ "required": false,
243
+ "optional": false,
244
+ "docs": {
245
+ "tags": [],
246
+ "text": "Whether the menubar is loading the data."
247
+ },
248
+ "getter": false,
249
+ "setter": false,
250
+ "reflect": false,
251
+ "defaultValue": "false"
252
+ },
253
+ "searchEnv": {
254
+ "type": "string",
255
+ "attribute": "search-env",
256
+ "mutable": false,
257
+ "complexType": {
258
+ "original": "SearchEnv",
259
+ "resolved": "SearchEnv.DEV | SearchEnv.PROD | SearchEnv.TEST",
260
+ "references": {
261
+ "SearchEnv": {
262
+ "location": "import",
263
+ "path": "../../../utils/subjects.api",
264
+ "id": "src/utils/subjects.api.ts::SearchEnv"
265
+ }
266
+ }
267
+ },
268
+ "required": false,
269
+ "optional": false,
270
+ "docs": {
271
+ "tags": [],
272
+ "text": "Environment for search suggestions"
273
+ },
274
+ "getter": false,
275
+ "setter": false,
276
+ "reflect": false,
277
+ "defaultValue": "SearchEnv.PROD"
278
+ },
279
+ "searchArea": {
280
+ "type": "string",
281
+ "attribute": "search-area",
282
+ "mutable": false,
283
+ "complexType": {
284
+ "original": "string | undefined",
285
+ "resolved": "string",
286
+ "references": {}
287
+ },
288
+ "required": false,
289
+ "optional": true,
290
+ "docs": {
291
+ "tags": [],
292
+ "text": "Search area (e.g. \"SCUOLA\", \"UNIVERSIT\u00C0\", \"DIZIONARI\")."
293
+ },
294
+ "getter": false,
295
+ "setter": false,
296
+ "reflect": false
297
+ }
298
+ };
299
+ }
300
+ static get states() {
301
+ return {
302
+ "lastCurrent": {},
303
+ "parentItem": {},
304
+ "menuItems": {},
305
+ "menuType": {},
306
+ "open": {}
307
+ };
308
+ }
309
+ static get elementRef() { return "host"; }
310
+ static get watchers() {
311
+ return [{
312
+ "propName": "items",
313
+ "methodName": "onItemsChange"
314
+ }, {
315
+ "propName": "currentPath",
316
+ "methodName": "onItemsChange"
317
+ }];
318
+ }
319
+ static get listeners() {
320
+ return [{
321
+ "name": "click",
322
+ "method": "handleOutsideClick",
323
+ "target": "document",
324
+ "capture": false,
325
+ "passive": true
326
+ }, {
327
+ "name": "keydown",
328
+ "method": "handleKeydown",
329
+ "target": undefined,
330
+ "capture": false,
331
+ "passive": true
332
+ }, {
333
+ "name": "focusin",
334
+ "method": "handleFocusout",
335
+ "target": "document",
336
+ "capture": false,
337
+ "passive": true
338
+ }];
339
+ }
340
+ }
341
+ //# sourceMappingURL=mobile-menubar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-menubar.js","sourceRoot":"","sources":["../../../../src/components/menubar/mobile-menubar/mobile-menubar.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Listen, Prop, State, Watch } from '@stencil/core';\nimport { MenubarItem, MenuItem } from '../../../utils';\nimport { Menu } from '../menu/menu';\nimport { containsTarget, moveFocus } from '../../../utils';\nimport { SearchEnv } from '../../../utils/subjects.api';\n\n/** Mobile menubar component. */\n@Component({\n tag: 'zanit-mobile-menubar',\n styleUrls: ['mobile-menubar.css', '../menu/menu.css'],\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ZanitMobileMenubar {\n @Element() host: HTMLZanitMobileMenubarElement;\n\n /** IDs path of the current item. */\n @Prop() currentPath: string[] = [];\n\n /** Menubar items. */\n @Prop() items: MenubarItem[] = [];\n\n /** Initial search query. */\n @Prop({ mutable: true }) searchQuery: string | undefined = undefined;\n\n /** Whether the menubar is loading the data. */\n @Prop() loading: boolean = false;\n\n /** Environment for search suggestions */\n @Prop() searchEnv: SearchEnv = SearchEnv.PROD;\n\n /** Search area (e.g. \"SCUOLA\", \"UNIVERSITÀ\", \"DIZIONARI\"). */\n @Prop() searchArea?: string | undefined;\n\n /** Last active item ID. */\n @State() lastCurrent: string | undefined = undefined;\n @State() parentItem: MenubarItem | undefined = undefined;\n @State() menuItems: MenubarItem[] | MenuItem[] | undefined = undefined;\n /** Whether the items to render come from a menubar or a menu. */\n @State() menuType: 'menubar' | 'menu' | undefined = undefined;\n @State() open: boolean;\n\n @Watch('items')\n @Watch('currentPath')\n onItemsChange() {\n this.lastCurrent = this.currentPath?.length ? this.currentPath[this.currentPath.length - 1] : undefined;\n this.setupData(this.items);\n }\n\n /**\n * Find the current item and take its parent, `menuItems` or the `navbarItems`.\n */\n private setupData(items: MenubarItem[], parent?: MenubarItem) {\n // If no current item is defined, we show all items\n if (this.lastCurrent === undefined) {\n this.parentItem = undefined;\n this.menuType = 'menubar';\n this.menuItems = items;\n return;\n }\n\n for (const item of items) {\n if (item.id === this.lastCurrent) {\n this.parentItem = parent;\n this.menuType = item.menuItems?.length ? 'menu' : 'menubar';\n this.menuItems = item.menuItems || item.navbarItems;\n return;\n }\n\n if (\n this.currentPath.length > 1 &&\n item.id === this.currentPath[this.currentPath.length - 2] &&\n item.menuItems?.some(({ id }) => id === this.lastCurrent)\n ) {\n this.parentItem = item;\n this.menuType = item.menuItems?.length ? 'menu' : 'menubar';\n this.menuItems = item.menuItems || item.navbarItems;\n return;\n }\n\n if (item.navbarItems?.length) {\n this.setupData(item.navbarItems, item);\n }\n }\n }\n\n private get menuItemsElement() {\n return Array.from(this.host.shadowRoot.querySelectorAll('[role=\"menuitem\"]')) as HTMLElement[];\n }\n\n /** Initialize tabindex on menuitems, setting -1 to all but the first one. */\n private initTabindex() {\n this.menuItemsElement.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'));\n }\n\n private toggleMenu() {\n if (this.open) {\n this.open = false;\n } else {\n this.open = true;\n setTimeout(() => {\n this.initTabindex();\n this.menuItemsElement[0]?.focus({ preventScroll: true });\n }, 200);\n }\n }\n\n /** Handles keyboard navigation on mobile menu. */\n private handleItemKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowUp': {\n event.preventDefault();\n event.stopPropagation();\n const items = this.menuItemsElement;\n const currentIndex = items.indexOf(event.target as HTMLElement);\n const prevItem = items[(currentIndex - 1 + items.length) % items.length];\n moveFocus(items[currentIndex], prevItem);\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n event.stopPropagation();\n const items = this.menuItemsElement;\n const currentIndex = items.indexOf(event.target as HTMLElement);\n const nextItem = items[(currentIndex + 1) % items.length];\n moveFocus(items[currentIndex], nextItem);\n break;\n }\n case 'Home': {\n event.preventDefault();\n event.stopPropagation();\n moveFocus(event.target as HTMLElement, this.menuItemsElement[0]);\n break;\n }\n case 'End': {\n event.preventDefault();\n event.stopPropagation();\n moveFocus(event.target as HTMLElement, this.menuItemsElement.pop());\n break;\n }\n }\n }\n\n connectedCallback() {\n this.lastCurrent = this.currentPath?.length ? this.currentPath[this.currentPath.length - 1] : undefined;\n this.setupData(this.items);\n }\n\n /** Close the menu when clicking outside. */\n @Listen('click', { target: 'document', passive: true })\n handleOutsideClick(event: MouseEvent) {\n if (containsTarget(this.host, event)) {\n return;\n }\n\n this.open = false;\n }\n\n /** Close the menu when pressing Escape or Tab. */\n @Listen('keydown', { passive: true })\n handleKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Escape':\n this.open = false;\n break;\n case 'Tab':\n if (containsTarget(this.host, event)) {\n break;\n }\n\n this.open = false;\n break;\n }\n }\n\n /** Close the menu when the focus goes out. */\n @Listen('focusin', { target: 'document', passive: true })\n handleFocusout(event: FocusEvent) {\n if (containsTarget(this.host, event)) {\n return;\n }\n\n this.open = false;\n }\n\n render() {\n return (\n <nav aria-label=\"Zanichelli.it\">\n <button\n class=\"burger-button\"\n type=\"button\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls=\"mobile-menu\"\n aria-label={this.open ? 'Chiudi menù' : 'Apri menù'}\n onClick={() => this.toggleMenu()}\n >\n <z-icon\n name={this.open ? 'multiply' : 'burger-menu'}\n width=\"1.5rem\"\n height=\"1.5rem\"\n ></z-icon>\n </button>\n\n <z-logo\n imageAlt=\"Logo Zanichelli\"\n link=\"/\"\n height={32}\n width={126}\n ></z-logo>\n\n <zanit-search-form\n searchQuery={this.searchQuery}\n onResetSearch={() => (this.searchQuery = undefined)}\n searchArea={this.searchArea}\n searchEnv={this.searchEnv}\n />\n\n {this.open && (\n <ul\n class=\"mobile-menu\"\n role=\"menubar\"\n >\n {!this.loading && this.currentPath && this.currentPath.length > 0 && (\n <li role=\"none\">\n <a\n class=\"parent\"\n href={this.parentItem?.href ?? '/'}\n id={this.parentItem?.id ?? undefined}\n role=\"menuitem\"\n tabIndex={-1}\n onKeyDown={(event) => this.handleItemKeydown(event)}\n target={this.parentItem?.target}\n >\n <z-icon\n name=\"arrow-left\"\n width=\"0.5rem\"\n height=\"0.5rem\"\n ></z-icon>\n <span>\n {/* Show the 'Home' label if the current item is a root child. */}\n {this.parentItem?.label || 'Home'}\n </span>\n </a>\n </li>\n )}\n\n {this.loading ? (\n <div\n class=\"items-container\"\n role=\"none\"\n >\n {[...new Array(4)].map(() => (\n <li role=\"none\">\n <div\n class=\"menubar-item\"\n role=\"none\"\n >\n <z-ghost-loading></z-ghost-loading>\n </div>\n </li>\n ))}\n </div>\n ) : this.menuType === 'menu' ? (\n <Menu\n items={this.menuItems}\n controlledBy={this.parentItem?.id}\n currentPath={this.currentPath}\n onItemKeyDown={(event) => this.handleItemKeydown(event)}\n />\n ) : (\n this.menuItems?.length > 0 && (\n <div\n class=\"items-container\"\n role=\"none\"\n >\n {this.menuItems.map((item) => (\n <li role=\"none\">\n <a\n class={{\n 'menu-item': this.menuType === 'menu',\n 'menubar-item': this.menuType === 'menubar',\n }}\n href={item.href}\n id={item.id}\n role=\"menuitem\"\n aria-current={this.lastCurrent === item.id ? 'page' : 'false'}\n tabIndex={-1}\n onKeyDown={(event) => this.handleItemKeydown(event)}\n target={item.target}\n >\n <span data-text={item.label}>{item.label}</span>\n </a>\n </li>\n ))}\n </div>\n )\n )}\n </ul>\n )}\n </nav>\n );\n }\n}\n"]}
@@ -0,0 +1,232 @@
1
+ :host,
2
+ *,
3
+ ::before,
4
+ ::after {
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ *:focus:focus-visible {
9
+ box-shadow: var(--shadow-focus-primary);
10
+ outline: none;
11
+ }
12
+
13
+ button {
14
+ all: unset;
15
+ cursor: pointer;
16
+ }
17
+
18
+ .searchbar {
19
+ --searchbar-button-x-padding: 14px;
20
+ --searchbar-button-icon-width: 1.75rem;
21
+
22
+ /* button horizontal padding + icon size + left border */
23
+ --closed-searchbar-width: calc((var(--searchbar-button-x-padding) * 2) + var(--searchbar-button-icon-width) + 1px);
24
+
25
+ position: absolute;
26
+ z-index: 5;
27
+ top: 0;
28
+ right: 0;
29
+ display: flex;
30
+ width: var(--closed-searchbar-width);
31
+ height: 3rem;
32
+ justify-content: flex-end;
33
+ transition: width 0.4s ease-in-out;
34
+ }
35
+
36
+ .searchbar.searchbar-open {
37
+ width: 100%;
38
+ }
39
+
40
+ .searchbar .input-wrapper {
41
+ display: flex;
42
+ overflow: hidden;
43
+ width: 100%;
44
+ align-items: center;
45
+ padding: 8px;
46
+ padding-left: var(--grid-margin);
47
+ background-color: #fff;
48
+ gap: 8px;
49
+ transition-duration: 0.4s;
50
+ transition-property: padding-right, padding-left, width;
51
+ transition-timing-function: ease-in-out;
52
+ }
53
+
54
+ .searchbar:not(.searchbar-open) .input-wrapper {
55
+ overflow: hidden;
56
+ width: 0;
57
+ padding: 0;
58
+ }
59
+
60
+ .searchbar button[type='reset'] {
61
+ --z-icon-width: 1rem;
62
+ --z-icon-height: 1rem;
63
+
64
+ display: flex;
65
+ align-items: center;
66
+ cursor: pointer;
67
+ }
68
+
69
+ .searchbar input {
70
+ z-index: 1;
71
+ width: 100%;
72
+ height: 100%;
73
+ padding: 0;
74
+ border: none;
75
+ background-color: #fff;
76
+ font-family: var(--font-family-sans);
77
+ font-size: 1rem;
78
+ }
79
+
80
+ .searchbar.searchbar-open input:first-child {
81
+ padding-left: 4px;
82
+ margin-left: -4px; /* per evitare che la focus shadow vada fuori dallo schermo */
83
+ }
84
+
85
+ .searchbar input[type='search']::-webkit-search-cancel-button,
86
+ .searchbar input[type='search']::-webkit-search-decoration {
87
+ appearance: none;
88
+ }
89
+
90
+ .searchbar input::placeholder {
91
+ color: var(--gray500);
92
+ }
93
+
94
+ .searchbar .searchbar-button {
95
+ display: flex;
96
+ align-items: center;
97
+ justify-content: center;
98
+ padding: 10px var(--searchbar-button-x-padding);
99
+ border-left: 1px solid #000;
100
+ background: var(--zanit-accent-color);
101
+ font-family: inherit;
102
+ font-size: inherit;
103
+ gap: 64px;
104
+ line-height: 1;
105
+ }
106
+
107
+ .searchbar .searchbar-button:focus-visible {
108
+ z-index: 1;
109
+ }
110
+
111
+ .searchbar-button z-icon {
112
+ --z-icon-width: var(--searchbar-button-icon-width);
113
+ --z-icon-height: var(--searchbar-button-icon-width);
114
+ }
115
+
116
+ .suggestions-wrapper {
117
+ position: absolute;
118
+ z-index: 4;
119
+ top: 3rem;
120
+ left: 50%;
121
+ width: 100vw;
122
+ border-top: 1px solid var(--gray200);
123
+ margin-left: -50vw;
124
+ background: #fff;
125
+ box-shadow: var(--shadow-1);
126
+ }
127
+
128
+ .suggestions-wrapper.hidden {
129
+ display: none;
130
+ }
131
+
132
+ .suggestions {
133
+ display: flex;
134
+ width: 100%;
135
+ flex-direction: column;
136
+ align-items: stretch;
137
+ padding: var(--space-unit);
138
+ margin: 0 auto;
139
+ }
140
+
141
+ .suggestion-head {
142
+ padding: calc(var(--space-unit) * 0.75) var(--space-unit);
143
+ color: var(--gray700);
144
+ font-size: 0.875rem;
145
+ font-weight: var(--font-md);
146
+ line-height: 1.125rem;
147
+ }
148
+
149
+ .suggestion {
150
+ display: flex;
151
+ padding: calc(var(--space-unit) * 0.75) var(--space-unit);
152
+ color: var(--gray900);
153
+ cursor: pointer;
154
+ font-size: 1rem;
155
+ gap: var(--space-unit);
156
+ line-height: 1.5rem;
157
+ }
158
+
159
+ .suggestion:hover,
160
+ .suggestion[aria-selected='true'] {
161
+ background: var(--gray100);
162
+ }
163
+
164
+ .suggestion strong {
165
+ font-weight: var(--font-bd);
166
+ }
167
+
168
+ .suggestion mark {
169
+ background-color: var(--red50);
170
+ }
171
+
172
+ .suggestion z-icon {
173
+ --z-icon-height: 1.125rem;
174
+
175
+ margin-top: 0.125rem;
176
+ }
177
+
178
+ .suggestions z-divider {
179
+ margin: var(--space-unit) 0;
180
+ }
181
+
182
+ @media (width < 1152px) {
183
+ .searchbar .searchbar-button > .searchbar-button-label {
184
+ display: none;
185
+ }
186
+ }
187
+
188
+ @media (width >= 768px) {
189
+ .searchbar {
190
+ --searchbar-button-x-padding: 16px;
191
+ --searchbar-button-icon-width: 2rem;
192
+ }
193
+
194
+ .searchbar .input-wrapper {
195
+ gap: 14px;
196
+ }
197
+
198
+ .searchbar button[type='reset'] {
199
+ --z-icon-width: 1.5rem;
200
+ --z-icon-height: 1.5rem;
201
+ }
202
+
203
+ .searchbar input,
204
+ .searchbar .searchbar-button {
205
+ font-size: 1.5rem;
206
+ }
207
+
208
+ .searchbar .searchbar-button {
209
+ padding: 8px var(--searchbar-button-x-padding);
210
+ }
211
+
212
+ .suggestions {
213
+ padding: var(--space-unit) calc(var(--space-unit) * 2);
214
+ }
215
+ }
216
+
217
+ @media (width >= 1152px) {
218
+ .searchbar {
219
+ --closed-searchbar-width: 190px;
220
+ }
221
+ }
222
+
223
+ @media (width >= 1366px) {
224
+ .searchbar .searchbar-button {
225
+ border-right: 1px solid #000;
226
+ }
227
+
228
+ .suggestions {
229
+ max-width: 1366px;
230
+ padding: var(--space-unit) calc(var(--space-unit) * 3);
231
+ }
232
+ }