@nova-design-system/nova-react 3.24.0 → 3.26.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/README.md +1 -0
- package/dist/cjs/dom.utils-CuXVGECR-8VY5SfMZ.js +177 -0
- package/dist/cjs/generated/components.server.js +82 -62
- package/dist/cjs/index-BeFrXZol.js +9699 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/{nv-accordion-item.entry-Bu1tAcCq.js → nv-accordion-item.entry-DtzjLTCo.js} +8 -7
- package/dist/cjs/{nv-accordion.entry-jWjLdX8w.js → nv-accordion.entry-DRcTfezT.js} +10 -8
- package/dist/cjs/{nv-alert.entry-E9ZJay_K.js → nv-alert.entry-86bfoXVx.js} +6 -4
- package/dist/cjs/nv-avatar.entry-mp2LJ6RA.js +68 -0
- package/dist/cjs/nv-badge_2.entry-BrDaHeqh.js +220 -0
- package/dist/cjs/nv-breadcrumb.entry-B2q7jJy2.js +49 -0
- package/dist/cjs/nv-breadcrumbs.entry-DKzST1uS.js +21 -0
- package/dist/cjs/nv-button.entry-CVgcU-bi.js +166 -0
- package/dist/cjs/{nv-buttongroup.entry-CuZCRsnV.js → nv-buttongroup.entry-CvuBGaGK.js} +12 -6
- package/dist/cjs/{nv-calendar.entry-CT3mASW6.js → nv-calendar.entry-BCcGhxzJ.js} +27 -19
- package/dist/cjs/{nv-col.entry--pCxkaTh.js → nv-col.entry-CzTahRVr.js} +3 -3
- package/dist/cjs/{nv-datagrid.entry-CGCEhO8C.js → nv-datagrid.entry-DWZxNqTE.js} +47 -184
- package/dist/cjs/{nv-datagridcolumn.entry-Fsqc7CT_.js → nv-datagridcolumn.entry-CzCzmdQl.js} +1 -1
- package/dist/cjs/{nv-dialog.entry-B6OYcZxQ.js → nv-dialog.entry-ByVD02QB.js} +19 -20
- package/dist/cjs/{nv-dialogfooter_2.entry-C4fP_n2-.js → nv-dialogfooter_2.entry-BmQcYJsD.js} +11 -29
- package/dist/cjs/{nv-drawer.entry-C5O4KvHU.js → nv-drawer.entry-C15JRJ3N.js} +19 -19
- package/dist/cjs/{nv-drawerfooter_2.entry-C-reYJXG.js → nv-drawerfooter_2.entry-DuDac_Os.js} +11 -29
- package/dist/cjs/nv-fieldcheckbox.entry-CwDOQzSW.js +179 -0
- package/dist/cjs/{nv-fielddate.entry-dqZDBVmm.js → nv-fielddate.entry-DKICGwc0.js} +15 -13
- package/dist/cjs/{nv-fielddaterange.entry-wNRasXky.js → nv-fielddaterange.entry-DGEK8F9p.js} +15 -14
- package/dist/cjs/{nv-fielddropdown.entry-BA15piWa.js → nv-fielddropdown.entry-BLS7lRzD.js} +33 -31
- package/dist/cjs/nv-fielddropdownitem.entry-Bbfi3A8C.js +69 -0
- package/dist/cjs/{nv-fieldmultiselect.entry-BWY5xOAd.js → nv-fieldmultiselect.entry-Cpy7HzlZ.js} +28 -24
- package/dist/cjs/nv-fieldnumber.entry-SbNb4hKr.js +189 -0
- package/dist/cjs/nv-fieldpassword.entry-CPsgagjY.js +167 -0
- package/dist/cjs/nv-fieldradio.entry-DLP-rmKU.js +105 -0
- package/dist/cjs/{nv-fieldselect.entry-uUIZ6hmN.js → nv-fieldselect.entry-DOOO03kM.js} +20 -12
- package/dist/cjs/{nv-fieldslider.entry-DnvmxxYY.js → nv-fieldslider.entry-CpVbxkpo.js} +33 -15
- package/dist/cjs/nv-fieldtext.entry-BpbG4WHv.js +163 -0
- package/dist/cjs/nv-fieldtextarea.entry-BA_RApYN.js +245 -0
- package/dist/cjs/{nv-fieldtime.entry-DlMNDTht.js → nv-fieldtime.entry-DaJfwQtC.js} +15 -9
- package/dist/cjs/{nv-icon.entry-CnUkRzaA.js → nv-icon.entry-DIi792yJ.js} +4 -4
- package/dist/cjs/nv-iconbutton_2.entry-B4xB5WtE.js +171 -0
- package/dist/cjs/{nv-menu.entry-Dc_FvIx7.js → nv-menu.entry-DHWhkWeB.js} +9 -13
- package/dist/cjs/nv-menuitem.entry-CQApuT2D.js +59 -0
- package/dist/cjs/nv-notification-bullet.entry-CnYVWE_Z.js +76 -0
- package/dist/cjs/{nv-notification.entry-C3m5p5BL.js → nv-notification.entry-DraOvzsu.js} +4 -4
- package/dist/cjs/nv-notificationcontainer.entry-BDo-rQLL.js +41 -0
- package/dist/cjs/nv-paginationtable.entry-CS7BhAVe.js +231 -0
- package/dist/cjs/{nv-popover.entry-B0c-2rO4.js → nv-popover.entry-DSyKCLtF.js} +105 -33
- package/dist/cjs/nv-row.entry-D21zN2Vr.js +22 -0
- package/dist/cjs/{nv-sidebar.entry-CiN813gQ.js → nv-sidebar.entry-DpKgnjsJ.js} +10 -6
- package/dist/cjs/nv-sidebarcontent.entry-BWFDcui8.js +22 -0
- package/dist/cjs/{nv-sidebardivider.entry-B4EMyca5.js → nv-sidebardivider.entry-BSzLq-h3.js} +4 -4
- package/dist/cjs/{nv-sidebarfooter.entry-CHi4qOFe.js → nv-sidebarfooter.entry-C3DLHPSQ.js} +4 -4
- package/dist/cjs/nv-sidebargroup.entry-BMYLbCql.js +23 -0
- package/dist/cjs/{nv-sidebarheader.entry-_7ch0O3G.js → nv-sidebarheader.entry-CkUGD-Tw.js} +4 -4
- package/dist/cjs/{nv-sidebarlogo.entry-Ch9F-JnT.js → nv-sidebarlogo.entry-BX1-1S1v.js} +4 -4
- package/dist/cjs/{nv-sidebarnavitem.entry-DVrafSMr.js → nv-sidebarnavitem.entry-CPwt0Njh.js} +9 -7
- package/dist/cjs/nv-sidebarnavsubitem.entry-HZOTB6Tl.js +35 -0
- package/dist/cjs/{nv-split.entry-0HTslRAX.js → nv-split.entry-DdtzktvN.js} +10 -6
- package/dist/cjs/nv-stack.entry-BMLt30Nt.js +31 -0
- package/dist/cjs/{nv-table.entry-DH85n8Mc.js → nv-table.entry-RTiqKRKM.js} +6 -4
- package/dist/cjs/{nv-tableheader.entry-CKfocdxD.js → nv-tableheader.entry-Ci4qo8eY.js} +4 -4
- package/dist/cjs/nv-toggle.entry-s8B7-8P7.js +82 -0
- package/dist/cjs/nv-togglebutton.entry-CyHgU4Wl.js +66 -0
- package/dist/cjs/{nv-togglebuttongroup.entry-C0NLbsq7.js → nv-togglebuttongroup.entry-Bn_9DsdP.js} +13 -9
- package/dist/cjs/nv-tooltip.entry-D6kxXLO-.js +56 -0
- package/dist/components/NvDatatable/NvDatatable.js +29 -8
- package/dist/generated/components.js +11 -0
- package/dist/generated/components.server.js +81 -62
- package/dist/providers/NotificationProvider.js +9 -8
- package/dist/types/components/NvDatatable/types.d.ts +6 -0
- package/dist/types/generated/components.d.ts +52 -46
- package/dist/types/generated/components.server.d.ts +52 -46
- package/package.json +7 -4
- package/dist/cjs/index-kU2nW5aN.js +0 -40286
- package/dist/cjs/nv-avatar.entry-CUX7u0kR.js +0 -68
- package/dist/cjs/nv-badge_2.entry-bxpV5gxE.js +0 -213
- package/dist/cjs/nv-breadcrumb.entry-Cbbb9Qeh.js +0 -46
- package/dist/cjs/nv-breadcrumbs.entry-BTqnp9zO.js +0 -21
- package/dist/cjs/nv-button.entry-upWH19y6.js +0 -162
- package/dist/cjs/nv-fieldcheckbox.entry-bk7UNQny.js +0 -177
- package/dist/cjs/nv-fielddropdownitem.entry-DEWaf9dC.js +0 -72
- package/dist/cjs/nv-fieldnumber.entry-DoYORd0d.js +0 -187
- package/dist/cjs/nv-fieldpassword.entry-CPaLj9aD.js +0 -165
- package/dist/cjs/nv-fieldradio.entry-CvUmEaCa.js +0 -103
- package/dist/cjs/nv-fieldtext.entry-BYAJp3n_.js +0 -163
- package/dist/cjs/nv-fieldtextarea.entry-DU2bWYeg.js +0 -237
- package/dist/cjs/nv-iconbutton_2.entry-hqp4AcRq.js +0 -167
- package/dist/cjs/nv-menuitem.entry-DzMhx6c_.js +0 -60
- package/dist/cjs/nv-notification-bullet.entry-BwhHCMQF.js +0 -76
- package/dist/cjs/nv-notificationcontainer.entry-DTRNn7VE.js +0 -41
- package/dist/cjs/nv-row.entry-CdcjVGZv.js +0 -22
- package/dist/cjs/nv-sidebarcontent.entry-D9hpAhK8.js +0 -22
- package/dist/cjs/nv-sidebargroup.entry-RVqrsyIU.js +0 -23
- package/dist/cjs/nv-sidebarnavsubitem.entry-C0XDAzma.js +0 -35
- package/dist/cjs/nv-stack.entry-CqO7uTQf.js +0 -31
- package/dist/cjs/nv-toggle.entry-BHUl76Im.js +0 -80
- package/dist/cjs/nv-togglebutton.entry-D_9COjY-.js +0 -67
- package/dist/cjs/nv-tooltip.entry-BfViGE_U.js +0 -55
- /package/dist/cjs/{i18n.utils-IlwlcG9l-ku0bScip.js → i18n.utils-CR9MpYzU-ku0bScip.js} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var
|
|
3
|
+
var index = require('./index-BeFrXZol.js');
|
|
4
|
+
var i18n_utilsCR9MpYzU = require('./i18n.utils-CR9MpYzU-ku0bScip.js');
|
|
5
5
|
var v4BdYh22OP = require('./v4-BdYh22OP-C1vaJ4yP.js');
|
|
6
6
|
require('@stencil/react-output-target/runtime');
|
|
7
7
|
require('react');
|
|
8
8
|
require('react-dom');
|
|
9
9
|
|
|
10
|
-
const nvFielddropdownCss =
|
|
10
|
+
const nvFielddropdownCss = () => `nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fielddropdown{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box;max-width:480px}nv-fielddropdown[fluid]:not([fluid=false]){max-width:unset}nv-fielddropdown[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fielddropdown[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive-in-field)}nv-fielddropdown[required]:not([required=false]) label::after,nv-fielddropdown[aria-required=true] label::after{content:"*";color:var(--components-form-text-required);font-weight:var(--font-weight-high-emphasis)}nv-fielddropdown[hidden]:not([hidden=false]) label{display:none}nv-fielddropdown label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-label-line-height)}nv-fielddropdown nv-popover{width:100%;display:block}nv-fielddropdown nv-popover [data-scope=popover]{min-width:100%;width:max-content;max-width:400px;padding:var(--list-dropdown-padding);border-radius:var(--list-dropdown-radius);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border)}nv-fielddropdown nv-popover [slot=content]{gap:var(--list-dropdown-gap-y);display:flex;flex-direction:column}nv-fielddropdown nv-popover hr{color:var(--components-list-dropdown-separator)}nv-fielddropdown nv-popover div[slot=content]::-webkit-scrollbar{width:6px;height:6px}nv-fielddropdown nv-popover div[slot=content]::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}nv-fielddropdown nv-popover div[slot=content]::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}nv-fielddropdown nv-popover div[slot=content]{max-height:calc(90vh - var(--list-dropdown-padding) * 2);overflow-y:auto;position:relative}nv-fielddropdown .input-wrapper{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fielddropdown .input-container{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out}nv-fielddropdown .input-container:hover{border-color:var(--nv-field-border-hover)}nv-fielddropdown .input-container:focus-within,nv-fielddropdown .input-container:focus-within:hover,nv-fielddropdown .input-container:focus,nv-fielddropdown .input-container:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fielddropdown .input-container:has(input:read-only){background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fielddropdown .input-container:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fielddropdown .input-container{position:relative;width:100%;min-height:40px}nv-fielddropdown .input-container input[type=search]::-webkit-search-decoration,nv-fielddropdown .input-container input[type=search]::-webkit-search-cancel-button,nv-fielddropdown .input-container input[type=search]::-webkit-search-results-button,nv-fielddropdown .input-container input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}nv-fielddropdown .input-container input,nv-fielddropdown .input-container p.non-filterable-text{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:calc(var(--form-field-padding-y) - 1px) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-field-line-height);width:100%}nv-fielddropdown .input-container input:focus,nv-fielddropdown .input-container p.non-filterable-text:focus{outline:none}nv-fielddropdown .input-container input::placeholder,nv-fielddropdown .input-container p.non-filterable-text::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-low-emphasis);line-height:var(--form-field-line-height)}nv-fielddropdown .input-container input,nv-fielddropdown .input-container p.non-filterable-text{}nv-fielddropdown .input-container input[type=password]::-ms-clear,nv-fielddropdown .input-container input[type=password]::-ms-reveal,nv-fielddropdown .input-container p.non-filterable-text[type=password]::-ms-clear,nv-fielddropdown .input-container p.non-filterable-text[type=password]::-ms-reveal{display:none;width:0;height:0}nv-fielddropdown .input-container p.non-filterable-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;border-radius:var(--form-field-radius);background-color:var(--nv-field-background);color:var(--components-form-field-content-text);font-size:var(--form-field-font-size);font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-field-line-height);box-sizing:border-box;cursor:pointer;height:100%;min-height:40px}nv-fielddropdown .input-container p.non-filterable-text span{display:inline-block;width:100%;overflow:hidden;text-overflow:ellipsis}nv-fielddropdown .input-container>nv-iconbutton{border:0px;border-radius:0px}nv-fielddropdown .input-container>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fielddropdown .input-container>nv-iconbutton:last-of-type{border-top-right-radius:var(--form-field-radius);border-bottom-right-radius:var(--form-field-radius)}nv-fielddropdown .input-container nv-icon.validation{color:var(--nv-field-border-default)}nv-fielddropdown .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fielddropdown .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}`;
|
|
11
11
|
|
|
12
12
|
const NvFielddropdown = class {
|
|
13
13
|
constructor(hostRef) {
|
|
@@ -15,7 +15,7 @@ const NvFielddropdown = class {
|
|
|
15
15
|
this.valueChanged = index.createEvent(this, "valueChanged", 3);
|
|
16
16
|
this.filterTextChanged = index.createEvent(this, "filterTextChanged", 3);
|
|
17
17
|
this.openChanged = index.createEvent(this, "openChanged", 3);
|
|
18
|
-
this.dropdownItemSelected = index.createEvent(this, "dropdownItemSelected",
|
|
18
|
+
this.dropdownItemSelected = index.createEvent(this, "dropdownItemSelected", 7);
|
|
19
19
|
/** Pre-computed search index for efficient filtering */
|
|
20
20
|
this.indexedItems = [];
|
|
21
21
|
/** Raw items for worker initialization */
|
|
@@ -186,7 +186,7 @@ const NvFielddropdown = class {
|
|
|
186
186
|
// Use longer debounce for fuzzy mode (Fuse.js needs more time)
|
|
187
187
|
// For fuzzy mode, use FUZZY_DEBOUNCE_DELAY (300ms), otherwise use this.debounceDelay
|
|
188
188
|
const debounce = this.effectiveFilterMode === 'fuzzy'
|
|
189
|
-
?
|
|
189
|
+
? i18n_utilsCR9MpYzU.FUZZY_DEBOUNCE_DELAY
|
|
190
190
|
: this.debounceDelay;
|
|
191
191
|
this.debounceTimer = window.setTimeout(() => {
|
|
192
192
|
this.filterItems();
|
|
@@ -211,7 +211,6 @@ const NvFielddropdown = class {
|
|
|
211
211
|
return selectedLabel;
|
|
212
212
|
};
|
|
213
213
|
}
|
|
214
|
-
/* eslint-enable nova/event-bubbling */
|
|
215
214
|
//#endregion EVENTS
|
|
216
215
|
/****************************************************************************/
|
|
217
216
|
//#region WATCHERS
|
|
@@ -235,9 +234,7 @@ const NvFielddropdown = class {
|
|
|
235
234
|
//#endregion WATCHERS
|
|
236
235
|
/****************************************************************************/
|
|
237
236
|
//#region LISTENERS
|
|
238
|
-
/* eslint-disable nova/native-event-listener */
|
|
239
237
|
handleDropdownItemSelected(event) {
|
|
240
|
-
event.stopPropagation();
|
|
241
238
|
if (this.disabled || this.readonly)
|
|
242
239
|
return;
|
|
243
240
|
if (!this.openOnSelect)
|
|
@@ -257,7 +254,6 @@ const NvFielddropdown = class {
|
|
|
257
254
|
this.setFilterInputToSelectedValue();
|
|
258
255
|
this.valueChanged.emit(event.detail.value);
|
|
259
256
|
}
|
|
260
|
-
/* eslint-enable nova/native-event-listener */
|
|
261
257
|
handleFocus(event) {
|
|
262
258
|
if (event.relatedTarget instanceof HTMLElement &&
|
|
263
259
|
event.relatedTarget.tagName.includes('NV-FIELDDROPDOWNITEM')) {
|
|
@@ -396,13 +392,13 @@ const NvFielddropdown = class {
|
|
|
396
392
|
});
|
|
397
393
|
}
|
|
398
394
|
// Build local index for main-thread search
|
|
399
|
-
this.indexedItems =
|
|
395
|
+
this.indexedItems = i18n_utilsCR9MpYzU.buildIndex(this.rawItems);
|
|
400
396
|
// Determine effective filter mode
|
|
401
|
-
this.effectiveFilterMode =
|
|
397
|
+
this.effectiveFilterMode = i18n_utilsCR9MpYzU.getEffectiveFilterMode(this.filterMode);
|
|
402
398
|
// Initialize worker if needed
|
|
403
399
|
const itemCount = this.rawItems.length;
|
|
404
|
-
const threshold =
|
|
405
|
-
if (
|
|
400
|
+
const threshold = i18n_utilsCR9MpYzU.clampWorkerThreshold(this.workerThreshold);
|
|
401
|
+
if (i18n_utilsCR9MpYzU.shouldUseWorker(itemCount, this.effectiveFilterMode, threshold)) {
|
|
406
402
|
await this.initWorker();
|
|
407
403
|
}
|
|
408
404
|
else {
|
|
@@ -416,12 +412,12 @@ const NvFielddropdown = class {
|
|
|
416
412
|
* Note: Fuzzy search now works on main thread with Fuse.js, so no mode change needed.
|
|
417
413
|
*/
|
|
418
414
|
async initWorker() {
|
|
419
|
-
if (!
|
|
415
|
+
if (!i18n_utilsCR9MpYzU.isWorkerSupported()) {
|
|
420
416
|
// Workers not supported - will use main thread (fuzzy still works with Fuse.js)
|
|
421
417
|
return;
|
|
422
418
|
}
|
|
423
419
|
if (!this.workerClient) {
|
|
424
|
-
this.workerClient = new
|
|
420
|
+
this.workerClient = new i18n_utilsCR9MpYzU.SearchWorkerClient();
|
|
425
421
|
// No fallback mode change needed - fuzzy works on main thread now
|
|
426
422
|
}
|
|
427
423
|
// Init will silently handle fallback if worker can't be created
|
|
@@ -456,7 +452,7 @@ const NvFielddropdown = class {
|
|
|
456
452
|
// Check if we should start filtering
|
|
457
453
|
if (this.filterText.length < this.startFilterAt) {
|
|
458
454
|
// Show all items up to maxResults
|
|
459
|
-
const effectiveMaxResults =
|
|
455
|
+
const effectiveMaxResults = i18n_utilsCR9MpYzU.clampMaxResults(this.maxResults);
|
|
460
456
|
let visibleCount = 0;
|
|
461
457
|
items.forEach(item => {
|
|
462
458
|
if (visibleCount < effectiveMaxResults) {
|
|
@@ -476,8 +472,8 @@ const NvFielddropdown = class {
|
|
|
476
472
|
}
|
|
477
473
|
// Determine if we should use worker
|
|
478
474
|
const itemCount = this.rawItems.length;
|
|
479
|
-
const threshold =
|
|
480
|
-
const useWorker =
|
|
475
|
+
const threshold = i18n_utilsCR9MpYzU.clampWorkerThreshold(this.workerThreshold);
|
|
476
|
+
const useWorker = i18n_utilsCR9MpYzU.shouldUseWorker(itemCount, this.effectiveFilterMode, threshold);
|
|
481
477
|
let result;
|
|
482
478
|
if (useWorker && this.workerClient?.isReady) {
|
|
483
479
|
// Use worker for search
|
|
@@ -488,7 +484,7 @@ const NvFielddropdown = class {
|
|
|
488
484
|
catch (error) {
|
|
489
485
|
console.error('Worker search failed, falling back to main thread:', error);
|
|
490
486
|
// Fall back to main thread search (now supports fuzzy with Fuse.js)
|
|
491
|
-
result =
|
|
487
|
+
result = i18n_utilsCR9MpYzU.search(this.indexedItems, {
|
|
492
488
|
query: this.filterText,
|
|
493
489
|
filterMode: this.effectiveFilterMode,
|
|
494
490
|
maxResults: this.maxResults,
|
|
@@ -502,7 +498,7 @@ const NvFielddropdown = class {
|
|
|
502
498
|
}
|
|
503
499
|
else {
|
|
504
500
|
// Use main thread search (now supports fuzzy mode with Fuse.js)
|
|
505
|
-
result =
|
|
501
|
+
result = i18n_utilsCR9MpYzU.search(this.indexedItems, {
|
|
506
502
|
query: this.filterText,
|
|
507
503
|
filterMode: this.effectiveFilterMode,
|
|
508
504
|
maxResults: this.maxResults,
|
|
@@ -537,7 +533,7 @@ const NvFielddropdown = class {
|
|
|
537
533
|
const matchingIds = new Set(result.ids);
|
|
538
534
|
let hasVisibleItems = false;
|
|
539
535
|
let visibleCount = 0;
|
|
540
|
-
const effectiveMaxResults =
|
|
536
|
+
const effectiveMaxResults = i18n_utilsCR9MpYzU.clampMaxResults(this.maxResults);
|
|
541
537
|
items.forEach(item => {
|
|
542
538
|
const itemId = item.value || '';
|
|
543
539
|
const itemLabel = item.label || item.textContent?.trim() || '';
|
|
@@ -579,13 +575,13 @@ const NvFielddropdown = class {
|
|
|
579
575
|
*/
|
|
580
576
|
addTruncatedMessage(shown, total) {
|
|
581
577
|
// Get the text template: use provided text or auto-detect from locale
|
|
582
|
-
const textTemplate = this.truncatedResultsText ||
|
|
578
|
+
const textTemplate = this.truncatedResultsText || i18n_utilsCR9MpYzU.getTruncatedResultsText(this.locale);
|
|
583
579
|
const truncatedItem = document.createElement('nv-fielddropdownitem');
|
|
584
580
|
truncatedItem.setAttribute('data-truncated', 'true');
|
|
585
581
|
truncatedItem.setAttribute('disabled', 'true');
|
|
586
582
|
truncatedItem.setAttribute('detached', 'true');
|
|
587
583
|
truncatedItem.className = 'truncated-message';
|
|
588
|
-
truncatedItem.textContent =
|
|
584
|
+
truncatedItem.textContent = i18n_utilsCR9MpYzU.formatTruncatedResults(textTemplate, shown, total);
|
|
589
585
|
const ul = this.el.querySelector('div[slot="content"] ul');
|
|
590
586
|
if (ul) {
|
|
591
587
|
ul.appendChild(truncatedItem);
|
|
@@ -659,20 +655,26 @@ const NvFielddropdown = class {
|
|
|
659
655
|
? ariaRequiredAttrValue === 'true' || ariaRequiredAttrValue === ''
|
|
660
656
|
: undefined;
|
|
661
657
|
const useNativeRequired = this.required && (!useAriaRequired || ariaRequiredValue === true);
|
|
662
|
-
return (index.h(index.Host, { key: '
|
|
658
|
+
return (index.h(index.Host, { key: 'fc83e8834e38142ad102d17495b5978283699576', role: "combobox", "aria-expanded": this.open.toString(), "aria-haspopup": "listbox", "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: '5a1eb965296909556869a025a6e4da609f2cbf90', htmlFor: this.inputId, onClick: this.syncToggleDropdown.bind(this) }, index.h("slot", { key: 'd5d4f3607e07e248c4083c3ea934a3bd1d7a7467', name: "label" }, this.label))), index.h("nv-popover", { key: '17e42a4d729dbc735db49f398ec14e0c296ff8ee', triggerMode: "controlled", placement: "bottom-start", open: this.open, onOpenChanged: e => this.openChanged.emit(e.detail) }, index.h("div", { key: 'a665ff2d2142acf5335d52e9a304ea2995750e5f', class: "input-wrapper", slot: "trigger" }, index.h("slot", { key: 'bddb24c6404ea0ea7da33485f8d497d0a635f3e2', name: "before-input" }), index.h("div", { key: '7275a9a99c9b4476b405f3966f128ce9ce92801a', class: "input-container" }, index.h("slot", { key: 'ede3c4442f365377eb83524f5d70d2922cd2a38b', name: "leading-input" }), this.filterable || this.disabled || this.readonly ? (index.h("input", { "data-scope": "focusable", id: this.inputId, type: "search", ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, required: useNativeRequired ? this.required : undefined, ...(ariaRequiredValue !== undefined && {
|
|
663
659
|
'aria-required': String(ariaRequiredValue),
|
|
664
|
-
}), disabled: this.disabled, readOnly: this.readonly, onInput: this.handleFilterInput })) : (index.h("p", { "data-scope": "focusable", id: this.inputId, ref: el => (this.selectElement = el), class: "non-filterable-text", tabIndex: this.disabled ? -1 : 0 }, this.getSelectedLabel() || this.value || this.placeholder)), this.filterable && this.filterText && (index.h("nv-iconbutton", { key: '
|
|
665
|
-
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '
|
|
666
|
-
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: '
|
|
660
|
+
}), disabled: this.disabled, readOnly: this.readonly, onInput: this.handleFilterInput })) : (index.h("p", { "data-scope": "focusable", id: this.inputId, ref: el => (this.selectElement = el), class: "non-filterable-text", tabIndex: this.disabled ? -1 : 0 }, this.getSelectedLabel() || this.value || this.placeholder)), this.filterable && this.filterText && (index.h("nv-iconbutton", { key: 'd1aa81c5d14601ea85cec133a94f2b071ca98358', name: "x", size: "md", emphasis: "lower", class: "clear-button", onClick: this.clearFilter.bind(this), "aria-label": "Clear input" })), this.error && (index.h("nv-icon", { key: 'd49e30222d63ffdcc4d952d959a98946b943685f', name: "alert-circle", class: "validation", size: "md" })), index.h("nv-iconbutton", { key: '6e157ce63f3f6faa08df5b7b9b7e6fd3ae9d0c31', "data-scope": "toggle-dropdown", ref: el => (this.toggleElement = el), name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', onClick: this.syncToggleDropdown.bind(this), tabIndex: this.disabled ? -1 : 0 })), index.h("slot", { key: '665519b43abbd562ea1c3e36355b15ffb3e6fea2', name: "after-input" })), index.h("div", { key: 'da97b6498e93d5f6c427bec6963db697c41c2d9a', slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, this.options?.length > 0 && (index.h("ul", { key: '0db57a711680aad61c32993b5f3afe304ec9066f' }, this.options.map(option => (index.h("nv-fielddropdownitem", { label: option.label, value: option.value, disabled: option.disabled, selected: option.value === this.value }))))), index.h("slot", { key: '5c7643c6436c42efa63bab75f416b684b662812b', name: "content" }))), (this.description ||
|
|
661
|
+
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '0ade462a96a16bb0cf6fb9d49d4ead0d98a6234b', class: "description" }, index.h("slot", { key: 'bb2d0c3340bdc0d0b3ac77feab8bc70a73b89a00', name: "description" }, this.description))), (this.errorDescription ||
|
|
662
|
+
this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: 'c04c2329d71e088b262a46441bb3bd9592d304e8', hidden: !this.error, class: "error-description" }, index.h("slot", { key: 'b85d769f12c4bf2a2ba5aba69c20566d17801f0a', name: "error-description" }, this.errorDescription)))));
|
|
667
663
|
}
|
|
668
664
|
static get formAssociated() { return true; }
|
|
669
665
|
get el() { return index.getElement(this); }
|
|
670
666
|
static get watchers() { return {
|
|
671
|
-
"open": [
|
|
672
|
-
|
|
673
|
-
|
|
667
|
+
"open": [{
|
|
668
|
+
"handleOpenChange": 0
|
|
669
|
+
}],
|
|
670
|
+
"value": [{
|
|
671
|
+
"handleValueChange": 0
|
|
672
|
+
}],
|
|
673
|
+
"options": [{
|
|
674
|
+
"handleOptionsChange": 0
|
|
675
|
+
}]
|
|
674
676
|
}; }
|
|
675
677
|
};
|
|
676
|
-
NvFielddropdown.style = nvFielddropdownCss;
|
|
678
|
+
NvFielddropdown.style = nvFielddropdownCss();
|
|
677
679
|
|
|
678
680
|
exports.nv_fielddropdown = NvFielddropdown;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-BeFrXZol.js');
|
|
4
|
+
require('@stencil/react-output-target/runtime');
|
|
5
|
+
require('react');
|
|
6
|
+
require('react-dom');
|
|
7
|
+
|
|
8
|
+
const nvFielddropdownitemCss = () => `nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fielddropdownitem{display:flex;gap:var(--list-select-gap-y);flex-wrap:wrap;align-items:center;width:100%;background-color:var(--components-list-select-option-background-default);padding:var(--list-select-option-padding);font-weight:var(--menu-contextual-item-font-weight);font-size:var(--list-select-font-size);line-height:var(--list-select-line-height);color:var(--components-list-select-option-content-default);border-radius:var(--list-select-option-radius);transition:background-color 150ms ease-out, color 150ms ease-out;cursor:pointer}nv-fielddropdownitem:not(:first-of-type){margin-top:var(--list-select-gap-y)}nv-fielddropdownitem:hover,nv-fielddropdownitem:focus,nv-fielddropdownitem:focus-within{background-color:var(--components-list-select-option-background-hover);color:var(--components-list-select-option-content-hover)}nv-fielddropdownitem:checked{background-color:var(--components-list-select-option-background-active);color:var(--components-list-select-option-content-active)}nv-fielddropdownitem:checked::after{order:1;margin-left:auto;content:"";display:inline-block;width:var(--spacing-5);height:var(--spacing-5);background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' id='nvicon_check' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.6px' d='m5 12 5 5L20 7' vector-effect='non-scaling-stroke'%3E%3C/path%3E%3C/svg%3E");-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' id='nvicon_check' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.6px' d='m5 12 5 5L20 7' vector-effect='non-scaling-stroke'%3E%3C/path%3E%3C/svg%3E");mask-repeat:no-repeat;mask-position:center;mask-size:contain}nv-fielddropdownitem::checkmark{display:none}nv-fielddropdownitem:disabled,nv-fielddropdownitem:checked:disabled{color:var(--components-list-select-option-content-disabled);background-color:var(--components-list-select-option-background-default)}nv-fielddropdownitem[disabled]:not([disabled=false]){cursor:not-allowed;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}nv-fielddropdownitem .text-wrapper{display:flex;flex-grow:1;align-items:center;justify-content:space-between}nv-fielddropdownitem [data-scope=text]{flex-grow:1;word-break:break-word;overflow-wrap:break-word;padding-right:var(--spacing-5)}nv-fielddropdownitem nv-icon[data-scope=selected]{color:var(--components-list-dropdown-item-label-default);align-self:center;margin-left:auto;position:absolute;right:var(--list-dropdown-item-padding-y)}`;
|
|
9
|
+
|
|
10
|
+
const NvFielddropdownitem = class {
|
|
11
|
+
constructor(hostRef) {
|
|
12
|
+
index.registerInstance(this, hostRef);
|
|
13
|
+
this.dropdownItemSelected = index.createEvent(this, "dropdownItemSelected", 7);
|
|
14
|
+
/****************************************************************************/
|
|
15
|
+
//#region PROPERTIES
|
|
16
|
+
/**
|
|
17
|
+
* Disables the item, preventing any user interaction.
|
|
18
|
+
*/
|
|
19
|
+
this.disabled = false;
|
|
20
|
+
/**
|
|
21
|
+
* Indicates if the item is selected.
|
|
22
|
+
*/
|
|
23
|
+
this.selected = false;
|
|
24
|
+
/**
|
|
25
|
+
* If detached, the item will not be filtered out or change the dropdown's
|
|
26
|
+
* selected item. Useful for actionable items, such as Add New item, etc.
|
|
27
|
+
*/
|
|
28
|
+
this.detached = false;
|
|
29
|
+
//#endregion EVENTS
|
|
30
|
+
/****************************************************************************/
|
|
31
|
+
//#region METHODS
|
|
32
|
+
this.handleSelected = () => {
|
|
33
|
+
if (this.disabled)
|
|
34
|
+
return;
|
|
35
|
+
this.dropdownItemSelected.emit({
|
|
36
|
+
label: this.label,
|
|
37
|
+
value: this.value,
|
|
38
|
+
detached: this.detached,
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
handleKeyDown(event) {
|
|
43
|
+
if (event.target !== this.el)
|
|
44
|
+
return;
|
|
45
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
this.handleSelected();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//#endregion METHODS
|
|
51
|
+
/****************************************************************************/
|
|
52
|
+
//#region LIFECYCLE
|
|
53
|
+
componentWillRender() {
|
|
54
|
+
if (!this.value) {
|
|
55
|
+
const fallback = this.label ?? this.el.textContent;
|
|
56
|
+
this.value = fallback.replace(/\W+/g, ''); // Remove non-word characters
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//#endregion LIFECYCLE
|
|
60
|
+
/****************************************************************************/
|
|
61
|
+
//#region RENDER
|
|
62
|
+
render() {
|
|
63
|
+
return (index.h(index.Host, { key: '6d50463d72a8e2dde08ba3d7bc6f3ba21021163e', role: "menuitem", tabindex: '-1', onClick: this.handleSelected }, index.h("slot", { key: 'b38c59fc95f124c3395ff1ab0b7dfc4ecc27823b' }, index.h("div", { key: 'a5ba5d4b636847e5ce6c1bab6cbbce418b70a1af', class: "text-wrapper" }, index.h("span", { key: 'f01a0aa5ee475a9640c7abefe321f605ea5e7cdf', "data-scope": "text" }, this.label))), this.selected && (index.h("nv-icon", { key: '9cd1b5532a4d2f5c2546e9432262f483bd5c8d69', name: "check", "aria-hidden": "true", "data-scope": "selected" }))));
|
|
64
|
+
}
|
|
65
|
+
get el() { return index.getElement(this); }
|
|
66
|
+
};
|
|
67
|
+
NvFielddropdownitem.style = nvFielddropdownitemCss();
|
|
68
|
+
|
|
69
|
+
exports.nv_fielddropdownitem = NvFielddropdownitem;
|
package/dist/cjs/{nv-fieldmultiselect.entry-BWY5xOAd.js → nv-fieldmultiselect.entry-Cpy7HzlZ.js}
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var
|
|
3
|
+
var index = require('./index-BeFrXZol.js');
|
|
4
|
+
var i18n_utilsCR9MpYzU = require('./i18n.utils-CR9MpYzU-ku0bScip.js');
|
|
5
5
|
var v4BdYh22OP = require('./v4-BdYh22OP-C1vaJ4yP.js');
|
|
6
6
|
require('@stencil/react-output-target/runtime');
|
|
7
7
|
require('react');
|
|
8
8
|
require('react-dom');
|
|
9
9
|
|
|
10
|
-
const nvFieldmultiselectCss = "nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldmultiselect{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box;max-width:480px}nv-fieldmultiselect[fluid]:not([fluid=false]){max-width:unset}nv-fieldmultiselect[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldmultiselect[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive-in-field)}nv-fieldmultiselect[required]:not([required=false]) label::after,nv-fieldmultiselect[aria-required=true] label::after{content:\"*\";color:var(--components-form-text-required);font-weight:var(--font-weight-high-emphasis)}nv-fieldmultiselect label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-label-line-height)}nv-fieldmultiselect nv-popover{width:100%;display:block}nv-fieldmultiselect nv-popover [data-scope=popover]{min-width:100%;width:max-content;max-width:400px;padding:var(--list-dropdown-padding);border-radius:var(--list-dropdown-radius);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border)}nv-fieldmultiselect nv-popover [slot=content]{gap:var(--list-dropdown-gap-y);display:flex;flex-direction:column}nv-fieldmultiselect nv-popover hr{color:var(--components-list-dropdown-separator)}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar{width:6px;height:6px}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}nv-fieldmultiselect nv-popover div[slot=content]{max-height:calc(90vh - var(--list-dropdown-padding) * 2);overflow-y:auto;position:relative}nv-fieldmultiselect .input-wrapper-multiselect{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fieldmultiselect .input-container-multiselect{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out}nv-fieldmultiselect .input-container-multiselect:hover{border-color:var(--nv-field-border-hover)}nv-fieldmultiselect .input-container-multiselect:focus-within,nv-fieldmultiselect .input-container-multiselect:focus-within:hover,nv-fieldmultiselect .input-container-multiselect:focus,nv-fieldmultiselect .input-container-multiselect:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldmultiselect .input-container-multiselect:has(input:read-only){background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldmultiselect .input-container-multiselect:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldmultiselect .input-container-multiselect{position:relative;width:100%;min-height:40px}nv-fieldmultiselect .input-container-multiselect>nv-badge{margin-left:var(--form-field-padding-x)}nv-fieldmultiselect .input-container-multiselect input,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:calc(var(--form-field-padding-y) - 1px) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-field-line-height);width:100%}nv-fieldmultiselect .input-container-multiselect input:focus,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text:focus{outline:none}nv-fieldmultiselect .input-container-multiselect input::placeholder,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-low-emphasis);line-height:var(--form-field-line-height)}nv-fieldmultiselect .input-container-multiselect input,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text{}nv-fieldmultiselect .input-container-multiselect input[type=password]::-ms-clear,nv-fieldmultiselect .input-container-multiselect input[type=password]::-ms-reveal,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text[type=password]::-ms-clear,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text[type=password]::-ms-reveal{display:none;width:0;height:0}nv-fieldmultiselect .input-container-multiselect input,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text{width:100%;flex-grow:1;margin:0;min-height:100%;box-sizing:border-box}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton{border:0px;border-radius:0px}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton:last-of-type{border-top-right-radius:var(--form-field-radius);border-bottom-right-radius:var(--form-field-radius)}nv-fieldmultiselect .input-container-multiselect nv-icon.validation{color:var(--nv-field-border-default)}nv-fieldmultiselect .non-filterable-text{display:block;border-radius:var(--form-field-radius);background-color:var(--nv-field-background);color:var(--components-form-field-content-text);font-size:var(--form-field-font-size);font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-field-line-height);box-sizing:border-box;cursor:pointer;height:100%;min-height:40px}nv-fieldmultiselect .non-filterable-text span{display:inline-block;width:100%;overflow:hidden;text-overflow:ellipsis}nv-fieldmultiselect .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fieldmultiselect .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}.no-results-message{cursor:not-allowed;background-color:unset;color:var(--components-menu-contextual-item-content-disabled);padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x)}.multiselect-divider{display:block;width:100%;height:1px;background-color:var(--components-list-dropdown-separator);margin:var(--list-dropdown-item-padding-y) 0;border:0}.select-all-container{position:sticky;top:0;background-color:var(--components-list-dropdown-background);border-bottom:1px solid var(--components-list-dropdown-separator);padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x);z-index:10;margin-bottom:0}.select-all-container .select-all-header{display:flex;align-items:center;gap:var(--form-field-gap)}.select-all-container .select-all-header nv-fieldcheckbox{flex:1;margin:0}.select-all-container .select-all-header nv-iconbutton,.select-all-container .select-all-header nv-button{flex-shrink:0;margin-left:auto}.select-all-container .select-all-header nv-button{justify-content:center}";
|
|
10
|
+
const nvFieldmultiselectCss = () => `nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldmultiselect{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box;max-width:480px}nv-fieldmultiselect[fluid]:not([fluid=false]){max-width:unset}nv-fieldmultiselect[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldmultiselect[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive-in-field)}nv-fieldmultiselect[required]:not([required=false]) label::after,nv-fieldmultiselect[aria-required=true] label::after{content:"*";color:var(--components-form-text-required);font-weight:var(--font-weight-high-emphasis)}nv-fieldmultiselect label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-label-line-height)}nv-fieldmultiselect nv-popover{width:100%;display:block}nv-fieldmultiselect nv-popover [data-scope=popover]{min-width:100%;width:max-content;max-width:400px;padding:var(--list-dropdown-padding);border-radius:var(--list-dropdown-radius);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border)}nv-fieldmultiselect nv-popover [slot=content]{gap:var(--list-dropdown-gap-y);display:flex;flex-direction:column}nv-fieldmultiselect nv-popover hr{color:var(--components-list-dropdown-separator)}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar{width:6px;height:6px}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}nv-fieldmultiselect nv-popover div[slot=content]::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}nv-fieldmultiselect nv-popover div[slot=content]{max-height:calc(90vh - var(--list-dropdown-padding) * 2);overflow-y:auto;position:relative}nv-fieldmultiselect .input-wrapper-multiselect{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fieldmultiselect .input-container-multiselect{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out}nv-fieldmultiselect .input-container-multiselect:hover{border-color:var(--nv-field-border-hover)}nv-fieldmultiselect .input-container-multiselect:focus-within,nv-fieldmultiselect .input-container-multiselect:focus-within:hover,nv-fieldmultiselect .input-container-multiselect:focus,nv-fieldmultiselect .input-container-multiselect:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldmultiselect .input-container-multiselect:has(input:read-only){background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldmultiselect .input-container-multiselect:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldmultiselect .input-container-multiselect{position:relative;width:100%;min-height:40px}nv-fieldmultiselect .input-container-multiselect>nv-badge{margin-left:var(--form-field-padding-x)}nv-fieldmultiselect .input-container-multiselect input,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:calc(var(--form-field-padding-y) - 1px) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-field-line-height);width:100%}nv-fieldmultiselect .input-container-multiselect input:focus,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text:focus{outline:none}nv-fieldmultiselect .input-container-multiselect input::placeholder,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:var(--font-weight-low-emphasis);line-height:var(--form-field-line-height)}nv-fieldmultiselect .input-container-multiselect input,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text{}nv-fieldmultiselect .input-container-multiselect input[type=password]::-ms-clear,nv-fieldmultiselect .input-container-multiselect input[type=password]::-ms-reveal,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text[type=password]::-ms-clear,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text[type=password]::-ms-reveal{display:none;width:0;height:0}nv-fieldmultiselect .input-container-multiselect input,nv-fieldmultiselect .input-container-multiselect p.non-filterable-text{width:100%;flex-grow:1;margin:0;min-height:100%;box-sizing:border-box}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton{border:0px;border-radius:0px}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fieldmultiselect .input-container-multiselect>nv-iconbutton:last-of-type{border-top-right-radius:var(--form-field-radius);border-bottom-right-radius:var(--form-field-radius)}nv-fieldmultiselect .input-container-multiselect nv-icon.validation{color:var(--nv-field-border-default)}nv-fieldmultiselect .non-filterable-text{display:block;border-radius:var(--form-field-radius);background-color:var(--nv-field-background);color:var(--components-form-field-content-text);font-size:var(--form-field-font-size);font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-field-line-height);box-sizing:border-box;cursor:pointer;height:100%;min-height:40px}nv-fieldmultiselect .non-filterable-text span{display:inline-block;width:100%;overflow:hidden;text-overflow:ellipsis}nv-fieldmultiselect .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fieldmultiselect .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}.no-results-message{cursor:not-allowed;background-color:unset;color:var(--components-menu-contextual-item-content-disabled);padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x)}.multiselect-divider{display:block;width:100%;height:1px;background-color:var(--components-list-dropdown-separator);margin:var(--list-dropdown-item-padding-y) 0;border:0}.select-all-container{position:sticky;top:0;background-color:var(--components-list-dropdown-background);border-bottom:1px solid var(--components-list-dropdown-separator);padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x);z-index:10;margin-bottom:0}.select-all-container .select-all-header{display:flex;align-items:center;gap:var(--form-field-gap)}.select-all-container .select-all-header nv-fieldcheckbox{flex:1;margin:0}.select-all-container .select-all-header nv-iconbutton,.select-all-container .select-all-header nv-button{flex-shrink:0;margin-left:auto}.select-all-container .select-all-header nv-button{justify-content:center}`;
|
|
11
11
|
|
|
12
12
|
const NvFieldmultiselect = class {
|
|
13
13
|
constructor(hostRef) {
|
|
@@ -604,7 +604,6 @@ const NvFieldmultiselect = class {
|
|
|
604
604
|
//#endregion WATCHERS
|
|
605
605
|
/****************************************************************************/
|
|
606
606
|
//#region LISTENERS
|
|
607
|
-
/* eslint-disable nova/native-event-listener */
|
|
608
607
|
/**
|
|
609
608
|
* Listen for the `itemChecked` event emitted by child items.
|
|
610
609
|
* @param {CustomEvent} event - The event object containing the selected value and its checked state.
|
|
@@ -642,7 +641,6 @@ const NvFieldmultiselect = class {
|
|
|
642
641
|
console.warn('[Event:itemChecked] Received itemChecked event with undefined or null value'); // Warning log
|
|
643
642
|
}
|
|
644
643
|
}
|
|
645
|
-
/* eslint-enable nova/native-event-listener */
|
|
646
644
|
// Add a listener for the slot content
|
|
647
645
|
handleSlotChange(event) {
|
|
648
646
|
// Check: we only want to reorder if it's the "content" slot
|
|
@@ -966,7 +964,7 @@ const NvFieldmultiselect = class {
|
|
|
966
964
|
const ul = this.el.querySelector('ul');
|
|
967
965
|
if (!ul)
|
|
968
966
|
return;
|
|
969
|
-
this.effectiveFilterMode =
|
|
967
|
+
this.effectiveFilterMode = i18n_utilsCR9MpYzU.getEffectiveFilterMode(this.filterMode);
|
|
970
968
|
// Remove existing empty message and truncation message if any
|
|
971
969
|
ul.querySelector('[data-empty]')?.remove();
|
|
972
970
|
ul.querySelector('[data-truncated]')?.remove();
|
|
@@ -977,7 +975,7 @@ const NvFieldmultiselect = class {
|
|
|
977
975
|
this.filterText.length < this.startFilterAt) {
|
|
978
976
|
// Reset display and apply maxResults limit
|
|
979
977
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
980
|
-
const effectiveMaxResults =
|
|
978
|
+
const effectiveMaxResults = i18n_utilsCR9MpYzU.clampMaxResults(this.maxResults);
|
|
981
979
|
let visibleCount = 0;
|
|
982
980
|
items.forEach(item => {
|
|
983
981
|
if (visibleCount < effectiveMaxResults) {
|
|
@@ -1010,7 +1008,7 @@ const NvFieldmultiselect = class {
|
|
|
1010
1008
|
const matchingIds = new Set(result.ids);
|
|
1011
1009
|
let hasVisibleItems = false;
|
|
1012
1010
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1013
|
-
const effectiveMaxResults =
|
|
1011
|
+
const effectiveMaxResults = i18n_utilsCR9MpYzU.clampMaxResults(this.maxResults);
|
|
1014
1012
|
let visibleCount = 0;
|
|
1015
1013
|
items.forEach(item => {
|
|
1016
1014
|
const itemValue = item.getAttribute('value') || '';
|
|
@@ -1076,13 +1074,13 @@ const NvFieldmultiselect = class {
|
|
|
1076
1074
|
});
|
|
1077
1075
|
}
|
|
1078
1076
|
// Build local index for main-thread search
|
|
1079
|
-
this.indexedItems =
|
|
1077
|
+
this.indexedItems = i18n_utilsCR9MpYzU.buildIndex(this.rawItems);
|
|
1080
1078
|
// Determine effective filter mode
|
|
1081
|
-
this.effectiveFilterMode =
|
|
1079
|
+
this.effectiveFilterMode = i18n_utilsCR9MpYzU.getEffectiveFilterMode(this.filterMode);
|
|
1082
1080
|
// Initialize worker if needed
|
|
1083
1081
|
const itemCount = this.rawItems.length;
|
|
1084
|
-
const threshold =
|
|
1085
|
-
if (
|
|
1082
|
+
const threshold = i18n_utilsCR9MpYzU.clampWorkerThreshold(this.workerThreshold);
|
|
1083
|
+
if (i18n_utilsCR9MpYzU.shouldUseWorker(itemCount, this.effectiveFilterMode, threshold)) {
|
|
1086
1084
|
await this.initSearchWorker();
|
|
1087
1085
|
}
|
|
1088
1086
|
else {
|
|
@@ -1095,12 +1093,12 @@ const NvFieldmultiselect = class {
|
|
|
1095
1093
|
* Note: Fuzzy search now works on main thread with Fuse.js, so no mode change needed.
|
|
1096
1094
|
*/
|
|
1097
1095
|
async initSearchWorker() {
|
|
1098
|
-
if (!
|
|
1096
|
+
if (!i18n_utilsCR9MpYzU.isWorkerSupported()) {
|
|
1099
1097
|
// Workers not supported - will use main thread (fuzzy still works with Fuse.js)
|
|
1100
1098
|
return;
|
|
1101
1099
|
}
|
|
1102
1100
|
if (!this.workerClient) {
|
|
1103
|
-
this.workerClient = new
|
|
1101
|
+
this.workerClient = new i18n_utilsCR9MpYzU.SearchWorkerClient();
|
|
1104
1102
|
// No fallback mode change needed - fuzzy works on main thread now
|
|
1105
1103
|
}
|
|
1106
1104
|
// Init will silently handle fallback if worker can't be created
|
|
@@ -1126,8 +1124,8 @@ const NvFieldmultiselect = class {
|
|
|
1126
1124
|
await this.rebuildSearchIndex();
|
|
1127
1125
|
}
|
|
1128
1126
|
const itemCount = this.rawItems.length;
|
|
1129
|
-
const threshold =
|
|
1130
|
-
const useWorker =
|
|
1127
|
+
const threshold = i18n_utilsCR9MpYzU.clampWorkerThreshold(this.workerThreshold);
|
|
1128
|
+
const useWorker = i18n_utilsCR9MpYzU.shouldUseWorker(itemCount, this.effectiveFilterMode, threshold);
|
|
1131
1129
|
if (useWorker && this.workerClient?.isReady) {
|
|
1132
1130
|
this.isSearching = true;
|
|
1133
1131
|
try {
|
|
@@ -1136,7 +1134,7 @@ const NvFieldmultiselect = class {
|
|
|
1136
1134
|
catch (error) {
|
|
1137
1135
|
console.error('Worker search failed:', error);
|
|
1138
1136
|
// Fall back to main thread (fuzzy now works with Fuse.js)
|
|
1139
|
-
return
|
|
1137
|
+
return i18n_utilsCR9MpYzU.search(this.indexedItems, {
|
|
1140
1138
|
query: this.filterText,
|
|
1141
1139
|
filterMode: this.effectiveFilterMode,
|
|
1142
1140
|
maxResults: this.maxResults,
|
|
@@ -1149,7 +1147,7 @@ const NvFieldmultiselect = class {
|
|
|
1149
1147
|
}
|
|
1150
1148
|
}
|
|
1151
1149
|
// Use main thread search (fuzzy now works with Fuse.js)
|
|
1152
|
-
return
|
|
1150
|
+
return i18n_utilsCR9MpYzU.search(this.indexedItems, {
|
|
1153
1151
|
query: this.filterText,
|
|
1154
1152
|
filterMode: this.effectiveFilterMode,
|
|
1155
1153
|
maxResults: this.maxResults,
|
|
@@ -1167,11 +1165,11 @@ const NvFieldmultiselect = class {
|
|
|
1167
1165
|
// Remove existing truncation message
|
|
1168
1166
|
ul.querySelector('[data-truncated]')?.remove();
|
|
1169
1167
|
// Get the text template: use provided text or auto-detect from locale
|
|
1170
|
-
const textTemplate = this.truncatedResultsText ||
|
|
1168
|
+
const textTemplate = this.truncatedResultsText || i18n_utilsCR9MpYzU.getTruncatedResultsText(this.locale);
|
|
1171
1169
|
const truncatedItem = document.createElement('li');
|
|
1172
1170
|
truncatedItem.setAttribute('data-truncated', 'true');
|
|
1173
1171
|
truncatedItem.className = 'truncated-message no-results-message';
|
|
1174
|
-
truncatedItem.textContent =
|
|
1172
|
+
truncatedItem.textContent = i18n_utilsCR9MpYzU.formatTruncatedResults(textTemplate, shown, total);
|
|
1175
1173
|
ul.appendChild(truncatedItem);
|
|
1176
1174
|
}
|
|
1177
1175
|
handleClickOutside(event) {
|
|
@@ -1466,11 +1464,17 @@ const NvFieldmultiselect = class {
|
|
|
1466
1464
|
static get formAssociated() { return true; }
|
|
1467
1465
|
get el() { return index.getElement(this); }
|
|
1468
1466
|
static get watchers() { return {
|
|
1469
|
-
"options": [
|
|
1470
|
-
|
|
1471
|
-
|
|
1467
|
+
"options": [{
|
|
1468
|
+
"handleOptionsChange": 0
|
|
1469
|
+
}],
|
|
1470
|
+
"value": [{
|
|
1471
|
+
"watchValueHandler": 0
|
|
1472
|
+
}],
|
|
1473
|
+
"open": [{
|
|
1474
|
+
"handleOpenChange": 0
|
|
1475
|
+
}]
|
|
1472
1476
|
}; }
|
|
1473
1477
|
};
|
|
1474
|
-
NvFieldmultiselect.style = nvFieldmultiselectCss;
|
|
1478
|
+
NvFieldmultiselect.style = nvFieldmultiselectCss();
|
|
1475
1479
|
|
|
1476
1480
|
exports.nv_fieldmultiselect = NvFieldmultiselect;
|