@nova-design-system/nova-react 3.5.0 → 3.6.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/{timeline.animation-1b88f052-B8-vCVrY.js → collapse.animation-16e3af45-CChx_tQJ.js} +4 -25
- package/dist/cjs/fade.animation-71e8e34c-BAw_TYsB.js +68 -0
- package/dist/cjs/{index-Te0zRbKN.js → index-E_eTmclZ.js} +2187 -1596
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/nv-accordion-item.entry-B9iMQoRk.js +178 -0
- package/dist/cjs/nv-accordion.entry-2oOEkDVq.js +191 -0
- package/dist/cjs/{nv-alert.entry-CPbApg9_.js → nv-alert.entry-CJcHACkm.js} +10 -8
- package/dist/cjs/{nv-avatar.entry-CwM8IOei.js → nv-avatar.entry-COkIaFDp.js} +2 -2
- package/dist/cjs/{nv-badge_2.entry-Bqu-2k7E.js → nv-badge_2.entry-CQHT-nck.js} +14 -12
- package/dist/cjs/{nv-breadcrumb.entry-CmceXVS9.js → nv-breadcrumb.entry-DElOQJUD.js} +2 -2
- package/dist/cjs/{nv-breadcrumbs.entry-B7xbEUl5.js → nv-breadcrumbs.entry-CDfxiMbp.js} +2 -2
- package/dist/cjs/{nv-button.entry-Cd_CE1fx.js → nv-button.entry-CTJT4SzB.js} +2 -2
- package/dist/cjs/{nv-calendar.entry-B2lm2nvb.js → nv-calendar.entry-BU2OBf6g.js} +60 -51
- package/dist/cjs/{nv-col.entry-BF8XR4B1.js → nv-col.entry-Bsz14pxY.js} +2 -2
- package/dist/cjs/{nv-datagrid.entry-CcQ8XP6J.js → nv-datagrid.entry-2DyB7G5f.js} +3 -3
- package/dist/cjs/{nv-datagridcolumn.entry-uGbQ4NMr.js → nv-datagridcolumn.entry-DquF2Cc1.js} +2 -2
- package/dist/cjs/{nv-dialog.entry-DyK4wFFz.js → nv-dialog.entry-QzImh4AV.js} +20 -7
- package/dist/cjs/{nv-dialogfooter_2.entry-DT3kR9Xn.js → nv-dialogfooter_2.entry-MikGtnGi.js} +3 -3
- package/dist/cjs/{nv-fieldcheckbox.entry-D_wHbgcq.js → nv-fieldcheckbox.entry-DKhH58rn.js} +5 -5
- package/dist/cjs/{nv-fielddate.entry-BaIcP2EG.js → nv-fielddate.entry-Dj_oMJ2a.js} +101 -36
- package/dist/cjs/{nv-fielddaterange.entry-BNcF2N2M.js → nv-fielddaterange.entry-CWwH83ug.js} +5 -5
- package/dist/cjs/{nv-fielddropdown.entry-DWlDvODi.js → nv-fielddropdown.entry-CPD-1tGj.js} +4 -4
- package/dist/cjs/{nv-fielddropdownitem.entry-BIy_GUKA.js → nv-fielddropdownitem.entry-CM5Fogll.js} +2 -2
- package/dist/cjs/{nv-fieldmultiselect.entry-B74CLRuh.js → nv-fieldmultiselect.entry-DodoLrhv.js} +86 -101
- package/dist/cjs/{nv-fieldnumber.entry-BQBy1EIj.js → nv-fieldnumber.entry-063nS6p_.js} +4 -4
- package/dist/cjs/{nv-fieldpassword.entry-DNFZvmBx.js → nv-fieldpassword.entry-CreA_Yx8.js} +4 -4
- package/dist/cjs/{nv-fieldradio.entry-BIR29jv5.js → nv-fieldradio.entry-Y8YSlQbK.js} +4 -4
- package/dist/cjs/{nv-fieldselect.entry-DulA_N5q.js → nv-fieldselect.entry-B1X8kT8-.js} +6 -6
- package/dist/cjs/{nv-fieldslider.entry-DCslY5gg.js → nv-fieldslider.entry-CJlQWgFy.js} +54 -10
- package/dist/cjs/{nv-fieldtext.entry-Dvv8KjJC.js → nv-fieldtext.entry-Cib7Q9Wi.js} +4 -4
- package/dist/cjs/{nv-fieldtextarea.entry-rVcnznae.js → nv-fieldtextarea.entry-QYIEAbAM.js} +4 -4
- package/dist/cjs/{nv-fieldtime.entry-_fXkWsoI.js → nv-fieldtime.entry-D6jX_bbE.js} +10 -10
- package/dist/cjs/{nv-icon.entry-BGyFETNH.js → nv-icon.entry-DyYPxO1l.js} +2 -2
- package/dist/cjs/{nv-iconbutton_2.entry-CtClzxKf.js → nv-iconbutton_2.entry-BDpYysUa.js} +3 -3
- package/dist/cjs/{nv-menu.entry-B3vFxd1E.js → nv-menu.entry-EY6i9-lW.js} +2 -2
- package/dist/cjs/{nv-menuitem.entry-BIWwr98d.js → nv-menuitem.entry-D3_V7wz6.js} +2 -2
- package/dist/cjs/{nv-popover.entry-vonHjF_y.js → nv-popover.entry-VI0JSWEK.js} +9 -8
- package/dist/cjs/{nv-row.entry-BYUhLZ0r.js → nv-row.entry-Da5sYAGY.js} +2 -2
- package/dist/cjs/{nv-stack.entry-Cxc6QmII.js → nv-stack.entry-CQ8A3wKB.js} +2 -2
- package/dist/cjs/{nv-table.entry-DSBUXcSF.js → nv-table.entry-DkALs4J_.js} +3 -3
- package/dist/cjs/{nv-tablecolumn.entry-BP857bqD.js → nv-tablecolumn.entry-C_9y9_Tk.js} +1 -1
- package/dist/cjs/{nv-toggle.entry-CnquGUlJ.js → nv-toggle.entry-CPvuKc2f.js} +3 -3
- package/dist/cjs/{nv-tooltip.entry-XvxL_FTH.js → nv-tooltip.entry-dvTSw6dq.js} +4 -3
- package/dist/cjs/{fade.animation-2a077983-aKN0EDTo.js → stylefire.es-74da334a-y0piPjlz.js} +0 -64
- package/dist/cjs/timeline.animation-adf35ecb-CE6Dsdxr.js +23 -0
- package/dist/generated/components.js +18 -2
- package/dist/generated/components.server.js +26 -3
- package/dist/types/generated/components.d.ts +17 -3
- package/dist/types/generated/components.server.d.ts +17 -3
- package/package.json +1 -1
package/dist/cjs/{nv-fieldmultiselect.entry-B74CLRuh.js → nv-fieldmultiselect.entry-DodoLrhv.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-E_eTmclZ.js');
|
|
4
4
|
var v4A79185f4 = require('./v4-a79185f4-2n0dOd_Y.js');
|
|
5
5
|
require('react');
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ const NvFieldmultiselect = class {
|
|
|
11
11
|
constructor(hostRef) {
|
|
12
12
|
index.registerInstance(this, hostRef);
|
|
13
13
|
this.valueChanged = index.createEvent(this, "valueChanged");
|
|
14
|
-
this.
|
|
14
|
+
this.filterTextChanged = index.createEvent(this, "filterTextChanged");
|
|
15
15
|
/****************************************************************************/
|
|
16
16
|
//#region PROPERTIES
|
|
17
17
|
/**
|
|
@@ -28,6 +28,11 @@ const NvFieldmultiselect = class {
|
|
|
28
28
|
* always type in fresh data.
|
|
29
29
|
*/
|
|
30
30
|
this.autocomplete = 'off';
|
|
31
|
+
/**
|
|
32
|
+
* Specifies the selected values of the multiselect field.
|
|
33
|
+
* This is the canonical value for the component and is used for form submission.
|
|
34
|
+
*/
|
|
35
|
+
this.value = [];
|
|
31
36
|
/**
|
|
32
37
|
* Marks the input field as required.
|
|
33
38
|
*/
|
|
@@ -81,17 +86,13 @@ const NvFieldmultiselect = class {
|
|
|
81
86
|
* Text for the badge showing the number of selected items.
|
|
82
87
|
*/
|
|
83
88
|
this.badgeLabel = '';
|
|
84
|
-
//#endregion PROPERTIES
|
|
85
|
-
/****************************************************************************/
|
|
86
|
-
//#region STATE
|
|
87
89
|
/**
|
|
88
90
|
* The text entered by the user for filtering multiselect items.
|
|
89
91
|
*/
|
|
90
92
|
this.filterText = '';
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.selectedValues = [];
|
|
93
|
+
//#endregion PROPERTIES
|
|
94
|
+
/****************************************************************************/
|
|
95
|
+
//#region STATE
|
|
95
96
|
/**
|
|
96
97
|
* Sorted options for display.
|
|
97
98
|
*/
|
|
@@ -101,8 +102,8 @@ const NvFieldmultiselect = class {
|
|
|
101
102
|
* Handle badge close for options mode.
|
|
102
103
|
*/
|
|
103
104
|
this.handleBadgeCloseOptions = () => {
|
|
104
|
-
this.
|
|
105
|
-
this.
|
|
105
|
+
this.value = [];
|
|
106
|
+
this.valueChanged.emit(this.value);
|
|
106
107
|
// Uncheck all elements
|
|
107
108
|
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
108
109
|
items.forEach(item => {
|
|
@@ -118,8 +119,8 @@ const NvFieldmultiselect = class {
|
|
|
118
119
|
* Handle badge close for slots mode.
|
|
119
120
|
*/
|
|
120
121
|
this.handleBadgeCloseSlots = () => {
|
|
121
|
-
this.
|
|
122
|
-
this.
|
|
122
|
+
this.value = [];
|
|
123
|
+
this.valueChanged.emit(this.value);
|
|
123
124
|
// Uncheck all elements
|
|
124
125
|
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
125
126
|
items.forEach(item => {
|
|
@@ -137,8 +138,7 @@ const NvFieldmultiselect = class {
|
|
|
137
138
|
if (this.isHandlingEscape) {
|
|
138
139
|
return;
|
|
139
140
|
}
|
|
140
|
-
|
|
141
|
-
// Reset filter if needed
|
|
141
|
+
// Reset filter if needed, but preserve the filter text
|
|
142
142
|
if (this.filterable) {
|
|
143
143
|
this.resetFilter();
|
|
144
144
|
}
|
|
@@ -151,9 +151,8 @@ const NvFieldmultiselect = class {
|
|
|
151
151
|
if (!this.el.contains(document.activeElement)) {
|
|
152
152
|
// Close the popover without affecting the divider
|
|
153
153
|
this.open = false;
|
|
154
|
-
// Reset filter if needed
|
|
154
|
+
// Reset filter if needed, but preserve the filter text
|
|
155
155
|
if (this.filterable) {
|
|
156
|
-
this.filterText = '';
|
|
157
156
|
this.resetFilter();
|
|
158
157
|
}
|
|
159
158
|
}
|
|
@@ -212,15 +211,14 @@ const NvFieldmultiselect = class {
|
|
|
212
211
|
return;
|
|
213
212
|
}
|
|
214
213
|
const input = event.target;
|
|
215
|
-
this.
|
|
216
|
-
this.
|
|
214
|
+
this.filterText = input.value;
|
|
215
|
+
this.filterTextChanged.emit(this.filterText);
|
|
217
216
|
// Clear any existing timer
|
|
218
217
|
if (this.debounceTimer) {
|
|
219
218
|
window.clearTimeout(this.debounceTimer);
|
|
220
219
|
}
|
|
221
220
|
// Set a new timer for filtering
|
|
222
221
|
this.debounceTimer = window.setTimeout(() => {
|
|
223
|
-
this.filterText = input.value.toLowerCase();
|
|
224
222
|
this.filterItemsOption();
|
|
225
223
|
}, this.debounceDelay);
|
|
226
224
|
};
|
|
@@ -234,15 +232,14 @@ const NvFieldmultiselect = class {
|
|
|
234
232
|
if (this.disabled || this.readonly)
|
|
235
233
|
return;
|
|
236
234
|
const input = event.target;
|
|
237
|
-
this.
|
|
238
|
-
this.
|
|
235
|
+
this.filterText = input.value;
|
|
236
|
+
this.filterTextChanged.emit(this.filterText);
|
|
239
237
|
// Clear any existing timer
|
|
240
238
|
if (this.debounceTimer) {
|
|
241
239
|
window.clearTimeout(this.debounceTimer);
|
|
242
240
|
}
|
|
243
241
|
// Set a new timer for filtering
|
|
244
242
|
this.debounceTimer = window.setTimeout(() => {
|
|
245
|
-
this.filterText = input.value.toLowerCase();
|
|
246
243
|
this.filterSlotsItems();
|
|
247
244
|
}, this.debounceDelay);
|
|
248
245
|
};
|
|
@@ -272,9 +269,8 @@ const NvFieldmultiselect = class {
|
|
|
272
269
|
if (!this.el.contains(document.activeElement)) {
|
|
273
270
|
// Close the popover without affecting the divider
|
|
274
271
|
this.open = false;
|
|
275
|
-
// Reset filter if needed
|
|
272
|
+
// Reset filter if needed, but preserve the filter text
|
|
276
273
|
if (this.filterable) {
|
|
277
|
-
this.filterText = '';
|
|
278
274
|
this.resetFilter();
|
|
279
275
|
}
|
|
280
276
|
}
|
|
@@ -306,14 +302,14 @@ const NvFieldmultiselect = class {
|
|
|
306
302
|
* @returns {any} The JSX for options mode
|
|
307
303
|
*/
|
|
308
304
|
this.renderOptionsMode = () => {
|
|
309
|
-
return (index.h(index.Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect" }, index.h("slot", { name: "leading-input" }), this.
|
|
305
|
+
return (index.h(index.Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect" }, index.h("slot", { name: "leading-input" }), this.value.length > 0 && (index.h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.value.length > 0, label: `${this.value.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseOptions })), this.filterable || this.disabled || this.readonly ? (index.h("input", { type: "text", id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDown, "data-scope": "focusable" })) : (index.h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickOptions, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusOptions, role: "combobox", "aria-expanded": this.open, "data-scope": "focusable" }, index.h("span", null, this.placeholder))), this.error && (index.h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), index.h("nv-iconbutton", { "data-scope": "toggle-dropdown", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', "aria-pressed": this.open.toString(), onClick: this.togglePopoverOptions })), index.h("slot", { name: "after-input" })), index.h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, index.h("ul", { role: "content" }, this.options.map(option => (index.h("nv-fielddropdownitemcheck", { label: option.label, description: option.description, value: option.value, checked: this.value.includes(option.value), disabled: option.disabled }))), index.h("hr", { class: "multiselect-divider", style: { display: 'none' } })))), this.renderDescriptions()));
|
|
310
306
|
};
|
|
311
307
|
/**
|
|
312
308
|
* Renders the component in slots mode
|
|
313
309
|
* @returns {any} The JSX for slots mode
|
|
314
310
|
*/
|
|
315
311
|
this.renderSlotsMode = () => {
|
|
316
|
-
return (index.h(index.Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect", onClick: this.handleInputContainerClickSlots }, index.h("slot", { name: "leading-input" }), this.
|
|
312
|
+
return (index.h(index.Host, { "aria-label": this.label, "aria-expanded": this.open.toString() }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect", onClick: this.handleInputContainerClickSlots }, index.h("slot", { name: "leading-input" }), this.value.length > 0 && (index.h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.value.length > 0, label: `${this.value.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseSlots })), this.filterable || this.disabled || this.readonly ? (index.h("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputSlots, onFocus: this.handleInputFocusSlots, onBlur: this.handleInputBlurSlots, onKeyDown: this.handleKeyDown, "data-scope": "focusable" })) : (index.h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickSlots, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusSlots, role: "combobox", "aria-expanded": this.open, "data-scope": "focusable" }, index.h("span", null, this.placeholder))), this.error && (index.h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), index.h("nv-iconbutton", { "data-scope": "toggle-dropdown", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', "aria-pressed": this.open.toString(), onClick: this.togglePopoverSlots })), index.h("slot", { name: "after-input" })), index.h("div", { slot: "content", role: "listbox", "aria-multiselectable": "true", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, index.h("slot", { name: "content" }))), this.renderDescriptions()));
|
|
317
313
|
};
|
|
318
314
|
}
|
|
319
315
|
//#endregion EVENTS
|
|
@@ -322,7 +318,7 @@ const NvFieldmultiselect = class {
|
|
|
322
318
|
handleOptionsChange(newValue) {
|
|
323
319
|
if (!newValue)
|
|
324
320
|
return;
|
|
325
|
-
this.
|
|
321
|
+
this.value = newValue
|
|
326
322
|
.filter(option => option.checked)
|
|
327
323
|
.map(option => option.value);
|
|
328
324
|
this.reorderOptionsContent();
|
|
@@ -331,8 +327,10 @@ const NvFieldmultiselect = class {
|
|
|
331
327
|
* Emitted when the value changes.
|
|
332
328
|
*/
|
|
333
329
|
watchValueHandler() {
|
|
334
|
-
//
|
|
335
|
-
this.
|
|
330
|
+
// Synchronize child components when value changes programmatically
|
|
331
|
+
if (this.el && this.el.isConnected) {
|
|
332
|
+
this.syncChildComponents();
|
|
333
|
+
}
|
|
336
334
|
}
|
|
337
335
|
//#endregion WATCHERS
|
|
338
336
|
/****************************************************************************/
|
|
@@ -372,22 +370,23 @@ const NvFieldmultiselect = class {
|
|
|
372
370
|
}
|
|
373
371
|
const { value, checked } = event.detail;
|
|
374
372
|
if (value !== undefined && value !== null) {
|
|
375
|
-
const
|
|
376
|
-
const valueIndex =
|
|
373
|
+
const newValue = [...this.value];
|
|
374
|
+
const valueIndex = newValue.indexOf(value);
|
|
377
375
|
if (checked && valueIndex === -1) {
|
|
378
|
-
|
|
376
|
+
newValue.push(value);
|
|
379
377
|
}
|
|
380
378
|
else if (!checked && valueIndex > -1) {
|
|
381
|
-
|
|
379
|
+
newValue.splice(valueIndex, 1);
|
|
382
380
|
}
|
|
383
|
-
//
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
381
|
+
// Always update the state and emit the event when an item is checked/unchecked
|
|
382
|
+
this.value = newValue;
|
|
383
|
+
this.valueChanged.emit(this.value);
|
|
384
|
+
// Update the checked state of all items to ensure consistency
|
|
385
|
+
this.syncChildComponents();
|
|
386
|
+
// Preserve the filter text in the input
|
|
387
|
+
if (this.filterable && this.inputElement) {
|
|
388
|
+
// Keep the current filter text in the input
|
|
389
|
+
this.inputElement.value = this.filterText;
|
|
391
390
|
}
|
|
392
391
|
}
|
|
393
392
|
else {
|
|
@@ -426,12 +425,10 @@ const NvFieldmultiselect = class {
|
|
|
426
425
|
}
|
|
427
426
|
// Specific initialization for slots mode
|
|
428
427
|
if (!this.options) {
|
|
428
|
+
// Use a microtask to ensure DOM is ready
|
|
429
429
|
Promise.resolve().then(() => {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
this.selectedValues = items
|
|
433
|
-
.filter(item => item.hasAttribute('checked'))
|
|
434
|
-
.map(item => item.getAttribute('value') || '');
|
|
430
|
+
// Synchronize child components
|
|
431
|
+
this.syncChildComponents();
|
|
435
432
|
// Force a reorder after initialization
|
|
436
433
|
requestAnimationFrame(() => {
|
|
437
434
|
this.reorderSlotContent();
|
|
@@ -442,13 +439,8 @@ const NvFieldmultiselect = class {
|
|
|
442
439
|
if (this.options) {
|
|
443
440
|
this.sortedOptions = [...((_a = this.options) !== null && _a !== void 0 ? _a : [])];
|
|
444
441
|
}
|
|
445
|
-
//
|
|
446
|
-
if (this.
|
|
447
|
-
this.filterText = String(this.value).toLocaleLowerCase();
|
|
448
|
-
this.filterItems();
|
|
449
|
-
}
|
|
450
|
-
else {
|
|
451
|
-
// Reset visibility state of all dropdown items
|
|
442
|
+
// Reset filter if needed
|
|
443
|
+
if (!this.filterText) {
|
|
452
444
|
this.resetFilter();
|
|
453
445
|
}
|
|
454
446
|
}
|
|
@@ -459,6 +451,8 @@ const NvFieldmultiselect = class {
|
|
|
459
451
|
if (this.options) {
|
|
460
452
|
this.handleOptionsChange(this.options);
|
|
461
453
|
}
|
|
454
|
+
// Final synchronization of child components after everything is loaded
|
|
455
|
+
this.syncChildComponents();
|
|
462
456
|
}
|
|
463
457
|
/**
|
|
464
458
|
* Unsubscribe from click outside event.
|
|
@@ -476,38 +470,6 @@ const NvFieldmultiselect = class {
|
|
|
476
470
|
async getFilterText() {
|
|
477
471
|
return this.filterText;
|
|
478
472
|
}
|
|
479
|
-
/**
|
|
480
|
-
* Set the initial selection based on the current value and update the inputElement value.
|
|
481
|
-
*/
|
|
482
|
-
setInitialSelection() {
|
|
483
|
-
var _a;
|
|
484
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
|
|
485
|
-
const selectedItem = items.find(item => {
|
|
486
|
-
var _a;
|
|
487
|
-
return item.getAttribute('label') === this.value ||
|
|
488
|
-
item.getAttribute('value') === this.value ||
|
|
489
|
-
((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === this.value;
|
|
490
|
-
});
|
|
491
|
-
// Remove 'selected' from all items first to reset the state
|
|
492
|
-
items.forEach(item => {
|
|
493
|
-
item.removeAttribute('selected');
|
|
494
|
-
item.classList.remove('selected');
|
|
495
|
-
});
|
|
496
|
-
if (selectedItem) {
|
|
497
|
-
// Add the `selected` attribute and `selected` class for visual styling
|
|
498
|
-
selectedItem.setAttribute('selected', 'true');
|
|
499
|
-
selectedItem.classList.add('selected');
|
|
500
|
-
// Update the value and inputElement value to reflect the pre-selected item
|
|
501
|
-
this.value =
|
|
502
|
-
selectedItem.getAttribute('label') ||
|
|
503
|
-
selectedItem.getAttribute('value') ||
|
|
504
|
-
((_a = selectedItem.textContent) === null || _a === void 0 ? void 0 : _a.trim()) ||
|
|
505
|
-
'';
|
|
506
|
-
if (this.inputElement) {
|
|
507
|
-
this.inputElement.value = this.value;
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
473
|
/**
|
|
512
474
|
* Reset the filter and make all items visible.
|
|
513
475
|
*/
|
|
@@ -524,8 +486,8 @@ const NvFieldmultiselect = class {
|
|
|
524
486
|
if (emptyMessage)
|
|
525
487
|
emptyMessage.remove();
|
|
526
488
|
// Reorder with divider if needed
|
|
527
|
-
const selectedItems = items.filter(item => this.
|
|
528
|
-
const unselectedItems = items.filter(item => !this.
|
|
489
|
+
const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
490
|
+
const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
529
491
|
if (selectedItems.length > 0) {
|
|
530
492
|
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
531
493
|
}
|
|
@@ -536,7 +498,7 @@ const NvFieldmultiselect = class {
|
|
|
536
498
|
* @returns {string[]} The selected values.
|
|
537
499
|
*/
|
|
538
500
|
async getSelectedValues() {
|
|
539
|
-
return this.
|
|
501
|
+
return this.value;
|
|
540
502
|
}
|
|
541
503
|
/**
|
|
542
504
|
* Reorder the content of the slot.
|
|
@@ -558,8 +520,8 @@ const NvFieldmultiselect = class {
|
|
|
558
520
|
return;
|
|
559
521
|
}
|
|
560
522
|
// Separate checked vs unchecked
|
|
561
|
-
const selectedItems = items.filter(item => this.
|
|
562
|
-
const unselectedItems = items.filter(item => !this.
|
|
523
|
+
const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
524
|
+
const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
563
525
|
// Reinsert CHECKED items FIRST
|
|
564
526
|
// appendChild() moves the element without recreating it
|
|
565
527
|
// this is not trigger a re-rendering of the component in the platforms
|
|
@@ -585,8 +547,8 @@ const NvFieldmultiselect = class {
|
|
|
585
547
|
if (!ul)
|
|
586
548
|
return;
|
|
587
549
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
|
|
588
|
-
const selectedItems = items.filter(item => this.
|
|
589
|
-
const unselectedItems = items.filter(item => !this.
|
|
550
|
+
const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
551
|
+
const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
590
552
|
// Reorder the elements
|
|
591
553
|
selectedItems.forEach(item => ul.appendChild(item));
|
|
592
554
|
unselectedItems.forEach(item => ul.appendChild(item));
|
|
@@ -622,8 +584,8 @@ const NvFieldmultiselect = class {
|
|
|
622
584
|
}
|
|
623
585
|
// Reorder with divider
|
|
624
586
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
625
|
-
const selectedItems = items.filter(item => this.
|
|
626
|
-
const unselectedItems = items.filter(item => !this.
|
|
587
|
+
const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
588
|
+
const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
627
589
|
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
628
590
|
return;
|
|
629
591
|
}
|
|
@@ -644,8 +606,8 @@ const NvFieldmultiselect = class {
|
|
|
644
606
|
});
|
|
645
607
|
// Manage the divider with the visible items
|
|
646
608
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
647
|
-
const visibleSelected = visibleItems.filter(item => this.
|
|
648
|
-
const visibleUnselected = visibleItems.filter(item => !this.
|
|
609
|
+
const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
610
|
+
const visibleUnselected = visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
649
611
|
this.manageDivider(ul, visibleSelected, visibleUnselected);
|
|
650
612
|
}
|
|
651
613
|
else {
|
|
@@ -703,8 +665,8 @@ const NvFieldmultiselect = class {
|
|
|
703
665
|
});
|
|
704
666
|
// Manage the divider with the visible items
|
|
705
667
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
706
|
-
const visibleSelected = visibleItems.filter(item => this.
|
|
707
|
-
const visibleUnselected = visibleItems.filter(item => !this.
|
|
668
|
+
const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
669
|
+
const visibleUnselected = visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
708
670
|
this.manageDivider(ul, visibleSelected, visibleUnselected);
|
|
709
671
|
// Add or remove the empty message based on the case
|
|
710
672
|
if (!hasVisibleItems) {
|
|
@@ -752,8 +714,8 @@ const NvFieldmultiselect = class {
|
|
|
752
714
|
});
|
|
753
715
|
// Get visible items after filtering
|
|
754
716
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
755
|
-
const visibleSelectedItems = visibleItems.filter(item => this.
|
|
756
|
-
this.manageDivider(ul, visibleSelectedItems, visibleItems.filter(item => !this.
|
|
717
|
+
const visibleSelectedItems = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
718
|
+
this.manageDivider(ul, visibleSelectedItems, visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || '')));
|
|
757
719
|
// Add empty message if no items match the filter
|
|
758
720
|
if (!hasVisibleItems) {
|
|
759
721
|
const emptyMessage = document.createElement('li');
|
|
@@ -950,6 +912,29 @@ const NvFieldmultiselect = class {
|
|
|
950
912
|
divider.style.display = 'none';
|
|
951
913
|
}
|
|
952
914
|
}
|
|
915
|
+
/**
|
|
916
|
+
* Synchronizes the checked state of all child nv-fielddropdownitemcheck components
|
|
917
|
+
* with the current selectedValues state.
|
|
918
|
+
*/
|
|
919
|
+
syncChildComponents() {
|
|
920
|
+
// Early return if element is not ready
|
|
921
|
+
if (!this.el || !this.el.isConnected) {
|
|
922
|
+
return;
|
|
923
|
+
}
|
|
924
|
+
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
925
|
+
items.forEach(item => {
|
|
926
|
+
// Get the effective value: use explicit value if present, otherwise use label
|
|
927
|
+
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
928
|
+
if (this.value.includes(itemValue)) {
|
|
929
|
+
item.setAttribute('checked', '');
|
|
930
|
+
item.checked = true;
|
|
931
|
+
}
|
|
932
|
+
else {
|
|
933
|
+
item.removeAttribute('checked');
|
|
934
|
+
item.checked = false;
|
|
935
|
+
}
|
|
936
|
+
});
|
|
937
|
+
}
|
|
953
938
|
/**
|
|
954
939
|
* Renders description and error description sections
|
|
955
940
|
* @returns {any} The JSX for descriptions
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-E_eTmclZ.js');
|
|
4
4
|
var v4A79185f4 = require('./v4-a79185f4-2n0dOd_Y.js');
|
|
5
5
|
require('react');
|
|
6
6
|
|
|
@@ -115,9 +115,9 @@ const NvFieldnumber = class {
|
|
|
115
115
|
/****************************************************************************/
|
|
116
116
|
//#region RENDER
|
|
117
117
|
render() {
|
|
118
|
-
return (index.h(index.Host, { key: '
|
|
119
|
-
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '
|
|
120
|
-
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '
|
|
118
|
+
return (index.h(index.Host, { key: '908571e657b876e4bf13d2cd88c74ed56375a4a9' }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'd46ff199fa0211227293ebab6159ee98916e4845', htmlFor: this.inputId }, index.h("slot", { key: '0e825e862bfadb313b723898d0732efb36f001c0', name: "label" }, this.label))), index.h("div", { key: 'e001c956494a7b3c90cb713540b9300f6482cbb7', class: "input-wrapper" }, index.h("slot", { key: '07f53c5fafcd308609b4ecfb721b9b0f791d5bf5', name: "before-input" }), index.h("div", { key: '266fe99cc757c5646aa4bcbf262d7f6eb21fa507', class: "input-container", onClick: this.handleInputContainerClick }, index.h("slot", { key: 'f80e50ffa553656b26c80be179fd5bda8fd7234e', name: "leading-input" }), index.h("input", { key: '3fb53e266a44118a464f5fffef5019d900f25668', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, type: "number", autofocus: this.autofocus, required: this.required, max: this.max, min: this.min, step: this.step, value: this.value, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), index.h("slot", { key: '9769d9b13676f8022eb7771869876125e7d13ea2', name: "trailing-input" }), this.error && (index.h("nv-icon", { key: 'feedeb1dfcf9a5b8c3e6f4e355af64db5e108125', name: "alert-circle", class: "validation", size: "md" })), this.success && (index.h("nv-icon", { key: '6f3819ea3bad57b373e24e5b167887c2175534ce', name: "circle-check", class: "validation", size: "md" })), index.h("div", { key: 'ab83ad88264a5295f8239b308af7b61c04095b8c', class: "stepper" }, index.h("nv-iconbutton", { key: '67bf2dc34cab126f8ebb8ad1368d326ce4e448c9', size: "md", name: "minus", emphasis: "lower", onClick: this.handleMinus, disabled: this.isMinValueReached(), onMouseDown: this.preventSelection, tabindex: "-1" }), index.h("nv-iconbutton", { key: '2ae711f4ff770049fb9b9afa4075b02a5d41d881', size: "md", name: "plus", emphasis: "lower", onClick: this.handlePlus, disabled: this.isMaxValueReached(), onMouseDown: this.preventSelection, tabindex: "-1" }))), index.h("slot", { key: 'f59664d1200b6e1e300cac52ceaee03b1be68cea', name: "after-input" })), (this.description ||
|
|
119
|
+
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '10cefd1d1e86d33456b6800d5d1f3f5c7a10a16c', class: "description" }, index.h("slot", { key: 'a8544e2917993f7fa45200e51e983277c6f0b393', name: "description" }, this.description))), (this.errorDescription ||
|
|
120
|
+
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '95ffb42b6014514a51102b0bfa60887ff3394362', hidden: !this.error, class: "error-description" }, index.h("slot", { key: '47d19a9cf2de2cdd2f23a5cf7a74943f9de8cb7e', name: "error-description" }, this.errorDescription)))));
|
|
121
121
|
}
|
|
122
122
|
static get formAssociated() { return true; }
|
|
123
123
|
get el() { return index.getElement(this); }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-E_eTmclZ.js');
|
|
4
4
|
var v4A79185f4 = require('./v4-a79185f4-2n0dOd_Y.js');
|
|
5
5
|
require('react');
|
|
6
6
|
|
|
@@ -106,9 +106,9 @@ const NvFieldpassword = class {
|
|
|
106
106
|
/****************************************************************************/
|
|
107
107
|
//#region RENDER
|
|
108
108
|
render() {
|
|
109
|
-
return (index.h(index.Host, { key: '
|
|
110
|
-
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '
|
|
111
|
-
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '
|
|
109
|
+
return (index.h(index.Host, { key: 'a14a4df5990def8c1b76e191dc3480c2eee73446' }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'b3f8d2a9b98afbd9ba7e932a4fd2639855bce785', htmlFor: this.inputId }, index.h("slot", { key: 'af896d231a0c0b5b5ce921e24f98b32702fe0058', name: "label" }, this.label))), index.h("div", { key: '6047dabbbb95967bf4afb01144a5f2af98677caf', class: "input-wrapper" }, index.h("slot", { key: 'eb36d6c886f7efc91508b97a4cb11c43d7e7809b', name: "before-input" }), index.h("div", { key: 'f9de2896f8d7a29d700e9c7f586f5190c48b0304', class: "input-container", onClick: this.handleInputContainerClick }, index.h("slot", { key: '3203cc62507460372c3babcede4071cf4a068122', name: "leading-input" }), index.h("input", { key: 'bef15c1b3da5f949e4a55644dbea6499f398f71a', id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, type: this.showPasswordState ? 'text' : 'password', inputMode: this.mode, value: this.value, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput }), (this.success || this.error) && (index.h("nv-icon", { key: 'b23cac5c39ea1a428831583075d2e631eb13c231', name: this.success ? 'circle-check' : 'alert-circle', class: "validation", size: "md" })), !this.hidePasswordIcon && (index.h("nv-iconbutton", { key: '9a6a4900981781239b40e7106974e0d520dbf76a', name: this.showPasswordState ? 'eye' : 'eye-off', size: "md", emphasis: "lower", onClick: this.togglePasswordVisibility, "aria-label": this.showPasswordState ? 'Hide password' : 'Show password', "aria-pressed": this.showPasswordState.toString() }))), index.h("slot", { key: 'e3be0e70cad0f581b7fb0bee13046dcbf3d01791', name: "after-input" })), (this.description ||
|
|
110
|
+
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: 'a0613b0fc5f68e82a3bff9a7943c33fd89fad6c8', class: "description" }, index.h("slot", { key: '7f74f1207e31772ff485927d3c0334185bb14e77', name: "description" }, this.description))), (this.errorDescription ||
|
|
111
|
+
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '1fba0209bef041b3582bc36dc3b603c6b3a24088', hidden: !this.error, class: "error-description" }, index.h("slot", { key: '16c86655cc33bf47d1d4c388bcc4ac6272aa7714', name: "error-description" }, this.errorDescription)))));
|
|
112
112
|
}
|
|
113
113
|
static get formAssociated() { return true; }
|
|
114
114
|
get el() { return index.getElement(this); }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-E_eTmclZ.js');
|
|
4
4
|
var clsx297c1ffe = require('./clsx-297c1ffe-BtxeOLZW.js');
|
|
5
5
|
var v4A79185f4 = require('./v4-a79185f4-2n0dOd_Y.js');
|
|
6
6
|
require('react');
|
|
@@ -87,9 +87,9 @@ const NvFieldradio = class {
|
|
|
87
87
|
/****************************************************************************/
|
|
88
88
|
//#region RENDER
|
|
89
89
|
render() {
|
|
90
|
-
return (index.h(index.Host, { key: '
|
|
91
|
-
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '
|
|
92
|
-
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '
|
|
90
|
+
return (index.h(index.Host, { key: 'abfa20ef5921ee52cbe6c3ea92b27bbd4e81a116', class: clsx297c1ffe.clsx(this.labelPlacement === 'before' && 'label-placement-before', this.error && 'error') }, index.h("input", { key: 'ffa244c2692f3f4b3781df6ed3916139763d3253', type: "radio", id: this.inputId, name: this.name, autofocus: this.autofocus, autocomplete: "off", value: this.value, checked: this.checked, disabled: this.disabled }), index.h("div", { key: '661ccebfcd608d3d5a819144c1048b7b612d93ad', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: '0764fffd0b6c961d3149130fd92fc3e5be4617d4', htmlFor: this.inputId }, index.h("slot", { key: '5b5c107074f406864f889187a73c3b6c25b5ad36', name: "label" }, this.label))), (this.description ||
|
|
91
|
+
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '68bb23249fc70db7346e4deb1924e24fd0e43133', class: "description" }, index.h("slot", { key: 'fee77e49f6a48f592eba370f8e842cc3c51a9569', name: "description" }, this.description))), (this.errorDescription ||
|
|
92
|
+
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '0544f59d2446dd3d1137839643222ae1d32236a2', hidden: !this.error, class: "error-description" }, index.h("slot", { key: '655fbb4ca21e3001425dcfbb6d9188586e0548ca', name: "error-description" }, this.errorDescription))))));
|
|
93
93
|
}
|
|
94
94
|
static get formAssociated() { return true; }
|
|
95
95
|
get el() { return index.getElement(this); }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-E_eTmclZ.js');
|
|
4
4
|
var v4A79185f4 = require('./v4-a79185f4-2n0dOd_Y.js');
|
|
5
5
|
require('react');
|
|
6
6
|
|
|
@@ -347,13 +347,13 @@ const NvFieldselect = class {
|
|
|
347
347
|
* @returns {HTMLStencilElement} The HTML element to render.
|
|
348
348
|
*/
|
|
349
349
|
render() {
|
|
350
|
-
return (index.h(index.Host, { key: '
|
|
350
|
+
return (index.h(index.Host, { key: 'd7c179e0ad3bdc22afa4a4ad8b84cc0d7403e3f9' }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: '545ba543c78e93bb790fca363325d40052899b53', htmlFor: this.inputId }, index.h("slot", { key: '5141dc2bda9b312682fe7adcf2ad8ae23a720696', name: "label" }, this.label))), index.h("div", { key: '791b9ed3213a44b2222613e54e21ec5f7814625f', class: "select-wrapper" }, index.h("slot", { key: '51590cb6c8152955ffef574caaa5858064652cf8', name: "before-input" }), index.h("div", { key: '030cfcb568435a8518d2680bee21b6e66c0955eb', class: "select-container", onClick: this.handleSelectContainerClick }, index.h("slot", { key: '9eb92fb0b383a2b08ef8ba61baf8340f6ecb12a6', name: "leading-input" }), this.internalReadonly && (index.h("input", { key: 'fe4debae13d4258fe5e6a6d273e7384ef7071f35', id: this.inputId + '-readonly', type: "text", value: this.computedDisplayValue, readonly: true, class: "readonly-input", "aria-readonly": "true", "aria-label": this.label, "aria-describedby": this.error
|
|
351
351
|
? `${this.inputId}-error`
|
|
352
|
-
: `${this.inputId}-description` })), index.h("select", { key: '
|
|
352
|
+
: `${this.inputId}-description` })), index.h("select", { key: '767c5c8f1a0f34aa645d49e7b09b0cfb230d5e3c', id: this.inputId, ref: el => (this.selectElement = el), name: this.name, autofocus: this.autofocus, disabled: this.disabled, required: this.required, multiple: this.multiple, onChange: this.handleSelectChange, class: this.internalReadonly ? 'hidden' : '', "aria-label": this.label, "aria-describedby": this.error
|
|
353
353
|
? `${this.inputId}-error`
|
|
354
|
-
: `${this.inputId}-description` }, this.parsedOptions.length > 0 ? (this.parsedOptions.map(option => (index.h("option", { value: option.value, selected: option.selected, disabled: option.disabled }, option.label)))) : (index.h("slot", null))), index.h("div", { key: '
|
|
355
|
-
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '
|
|
356
|
-
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '
|
|
354
|
+
: `${this.inputId}-description` }, this.parsedOptions.length > 0 ? (this.parsedOptions.map(option => (index.h("option", { value: option.value, selected: option.selected, disabled: option.disabled }, option.label)))) : (index.h("slot", null))), index.h("div", { key: '911644aa7ded450918f6424ebd8ce9dc4b6ed1d6', class: "select-icons" }, this.error && (index.h("nv-icon", { key: 'd5ae32439983916d17346fdce50d51e73d429c23', name: "alert-circle", class: "validation", size: "md" })), this.success && (index.h("nv-icon", { key: '783f0d7f1d4a0bbcbd8cff9416e5c3f61408061a', name: "circle-check", class: "validation", size: "md" })), !this.multiple && (index.h("nv-iconbutton", { key: '252cd65b1e9437aa89161c6342f4f107ad330136', name: "chevron-down", size: "md", emphasis: "lower", tabindex: -1 })))), index.h("slot", { key: '8e1088c34086ee58b240acb99c25fa113517e76c', name: "after-input" })), (this.description ||
|
|
355
|
+
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '7c521ab944ec72bec68c32c33400eb3c3a7c32bc', class: "description", id: `${this.inputId}-description` }, index.h("slot", { key: 'dab0be52dc34f499575775f9131c51c4cd7fd290', name: "description" }, this.description))), (this.errorDescription ||
|
|
356
|
+
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '00d9ce6b2a5fb946575e54cc3bf2fd83acc83290', class: "error-description", id: `${this.inputId}-error` }, index.h("slot", { key: '0e1027874f6e2b275ca354e2d64c0289ca961a0c', name: "error-description" }, this.errorDescription)))));
|
|
357
357
|
}
|
|
358
358
|
static get formAssociated() { return true; }
|
|
359
359
|
get el() { return index.getElement(this); }
|