@zanichelli/zanichelli-it-frontend-kit 1.0.0 → 1.0.3-rc.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.
- package/dist/cjs/index-xkrZykI_.js +1532 -0
- package/dist/cjs/index-xkrZykI_.js.map +1 -0
- package/dist/cjs/index.cjs.js +5 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +15 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/zanichelli-it-frontend-kit.cjs.js +27 -0
- package/dist/cjs/zanichelli-it-frontend-kit.cjs.js.map +1 -0
- package/dist/cjs/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.cjs.js.map +1 -0
- package/dist/cjs/zanit-menubar_3.cjs.entry.js +682 -0
- package/dist/cjs/zanit-menubar_3.cjs.entry.js.map +1 -0
- package/dist/collection/collection-manifest.json +14 -0
- package/dist/collection/components/menubar/menu/menu.css +95 -0
- package/dist/collection/components/menubar/menu/menu.js +38 -0
- package/dist/collection/components/menubar/menu/menu.js.map +1 -0
- package/dist/collection/components/menubar/menubar.css +167 -0
- package/{www/build/zanit-menubar.entry.js → dist/collection/components/menubar/menubar.js} +157 -25
- package/dist/collection/components/menubar/menubar.js.map +1 -0
- package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.css +119 -0
- package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.js +290 -0
- package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.js.map +1 -0
- package/dist/collection/components/menubar/search-form/search-form.css +155 -0
- package/dist/collection/components/menubar/search-form/search-form.js +176 -0
- package/dist/collection/components/menubar/search-form/search-form.js.map +1 -0
- package/dist/collection/index.js +11 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/utils/index.js +2 -0
- package/dist/collection/utils/index.js.map +1 -0
- package/dist/{zanichelli-it-frontend-kit/utils-CaxAWyZI.js → collection/utils/utils.js} +3 -7
- package/dist/collection/utils/utils.js.map +1 -0
- package/dist/components/index.js +1290 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/p-B79OTwr-.js +133 -0
- package/dist/components/p-B79OTwr-.js.map +1 -0
- package/dist/components/p-DnMMUaAD.js +239 -0
- package/dist/components/p-DnMMUaAD.js.map +1 -0
- package/dist/{zanichelli-it-frontend-kit/zanit-menubar.entry.js → components/zanit-menubar.js} +56 -13
- package/dist/components/zanit-menubar.js.map +1 -0
- package/dist/components/zanit-mobile-menubar.js +9 -0
- package/dist/components/zanit-mobile-menubar.js.map +1 -0
- package/dist/components/zanit-search-form.js +9 -0
- package/dist/components/zanit-search-form.js.map +1 -0
- package/dist/esm/index-BWVQ0LD4.js +1504 -0
- package/dist/esm/index-BWVQ0LD4.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +13 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/zanichelli-it-frontend-kit.js +23 -0
- package/dist/esm/zanichelli-it-frontend-kit.js.map +1 -0
- package/dist/esm/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.js.map +1 -0
- package/dist/esm/zanit-menubar_3.entry.js +678 -0
- package/dist/esm/zanit-menubar_3.entry.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/types/components/menubar/menu/menu.d.ts +1 -1
- package/dist/types/components/menubar/menubar.d.ts +1 -1
- package/dist/types/components/menubar/mobile-menubar/mobile-menubar.d.ts +1 -1
- package/dist/types/components/menubar/search-form/search-form.d.ts +2 -1
- package/dist/types/components.d.ts +2 -2
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/types.d.ts +9 -11
- package/dist/zanichelli-it-frontend-kit/index.esm.js +0 -10
- package/dist/zanichelli-it-frontend-kit/index.esm.js.map +1 -1
- package/dist/zanichelli-it-frontend-kit/p-005efe36.entry.js +2 -0
- package/dist/zanichelli-it-frontend-kit/p-005efe36.entry.js.map +1 -0
- package/dist/zanichelli-it-frontend-kit/p-BWVQ0LD4.js +3 -0
- package/dist/zanichelli-it-frontend-kit/p-BWVQ0LD4.js.map +1 -0
- package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.css +1 -993
- package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.esm.js +1 -49
- package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.esm.js.map +1 -1
- package/dist/zanichelli-it-frontend-kit/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.esm.js.map +1 -0
- package/package.json +1 -1
- package/www/build/index.esm.js +0 -10
- package/www/build/index.esm.js.map +1 -1
- package/www/build/p-005efe36.entry.js +2 -0
- package/www/build/p-005efe36.entry.js.map +1 -0
- package/www/build/p-750230e3.js +2 -0
- package/www/build/p-984b8fa6.css +1 -0
- package/www/build/p-BWVQ0LD4.js +3 -0
- package/www/build/p-BWVQ0LD4.js.map +1 -0
- package/www/build/zanichelli-it-frontend-kit.css +1 -993
- package/www/build/zanichelli-it-frontend-kit.esm.js +1 -49
- package/www/build/zanichelli-it-frontend-kit.esm.js.map +1 -1
- package/www/build/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.esm.js.map +1 -0
- package/www/index.html +33 -50
- package/dist/zanichelli-it-frontend-kit/index-Cn3aX5eK.js +0 -4170
- package/dist/zanichelli-it-frontend-kit/index-Cn3aX5eK.js.map +0 -1
- package/dist/zanichelli-it-frontend-kit/menu-DZlhu_pe.js +0 -46
- package/dist/zanichelli-it-frontend-kit/menu-DZlhu_pe.js.map +0 -1
- package/dist/zanichelli-it-frontend-kit/utils-CaxAWyZI.js.map +0 -1
- package/dist/zanichelli-it-frontend-kit/zanit-menubar.entry.esm.js.map +0 -1
- package/dist/zanichelli-it-frontend-kit/zanit-menubar.entry.js.map +0 -1
- package/dist/zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.esm.js.map +0 -1
- package/dist/zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.js +0 -166
- package/dist/zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.js.map +0 -1
- package/dist/zanichelli-it-frontend-kit/zanit-search-form.entry.esm.js.map +0 -1
- package/dist/zanichelli-it-frontend-kit/zanit-search-form.entry.js +0 -89
- package/dist/zanichelli-it-frontend-kit/zanit-search-form.entry.js.map +0 -1
- package/www/build/index-Cn3aX5eK.js +0 -4170
- package/www/build/index-Cn3aX5eK.js.map +0 -1
- package/www/build/menu-DZlhu_pe.js +0 -46
- package/www/build/menu-DZlhu_pe.js.map +0 -1
- package/www/build/utils-CaxAWyZI.js +0 -21
- package/www/build/utils-CaxAWyZI.js.map +0 -1
- package/www/build/zanit-menubar.entry.esm.js.map +0 -1
- package/www/build/zanit-menubar.entry.js.map +0 -1
- package/www/build/zanit-mobile-menubar.entry.esm.js.map +0 -1
- package/www/build/zanit-mobile-menubar.entry.js +0 -166
- package/www/build/zanit-mobile-menubar.entry.js.map +0 -1
- package/www/build/zanit-search-form.entry.esm.js.map +0 -1
- package/www/build/zanit-search-form.entry.js +0 -89
- package/www/build/zanit-search-form.entry.js.map +0 -1
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { r as registerInstance, d as createEvent, a as getElement, h } from './index-Cn3aX5eK.js';
|
|
2
|
-
import { c as containsTarget } from './utils-CaxAWyZI.js';
|
|
3
|
-
|
|
4
|
-
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:6px;}.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;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}}";
|
|
5
|
-
|
|
6
|
-
const ZanitSearchForm = class {
|
|
7
|
-
constructor(hostRef) {
|
|
8
|
-
registerInstance(this, hostRef);
|
|
9
|
-
this.search = createEvent(this, "search", 7);
|
|
10
|
-
this.resetSearch = createEvent(this, "resetSearch", 7);
|
|
11
|
-
}
|
|
12
|
-
formElement;
|
|
13
|
-
get host() { return getElement(this); }
|
|
14
|
-
isMobile = false;
|
|
15
|
-
/** Indicates whether the searchbar is visible and usable. */
|
|
16
|
-
showSearchbar = false;
|
|
17
|
-
/** Search query to apply. */
|
|
18
|
-
_searchQuery = undefined;
|
|
19
|
-
/** Initial search query */
|
|
20
|
-
searchQuery = undefined;
|
|
21
|
-
onSearchQueryChange() {
|
|
22
|
-
this._searchQuery = this.searchQuery;
|
|
23
|
-
if (this.searchQuery) {
|
|
24
|
-
this.openSearchbar();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/** Emitted on search form submission. */
|
|
28
|
-
search;
|
|
29
|
-
resetSearch;
|
|
30
|
-
async connectedCallback() {
|
|
31
|
-
this.showSearchbar = !!this.searchQuery;
|
|
32
|
-
const mobileMediaQuery = window.matchMedia('(width < 768px)');
|
|
33
|
-
this.isMobile = mobileMediaQuery.matches;
|
|
34
|
-
mobileMediaQuery.onchange = (mql) => {
|
|
35
|
-
this.isMobile = mql.matches;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/** Close open searchbar when clicking outside. */
|
|
39
|
-
handleOutsideClick(event) {
|
|
40
|
-
if (this.showSearchbar && this.formElement && !containsTarget(this.formElement, event)) {
|
|
41
|
-
this.showSearchbar = false;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
openSearchbar() {
|
|
45
|
-
this.showSearchbar = true;
|
|
46
|
-
setTimeout(() => {
|
|
47
|
-
const searchbarInput = this.host.shadowRoot.querySelector('#searchbar-input');
|
|
48
|
-
searchbarInput.focus();
|
|
49
|
-
}, 100);
|
|
50
|
-
}
|
|
51
|
-
resetSearchQuery() {
|
|
52
|
-
this.searchQuery = undefined;
|
|
53
|
-
this.resetSearch.emit();
|
|
54
|
-
}
|
|
55
|
-
handleInputChange(event) {
|
|
56
|
-
this._searchQuery = event.target.value;
|
|
57
|
-
if (!this._searchQuery) {
|
|
58
|
-
this.searchQuery = undefined;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
onSearchSubmit(event) {
|
|
62
|
-
event.preventDefault();
|
|
63
|
-
if (!this._searchQuery) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
this.showSearchbar = false;
|
|
67
|
-
const searchEv = this.search.emit({ query: this._searchQuery });
|
|
68
|
-
// do not submit the form if the event default behavior was prevented
|
|
69
|
-
if (searchEv.defaultPrevented) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
this.formElement.submit();
|
|
73
|
-
}
|
|
74
|
-
render() {
|
|
75
|
-
if (this.isMobile) {
|
|
76
|
-
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" }))));
|
|
77
|
-
}
|
|
78
|
-
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.openSearchbar() }, this.showSearchbar ? null : h("span", { class: "searchbar-button-label" }, "Cerca"), h("z-icon", { name: "search", width: "2rem", height: "2rem" }))));
|
|
79
|
-
}
|
|
80
|
-
static get watchers() { return {
|
|
81
|
-
"searchQuery": ["onSearchQueryChange"]
|
|
82
|
-
}; }
|
|
83
|
-
};
|
|
84
|
-
ZanitSearchForm.style = searchFormCss;
|
|
85
|
-
|
|
86
|
-
export { ZanitSearchForm as zanit_search_form };
|
|
87
|
-
//# sourceMappingURL=zanit-search-form.entry.esm.js.map
|
|
88
|
-
|
|
89
|
-
//# sourceMappingURL=zanit-search-form.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"zanit-search-form.entry.esm.js","mappings":"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","names":[],"sources":["src/components/menubar/search-form/search-form.css?tag=zanit-search-form&encapsulation=shadow","src/components/menubar/search-form/search-form.tsx"],"sourcesContent":[":host,\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n*:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\nbutton {\n all: unset;\n cursor: pointer;\n}\n\n@media (width < 768px) {\n .searchbar {\n display: flex;\n align-items: center;\n border: 1px solid #000;\n border-radius: 4px;\n }\n\n .searchbar > *:first-child {\n /* To have a seamless appearance of the border radius of an internal child element nested within a parent element with rounded borders, we need to subtract the parent's border thickness from the child's border radius. Inner Radius = Outer Radius - Border Thickness */\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n }\n\n .searchbar button[type='reset'] {\n display: flex;\n padding: 0 0 0 8px;\n cursor: pointer;\n }\n\n .searchbar input {\n width: 100%;\n height: 100%;\n padding: 4px 8px;\n border: none;\n background-color: #fff;\n font-family: var(--font-family-sans);\n font-size: 1rem;\n }\n\n .searchbar input[type='search']::-webkit-search-cancel-button,\n .searchbar input[type='search']::-webkit-search-decoration {\n appearance: none;\n }\n\n .searchbar input::placeholder {\n color: var(--gray500);\n }\n\n .searchbar .searchbar-button {\n padding: 4px 8px;\n border-left: 1px solid #000;\n background: var(--zanit-accent-color);\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n }\n\n .searchbar input:focus:focus-visible,\n .searchbar .searchbar-button:focus:focus-visible {\n z-index: 1;\n }\n}\n\n@media (width >= 768px) {\n .searchbar {\n display: flex;\n font-size: 1.5rem;\n }\n\n .searchbar.searchbar-open {\n position: absolute;\n width: 100%;\n height: 100%;\n inset: 0;\n }\n\n .searchbar .input-wrapper {\n display: none;\n width: 100%;\n align-items: center;\n padding: 0 0 0 var(--grid-margin);\n background-color: #fff;\n gap: 6px; /* diventa 14px sommato al padding a sinistra della input */\n }\n\n .searchbar .input-wrapper:not(.hide) {\n display: flex;\n }\n\n .searchbar button[type='reset'] {\n display: flex;\n align-items: center;\n border-radius: 4px;\n cursor: pointer;\n }\n\n .searchbar input {\n z-index: 1;\n width: 100%;\n height: 100%;\n padding: 8px;\n border: none;\n background-color: #fff;\n font-family: var(--font-family-sans);\n font-size: inherit;\n }\n\n .searchbar input[type='search']::-webkit-search-cancel-button,\n .searchbar input[type='search']::-webkit-search-decoration {\n appearance: none;\n }\n\n .searchbar input::placeholder {\n color: var(--gray500);\n }\n\n .searchbar .searchbar-button {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n border-right: 1px solid #000;\n border-left: 1px solid #000;\n background: var(--zanit-accent-color);\n font-family: inherit;\n font-size: inherit;\n gap: 64px;\n line-height: 1;\n }\n\n .searchbar input:focus:focus-visible,\n .searchbar .searchbar-button:focus:focus-visible {\n z-index: 1;\n }\n}\n\n@media (width >= 768px) and (width < 1152px) {\n .searchbar .searchbar-button > .searchbar-button-label {\n display: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, State, Watch } from '@stencil/core';\nimport { containsTarget } from '../../../utils/utils';\n\n@Component({\n tag: 'zanit-search-form',\n styleUrl: 'search-form.css',\n shadow: true,\n})\nexport class ZanitSearchForm {\n private formElement: HTMLFormElement;\n\n @Element() host: HTMLZanitSearchFormElement;\n\n @State()\n isMobile: boolean = false;\n\n /** Indicates whether the searchbar is visible and usable. */\n @State()\n showSearchbar: boolean = false;\n\n /** Search query to apply. */\n @State()\n _searchQuery: string | undefined = undefined;\n\n /** Initial search query */\n @Prop({ mutable: true })\n searchQuery: string | undefined = undefined;\n\n @Watch('searchQuery')\n onSearchQueryChange() {\n this._searchQuery = this.searchQuery;\n if (this.searchQuery) {\n this.openSearchbar();\n }\n }\n\n /** Emitted on search form submission. */\n @Event({ cancelable: true }) search: EventEmitter<{ query: string }>;\n\n @Event() resetSearch: EventEmitter<void>;\n\n async connectedCallback() {\n this.showSearchbar = !!this.searchQuery;\n const mobileMediaQuery = window.matchMedia('(width < 768px)');\n this.isMobile = mobileMediaQuery.matches;\n mobileMediaQuery.onchange = (mql) => {\n this.isMobile = mql.matches;\n };\n }\n\n /** Close open searchbar when clicking outside. */\n @Listen('click', { target: 'document', passive: true })\n handleOutsideClick(event: MouseEvent) {\n if (this.showSearchbar && this.formElement && !containsTarget(this.formElement, event)) {\n this.showSearchbar = false;\n }\n }\n\n private openSearchbar() {\n this.showSearchbar = true;\n setTimeout(() => {\n const searchbarInput = this.host.shadowRoot.querySelector('#searchbar-input') as HTMLInputElement;\n searchbarInput.focus();\n }, 100);\n }\n\n private resetSearchQuery() {\n this.searchQuery = undefined;\n this.resetSearch.emit();\n }\n\n private handleInputChange(event: Event) {\n this._searchQuery = (event.target as HTMLInputElement).value;\n if (!this._searchQuery) {\n this.searchQuery = undefined;\n }\n }\n\n private onSearchSubmit(event: Event) {\n event.preventDefault();\n if (!this._searchQuery) {\n return;\n }\n\n this.showSearchbar = false;\n const searchEv = this.search.emit({ query: this._searchQuery });\n // do not submit the form if the event default behavior was prevented\n if (searchEv.defaultPrevented) {\n return;\n }\n\n this.formElement.submit();\n }\n\n render() {\n if (this.isMobile) {\n return (\n <form\n class=\"searchbar\"\n ref={(el) => (this.formElement = el)}\n role=\"search\"\n aria-label=\"Cerca\"\n method=\"get\"\n action=\"/ricerca\"\n onSubmit={(event) => this.onSearchSubmit(event)}\n onReset={() => this.resetSearchQuery()}\n >\n {this.searchQuery && (\n <button\n type=\"reset\"\n aria-label=\"Svuota campo di ricerca\"\n >\n <z-icon\n name=\"multiply-circled\"\n width=\"1rem\"\n height=\"1rem\"\n />\n </button>\n )}\n <input\n id=\"searchbar-input\"\n name=\"q\"\n type=\"search\"\n placeholder=\"Cerca per parola chiave o ISBN\"\n onInput={(event) => this.handleInputChange(event)}\n value={this.searchQuery}\n required\n ></input>\n <button\n class=\"searchbar-button\"\n aria-controls=\"searchbar-input\"\n aria-label=\"Cerca\"\n type=\"submit\"\n >\n <z-icon\n name=\"search\"\n width=\"1.25rem\"\n height=\"1.25rem\"\n ></z-icon>\n </button>\n </form>\n );\n }\n\n return (\n <form\n class={{ 'searchbar': true, 'searchbar-open': this.showSearchbar }}\n ref={(el) => (this.formElement = el)}\n role=\"search\"\n aria-label=\"Cerca\"\n method=\"get\"\n action=\"/ricerca\"\n onSubmit={(event) => this.onSearchSubmit(event)}\n onReset={() => this.resetSearchQuery()}\n >\n <div\n class={{ 'hide': !this.showSearchbar, 'input-wrapper': true }}\n role=\"none\"\n >\n {this.searchQuery && (\n <button\n type=\"reset\"\n aria-label=\"Svuota campo di ricerca\"\n >\n <z-icon\n name=\"multiply-circled\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n </button>\n )}\n <input\n id=\"searchbar-input\"\n name=\"q\"\n type=\"search\"\n placeholder=\"Cerca per parola chiave o ISBN\"\n onInput={(event) => this.handleInputChange(event)}\n value={this.searchQuery}\n required\n ></input>\n </div>\n\n <button\n class=\"searchbar-button\"\n aria-label=\"Cerca\"\n aria-controls=\"searchbar-input\"\n type={this.showSearchbar ? 'submit' : 'button'}\n onClick={() => this.openSearchbar()}\n >\n {this.showSearchbar ? null : <span class=\"searchbar-button-label\">Cerca</span>}\n <z-icon\n name=\"search\"\n width=\"2rem\"\n height=\"2rem\"\n ></z-icon>\n </button>\n </form>\n );\n }\n}\n"],"version":3}
|