@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.
Files changed (50) hide show
  1. package/dist/cjs/{timeline.animation-1b88f052-B8-vCVrY.js → collapse.animation-16e3af45-CChx_tQJ.js} +4 -25
  2. package/dist/cjs/fade.animation-71e8e34c-BAw_TYsB.js +68 -0
  3. package/dist/cjs/{index-Te0zRbKN.js → index-E_eTmclZ.js} +2187 -1596
  4. package/dist/cjs/index.js +3 -1
  5. package/dist/cjs/nv-accordion-item.entry-B9iMQoRk.js +178 -0
  6. package/dist/cjs/nv-accordion.entry-2oOEkDVq.js +191 -0
  7. package/dist/cjs/{nv-alert.entry-CPbApg9_.js → nv-alert.entry-CJcHACkm.js} +10 -8
  8. package/dist/cjs/{nv-avatar.entry-CwM8IOei.js → nv-avatar.entry-COkIaFDp.js} +2 -2
  9. package/dist/cjs/{nv-badge_2.entry-Bqu-2k7E.js → nv-badge_2.entry-CQHT-nck.js} +14 -12
  10. package/dist/cjs/{nv-breadcrumb.entry-CmceXVS9.js → nv-breadcrumb.entry-DElOQJUD.js} +2 -2
  11. package/dist/cjs/{nv-breadcrumbs.entry-B7xbEUl5.js → nv-breadcrumbs.entry-CDfxiMbp.js} +2 -2
  12. package/dist/cjs/{nv-button.entry-Cd_CE1fx.js → nv-button.entry-CTJT4SzB.js} +2 -2
  13. package/dist/cjs/{nv-calendar.entry-B2lm2nvb.js → nv-calendar.entry-BU2OBf6g.js} +60 -51
  14. package/dist/cjs/{nv-col.entry-BF8XR4B1.js → nv-col.entry-Bsz14pxY.js} +2 -2
  15. package/dist/cjs/{nv-datagrid.entry-CcQ8XP6J.js → nv-datagrid.entry-2DyB7G5f.js} +3 -3
  16. package/dist/cjs/{nv-datagridcolumn.entry-uGbQ4NMr.js → nv-datagridcolumn.entry-DquF2Cc1.js} +2 -2
  17. package/dist/cjs/{nv-dialog.entry-DyK4wFFz.js → nv-dialog.entry-QzImh4AV.js} +20 -7
  18. package/dist/cjs/{nv-dialogfooter_2.entry-DT3kR9Xn.js → nv-dialogfooter_2.entry-MikGtnGi.js} +3 -3
  19. package/dist/cjs/{nv-fieldcheckbox.entry-D_wHbgcq.js → nv-fieldcheckbox.entry-DKhH58rn.js} +5 -5
  20. package/dist/cjs/{nv-fielddate.entry-BaIcP2EG.js → nv-fielddate.entry-Dj_oMJ2a.js} +101 -36
  21. package/dist/cjs/{nv-fielddaterange.entry-BNcF2N2M.js → nv-fielddaterange.entry-CWwH83ug.js} +5 -5
  22. package/dist/cjs/{nv-fielddropdown.entry-DWlDvODi.js → nv-fielddropdown.entry-CPD-1tGj.js} +4 -4
  23. package/dist/cjs/{nv-fielddropdownitem.entry-BIy_GUKA.js → nv-fielddropdownitem.entry-CM5Fogll.js} +2 -2
  24. package/dist/cjs/{nv-fieldmultiselect.entry-B74CLRuh.js → nv-fieldmultiselect.entry-DodoLrhv.js} +86 -101
  25. package/dist/cjs/{nv-fieldnumber.entry-BQBy1EIj.js → nv-fieldnumber.entry-063nS6p_.js} +4 -4
  26. package/dist/cjs/{nv-fieldpassword.entry-DNFZvmBx.js → nv-fieldpassword.entry-CreA_Yx8.js} +4 -4
  27. package/dist/cjs/{nv-fieldradio.entry-BIR29jv5.js → nv-fieldradio.entry-Y8YSlQbK.js} +4 -4
  28. package/dist/cjs/{nv-fieldselect.entry-DulA_N5q.js → nv-fieldselect.entry-B1X8kT8-.js} +6 -6
  29. package/dist/cjs/{nv-fieldslider.entry-DCslY5gg.js → nv-fieldslider.entry-CJlQWgFy.js} +54 -10
  30. package/dist/cjs/{nv-fieldtext.entry-Dvv8KjJC.js → nv-fieldtext.entry-Cib7Q9Wi.js} +4 -4
  31. package/dist/cjs/{nv-fieldtextarea.entry-rVcnznae.js → nv-fieldtextarea.entry-QYIEAbAM.js} +4 -4
  32. package/dist/cjs/{nv-fieldtime.entry-_fXkWsoI.js → nv-fieldtime.entry-D6jX_bbE.js} +10 -10
  33. package/dist/cjs/{nv-icon.entry-BGyFETNH.js → nv-icon.entry-DyYPxO1l.js} +2 -2
  34. package/dist/cjs/{nv-iconbutton_2.entry-CtClzxKf.js → nv-iconbutton_2.entry-BDpYysUa.js} +3 -3
  35. package/dist/cjs/{nv-menu.entry-B3vFxd1E.js → nv-menu.entry-EY6i9-lW.js} +2 -2
  36. package/dist/cjs/{nv-menuitem.entry-BIWwr98d.js → nv-menuitem.entry-D3_V7wz6.js} +2 -2
  37. package/dist/cjs/{nv-popover.entry-vonHjF_y.js → nv-popover.entry-VI0JSWEK.js} +9 -8
  38. package/dist/cjs/{nv-row.entry-BYUhLZ0r.js → nv-row.entry-Da5sYAGY.js} +2 -2
  39. package/dist/cjs/{nv-stack.entry-Cxc6QmII.js → nv-stack.entry-CQ8A3wKB.js} +2 -2
  40. package/dist/cjs/{nv-table.entry-DSBUXcSF.js → nv-table.entry-DkALs4J_.js} +3 -3
  41. package/dist/cjs/{nv-tablecolumn.entry-BP857bqD.js → nv-tablecolumn.entry-C_9y9_Tk.js} +1 -1
  42. package/dist/cjs/{nv-toggle.entry-CnquGUlJ.js → nv-toggle.entry-CPvuKc2f.js} +3 -3
  43. package/dist/cjs/{nv-tooltip.entry-XvxL_FTH.js → nv-tooltip.entry-dvTSw6dq.js} +4 -3
  44. package/dist/cjs/{fade.animation-2a077983-aKN0EDTo.js → stylefire.es-74da334a-y0piPjlz.js} +0 -64
  45. package/dist/cjs/timeline.animation-adf35ecb-CE6Dsdxr.js +23 -0
  46. package/dist/generated/components.js +18 -2
  47. package/dist/generated/components.server.js +26 -3
  48. package/dist/types/generated/components.d.ts +17 -3
  49. package/dist/types/generated/components.server.d.ts +17 -3
  50. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Te0zRbKN.js');
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.multiselectChange = index.createEvent(this, "multiselectChange");
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
- * List of selected values in the multiselect.
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.selectedValues = [];
105
- this.multiselectChange.emit(this.selectedValues);
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.selectedValues = [];
122
- this.multiselectChange.emit(this.selectedValues);
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
- this.filterText = '';
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.value = input.value;
216
- this.valueChanged.emit(this.value);
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.value = input.value;
238
- this.valueChanged.emit(this.value);
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.selectedValues.length > 0 && (index.h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.selectedValues.length > 0, label: `${this.selectedValues.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.selectedValues.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.value, 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.value || 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.selectedValues.includes(option.value), disabled: option.disabled }))), index.h("hr", { class: "multiselect-divider", style: { display: 'none' } })))), this.renderDescriptions()));
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.selectedValues.length > 0 && (index.h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.selectedValues.length > 0, label: `${this.selectedValues.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.selectedValues.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.value, 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.value || 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()));
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.selectedValues = newValue
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
- // Handle value change and update the corresponding multiselect item if it exists
335
- this.setInitialSelection();
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 newSelectedValues = [...this.selectedValues];
376
- const valueIndex = newSelectedValues.indexOf(value);
373
+ const newValue = [...this.value];
374
+ const valueIndex = newValue.indexOf(value);
377
375
  if (checked && valueIndex === -1) {
378
- newSelectedValues.push(value);
376
+ newValue.push(value);
379
377
  }
380
378
  else if (!checked && valueIndex > -1) {
381
- newSelectedValues.splice(valueIndex, 1);
379
+ newValue.splice(valueIndex, 1);
382
380
  }
383
- // Update the state and emit the event only if the selection has changed
384
- if (JSON.stringify(this.selectedValues) !==
385
- JSON.stringify(newSelectedValues)) {
386
- this.selectedValues = newSelectedValues;
387
- // Use requestAnimationFrame to ensure the state is updated before emitting the event
388
- requestAnimationFrame(() => {
389
- this.multiselectChange.emit(this.selectedValues);
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
- const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
431
- // Initialize selectedValues with checked items
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
- // Apply filtering if the multiselect is filterable and there is a value
446
- if (this.filterable && this.value) {
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.selectedValues.includes(item.getAttribute('value') || ''));
528
- const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
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.selectedValues;
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.selectedValues.includes(item.getAttribute('value') || ''));
562
- const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
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.selectedValues.includes(item.getAttribute('value') || ''));
589
- const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
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.selectedValues.includes(item.getAttribute('value') || ''));
626
- const unselectedItems = items.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
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.selectedValues.includes(item.getAttribute('value') || ''));
648
- const visibleUnselected = visibleItems.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
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.selectedValues.includes(item.getAttribute('value') || ''));
707
- const visibleUnselected = visibleItems.filter(item => !this.selectedValues.includes(item.getAttribute('value') || ''));
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.selectedValues.includes(item.getAttribute('value') || ''));
756
- this.manageDivider(ul, visibleSelectedItems, visibleItems.filter(item => !this.selectedValues.includes(item.getAttribute('value') || '')));
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-Te0zRbKN.js');
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: '9a2922f5aaa1047da249563152b08f5fd74f0340' }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'f7f0f9a711f4c94ea4f6257a541aabbd08b9ca31', htmlFor: this.inputId }, index.h("slot", { key: '9dbcb9386a05462da3cdeba01e6c4831ef52b7a5', name: "label" }, this.label))), index.h("div", { key: '81ff77ec49a03d9bb622b8e934b71a475770b518', class: "input-wrapper" }, index.h("slot", { key: 'd445e90aeebaf9b546b96cbbc77c72b10ab144bf', name: "before-input" }), index.h("div", { key: '537c96360b91404d1ca560be27a71dbd0efd54ce', class: "input-container", onClick: this.handleInputContainerClick }, index.h("slot", { key: '894fc44bf45a7d66d5d108fd816d19aa86b24407', name: "leading-input" }), index.h("input", { key: 'a774febb21a489c858d1308f6d38b138815896aa', 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: 'e955eb9ad46950afcfe3de93ae18540ed583f66f', name: "trailing-input" }), this.error && (index.h("nv-icon", { key: 'b2b5824c6cb2e1bb378600f0fb6511b8695e8df4', name: "alert-circle", class: "validation", size: "md" })), this.success && (index.h("nv-icon", { key: 'bce78b06f5ae6ed68bf795abad0f34dadd849422', name: "circle-check", class: "validation", size: "md" })), index.h("div", { key: '2c304550d4f49de47cf24e6d650e995f98b4a17a', class: "stepper" }, index.h("nv-iconbutton", { key: 'e96f7a47521387c79149f93f3cb4719cd24a9c0d', size: "md", name: "minus", emphasis: "lower", onClick: this.handleMinus, disabled: this.isMinValueReached(), onMouseDown: this.preventSelection, tabindex: "-1" }), index.h("nv-iconbutton", { key: '2f579a243c57166f3ccd43960deccda9b3f2d798', size: "md", name: "plus", emphasis: "lower", onClick: this.handlePlus, disabled: this.isMaxValueReached(), onMouseDown: this.preventSelection, tabindex: "-1" }))), index.h("slot", { key: 'b305bae132034786a51e6a918f650391f0e4d406', name: "after-input" })), (this.description ||
119
- this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '6eaae8de9885c77a36342ba48b9b0e88266e9bfe', class: "description" }, index.h("slot", { key: '3a2f56c02df550ce7ca8b51771acbfd3dd7bf2d4', name: "description" }, this.description))), (this.errorDescription ||
120
- this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: 'aa505a05a032ac11c8626cbb601544c1037aabf6', hidden: !this.error, class: "error-description" }, index.h("slot", { key: 'e94717e1233cba33c2c189bb0b971f8ca6dc979e', name: "error-description" }, this.errorDescription)))));
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-Te0zRbKN.js');
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: 'de631f354c11bca46438aa57eb2f5b255b99f439' }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'b5b7d00ec3cd2bf062c7891f44cb1b9f4032e659', htmlFor: this.inputId }, index.h("slot", { key: '04149706c9f07e290cf9d93b2890de26c6ba832a', name: "label" }, this.label))), index.h("div", { key: 'eb7a834ceb2769de0059ca96226bb8a31e7f3e95', class: "input-wrapper" }, index.h("slot", { key: 'd250f823150eb3ff2fc93869cd7c7afa9738a8ef', name: "before-input" }), index.h("div", { key: 'a1ce5f337b3c29152869395a33acdf4b872e8e04', class: "input-container", onClick: this.handleInputContainerClick }, index.h("slot", { key: '589cc579cba9c2364bda3948cdf14ac4e1687088', name: "leading-input" }), index.h("input", { key: '5f45023c3a4f5dca5bff08e960221c711eb008b6', 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: '1b78092817109ee795bf90c8182abfa0a9af35af', name: this.success ? 'circle-check' : 'alert-circle', class: "validation", size: "md" })), !this.hidePasswordIcon && (index.h("nv-iconbutton", { key: '1d64a57a5e4eab88b499a9783d460a33d052950e', 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: '1183158e98fa88ca143b5443db36f7f658b9acb7', name: "after-input" })), (this.description ||
110
- this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '34181f122eb6651a605bc00f96bccd7cfce6b11b', class: "description" }, index.h("slot", { key: '74a0b8e00d96d60884f32c89a4a15e9b2f7c25ed', name: "description" }, this.description))), (this.errorDescription ||
111
- this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: 'd16bf3d39dc42960dc089df6ac8959d09f8a1076', hidden: !this.error, class: "error-description" }, index.h("slot", { key: 'cf19821689d4889eda9ce5a6cfa5675b97fca86e', name: "error-description" }, this.errorDescription)))));
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-Te0zRbKN.js');
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: 'e1a92204a7d3e07de9485873906ed57dc2f4dfb1', class: clsx297c1ffe.clsx(this.labelPlacement === 'before' && 'label-placement-before', this.error && 'error') }, index.h("input", { key: '8161b36c31b960a4ca4f7a1291a9cdbdd830429c', 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: '8d5ff5b5742a96dc9d1167298859a7a97347eeab', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: '7417fe1c5041e20fd63abca907fd75fe7d3b49d2', htmlFor: this.inputId }, index.h("slot", { key: 'e29a092dbd19c912c496e1ae56d9f46bcb44208c', name: "label" }, this.label))), (this.description ||
91
- this.el.querySelector('[slot="description"]')) && (index.h("div", { key: 'a894108a6e5235010d18547a39daf526e066e432', class: "description" }, index.h("slot", { key: 'c67b5b5a5d2ef1f27e69eb251e9a15c98909db85', name: "description" }, this.description))), (this.errorDescription ||
92
- this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '18ea2ae58994289900f28c0e6220e113b45b2a92', hidden: !this.error, class: "error-description" }, index.h("slot", { key: '52a10763fb7bf688e5a1de5e854aa0d80bc996f4', name: "error-description" }, this.errorDescription))))));
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-Te0zRbKN.js');
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: '17dc03e5db7ec57623e6fb4c06199aaf1ed85991' }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: '81fff1ee75f4e1415f60a2900303123cee3c8b58', htmlFor: this.inputId }, index.h("slot", { key: '69569c3981e754e22ffcfb4d73121ee7056f0695', name: "label" }, this.label))), index.h("div", { key: '251d557b6f1618241cccbb36e8c03415075ddf98', class: "select-wrapper" }, index.h("slot", { key: '765d37ea12613de6e65cc77c9aa0000e75dc1243', name: "before-input" }), index.h("div", { key: '6150af4f94e13a2fced6dcf597d1310a2282c337', class: "select-container", onClick: this.handleSelectContainerClick }, index.h("slot", { key: '88f48c27c2a109d9db8a65671e3028c13272dde7', name: "leading-input" }), this.internalReadonly && (index.h("input", { key: '2e0884fdbdda028426957530f815f0ce2b772322', 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
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: '0bd79358080fd6d76e28ba574e5fae336ab4b34d', 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
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: '8266f6651293d179f5d119bc25b0d171d1064cd8', class: "select-icons" }, this.error && (index.h("nv-icon", { key: '5300e5c151dfdca429550a4e1823954783b4f086', name: "alert-circle", class: "validation", size: "md" })), this.success && (index.h("nv-icon", { key: '40ff228bfc531fe269a4acca577ebe2230d679e9', name: "circle-check", class: "validation", size: "md" })), !this.multiple && (index.h("nv-iconbutton", { key: '5d77e09bbce330e3e855035f2cab0b0001ba7839', name: "chevron-down", size: "md", emphasis: "lower", tabindex: -1 })))), index.h("slot", { key: 'b19c29e25d9f9cae2c6a3e4129f6f74cbb01becd', name: "after-input" })), (this.description ||
355
- this.el.querySelector('[slot="description"]')) && (index.h("div", { key: 'ef53e3d22291e580bcf2554273d47cdfa43eefc4', class: "description", id: `${this.inputId}-description` }, index.h("slot", { key: '8bdbcef6106634c2ce37c8c1be50d6bd7cbe9e2f', name: "description" }, this.description))), (this.errorDescription ||
356
- this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '1e4b5d282fcacceac0c46a02dfa1243a00c28ac0', class: "error-description", id: `${this.inputId}-error` }, index.h("slot", { key: '634be5308aaf40697bd1e7a2ef085e94e0d38f43', name: "error-description" }, this.errorDescription)))));
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); }