@jumpgroup/jump-design-system 0.3.78 → 0.3.79
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-230bcbae.js → index-e9479989.js} +5 -5
- package/dist/cjs/index-e9479989.js.map +1 -0
- package/dist/cjs/jump-accordion-group.cjs.entry.js +1 -1
- package/dist/cjs/jump-accordion.cjs.entry.js +1 -1
- package/dist/cjs/jump-badge.cjs.entry.js +1 -1
- package/dist/cjs/jump-button_2.cjs.entry.js +1 -1
- package/dist/cjs/jump-card-ecommerce-option.cjs.entry.js +1 -1
- package/dist/cjs/jump-card-ecommerce.cjs.entry.js +1 -1
- package/dist/cjs/jump-card.cjs.entry.js +1 -1
- package/dist/cjs/jump-design-system.cjs.js +2 -2
- package/dist/cjs/jump-filter-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/jump-filter-range.cjs.entry.js +1 -1
- package/dist/cjs/jump-filter-select.cjs.entry.js +61 -21
- package/dist/cjs/jump-filter-select.cjs.entry.js.map +1 -1
- package/dist/cjs/jump-filter-switch.cjs.entry.js +2 -2
- package/dist/cjs/jump-filter.cjs.entry.js +1 -1
- package/dist/cjs/jump-filtergroup.cjs.entry.js +4 -4
- package/dist/cjs/jump-navbar.cjs.entry.js +6 -6
- package/dist/cjs/jump-pagination-table.cjs.entry.js +4 -4
- package/dist/cjs/jump-pagination.cjs.entry.js +4 -4
- package/dist/cjs/jump-quantity.cjs.entry.js +4 -4
- package/dist/cjs/jump-search-bar-dropdown-item.cjs.entry.js +2 -2
- package/dist/cjs/jump-search-bar-mobile.cjs.entry.js +5 -5
- package/dist/cjs/jump-search-bar.cjs.entry.js +1 -1
- package/dist/cjs/jump-side-cart-example.cjs.entry.js +2 -2
- package/dist/cjs/jump-side-cart.cjs.entry.js +1 -1
- package/dist/cjs/jump-tab-item.cjs.entry.js +3 -3
- package/dist/cjs/jump-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/jump-tab.cjs.entry.js +2 -2
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/components/jump-filter-select/jump-filter-select.js +60 -21
- package/dist/collection/components/jump-filter-select/jump-filter-select.js.map +1 -1
- package/dist/collection/components/jump-filter-select/jump-filter-select.stories.js +28 -10
- package/dist/collection/components/jump-filter-switch/jump-filter-switch.js +1 -1
- package/dist/collection/components/jump-filtergroup/jump-filtergroup.js +3 -3
- package/dist/collection/components/jump-navbar/jump-navbar.js +5 -5
- package/dist/collection/components/jump-pagination/jump-pagination.js +3 -3
- package/dist/collection/components/jump-pagination-table/jump-pagination-table.js +3 -3
- package/dist/collection/components/jump-quantity/jump-quantity.js +3 -3
- package/dist/collection/components/jump-search-bar-dropdown-item/jump-search-bar-dropdown-item.js +1 -1
- package/dist/collection/components/jump-search-bar-mobile/jump-search-bar-mobile.js +4 -4
- package/dist/collection/components/jump-side-cart/jump-side-cart.example.js +1 -1
- package/dist/collection/components/jump-tab/jump-tab.js +1 -1
- package/dist/collection/components/jump-tab-item/jump-tab-item.js +2 -2
- package/dist/collection/components/jump-tab-panel/jump-tab-panel.js +1 -1
- package/dist/collection/utils/utils.js +4 -0
- package/dist/collection/utils/utils.js.map +1 -1
- package/dist/components/jump-filter-select.js +60 -21
- package/dist/components/jump-filter-select.js.map +1 -1
- package/dist/components/jump-filter-switch.js +1 -1
- package/dist/components/jump-filtergroup.js +3 -3
- package/dist/components/jump-navbar.js +5 -5
- package/dist/components/jump-pagination-table.js +3 -3
- package/dist/components/jump-pagination.js +3 -3
- package/dist/components/jump-quantity.js +3 -3
- package/dist/components/jump-search-bar-dropdown-item.js +1 -1
- package/dist/components/jump-search-bar-mobile.js +4 -4
- package/dist/components/jump-side-cart-example.js +1 -1
- package/dist/components/jump-tab-item.js +2 -2
- package/dist/components/jump-tab-panel.js +1 -1
- package/dist/components/jump-tab.js +1 -1
- package/dist/esm/{index-4363ffe4.js → index-a94b3471.js} +5 -5
- package/dist/esm/index-a94b3471.js.map +1 -0
- package/dist/esm/jump-accordion-group.entry.js +1 -1
- package/dist/esm/jump-accordion.entry.js +1 -1
- package/dist/esm/jump-badge.entry.js +1 -1
- package/dist/esm/jump-button_2.entry.js +1 -1
- package/dist/esm/jump-card-ecommerce-option.entry.js +1 -1
- package/dist/esm/jump-card-ecommerce.entry.js +1 -1
- package/dist/esm/jump-card.entry.js +1 -1
- package/dist/esm/jump-design-system.js +3 -3
- package/dist/esm/jump-filter-checkbox.entry.js +1 -1
- package/dist/esm/jump-filter-range.entry.js +1 -1
- package/dist/esm/jump-filter-select.entry.js +61 -21
- package/dist/esm/jump-filter-select.entry.js.map +1 -1
- package/dist/esm/jump-filter-switch.entry.js +2 -2
- package/dist/esm/jump-filter.entry.js +1 -1
- package/dist/esm/jump-filtergroup.entry.js +4 -4
- package/dist/esm/jump-navbar.entry.js +6 -6
- package/dist/esm/jump-pagination-table.entry.js +4 -4
- package/dist/esm/jump-pagination.entry.js +4 -4
- package/dist/esm/jump-quantity.entry.js +4 -4
- package/dist/esm/jump-search-bar-dropdown-item.entry.js +2 -2
- package/dist/esm/jump-search-bar-mobile.entry.js +5 -5
- package/dist/esm/jump-search-bar.entry.js +1 -1
- package/dist/esm/jump-side-cart-example.entry.js +2 -2
- package/dist/esm/jump-side-cart.entry.js +1 -1
- package/dist/esm/jump-tab-item.entry.js +3 -3
- package/dist/esm/jump-tab-panel.entry.js +2 -2
- package/dist/esm/jump-tab.entry.js +2 -2
- package/dist/esm/loader.js +3 -3
- package/dist/jump-design-system/jump-design-system.esm.js +1 -1
- package/dist/jump-design-system/jump-design-system.esm.js.map +1 -1
- package/dist/jump-design-system/{p-048d87ee.entry.js → p-0140b32c.entry.js} +2 -2
- package/dist/jump-design-system/{p-d40c487f.entry.js → p-02ab8fb7.entry.js} +2 -2
- package/dist/jump-design-system/{p-985e8ea6.entry.js → p-038a2a14.entry.js} +2 -2
- package/dist/jump-design-system/{p-e7b3ebb1.entry.js → p-0d86819c.entry.js} +2 -2
- package/dist/jump-design-system/{p-79e5dac6.entry.js → p-18c359e3.entry.js} +2 -2
- package/dist/jump-design-system/{p-ae1435a6.entry.js → p-1ef1fc5c.entry.js} +2 -2
- package/dist/jump-design-system/{p-1f824808.entry.js → p-264fa972.entry.js} +2 -2
- package/dist/jump-design-system/{p-e7d1e3d8.entry.js → p-421ebb5a.entry.js} +2 -2
- package/dist/jump-design-system/{p-5092836a.entry.js → p-55fcebb1.entry.js} +5 -5
- package/dist/jump-design-system/p-55fcebb1.entry.js.map +1 -0
- package/dist/jump-design-system/{p-5fb2a919.entry.js → p-629835ac.entry.js} +2 -2
- package/dist/jump-design-system/{p-a7d5e687.entry.js → p-6905cee4.entry.js} +2 -2
- package/dist/jump-design-system/{p-6e497dd6.entry.js → p-6b8fccdb.entry.js} +2 -2
- package/dist/jump-design-system/{p-9035201c.entry.js → p-6d82feb3.entry.js} +2 -2
- package/dist/jump-design-system/{p-8f02eb5e.entry.js → p-7ac9382b.entry.js} +2 -2
- package/dist/jump-design-system/{p-48bb1cbf.entry.js → p-7e35d9f1.entry.js} +3 -3
- package/dist/jump-design-system/{p-a0237406.entry.js → p-87903fff.entry.js} +2 -2
- package/dist/jump-design-system/{p-40ca24a6.js → p-98d5dd1f.js} +3 -3
- package/dist/jump-design-system/{p-40ca24a6.js.map → p-98d5dd1f.js.map} +1 -1
- package/dist/jump-design-system/{p-66c79fb9.entry.js → p-b3765945.entry.js} +4 -4
- package/dist/jump-design-system/{p-b03b8328.entry.js → p-bb18f919.entry.js} +2 -2
- package/dist/jump-design-system/{p-0cc799f3.entry.js → p-bd692b1f.entry.js} +2 -2
- package/dist/jump-design-system/{p-83b3a560.entry.js → p-cdc5daf7.entry.js} +2 -2
- package/dist/jump-design-system/p-d0ea0f54.entry.js +2 -0
- package/dist/jump-design-system/p-d1fc1ddf.entry.js +2 -0
- package/dist/jump-design-system/{p-37b7b679.entry.js → p-d70793e3.entry.js} +2 -2
- package/dist/jump-design-system/{p-916742f5.entry.js → p-f36de1a8.entry.js} +2 -2
- package/dist/jump-design-system/{p-cdc53aae.entry.js → p-ff62e250.entry.js} +2 -2
- package/dist/types/components/jump-filter-select/jump-filter-select.d.ts +1 -6
- package/package.json +1 -1
- package/dist/cjs/index-230bcbae.js.map +0 -1
- package/dist/esm/index-4363ffe4.js.map +0 -1
- package/dist/jump-design-system/p-5092836a.entry.js.map +0 -1
- package/dist/jump-design-system/p-6134b84b.entry.js +0 -2
- package/dist/jump-design-system/p-64024e67.entry.js +0 -2
- /package/dist/jump-design-system/{p-048d87ee.entry.js.map → p-0140b32c.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-d40c487f.entry.js.map → p-02ab8fb7.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-985e8ea6.entry.js.map → p-038a2a14.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-e7b3ebb1.entry.js.map → p-0d86819c.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-79e5dac6.entry.js.map → p-18c359e3.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-ae1435a6.entry.js.map → p-1ef1fc5c.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-1f824808.entry.js.map → p-264fa972.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-e7d1e3d8.entry.js.map → p-421ebb5a.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-5fb2a919.entry.js.map → p-629835ac.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-a7d5e687.entry.js.map → p-6905cee4.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-6e497dd6.entry.js.map → p-6b8fccdb.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-9035201c.entry.js.map → p-6d82feb3.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-8f02eb5e.entry.js.map → p-7ac9382b.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-48bb1cbf.entry.js.map → p-7e35d9f1.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-a0237406.entry.js.map → p-87903fff.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-66c79fb9.entry.js.map → p-b3765945.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-b03b8328.entry.js.map → p-bb18f919.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-0cc799f3.entry.js.map → p-bd692b1f.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-83b3a560.entry.js.map → p-cdc5daf7.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-64024e67.entry.js.map → p-d0ea0f54.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-6134b84b.entry.js.map → p-d1fc1ddf.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-37b7b679.entry.js.map → p-d70793e3.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-916742f5.entry.js.map → p-f36de1a8.entry.js.map} +0 -0
- /package/dist/jump-design-system/{p-cdc53aae.entry.js.map → p-ff62e250.entry.js.map} +0 -0
|
@@ -17,17 +17,8 @@ export class JumpFilterSelect {
|
|
|
17
17
|
this.required = false;
|
|
18
18
|
this.loading = false;
|
|
19
19
|
this.open = false;
|
|
20
|
-
this.hasSlottedOptions = false;
|
|
21
20
|
this.values = [];
|
|
22
21
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Controlla se ci sono opzioni definite come slot
|
|
25
|
-
*/
|
|
26
|
-
componentWillRender() {
|
|
27
|
-
// Verifica se ci sono elementi sl-option definiti come figli
|
|
28
|
-
const slotNodes = this.hostElement.childNodes;
|
|
29
|
-
this.hasSlottedOptions = Array.from(slotNodes).some(node => node.nodeName && node.nodeName.toLowerCase() === 'sl-option');
|
|
30
|
-
}
|
|
31
22
|
/**
|
|
32
23
|
* Converte le opzioni da string o array a array di oggetti
|
|
33
24
|
*/
|
|
@@ -50,36 +41,61 @@ export class JumpFilterSelect {
|
|
|
50
41
|
this.values = this.value ? [this.value] : [];
|
|
51
42
|
}
|
|
52
43
|
componentDidLoad() {
|
|
53
|
-
this.listenSLChange();
|
|
54
44
|
// Inizializza l'array dei valori
|
|
55
45
|
this.updateValues();
|
|
46
|
+
// Aspetta che il render sia completato e che Shoelace abbia processato gli slot
|
|
47
|
+
setTimeout(() => {
|
|
48
|
+
this.listenSLChange();
|
|
49
|
+
}, 100); // Aumentiamo il timeout per dare più tempo a Shoelace
|
|
50
|
+
}
|
|
51
|
+
componentDidRender() {
|
|
52
|
+
// Assicuriamoci che il listener sia attivo anche dopo ogni render
|
|
53
|
+
if (this.el && !this.el._jumpListenerAttached) {
|
|
54
|
+
this.listenSLChange();
|
|
55
|
+
}
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
58
|
* Ascolta gli eventi di cambio selezione dal select Shoelace
|
|
59
59
|
*/
|
|
60
60
|
listenSLChange() {
|
|
61
|
-
if (this.
|
|
62
|
-
|
|
61
|
+
if (this.el && !this.el._jumpListenerAttached) {
|
|
62
|
+
// Marchiamo l'elemento per evitare listener multipli
|
|
63
|
+
this.el._jumpListenerAttached = true;
|
|
64
|
+
this.el.addEventListener('sl-change', (event) => {
|
|
63
65
|
if (this.disabled) {
|
|
64
66
|
return;
|
|
65
67
|
}
|
|
68
|
+
console.log('sl-change event received:', event.target.value);
|
|
69
|
+
// AGGIORNA PRIMA I VALORI INTERNI
|
|
66
70
|
this.value = event.target.value;
|
|
67
71
|
this.updateValues();
|
|
68
72
|
const optionsArray = this.getOptionsArray();
|
|
69
|
-
|
|
73
|
+
let selectedOption = optionsArray.find(option => option.value === this.value);
|
|
74
|
+
// Se non abbiamo trovato l'opzione nell'array (caso slot), proviamo a trovarla negli elementi sl-option
|
|
75
|
+
if (!selectedOption && this.value) {
|
|
76
|
+
const slotOptions = this.hostElement.querySelectorAll('sl-option');
|
|
77
|
+
const slotOption = Array.from(slotOptions).find((opt) => opt.value === this.value);
|
|
78
|
+
if (slotOption) {
|
|
79
|
+
selectedOption = {
|
|
80
|
+
value: this.value,
|
|
81
|
+
label: slotOption.textContent || this.value
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
70
85
|
// Evento specifico per il componente select
|
|
71
86
|
const selectEventData = {
|
|
72
87
|
value: this.value,
|
|
73
88
|
selectedOption
|
|
74
89
|
};
|
|
75
90
|
this.selectionChange.emit(selectEventData);
|
|
76
|
-
// Evento standard per il sistema di filtri
|
|
91
|
+
// CORREZIONE: Evento standard per il sistema di filtri con valori aggiornati
|
|
77
92
|
const filterEventData = {
|
|
78
93
|
name: this.name,
|
|
79
|
-
values: this.values,
|
|
80
|
-
value: this.value,
|
|
81
|
-
selectedOption
|
|
94
|
+
values: this.values, // Ora questo sarà popolato correttamente
|
|
95
|
+
value: this.value, // E anche questo
|
|
96
|
+
selectedOption // E anche questo
|
|
82
97
|
};
|
|
98
|
+
console.log('jump-filter-select: Emitting jump-filterchange with data:', filterEventData);
|
|
83
99
|
this.selectionFilterChange.emit(filterEventData);
|
|
84
100
|
});
|
|
85
101
|
}
|
|
@@ -97,7 +113,19 @@ export class JumpFilterSelect {
|
|
|
97
113
|
*/
|
|
98
114
|
async getSelectedOption() {
|
|
99
115
|
const optionsArray = this.getOptionsArray();
|
|
100
|
-
|
|
116
|
+
let selectedOption = optionsArray.find(option => option.value === this.value);
|
|
117
|
+
// Se non abbiamo trovato l'opzione nell'array (caso slot), proviamo a trovarla negli elementi sl-option
|
|
118
|
+
if (!selectedOption && this.value) {
|
|
119
|
+
const slotOptions = this.hostElement.querySelectorAll('sl-option');
|
|
120
|
+
const slotOption = Array.from(slotOptions).find((opt) => opt.value === this.value);
|
|
121
|
+
if (slotOption) {
|
|
122
|
+
selectedOption = {
|
|
123
|
+
value: this.value,
|
|
124
|
+
label: slotOption.textContent || this.value
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return selectedOption;
|
|
101
129
|
}
|
|
102
130
|
/**
|
|
103
131
|
* Metodo pubblico per ottenere i valori selezionati come array
|
|
@@ -139,7 +167,18 @@ export class JumpFilterSelect {
|
|
|
139
167
|
// Emetti l'evento di cambio se richiesto
|
|
140
168
|
if (emitEvent) {
|
|
141
169
|
const optionsArray = this.getOptionsArray();
|
|
142
|
-
|
|
170
|
+
let selectedOption = optionsArray.find(option => option.value === this.value);
|
|
171
|
+
// Se non abbiamo trovato l'opzione nell'array (caso slot), proviamo a trovarla negli elementi sl-option
|
|
172
|
+
if (!selectedOption && this.value) {
|
|
173
|
+
const slotOptions = this.hostElement.querySelectorAll('sl-option');
|
|
174
|
+
const slotOption = Array.from(slotOptions).find((opt) => opt.value === this.value);
|
|
175
|
+
if (slotOption) {
|
|
176
|
+
selectedOption = {
|
|
177
|
+
value: this.value,
|
|
178
|
+
label: slotOption.textContent || this.value
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
}
|
|
143
182
|
// Evento specifico per il componente select
|
|
144
183
|
const selectEventData = {
|
|
145
184
|
value: this.value,
|
|
@@ -169,7 +208,8 @@ export class JumpFilterSelect {
|
|
|
169
208
|
}
|
|
170
209
|
render() {
|
|
171
210
|
const optionsArray = this.getOptionsArray();
|
|
172
|
-
|
|
211
|
+
const hasOptionsFromProp = optionsArray && optionsArray.length > 0;
|
|
212
|
+
return (h(Host, { key: '97473942caed469dfb681d77e1335542d5d67808', ref: (host) => (this.host = host) }, this.label && (h("div", { key: 'eb5d0f4a428642694bb47f1bedf1da14d375e592', class: "select-label" }, this.label)), h("sl-select", { key: 'c3d4cb422603fdf837e5433dddd061c47832723a', value: this.value, placeholder: this.placeholder, disabled: this.disabled, multiple: this.multiple, required: this.required, loading: this.loading, ref: (el) => (this.el = el) }, hasOptionsFromProp ? (optionsArray.map(option => (h("sl-option", { value: option.value }, option.label)))) : (h("slot", null)))));
|
|
173
213
|
}
|
|
174
214
|
static get is() { return "jump-filter-select"; }
|
|
175
215
|
static get encapsulation() { return "shadow"; }
|
|
@@ -350,7 +390,6 @@ export class JumpFilterSelect {
|
|
|
350
390
|
static get states() {
|
|
351
391
|
return {
|
|
352
392
|
"open": {},
|
|
353
|
-
"hasSlottedOptions": {},
|
|
354
393
|
"values": {}
|
|
355
394
|
};
|
|
356
395
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jump-filter-select.js","sourceRoot":"","sources":["../../../src/components/jump-filter-select/jump-filter-select.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAgB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,2DAA2D,CAAC;AACnE,OAAO,2DAA2D,CAAC;AAEnE;;;GAGG;AAMH,MAAM,OAAO,gBAAgB;;;2BAQG,uBAAuB;;oBAM9B,eAAe;uBAGyB,EAAE;wBAGpB,KAAK;wBAGtB,KAAK;wBAGL,KAAK;uBAGN,KAAK;oBAGP,KAAK;iCAGQ,KAAK;sBAGf,EAAE;;IAQ9B;;OAEG;IACH,mBAAmB;QACjB,6DAA6D;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,WAAW,CAC7D,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC;gBACtD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,iCAAiC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAU,EAAE,EAAE;gBACrD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAEpB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5C,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEhF,4CAA4C;gBAC5C,MAAM,eAAe,GAAG;oBACtB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,cAAc;iBACf,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAE3C,2CAA2C;gBAC3C,MAAM,eAAe,GAAG;oBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,cAAc;iBACf,CAAC;gBACF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAYD;;;OAGG;IAEH,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,iBAAiB;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IAEH,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,YAAqB,IAAI;QACxD,kDAAkD;QAClD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAE5B,6CAA6C;QAC7C,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,2DAA2D;QAC3D,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC3B,CAAC;QAED,yCAAyC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;YAEhF,4CAA4C;YAC5C,MAAM,eAAe,GAAG;gBACtB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,QAAQ;gBAClB,cAAc;gBACd,YAAY,EAAE,IAAI,CAAC,gEAAgE;aACpF,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAE3C,2CAA2C;YAC3C,MAAM,eAAe,GAAG;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,QAAQ;gBAClB,cAAc;gBACd,YAAY,EAAE,IAAI;aACnB,CAAC;YACF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEjD,0CAA0C;YAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,QAAQ;gBAClB,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE5C,OAAO,CACL,EAAC,IAAI,qDAAC,GAAG,EAAE,CAAC,IAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjD,IAAI,CAAC,KAAK,IAAI,CACb,4DAAK,KAAK,EAAC,cAAc,IAAE,IAAI,CAAC,KAAK,CAAO,CAC7C;YACD,kEACE,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,GAAG,EAAE,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;gBAG/B,CAAC,IAAI,CAAC,iBAAiB,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACrD,iBAAW,KAAK,EAAE,MAAM,CAAC,KAAK,IAAG,MAAM,CAAC,KAAK,CAAa,CAC3D,CAAC;gBAGF,8DAAa,CACH,CACP,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Prop, h, Event, EventEmitter, Method, State, Element } from '@stencil/core';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\n\n/**\n * Componente select per filtri con supporto per opzioni e stato\n * @slot - Contenitore per elementi sl-option quando le opzioni sono definite come figli\n */\n@Component({\n tag: 'jump-filter-select',\n styleUrl: 'jump-filter-select.scss',\n shadow: true,\n})\nexport class JumpFilterSelect {\n /** Riferimento all'elemento host */\n @Element() hostElement: HTMLElement;\n\n /** Il valore selezionato */\n @Prop({ reflect: true, mutable: true }) value: string;\n\n /** Il placeholder da mostrare quando nessun valore è selezionato */\n @Prop() placeholder: string = 'Seleziona un\\'opzione';\n\n /** L'etichetta del select */\n @Prop() label: string;\n\n /** Nome identificativo del filtro, utilizzato negli eventi */\n @Prop() name: string = 'select-filter';\n \n /** Opzioni del select come array di oggetti {value, label} o come stringa JSON */\n @Prop() options: string | { value: string; label: string }[] = [];\n\n /** Stato del select (disabilitato) */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /** Flag per indicare se è possibile selezionare più opzioni */\n @Prop() multiple: boolean = false;\n\n /** Flag per indicare se la selezione è obbligatoria */\n @Prop() required: boolean = false;\n\n /** Flag per indicare se il select è in stato di caricamento */\n @Prop() loading: boolean = false;\n\n /** Stato interno per gestire l'apertura del dropdown */\n @State() open: boolean = false;\n\n /** Flag per determinare se sono presenti opzioni come slot */\n @State() hasSlottedOptions: boolean = false;\n \n /** Stato interno per tenere traccia dei valori selezionati come array per compatibilità con gli altri filtri */\n @State() values: string[] = [];\n\n /** Riferimento all'elemento host */\n host: HTMLElement;\n\n /** Riferimento all'elemento sl-select interno */\n el: any;\n\n /**\n * Controlla se ci sono opzioni definite come slot\n */\n componentWillRender() {\n // Verifica se ci sono elementi sl-option definiti come figli\n const slotNodes = this.hostElement.childNodes;\n this.hasSlottedOptions = Array.from(slotNodes).some(node =>\n node.nodeName && node.nodeName.toLowerCase() === 'sl-option'\n );\n }\n\n /**\n * Converte le opzioni da string o array a array di oggetti\n */\n private getOptionsArray(): { value: string; label: string }[] {\n if (typeof this.options === 'string') {\n try {\n return JSON.parse(this.options);\n } catch (e) {\n console.error('Errore nel parsing delle opzioni:', e);\n return [];\n }\n }\n return this.options;\n }\n \n /**\n * Aggiorna l'array dei valori in base al valore selezionato\n */\n private updateValues() {\n this.values = this.value ? [this.value] : [];\n }\n\n componentDidLoad() {\n this.listenSLChange();\n // Inizializza l'array dei valori\n this.updateValues();\n }\n\n /**\n * Ascolta gli eventi di cambio selezione dal select Shoelace\n */\n listenSLChange() {\n if (this.host) {\n this.host.addEventListener('sl-change', (event: any) => {\n if (this.disabled) {\n return;\n }\n\n this.value = event.target.value;\n this.updateValues();\n \n const optionsArray = this.getOptionsArray();\n const selectedOption = optionsArray.find(option => option.value === this.value);\n \n // Evento specifico per il componente select\n const selectEventData = {\n value: this.value,\n selectedOption\n };\n this.selectionChange.emit(selectEventData);\n \n // Evento standard per il sistema di filtri\n const filterEventData = {\n name: this.name,\n values: this.values,\n value: this.value,\n selectedOption\n };\n this.selectionFilterChange.emit(filterEventData);\n });\n }\n }\n\n /**\n * Evento emesso quando cambia la selezione\n */\n @Event({ eventName: 'jump-select-change' }) selectionChange: EventEmitter;\n @Event({ eventName: 'jump-filterchange' }) selectionFilterChange: EventEmitter;\n /**\n * Evento emesso quando il valore viene cambiato programmaticamente\n */\n @Event({ eventName: 'jump-select-value-change' }) valueChange: EventEmitter;\n\n /**\n * Metodo pubblico per ottenere il valore selezionato\n * @returns Il valore attualmente selezionato\n */\n @Method()\n async getSelectedValue() {\n return this.value;\n }\n\n /**\n * Metodo pubblico per ottenere l'opzione selezionata\n * @returns L'opzione attualmente selezionata come oggetto {value, label}\n */\n @Method()\n async getSelectedOption() {\n const optionsArray = this.getOptionsArray();\n return optionsArray.find(option => option.value === this.value);\n }\n \n /**\n * Metodo pubblico per ottenere i valori selezionati come array\n * @returns Array contenente il valore selezionato o un array vuoto\n */\n @Method()\n async getValues() {\n return this.values;\n }\n \n /**\n * Metodo pubblico per ottenere il nome del filtro\n * @returns Il nome del filtro\n */\n @Method()\n async getName() {\n return this.name;\n }\n\n /**\n * Metodo pubblico per impostare programmaticamente il valore selezionato\n * @param newValue - Il nuovo valore da selezionare\n * @param emitEvent - Se emettere l'evento di cambio (default: true)\n * @returns Il nuovo valore impostato\n */\n @Method()\n async setValue(newValue: string, emitEvent: boolean = true) {\n // Se il componente è disabilitato, non fare nulla\n if (this.disabled) {\n return this.value;\n }\n \n // Salva il valore precedente per l'evento\n const oldValue = this.value;\n \n // Non fare nulla se il valore non è cambiato\n if (oldValue === newValue) {\n return this.value;\n }\n \n this.value = newValue;\n this.updateValues();\n \n // Aggiorna anche il valore dell'elemento sl-select interno\n if (this.el) {\n this.el.value = newValue;\n }\n \n // Emetti l'evento di cambio se richiesto\n if (emitEvent) {\n const optionsArray = this.getOptionsArray();\n const selectedOption = optionsArray.find(option => option.value === this.value);\n \n // Evento specifico per il componente select\n const selectEventData = {\n value: this.value,\n oldValue: oldValue,\n selectedOption,\n programmatic: true // Flag per indicare che il cambio è avvenuto programmaticamente\n };\n this.selectionChange.emit(selectEventData);\n \n // Evento standard per il sistema di filtri\n const filterEventData = {\n name: this.name,\n values: this.values,\n value: this.value,\n oldValue: oldValue,\n selectedOption,\n programmatic: true\n };\n this.selectionFilterChange.emit(filterEventData);\n \n // Evento specifico per cambio programmato\n this.valueChange.emit({\n value: this.value,\n oldValue: oldValue,\n selectedOption\n });\n }\n\n return this.value;\n }\n\n render() {\n const optionsArray = this.getOptionsArray();\n\n return (\n <Host ref={(host: HTMLElement) => (this.host = host)}>\n {this.label && (\n <div class=\"select-label\">{this.label}</div>\n )}\n <sl-select\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n multiple={this.multiple}\n required={this.required}\n loading={this.loading}\n ref={(el: any) => (this.el = el)}\n >\n {/* Renderizza le opzioni dalla prop options solo se non ci sono sl-option nello slot */}\n {!this.hasSlottedOptions && optionsArray.map(option => (\n <sl-option value={option.value}>{option.label}</sl-option>\n ))}\n\n {/* Slot per le opzioni definite come figli */}\n <slot></slot>\n </sl-select>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"jump-filter-select.js","sourceRoot":"","sources":["../../../src/components/jump-filter-select/jump-filter-select.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, Prop, h, Event, EventEmitter, Method, State, Element } from '@stencil/core';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\n\n/**\n * Componente select per filtri con supporto per opzioni e stato\n * @slot - Contenitore per elementi sl-option quando le opzioni sono definite come figli\n */\n@Component({\n tag: 'jump-filter-select',\n styleUrl: 'jump-filter-select.scss',\n shadow: true,\n})\nexport class JumpFilterSelect {\n /** Riferimento all'elemento host */\n @Element() hostElement: HTMLElement;\n\n /** Il valore selezionato */\n @Prop({ reflect: true, mutable: true }) value: string;\n\n /** Il placeholder da mostrare quando nessun valore è selezionato */\n @Prop() placeholder: string = 'Seleziona un\\'opzione';\n\n /** L'etichetta del select */\n @Prop() label: string;\n\n /** Nome identificativo del filtro, utilizzato negli eventi */\n @Prop() name: string = 'select-filter';\n \n /** Opzioni del select come array di oggetti {value, label} o come stringa JSON */\n @Prop() options: string | { value: string; label: string }[] = [];\n\n /** Stato del select (disabilitato) */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /** Flag per indicare se è possibile selezionare più opzioni */\n @Prop() multiple: boolean = false;\n\n /** Flag per indicare se la selezione è obbligatoria */\n @Prop() required: boolean = false;\n\n /** Flag per indicare se il select è in stato di caricamento */\n @Prop() loading: boolean = false;\n\n /** Stato interno per gestire l'apertura del dropdown */\n @State() open: boolean = false;\n \n /** Stato interno per tenere traccia dei valori selezionati come array per compatibilità con gli altri filtri */\n @State() values: string[] = [];\n\n /** Riferimento all'elemento host */\n host: HTMLElement;\n\n /** Riferimento all'elemento sl-select interno */\n el: any;\n\n /**\n * Converte le opzioni da string o array a array di oggetti\n */\n private getOptionsArray(): { value: string; label: string }[] {\n if (typeof this.options === 'string') {\n try {\n return JSON.parse(this.options);\n } catch (e) {\n console.error('Errore nel parsing delle opzioni:', e);\n return [];\n }\n }\n return this.options;\n }\n \n /**\n * Aggiorna l'array dei valori in base al valore selezionato\n */\n private updateValues() {\n this.values = this.value ? [this.value] : [];\n }\n\n componentDidLoad() {\n // Inizializza l'array dei valori\n this.updateValues();\n \n // Aspetta che il render sia completato e che Shoelace abbia processato gli slot\n setTimeout(() => {\n this.listenSLChange();\n }, 100); // Aumentiamo il timeout per dare più tempo a Shoelace\n }\n\n componentDidRender() {\n // Assicuriamoci che il listener sia attivo anche dopo ogni render\n if (this.el && !this.el._jumpListenerAttached) {\n this.listenSLChange();\n }\n }\n\n /**\n * Ascolta gli eventi di cambio selezione dal select Shoelace\n */\n listenSLChange() {\n if (this.el && !this.el._jumpListenerAttached) {\n // Marchiamo l'elemento per evitare listener multipli\n this.el._jumpListenerAttached = true;\n \n this.el.addEventListener('sl-change', (event: any) => {\n if (this.disabled) {\n return;\n }\n\n console.log('sl-change event received:', event.target.value);\n\n // AGGIORNA PRIMA I VALORI INTERNI\n this.value = event.target.value;\n this.updateValues();\n \n const optionsArray = this.getOptionsArray();\n let selectedOption = optionsArray.find(option => option.value === this.value);\n \n // Se non abbiamo trovato l'opzione nell'array (caso slot), proviamo a trovarla negli elementi sl-option\n if (!selectedOption && this.value) {\n const slotOptions = this.hostElement.querySelectorAll('sl-option');\n const slotOption = Array.from(slotOptions).find((opt: any) => opt.value === this.value);\n if (slotOption) {\n selectedOption = {\n value: this.value,\n label: slotOption.textContent || this.value\n };\n }\n }\n \n // Evento specifico per il componente select\n const selectEventData = {\n value: this.value,\n selectedOption\n };\n this.selectionChange.emit(selectEventData);\n \n // CORREZIONE: Evento standard per il sistema di filtri con valori aggiornati\n const filterEventData = {\n name: this.name,\n values: this.values, // Ora questo sarà popolato correttamente\n value: this.value, // E anche questo\n selectedOption // E anche questo\n };\n \n console.log('jump-filter-select: Emitting jump-filterchange with data:', filterEventData);\n this.selectionFilterChange.emit(filterEventData);\n });\n }\n }\n\n /**\n * Evento emesso quando cambia la selezione\n */\n @Event({ eventName: 'jump-select-change' }) selectionChange: EventEmitter;\n @Event({ eventName: 'jump-filterchange' }) selectionFilterChange: EventEmitter;\n /**\n * Evento emesso quando il valore viene cambiato programmaticamente\n */\n @Event({ eventName: 'jump-select-value-change' }) valueChange: EventEmitter;\n\n /**\n * Metodo pubblico per ottenere il valore selezionato\n * @returns Il valore attualmente selezionato\n */\n @Method()\n async getSelectedValue() {\n return this.value;\n }\n\n /**\n * Metodo pubblico per ottenere l'opzione selezionata\n * @returns L'opzione attualmente selezionata come oggetto {value, label}\n */\n @Method()\n async getSelectedOption() {\n const optionsArray = this.getOptionsArray();\n let selectedOption = optionsArray.find(option => option.value === this.value);\n \n // Se non abbiamo trovato l'opzione nell'array (caso slot), proviamo a trovarla negli elementi sl-option\n if (!selectedOption && this.value) {\n const slotOptions = this.hostElement.querySelectorAll('sl-option');\n const slotOption = Array.from(slotOptions).find((opt: any) => opt.value === this.value);\n if (slotOption) {\n selectedOption = {\n value: this.value,\n label: slotOption.textContent || this.value\n };\n }\n }\n \n return selectedOption;\n }\n \n /**\n * Metodo pubblico per ottenere i valori selezionati come array\n * @returns Array contenente il valore selezionato o un array vuoto\n */\n @Method()\n async getValues() {\n return this.values;\n }\n \n /**\n * Metodo pubblico per ottenere il nome del filtro\n * @returns Il nome del filtro\n */\n @Method()\n async getName() {\n return this.name;\n }\n\n /**\n * Metodo pubblico per impostare programmaticamente il valore selezionato\n * @param newValue - Il nuovo valore da selezionare\n * @param emitEvent - Se emettere l'evento di cambio (default: true)\n * @returns Il nuovo valore impostato\n */\n @Method()\n async setValue(newValue: string, emitEvent: boolean = true) {\n // Se il componente è disabilitato, non fare nulla\n if (this.disabled) {\n return this.value;\n }\n \n // Salva il valore precedente per l'evento\n const oldValue = this.value;\n \n // Non fare nulla se il valore non è cambiato\n if (oldValue === newValue) {\n return this.value;\n }\n \n this.value = newValue;\n this.updateValues();\n \n // Aggiorna anche il valore dell'elemento sl-select interno\n if (this.el) {\n this.el.value = newValue;\n }\n \n // Emetti l'evento di cambio se richiesto\n if (emitEvent) {\n const optionsArray = this.getOptionsArray();\n let selectedOption = optionsArray.find(option => option.value === this.value);\n \n // Se non abbiamo trovato l'opzione nell'array (caso slot), proviamo a trovarla negli elementi sl-option\n if (!selectedOption && this.value) {\n const slotOptions = this.hostElement.querySelectorAll('sl-option');\n const slotOption = Array.from(slotOptions).find((opt: any) => opt.value === this.value);\n if (slotOption) {\n selectedOption = {\n value: this.value,\n label: slotOption.textContent || this.value\n };\n }\n }\n \n // Evento specifico per il componente select\n const selectEventData = {\n value: this.value,\n oldValue: oldValue,\n selectedOption,\n programmatic: true // Flag per indicare che il cambio è avvenuto programmaticamente\n };\n this.selectionChange.emit(selectEventData);\n \n // Evento standard per il sistema di filtri\n const filterEventData = {\n name: this.name,\n values: this.values,\n value: this.value,\n oldValue: oldValue,\n selectedOption,\n programmatic: true\n };\n this.selectionFilterChange.emit(filterEventData);\n \n // Evento specifico per cambio programmato\n this.valueChange.emit({\n value: this.value,\n oldValue: oldValue,\n selectedOption\n });\n }\n\n return this.value;\n }\n\n render() {\n const optionsArray = this.getOptionsArray();\n const hasOptionsFromProp = optionsArray && optionsArray.length > 0;\n\n return (\n <Host ref={(host: HTMLElement) => (this.host = host)}>\n {this.label && (\n <div class=\"select-label\">{this.label}</div>\n )}\n <sl-select\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n multiple={this.multiple}\n required={this.required}\n loading={this.loading}\n ref={(el: any) => (this.el = el)}\n >\n {/* Renderizza le opzioni dalla prop options se disponibili, altrimenti usa lo slot */}\n {hasOptionsFromProp ? (\n optionsArray.map(option => (\n <sl-option value={option.value}>{option.label}</sl-option>\n ))\n ) : (\n <slot></slot>\n )}\n </sl-select>\n </Host>\n );\n }\n}"]}
|
|
@@ -25,14 +25,20 @@ const defaultOptions = [
|
|
|
25
25
|
|
|
26
26
|
const Template = (args) => {
|
|
27
27
|
const { options, ...otherArgs } = args;
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
|
|
30
29
|
// Crea le opzioni per il select
|
|
31
30
|
const optionsToUse = options || defaultOptions;
|
|
32
|
-
|
|
31
|
+
|
|
32
|
+
// Aggiungi l'attributo options agli args per permettere a generateAttributesFromArgs di gestirlo correttamente
|
|
33
|
+
const allArgs = {
|
|
34
|
+
...otherArgs,
|
|
35
|
+
options: JSON.stringify(optionsToUse)
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const attributes = generateAttributesFromArgs(allArgs);
|
|
33
39
|
|
|
34
40
|
return formatHtml(`
|
|
35
|
-
<jump-filter-select ${attributes}
|
|
41
|
+
<jump-filter-select ${attributes}>
|
|
36
42
|
</jump-filter-select>
|
|
37
43
|
`);
|
|
38
44
|
};
|
|
@@ -120,10 +126,16 @@ OrderingExample.args = {
|
|
|
120
126
|
|
|
121
127
|
const TemplateCustomStyles = (args) => {
|
|
122
128
|
const { options, ...otherArgs } = args;
|
|
123
|
-
const attributes = generateAttributesFromArgs(otherArgs);
|
|
124
129
|
|
|
125
130
|
const optionsToUse = options || defaultOptions;
|
|
126
|
-
|
|
131
|
+
|
|
132
|
+
// Aggiungi l'attributo options agli args per permettere a generateAttributesFromArgs di gestirlo correttamente
|
|
133
|
+
const allArgs = {
|
|
134
|
+
...otherArgs,
|
|
135
|
+
options: JSON.stringify(optionsToUse)
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
const attributes = generateAttributesFromArgs(allArgs);
|
|
127
139
|
|
|
128
140
|
return formatHtml(`
|
|
129
141
|
<div>
|
|
@@ -138,7 +150,7 @@ const TemplateCustomStyles = (args) => {
|
|
|
138
150
|
--jump-select-font-size: 16px;
|
|
139
151
|
}
|
|
140
152
|
</style>
|
|
141
|
-
<jump-filter-select class="custom-select" ${attributes}
|
|
153
|
+
<jump-filter-select class="custom-select" ${attributes}>
|
|
142
154
|
</jump-filter-select>
|
|
143
155
|
</div>
|
|
144
156
|
`);
|
|
@@ -175,14 +187,20 @@ WithChildOptions.args = {
|
|
|
175
187
|
// Esempio con un pulsante che imposta il valore programmaticamente
|
|
176
188
|
export const WithSetValueMethod = args => {
|
|
177
189
|
const { options, ...otherArgs } = args;
|
|
178
|
-
const attributes = generateAttributesFromArgs(otherArgs);
|
|
179
190
|
|
|
180
191
|
const optionsToUse = options || defaultOptions;
|
|
181
|
-
|
|
192
|
+
|
|
193
|
+
// Aggiungi l'attributo options agli args per permettere a generateAttributesFromArgs di gestirlo correttamente
|
|
194
|
+
const allArgs = {
|
|
195
|
+
...otherArgs,
|
|
196
|
+
options: JSON.stringify(optionsToUse)
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
const attributes = generateAttributesFromArgs(allArgs);
|
|
182
200
|
|
|
183
201
|
return formatHtml(`
|
|
184
202
|
<div>
|
|
185
|
-
<jump-filter-select id="programmable-select" ${attributes}
|
|
203
|
+
<jump-filter-select id="programmable-select" ${attributes}>
|
|
186
204
|
</jump-filter-select>
|
|
187
205
|
|
|
188
206
|
<div style="margin-top: 20px;">
|
|
@@ -138,7 +138,7 @@ export class JumpFilterSwitch {
|
|
|
138
138
|
return this.name;
|
|
139
139
|
}
|
|
140
140
|
render() {
|
|
141
|
-
return (h(Host, { key: '
|
|
141
|
+
return (h(Host, { key: '8f226d3fe4682e7e62eb4a389e2951b6aaf41566', ref: (host) => (this.host = host) }, this.value && this.label && (h("sl-switch", { key: 'b12cb3cc7785e582da5917ebec5ff88c0dd91b30', value: this.value, ref: (el) => (this.el = el), checked: this.checked, disabled: this.disabled }, this.label))));
|
|
142
142
|
}
|
|
143
143
|
static get is() { return "jump-filter-switch"; }
|
|
144
144
|
static get encapsulation() { return "shadow"; }
|
|
@@ -126,10 +126,10 @@ export class JumpFiltergroup {
|
|
|
126
126
|
//this.toggleHiddenItems();
|
|
127
127
|
}
|
|
128
128
|
render() {
|
|
129
|
-
return (h(Host, { key: '
|
|
130
|
-
h("jump-button", { key: '
|
|
129
|
+
return (h(Host, { key: '9d03f151bffb805154f063a84bd714da00d2cf9f' }, this.heading && h("h5", { key: '473a7d0a040e46b3259f1085e1864340b3b59fc9' }, this.heading), h("div", { key: '554a6625704319500a216ece1cc13aeb06d0fef4', class: "filterGroup" }, h("slot", { key: '213781fec2a1faa8aaafd87958ffbd1983eb1b14', ref: (el) => (this.slotItemsWrapper = el) })), this.inputs.length > this.maxElements &&
|
|
130
|
+
h("jump-button", { key: 'd26b6ce118a5bf19208cb96394fd5972a56cf4ab', variant: "primary", size: "small", text: true, name: this.label, "aria-label": this.label, ref: (showMoreBtn) => {
|
|
131
131
|
this.showMoreBtn = showMoreBtn;
|
|
132
|
-
}, onClick: () => this.handleShowMore() }, this.label, h("jump-icon", { key: '
|
|
132
|
+
}, onClick: () => this.handleShowMore() }, this.label, h("jump-icon", { key: 'bb7a17a36943ffac73e5889eb69016771a6612cf', slot: "suffix", name: !this.showMore ? 'chevron-down' : 'chevron-up' }))));
|
|
133
133
|
}
|
|
134
134
|
static get is() { return "jump-filtergroup"; }
|
|
135
135
|
static get encapsulation() { return "shadow"; }
|
|
@@ -19,14 +19,14 @@ export class JumpNavbar {
|
|
|
19
19
|
}
|
|
20
20
|
render() {
|
|
21
21
|
var _a, _b;
|
|
22
|
-
return (h(Host, { key: '
|
|
23
|
-
h("div", { key: '
|
|
24
|
-
h("jump-button", { key: '
|
|
22
|
+
return (h(Host, { key: 'c3ca42acda8ec6b651b5aed19917da6f2e3b593d' }, h("jump-button", { key: 'a0bfb27d783b855384298cddea88bf8530dac309', variant: "primary", size: "small", text: true, href: this.logo['link'], target: (_a = this.logo['target']) !== null && _a !== void 0 ? _a : '_self' }, h("img", { key: '2341978b73481036ca8ff8705c18b532a258e0f2', src: this.logo['image_url'], alt: this.logo['alt'] })), this.isMobile &&
|
|
23
|
+
h("div", { key: '8c0f8a79828f53e0cddc70a282188c4795e626d7', class: "MobileMenuOffCanvas" }, h("div", { key: 'dd44366b3adc201a60f72e51d853ebc1ed492492', class: "MobileMenuOffCanvas__Header" }, "/* TODO: ricerca + pulsante chiusura + profilo utente con immagine */"), h("div", { key: '8fbd221bb8f3f574015c8d94976236f4557534ca', class: "MobileMenuOffCanvas__Navbar" }, this.navbar.cloneNode(true)), h("div", { key: '26e1fe3e3654d1d355780e09010fd9dbbcce91c8', class: "MobileMenuOffCanvas__Footer" }, "/* TODO: langswitcher */", this.mobileLogo &&
|
|
24
|
+
h("jump-button", { key: 'cc5738f24ab07fa9aa1e3a89b90e2310d3f570d2', variant: "primary", size: "small", text: true, href: this.mobileLogo['link'], target: (_b = this.mobileLogo['target']) !== null && _b !== void 0 ? _b : '_self' }, h("img", { key: 'f3dc96e3229fcdfd6a963b93d776d2611d87721b', src: this.mobileLogo['image_url'], alt: this.mobileLogo['alt'] })))), h("nav", { key: 'eb4c284f0e58f4a336c9076d47176f2660ef8c9c', ref: (el) => {
|
|
25
25
|
this.navbar = el;
|
|
26
|
-
} }, h("ul", { key: '
|
|
26
|
+
} }, h("ul", { key: 'e5745a9c684740c03b63431f250776ae7836779b' }, this.navItems.map((item) => (h("li", null, h("jump-button", { variant: "primary", size: "small", text: true, href: item.link, target: item.target, class: item.class }, item.text, this.secondaryNavItems.some(secondaryItem => secondaryItem.parent === item.id) &&
|
|
27
27
|
h("jump-icon", { slot: "suffix", library: "lucide", name: "chevron-down", size: "small" })), this.secondaryNavItems.map((secondaryItem) => (secondaryItem.parent === item.id &&
|
|
28
28
|
h("ul", { "data-parent": secondaryItem.parent }, secondaryItem.title &&
|
|
29
|
-
h("h4", null, secondaryItem.title), " /* TODO: utilizzare jump-heading? */", secondaryItem.items.map((subItem) => (h("li", null, h("jump-button", { variant: "primary", size: "small", text: true, href: subItem.link, target: subItem.target, class: subItem.class }, subItem.text)))))))))))), h("slot", { key: '
|
|
29
|
+
h("h4", null, secondaryItem.title), " /* TODO: utilizzare jump-heading? */", secondaryItem.items.map((subItem) => (h("li", null, h("jump-button", { variant: "primary", size: "small", text: true, href: subItem.link, target: subItem.target, class: subItem.class }, subItem.text)))))))))))), h("slot", { key: '09a7005e63bb12d5d1f8b35fa7db7178498359a2', name: "actions" }, h("slot", { key: '2dfabc1a5a007abb5b11b04e0b2457daae3938b4', name: "lang_switcher" }), h("slot", { key: '572997fa2c14881c73e39ca02bc233ac655d7214', name: "search" }), h("slot", { key: '4b5b99f65a35e86030b84a5c2500c68402f7aea4', name: "buttons" }), h("slot", { key: '838333c326920f01917c9d2f896c74e1d898cc9f', name: "cart" }))));
|
|
30
30
|
}
|
|
31
31
|
static get is() { return "jump-navbar"; }
|
|
32
32
|
static get encapsulation() { return "shadow"; }
|
|
@@ -22,7 +22,7 @@ export class JumpPagination {
|
|
|
22
22
|
}
|
|
23
23
|
/* --------------------- RENDER ------------------------------- */
|
|
24
24
|
render() {
|
|
25
|
-
return (h(Host, { key: '
|
|
25
|
+
return (h(Host, { key: '2c1e0c33955bc82a9371ccf1eca0c5350d05b136', class: "JumpPagination" }, h("div", { key: '85eb248c9268624057f16fc5e50f0ce058e06eac', class: "JumpPagination__Wrapper" }, h("div", { key: 'dd568d3a6f0f32fbed16705cef38f8f1a8613a1e', class: "indicators" }, h("div", { key: '0315ee98935597733bfba159e813699d3ab098e0', class: "elements" }, h("span", { key: '003e190b73aad2d0b88dab5575ce673a75efb35c' }, h("span", { key: 'a32cc0529a7f4ea719ee269425323b629bd0cd5a' }, this.current), " ", this.pagLabel, " ", h("span", { key: '11f60aecd7bdf4b8335bc6376ab25175a8a5fbc0' }, this.last))), h("div", { key: '8497b1df6e084bee3f7169b8112be2e958b9ead6', class: "arrow" }, this.showFirstAndLast &&
|
|
26
26
|
// <button
|
|
27
27
|
// onClick={() => {this.current = 1} }
|
|
28
28
|
// disabled={(this.current === 1) ? true : false}>
|
|
@@ -30,14 +30,14 @@ export class JumpPagination {
|
|
|
30
30
|
// disabled={(this.current === 1) ? true : false}
|
|
31
31
|
// ></jump-icon>
|
|
32
32
|
// </button>
|
|
33
|
-
h("jump-button", { key: '
|
|
33
|
+
h("jump-button", { key: 'aff51b684e01e98a22fc78a801a16cef92c89740', onClick: () => { this.current = 1; }, variant: "primary", text: true, size: "small", name: "scopri", value: "value", "aria-label": "Scopri di pi\u00F9", id: "button", onlyIcon: true, disabled: (this.current === 1) ? true : false }, " ", h("jump-icon", { key: '82fe2c7d55e3aeea6688249be096fff04d4e8a9e', slot: "suffix", name: "chevrons-left" }), " "), h("jump-button", { key: 'a6fa825586501964b252afe4c59d0b4ed6319cf5', onClick: () => { this.current--; }, variant: "primary", text: true, size: "small", name: "scopri", value: "value", "aria-label": "Scopri di pi\u00F9", id: "button", onlyIcon: true, disabled: (this.current === 1) ? true : false }, " ", h("jump-icon", { key: 'ad4fbb998ac7002620712352f0802f8e614988fc', slot: "suffix", name: "chevron-left" }), " "), h("jump-button", { key: 'ea53f48221f4282174a55ff6d3a4dc3b22ba193d', onClick: () => { this.current++; }, variant: "primary", text: true, size: "small", name: "scopri", value: "value", "aria-label": "Scopri di pi\u00F9", id: "button", onlyIcon: true, disabled: (this.current === this.last) ? true : false }, " ", h("jump-icon", { key: '2ae20415c41150bf4ad3c7edc6fcf2bae8cf7ea3', slot: "suffix", name: "chevron-right" }), " "), this.showFirstAndLast &&
|
|
34
34
|
// <button
|
|
35
35
|
// onClick={() => {this.current = this.last}}
|
|
36
36
|
// disabled={(this.current === this.last) ? true : false}
|
|
37
37
|
// >
|
|
38
38
|
// <jump-icon library="fa" category="regular" name="chevrons-right" size="small" slot="prefix"></jump-icon>
|
|
39
39
|
// </button>
|
|
40
|
-
h("jump-button", { key: '
|
|
40
|
+
h("jump-button", { key: '527c3431dbc4770eeed3dfcdfe19354d8164f1a0', onClick: () => { this.current = this.last; }, variant: "primary", text: true, size: "small", name: "scopri", value: "value", "aria-label": "Scopri di pi\u00F9", id: "button", onlyIcon: true, disabled: (this.current === this.last) ? true : false }, " ", h("jump-icon", { key: 'cd722d6c312b6c6511cd93da1dbcfe445d8998e2', slot: "suffix", name: "chevrons-right" }), " "))))));
|
|
41
41
|
}
|
|
42
42
|
static get is() { return "jump-pagination"; }
|
|
43
43
|
static get encapsulation() { return "shadow"; }
|
|
@@ -70,9 +70,9 @@ export class JumpPaginationTable {
|
|
|
70
70
|
/* --------------------- RENDER ------------------------------- */
|
|
71
71
|
render() {
|
|
72
72
|
var _a;
|
|
73
|
-
return (h(Host, { key: '
|
|
74
|
-
h("jump-button", { key: '
|
|
75
|
-
h("jump-button", { key: '
|
|
73
|
+
return (h(Host, { key: 'd127efd95559a5c741d63bd2b869b69a5b39c128', class: "JumpPaginationTable" }, h("div", { key: '6ae695734996467308c3ece3d931ea4773fb48f3', class: "JumpPaginationTable__Wrapper" }, h("div", { key: '20e32d72f26642116c5e1800ab1971f48cc1ed3e', class: "elementsPerPage" }, h("label", { key: 'f1836c0aedf64ac928cb6e7c27ca0af7b50f49f3', htmlFor: "elements" }, (_a = this.labelElementsPerPage) !== null && _a !== void 0 ? _a : 'Elements per page'), h("select", { key: 'e7bb459c1abbb5d2ee710519225379f336834c12', name: "elements", id: "elements", onChange: (e) => this.setElPerPage(e) }, this.elementsRangesArray.map((range) => (h("option", { value: range, selected: (this.elPerPage == range) && true }, range))))), h("div", { key: 'fe26f7119c313f7859fcf9effd7137d094dc4cee', class: "indicators" }, h("div", { key: 'b3ce48db1000836ae2ac10c870a1fe52419570b4', class: "elements" }, h("span", { key: 'ba414ac0d2b7133f1bcf9860807fbbb4c22745d4' }, h("span", { key: 'e3015bcb81df21d87950600a041140a165932742' }, this.first), " - ", h("span", { key: 'fb382f5773e9129dc4f3e7be6bca548d40140a1d' }, this.last), " ", this.pagLabel, " ", h("span", { key: '5bb6a635e9007f953c02bbbce227d34338d06598' }, this.total))), h("div", { key: '227fb2bad3a3357ee028e023a06df0f541d485d3', class: "arrow" }, this.showFirstAndLast &&
|
|
74
|
+
h("jump-button", { key: '834c49e3ecaed5c00329246b4404ad56cbb14468', onClick: () => this.doChangePage('first'), variant: "primary", text: true, size: "small", name: "scopri", value: "value", "aria-label": "Scopri di pi\u00F9", id: "button", onlyIcon: true, disabled: this.first === 1 }, " ", h("jump-icon", { key: '9e7518f27d91f012dc9eb39f80bf5f442820c6b4', slot: "suffix", name: "chevrons-left" }), " "), h("jump-button", { key: 'e96effd01cbdaed601b84df41a99b19ca8e8cd99', onClick: () => this.doChangePage('previous'), variant: "primary", text: true, size: "small", name: "scopri", value: "value", "aria-label": "Scopri di pi\u00F9", id: "button", onlyIcon: true, disabled: this.first === 1 }, " ", h("jump-icon", { key: '5431958c1b2efc1e10bf88c42a401ad599e26e10', slot: "suffix", name: "chevron-left" }), " "), h("jump-button", { key: '8220b582ecdcd455f56d589d2c40ce20afd2f3d8', onClick: () => this.doChangePage('next'), variant: "primary", text: true, size: "small", name: "scopri", value: "value", "aria-label": "Scopri di pi\u00F9", id: "button", onlyIcon: true, disabled: this.last === this.total }, " ", h("jump-icon", { key: '8720edbe060dd5d89a0166f71a728539c743f1c3', slot: "suffix", name: "chevron-right" }), " "), this.showFirstAndLast &&
|
|
75
|
+
h("jump-button", { key: '82db4d99ccff98c3982bfb31b124a08a58332c1a', onClick: () => this.doChangePage('last'), variant: "primary", text: true, size: "small", name: "scopri", value: "value", "aria-label": "Scopri di pi\u00F9", id: "button", onlyIcon: true, disabled: this.last === this.total }, " ", h("jump-icon", { key: '58bd9a9f71f852201052699d0683a9aa8ce6ee39', slot: "suffix", name: "chevrons-right" }), " "))))));
|
|
76
76
|
}
|
|
77
77
|
static get is() { return "jump-pagination-table"; }
|
|
78
78
|
static get originalStyleUrls() {
|
|
@@ -64,11 +64,11 @@ export class JumpQuantity {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
render() {
|
|
67
|
-
return (h(Host, { key: '
|
|
68
|
-
h("jump-button", { key: '
|
|
67
|
+
return (h(Host, { key: '021ef771d6b764fc0038a82ab6342e52d4db9ca5', value: this.value, "data-variant": this.variant, "data-hasbuttons": this.showButtons }, this.label && h("label", { key: '861cb1566ead946d22146a46df9f3cc2a0ba5e7d' }, this.label), h("div", { key: '0b8f3ba368946a370d42237f79c4554381c4b34b', class: `jump-quantity__InnerWrapper` }, this.showButtons &&
|
|
68
|
+
h("jump-button", { key: 'd83c253c36c743ea4099e7116de9205ade6c4cb8', onClick: () => this.value = this.value - this.step, disabled: this.value <= this.min, variant: 'neutral', size: 'custom' }, h("jump-icon", { key: '5b51a4d777716767a4850afa196a9b3aa3b86eec', library: "lucide", name: "minus", size: "small" })), h("input", { key: 'a0a1f28ef43a4486a8a7fea980f8e4c28a31c11f', ref: (el) => {
|
|
69
69
|
this.inputEl = el;
|
|
70
70
|
}, type: 'number', value: this.internalValue, onInput: (event) => this.handleChange(event), min: this.min, max: this.max, step: this.step, "aria-hasbuttons": this.showButtons }), this.showButtons &&
|
|
71
|
-
h("jump-button", { key: '
|
|
71
|
+
h("jump-button", { key: '7d3feb5f929661778bbb6f14711bc0acf2f3d74d', onClick: () => this.value = this.value + this.step, disabled: this.value >= this.max, variant: 'neutral', size: 'custom' }, h("jump-icon", { key: '09e8032c6e0e81c24bed6cf41f01ef1c9f0ec607', library: "lucide", name: "plus", size: "small" })))));
|
|
72
72
|
}
|
|
73
73
|
static get is() { return "jump-quantity"; }
|
|
74
74
|
static get encapsulation() { return "shadow"; }
|
package/dist/collection/components/jump-search-bar-dropdown-item/jump-search-bar-dropdown-item.js
CHANGED
|
@@ -26,7 +26,7 @@ export class JumpSearchBarDropdownItem {
|
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
render() {
|
|
29
|
-
return (h(Host, { key: '
|
|
29
|
+
return (h(Host, { key: '8cbba459dbe5ca9f8785b67e04520dd54832ce52', ref: (el) => this.componentRef = el }));
|
|
30
30
|
}
|
|
31
31
|
static get is() { return "jump-search-bar-dropdown-item"; }
|
|
32
32
|
static get encapsulation() { return "shadow"; }
|
|
@@ -96,16 +96,16 @@ export class JumpSearchBarMobile {
|
|
|
96
96
|
;
|
|
97
97
|
/* --------------------- RENDER ------------------------------- */
|
|
98
98
|
render() {
|
|
99
|
-
return (h(Host, { key: '
|
|
100
|
-
h("div", { key: '
|
|
101
|
-
h("div", { key: '
|
|
99
|
+
return (h(Host, { key: '8e82f7b1d5faddaa1fa8dd7c0d21c5254db63993', class: "JumpSearchBarMobile", ref: (el) => (this.componentRef = el) }, h("jump-icon", { key: '8c15dd4bce72244f49c727e73da4f19bbe0e5de7', name: "magnifying-glass", category: "light", onClick: () => this.openDropdown() }), h("div", { key: '1b90590142feb43a4ed879230fe8a4831e5b6948', class: "DropdownWrapper " + (this.isOpen ? 'open' : '') }, h("div", { key: '5f809148e2ee236ffe98afc5cfbdf44c4cdb38b8', class: "InputWrapper" }, h("jump-icon", { key: '8d57238a39ff3ee9dd00459acffb5a50be1becce', class: "closeButton", category: "light", name: "arrow-left", onClick: () => this.closeDropdown() }), h("input", { key: 'd0a99536bb0890827a9862178fa33308aab58889', placeholder: this.placeholder, type: "search", id: this.identifier, class: "search-input", ref: (el) => { this.jumpSearchBar = el; }, onInput: this.debounce(this.doSearch), onFocus: this.handleFocus, onBlur: this.handleBlur }), h("jump-icon", { key: '831143def53982970c40bc31f4dc7d79cf936ab2', name: "magnifying-glass", category: "light" })), h("div", { key: '148b2510523f6b714241e5ad36328ef5b4316b9a', class: "Results" }, (this.resType == 'recents') &&
|
|
100
|
+
h("div", { key: '3d9aab39538877fb350415fba9b57ccab85768d0', class: "Results__Recents" }, this.recents.length != 0 && h("span", { key: 'd50cf48b74a63371d2684dbfcae843b13b14dcc6', class: "title" }, this.recentsTitle), h("div", { key: 'ec2557a3c524105797075015a98217f14b6b194a', class: "ResWrapper" }, this.innerResults.length > 0 && this.innerResults.map((item) => (h("div", { onClick: () => this.handleResClicked(item) }, h("jump-icon", { name: "magnifying-glass", category: "light" }), item['value']))))), this.resType == 'results' &&
|
|
101
|
+
h("div", { key: 'f9b1c5de942cc3ecffb707991b839c8481d08cd2', class: "Results__Results" }, h("div", { key: 'dc80f4b4e2dc62671ac55bec72726c0fa4f9efd5', class: "ResWrapper" }, this.innerResults === undefined ?
|
|
102
102
|
h("div", { class: "helperText" }, h("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 100 100", preserveAspectRatio: "xMidYMid", width: "252", height: "252" }, h("g", null, h("g", { transform: "rotate(0 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "-0.9s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", { transform: "rotate(36 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "-0.8s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", { transform: "rotate(72 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "-0.7s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", { transform: "rotate(108 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "-0.6s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", { transform: "rotate(144 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "-0.5s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", { transform: "rotate(180 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "-0.4s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", { transform: "rotate(216 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "-0.3s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", { transform: "rotate(252 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "-0.2s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", { transform: "rotate(288 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "-0.1s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", { transform: "rotate(324 50 50)" }, h("rect", { fill: "#707070", height: "11", width: "4", ry: "1.87", rx: "1.87", y: "27.5", x: "48" }, h("animate", { repeatCount: "indefinite", begin: "0s", dur: "1s", keyTimes: "0;1", values: "1;0", attributeName: "opacity" }))), h("g", null))), this.loadingText)
|
|
103
103
|
:
|
|
104
104
|
(this.innerResults.length > 0 ?
|
|
105
105
|
this.innerResults.map((item) => (h("div", { onClick: () => this.handleResClicked(item), key: item['id'] }, item['img'] && h("img", { src: item['img'], alt: "result" }), item['value'])))
|
|
106
106
|
:
|
|
107
107
|
h("div", { class: "helperText" }, this.noResultText)), (this.innerResults && this.innerResults.length > 0) &&
|
|
108
|
-
h("div", { key: '
|
|
108
|
+
h("div", { key: 'd465037752274907f4c5aa19175c868b93b8d79f', class: "totalRes" }, h("jump-button", { key: '6e8bfc6e61979f92b0c96de2698e2adda1a53ce2', variant: "secondary", size: "small", text: true, onClick: () => this.btnOrShowOtherClicked(), target: "_blank" }, " ", this.showAllResText, " "), this.totalResults && h("div", { key: '4dca3e806f427d7fa7d9b1d2a3b35d000f9d58b7' }, this.totalResults, " ", this.resultsText))))))));
|
|
109
109
|
}
|
|
110
110
|
static get is() { return "jump-search-bar-mobile"; }
|
|
111
111
|
static get encapsulation() { return "shadow"; }
|
|
@@ -51,7 +51,7 @@ export class JumpSideCartExample {
|
|
|
51
51
|
];
|
|
52
52
|
}
|
|
53
53
|
render() {
|
|
54
|
-
return (h("div", { key: '
|
|
54
|
+
return (h("div", { key: '5efee94d4b2b177e44dd4de1fdb99facf24af210', class: "example-container" }, h("button", { key: '42d849157bb43fd022e8febfd0abe61ff4f3edf2', class: "example-button", onClick: this.openCartFromRight }, "Open Cart from Right"), h("button", { key: '9067c8fa80e8649e74885c9dc3dd057d42752018', class: "example-button", onClick: this.openCartFromLeft }, "Open Cart from Left"), h("jump-side-cart", { key: '28379da2a29089c10f2cb4f8311a25e508f07277', isOpen: this.isCartOpen, items: this.cartItems, position: this.position, discountThreshold: {
|
|
55
55
|
amount: 170,
|
|
56
56
|
percentage: 3
|
|
57
57
|
}, progressPercentage: 30, checkoutLabel: "Vai al Checkout", viewCartLabel: "Vedi carrello", onCartClosed: this.handleCartClosed, onItemQuantityChanged: this.handleUpdateQuantity, onItemRemoved: this.handleRemoveItem, onCheckoutClicked: this.handleCheckout, onViewCartClicked: this.handleViewCart })));
|
|
@@ -66,7 +66,7 @@ export class JumpTab {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
render() {
|
|
69
|
-
return (h(Host, { key: '
|
|
69
|
+
return (h(Host, { key: '59e43d82c8b42b021901c38df7e011b4214322c4', class: "JumpTab " + this.variant, id: this.tabGroupName, ref: (el) => { this.JumpTabEl = el; } }, h("div", { key: 'bf856ca2cdf08bedac4de091665a76fad3839035', class: "Wrapper " + (this.fullBorder ? 'fullBorder' : '') }, h("div", { key: 'e9972902f6be1b6e389a84cc13ebe0d143fd30ec', class: "ContentWrapper ContentWrapper--Items", style: { '--alignment': this.getAlignment(this.alignment) } }, h("div", { key: '7e2bbecf1a4ba7ca854edf4b632039300e3987ed', class: "Content " + this.variant + " " + (this.disabled ? 'disabled' : '') + " " + (this.fullBorder ? 'fullBorder' : ''), style: { '--alignment': this.getAlignment(this.alignment) } }, h("slot", { key: '99ed84c1151955db9c2df9b5ef992fa57ffdb49b', name: "tab-item" }))), h("div", { key: '6881b2bfa14e188654c31088c4a27b8de7ba14f1', class: "ContentWrapper ContentWrapper--Panel" }, h("slot", { key: 'c33f6ee0952db88e1237593a1e264beb9f8c7ed3', name: "tab-content" })))));
|
|
70
70
|
}
|
|
71
71
|
getAlignment(alignment) {
|
|
72
72
|
switch (alignment) {
|
|
@@ -18,8 +18,8 @@ export class JumpTabItem {
|
|
|
18
18
|
this.variant = parentVariant;
|
|
19
19
|
}
|
|
20
20
|
render() {
|
|
21
|
-
return (h(Host, { key: '
|
|
22
|
-
h("jump-icon", { key: '
|
|
21
|
+
return (h(Host, { key: 'e5cc92e20d207f5a77ae4ef8365cd05e5697ad43', ref: (el) => { this.tabEl = el; }, class: "JumpTabItem " + (this.active ? 'active' : '') + " " + (this.variant) + " " + (this.disabled ? 'disabled' : '') }, h("div", { key: '935051a19cc3feae5745e2ac7d0ea0270e3d9849', class: "Content " + (this.iconName ? this.iconPosition : '') + " " + (this.variant) + " " + (this.active ? 'active' : '') + " " + (this.disabled ? 'disabled' : ''), onClick: () => this.changeTab(this.identifier), id: this.identifier }, (this.iconName && (this.variant == 'inline' || this.variant == 'boxed')) &&
|
|
22
|
+
h("jump-icon", { key: 'bdd907209efa74af1bb0cfd93b3cd85e02ec9f41', library: "fa", category: "regular", name: this.iconName, size: "small" }), h("span", { key: '6d4747a618f8f2b38a8c4adfc710bdf743f197a0', class: "label" }, this.label))));
|
|
23
23
|
}
|
|
24
24
|
static get is() { return "jump-tab-item"; }
|
|
25
25
|
static get encapsulation() { return "shadow"; }
|
|
@@ -5,7 +5,7 @@ export class JumpTabPanel {
|
|
|
5
5
|
this.active = false;
|
|
6
6
|
}
|
|
7
7
|
render() {
|
|
8
|
-
return (h(Host, { key: '
|
|
8
|
+
return (h(Host, { key: 'bde92a51266193503b490c29e2f5658625f7091e', class: "JumpTabPanel", id: this.identifier }, h("div", { key: '28668409b16c37eea9f10f602a83978412baad9a', class: "JumpTabPanel__Content " + (this.active ? 'active' : '') }, h("slot", { key: 'bb06f4ada692c89437dfd980253414240b52f375' }))));
|
|
9
9
|
}
|
|
10
10
|
static get is() { return "jump-tab-panel"; }
|
|
11
11
|
static get encapsulation() { return "shadow"; }
|
|
@@ -10,6 +10,10 @@ export const generateAttributesFromArgs = arg => {
|
|
|
10
10
|
return value ? name : '';
|
|
11
11
|
}
|
|
12
12
|
else {
|
|
13
|
+
// Per attributi che contengono JSON, usa apici singoli per evitare conflitti con le virgolette nel JSON
|
|
14
|
+
if (name === 'options' && typeof value === 'string' && (value.startsWith('[') || value.startsWith('{'))) {
|
|
15
|
+
return `${name}='${value}'`;
|
|
16
|
+
}
|
|
13
17
|
// take the snake case and convert it to kebab case
|
|
14
18
|
return `${name}="${value}"`;
|
|
15
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { html as beautifyHtml } from 'js-beautify';\n\nexport const generateAttributesFromArgs = arg => {\n // map attributes to strings. If the attribute is a boolean and is false, don't include it, otherwise include only the attribute name. otherwise include the attribute name and its value\n // console.log('arg', arg);\n return (\n Object.entries(arg)\n .map(([name, value]) => {\n name = camelToKebabCase(name);\n //console.log('name', name);\n if (typeof value === 'boolean') {\n return value ? name : '';\n } else {\n // take the snake case and convert it to kebab case\n return `${name}=\"${value}\"`;\n }\n })\n .join(' ')\n // replace all the spaces with a single space\n .replace(/\\s+/g, ' ')\n .trim()\n );\n};\n\nconst camelToKebabCase = str => {\n return str.replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n });\n};\n\nexport const formatHtml = html => {\n return beautifyHtml(html, {\n indent_size: 2,\n });\n};\n\n// NOTE: utile se vogliamo listare le icone di font awesome nel menu a tendina di storybook\nexport const fontAwesomeLibraryList = async () => {\n const folders = ['solid', 'regular', 'brands'];\n const iconList = [];\n\n for (const folder of folders) {\n const response = await fetch(`https://designsystem-media.jumpgroup.it/svgs/${folder}/`);\n const text = await response.text();\n const parser = new DOMParser();\n const html = parser.parseFromString(text, 'text/html');\n const icons = Array.from(html.querySelectorAll('a')).map(a => {\n if (a.href.includes('.svg')) {\n return a.href.split('/').pop().replace('.svg', '');\n }\n });\n iconList[folder] = [];\n iconList[folder].push(...icons.filter(icon => icon !== undefined));\n }\n\n return iconList;\n};\n\nexport const lucideLibraryList = async () => {\n const response = await fetch('https://cdn.jsdelivr.net/npm/lucide-static@0.16.29/icons/');\n const text = await response.text();\n const parser = new DOMParser();\n const html = parser.parseFromString(text, 'text/html');\n const icons = Array.from(html.querySelectorAll('a')).map(a => {\n if (a.href.includes('.svg')) {\n return a.href.split('/').pop().replace('.svg', '');\n }\n });\n\n return icons.filter(icon => icon !== undefined);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { html as beautifyHtml } from 'js-beautify';\n\nexport const generateAttributesFromArgs = arg => {\n // map attributes to strings. If the attribute is a boolean and is false, don't include it, otherwise include only the attribute name. otherwise include the attribute name and its value\n // console.log('arg', arg);\n return (\n Object.entries(arg)\n .map(([name, value]) => {\n name = camelToKebabCase(name);\n //console.log('name', name);\n if (typeof value === 'boolean') {\n return value ? name : '';\n } else {\n // Per attributi che contengono JSON, usa apici singoli per evitare conflitti con le virgolette nel JSON\n if (name === 'options' && typeof value === 'string' && (value.startsWith('[') || value.startsWith('{'))) {\n return `${name}='${value}'`;\n }\n // take the snake case and convert it to kebab case\n return `${name}=\"${value}\"`;\n }\n })\n .join(' ')\n // replace all the spaces with a single space\n .replace(/\\s+/g, ' ')\n .trim()\n );\n};\n\nconst camelToKebabCase = str => {\n return str.replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n });\n};\n\nexport const formatHtml = html => {\n return beautifyHtml(html, {\n indent_size: 2,\n });\n};\n\n// NOTE: utile se vogliamo listare le icone di font awesome nel menu a tendina di storybook\nexport const fontAwesomeLibraryList = async () => {\n const folders = ['solid', 'regular', 'brands'];\n const iconList = [];\n\n for (const folder of folders) {\n const response = await fetch(`https://designsystem-media.jumpgroup.it/svgs/${folder}/`);\n const text = await response.text();\n const parser = new DOMParser();\n const html = parser.parseFromString(text, 'text/html');\n const icons = Array.from(html.querySelectorAll('a')).map(a => {\n if (a.href.includes('.svg')) {\n return a.href.split('/').pop().replace('.svg', '');\n }\n });\n iconList[folder] = [];\n iconList[folder].push(...icons.filter(icon => icon !== undefined));\n }\n\n return iconList;\n};\n\nexport const lucideLibraryList = async () => {\n const response = await fetch('https://cdn.jsdelivr.net/npm/lucide-static@0.16.29/icons/');\n const text = await response.text();\n const parser = new DOMParser();\n const html = parser.parseFromString(text, 'text/html');\n const icons = Array.from(html.querySelectorAll('a')).map(a => {\n if (a.href.includes('.svg')) {\n return a.href.split('/').pop().replace('.svg', '');\n }\n });\n\n return icons.filter(icon => icon !== undefined);\n};\n"]}
|