@nova-design-system/nova-webcomponents 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/dist/cjs/_commonjsHelpers-CFO10eej.js +0 -3
- package/dist/cjs/clsx-BtxeOLZW.js +0 -3
- package/dist/cjs/collapse.animation-CcG0GAWk.js +0 -3
- package/dist/cjs/constants-BugGJYqL.js +0 -3
- package/dist/cjs/dom.utils-8VY5SfMZ.js +177 -0
- package/dist/cjs/events.utils-BE6R5q9C.js +0 -3
- package/dist/cjs/fade.animation-BQSqXXOJ.js +0 -3
- package/dist/cjs/grow.animation-ynu_HmA_.js +0 -3
- package/dist/cjs/i18n.utils-BbKpUgYq.js +77 -0
- package/dist/cjs/index-BQjqJTJB.js +4832 -0
- package/dist/cjs/index.cjs.js +54 -3
- package/dist/cjs/index.esm-CG1TVKfu.js +0 -3
- package/dist/cjs/inputmask-DtXnpVWa.js +0 -3
- package/dist/cjs/loader.cjs.js +3 -5
- package/dist/cjs/native.cjs.js +32 -7
- package/dist/cjs/nv-accordion-item.cjs.entry.js +8 -8
- package/dist/cjs/nv-accordion.cjs.entry.js +10 -9
- package/dist/cjs/nv-alert.cjs.entry.js +6 -5
- package/dist/cjs/nv-avatar.cjs.entry.js +3 -4
- package/dist/cjs/nv-badge_2.cjs.entry.js +18 -12
- package/dist/cjs/nv-breadcrumb.cjs.entry.js +14 -12
- package/dist/cjs/nv-breadcrumbs.cjs.entry.js +4 -5
- package/dist/cjs/nv-button.cjs.entry.js +9 -6
- package/dist/cjs/nv-buttongroup.cjs.entry.js +12 -7
- package/dist/cjs/nv-calendar.cjs.entry.js +27 -20
- package/dist/cjs/nv-col.cjs.entry.js +3 -4
- package/dist/cjs/nv-datagrid.cjs.entry.js +47 -185
- package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -2
- package/dist/cjs/nv-dialog.cjs.entry.js +19 -21
- package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +11 -30
- package/dist/cjs/nv-drawer.cjs.entry.js +19 -20
- package/dist/cjs/nv-drawerfooter_2.cjs.entry.js +11 -30
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +10 -9
- package/dist/cjs/nv-fielddate.cjs.entry.js +15 -14
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +15 -15
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +32 -30
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +5 -9
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +27 -23
- package/dist/cjs/nv-fieldnumber.cjs.entry.js +10 -9
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +10 -9
- package/dist/cjs/nv-fieldradio.cjs.entry.js +9 -8
- package/dist/cjs/nv-fieldselect.cjs.entry.js +20 -13
- package/dist/cjs/nv-fieldslider.cjs.entry.js +33 -16
- package/dist/cjs/nv-fieldtext.cjs.entry.js +7 -8
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js +42 -35
- package/dist/cjs/nv-fieldtime.cjs.entry.js +15 -10
- package/dist/cjs/nv-icon.cjs.entry.js +4 -5
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js +13 -10
- package/dist/cjs/nv-menu.cjs.entry.js +9 -14
- package/dist/cjs/nv-menuitem.cjs.entry.js +4 -6
- package/dist/cjs/nv-notification-bullet.cjs.entry.js +3 -4
- package/dist/cjs/nv-notification.cjs.entry.js +4 -5
- package/dist/cjs/nv-notificationcontainer.cjs.entry.js +4 -5
- package/dist/cjs/nv-paginationtable.cjs.entry.js +228 -0
- package/dist/cjs/nv-popover.cjs.entry.js +105 -34
- package/dist/cjs/nv-row.cjs.entry.js +4 -5
- package/dist/cjs/nv-sidebar.cjs.entry.js +10 -7
- package/dist/cjs/nv-sidebarcontent.cjs.entry.js +4 -5
- package/dist/cjs/nv-sidebardivider.cjs.entry.js +4 -5
- package/dist/cjs/nv-sidebarfooter.cjs.entry.js +4 -5
- package/dist/cjs/nv-sidebargroup.cjs.entry.js +4 -5
- package/dist/cjs/nv-sidebarheader.cjs.entry.js +4 -5
- package/dist/cjs/nv-sidebarlogo.cjs.entry.js +4 -5
- package/dist/cjs/nv-sidebarnavitem.cjs.entry.js +9 -8
- package/dist/cjs/nv-sidebarnavsubitem.cjs.entry.js +4 -5
- package/dist/cjs/nv-split.cjs.entry.js +10 -7
- package/dist/cjs/nv-stack.cjs.entry.js +4 -5
- package/dist/cjs/nv-table.cjs.entry.js +6 -5
- package/dist/cjs/nv-tableheader.cjs.entry.js +4 -5
- package/dist/cjs/nv-toggle.cjs.entry.js +8 -7
- package/dist/cjs/nv-togglebutton.cjs.entry.js +4 -6
- package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +13 -10
- package/dist/cjs/nv-tooltip.cjs.entry.js +10 -10
- package/dist/cjs/slide.animation-Cb3tpLQv.js +0 -3
- package/dist/cjs/style-value-types.es-B1vLqX9m.js +0 -3
- package/dist/cjs/timeline.animation-KteJaZPb.js +0 -3
- package/dist/cjs/uri.utils-DiMLQx64.js +0 -3
- package/dist/cjs/v4-C1vaJ4yP.js +0 -3
- package/dist/cjs/{i18n.utils-ku0bScip.js → worker-client-ByL3TenE.js} +35 -78
- package/dist/collection/animations/collapse.animation.js +0 -1
- package/dist/collection/animations/fade.animation.js +0 -1
- package/dist/collection/animations/grow.animation.js +0 -1
- package/dist/collection/animations/index.js +0 -1
- package/dist/collection/animations/slide.animation.js +0 -1
- package/dist/collection/animations/timeline.animation.js +0 -1
- package/dist/collection/collection-manifest.json +3 -2
- package/dist/collection/components/nv-accordion/nv-accordion.docs.js +0 -1
- package/dist/collection/components/nv-accordion/nv-accordion.js +1 -4
- package/dist/collection/components/nv-accordion-item/nv-accordion-item.docs.js +0 -1
- package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +2 -4
- package/dist/collection/components/nv-alert/nv-alert.docs.js +0 -1
- package/dist/collection/components/nv-alert/nv-alert.js +4 -3
- package/dist/collection/components/nv-avatar/nv-avatar.docs.js +0 -1
- package/dist/collection/components/nv-avatar/nv-avatar.js +2 -2
- package/dist/collection/components/nv-badge/nv-badge.css +4 -1
- package/dist/collection/components/nv-badge/nv-badge.docs.js +0 -1
- package/dist/collection/components/nv-badge/nv-badge.js +3 -2
- package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.docs.js +0 -1
- package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +12 -10
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.css +0 -3
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js +0 -1
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -2
- package/dist/collection/components/nv-button/nv-button.docs.js +0 -1
- package/dist/collection/components/nv-button/nv-button.js +6 -4
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js +0 -1
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.js +4 -3
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.utils.js +0 -1
- package/dist/collection/components/nv-buttongroup/styles/nv-buttongroup.css +4 -4
- package/dist/collection/components/nv-buttongroup/test/nv-buttongroup.utils.test.js +0 -1
- package/dist/collection/components/nv-calendar/nv-calendar.css +110 -1
- package/dist/collection/components/nv-calendar/nv-calendar.docs.js +0 -1
- package/dist/collection/components/nv-calendar/nv-calendar.js +9 -12
- package/dist/collection/components/nv-calendar/nv-calendar.utils.js +0 -1
- package/dist/collection/components/nv-calendar/partials/calendar-actions.js +0 -1
- package/dist/collection/components/nv-calendar/partials/calendar-grid.js +0 -1
- package/dist/collection/components/nv-calendar/partials/calendar-header.js +0 -1
- package/dist/collection/components/nv-calendar/partials/calendar-shortcuts.js +0 -1
- package/dist/collection/components/nv-calendar/partials/day-cell.js +0 -1
- package/dist/collection/components/nv-calendar/partials/index.js +0 -1
- package/dist/collection/components/nv-calendar/partials/week-numbers.js +0 -1
- package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +0 -2
- package/dist/collection/components/nv-calendar/test/partials/calendar-actions.logic.test.js +0 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js +0 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-header.logic.test.js +0 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js +0 -1
- package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js +0 -1
- package/dist/collection/components/nv-calendar/test/partials/week-numbers.logic.test.js +0 -1
- package/dist/collection/components/nv-col/nv-col.docs.js +0 -1
- package/dist/collection/components/nv-col/nv-col.js +0 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +0 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.js +6 -5
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.docs.js +0 -1
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +0 -1
- package/dist/collection/components/nv-dialog/nv-dialog.docs.js +0 -7
- package/dist/collection/components/nv-dialog/nv-dialog.js +17 -45
- package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.docs.js +0 -1
- package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +8 -15
- package/dist/collection/components/nv-dialogheader/nv-dialogheader.docs.js +0 -1
- package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -13
- package/dist/collection/components/nv-drawer/nv-drawer.docs.js +0 -1
- package/dist/collection/components/nv-drawer/nv-drawer.js +13 -16
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.docs.js +0 -1
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.js +8 -15
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.docs.js +0 -1
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.js +1 -13
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +9 -0
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js +0 -1
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +6 -6
- package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js +0 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +6 -9
- package/dist/collection/components/nv-fielddate/test/nv-fielddate.logic.test.js +0 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js +0 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +6 -10
- package/dist/collection/components/nv-fielddaterange/test/nv-fielddaterange.logic.test.js +0 -2
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +0 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +16 -13
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.docs.js +0 -1
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +3 -7
- package/dist/collection/components/nv-fielddropdownitem/styles/nv-fielddropdownitem.css +78 -8
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.js +0 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -3
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +0 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +5 -6
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +0 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +4 -5
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +0 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +7 -7
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js +0 -1
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +5 -5
- package/dist/collection/components/nv-fieldradio/styles/nv-fieldradio.css +20 -0
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js +0 -1
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -6
- package/dist/collection/components/nv-fieldselect/styles/nv-fieldselect.css +90 -7
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js +0 -1
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -4
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js +0 -1
- package/dist/collection/components/nv-fieldslider/partials/field-input.js +0 -1
- package/dist/collection/components/nv-fieldslider/partials/range-thumb.js +0 -1
- package/dist/collection/components/nv-fieldslider/partials/single-thumb.js +0 -1
- package/dist/collection/components/nv-fieldslider/partials/tick-marks.js +0 -1
- package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js +0 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +0 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +7 -7
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js +14 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +50 -30
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +0 -1
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +3 -5
- package/dist/collection/components/nv-fieldtime/utils/format-utils.js +0 -1
- package/dist/collection/components/nv-icon/nv-icon.docs.js +0 -1
- package/dist/collection/components/nv-icon/nv-icon.js +7 -5
- package/dist/collection/components/nv-icon/nv-icons.js +0 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.docs.js +0 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +11 -7
- package/dist/collection/components/nv-loader/nv-loader.docs.js +0 -1
- package/dist/collection/components/nv-loader/nv-loader.js +5 -4
- package/dist/collection/components/nv-menu/nv-menu.docs.js +0 -1
- package/dist/collection/components/nv-menu/nv-menu.js +14 -12
- package/dist/collection/components/nv-menuitem/nv-menuitem.docs.js +0 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.js +4 -5
- package/dist/collection/components/nv-notification/nv-notification.docs.js +0 -1
- package/dist/collection/components/nv-notification/nv-notification.js +5 -4
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js +0 -1
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js +0 -1
- package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.docs.js +0 -1
- package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js +3 -3
- package/dist/collection/components/nv-paginationtable/nv-paginationtable.css +17 -0
- package/dist/collection/components/nv-paginationtable/nv-paginationtable.docs.js +248 -0
- package/dist/collection/components/nv-paginationtable/nv-paginationtable.js +537 -0
- package/dist/collection/components/nv-paginationtable/nv-paginationtable.utils.js +64 -0
- package/dist/collection/components/nv-paginationtable/test/nv-paginationtable.utils.test.js +360 -0
- package/dist/collection/components/nv-popover/nv-popover.docs.js +0 -1
- package/dist/collection/components/nv-popover/nv-popover.js +19 -14
- package/dist/collection/components/nv-row/nv-row.docs.js +0 -1
- package/dist/collection/components/nv-row/nv-row.js +1 -2
- package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js +0 -1
- package/dist/collection/components/nv-sidebar/nv-sidebar.js +1 -2
- package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.docs.js +0 -1
- package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.js +1 -2
- package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.docs.js +0 -1
- package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.js +1 -2
- package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.docs.js +0 -1
- package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.js +1 -2
- package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.docs.js +0 -1
- package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.js +1 -2
- package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.docs.js +0 -1
- package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.js +1 -2
- package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.docs.js +0 -1
- package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.js +1 -2
- package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.docs.js +0 -1
- package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js +6 -6
- package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.docs.js +0 -1
- package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.js +1 -2
- package/dist/collection/components/nv-split/nv-split.docs.js +0 -1
- package/dist/collection/components/nv-split/nv-split.js +1 -2
- package/dist/collection/components/nv-stack/nv-stack.docs.js +0 -1
- package/dist/collection/components/nv-stack/nv-stack.js +1 -2
- package/dist/collection/components/nv-table/nv-table.docs.js +0 -1
- package/dist/collection/components/nv-table/nv-table.js +1 -3
- package/dist/collection/components/nv-table/nv-table.utils.js +2 -1
- package/dist/collection/components/nv-table/test/nv-table.utils.test.js +0 -2
- package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js +0 -1
- package/dist/collection/components/nv-tableheader/nv-tableheader.js +1 -2
- package/dist/collection/components/nv-toggle/nv-toggle.css +26 -0
- package/dist/collection/components/nv-toggle/nv-toggle.docs.js +0 -1
- package/dist/collection/components/nv-toggle/nv-toggle.js +4 -4
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.docs.js +0 -1
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +5 -5
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +0 -1
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +5 -6
- package/dist/collection/components/nv-tooltip/nv-tooltip.css +7 -0
- package/dist/collection/components/nv-tooltip/nv-tooltip.docs.js +0 -1
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +20 -13
- package/dist/collection/index.js +2 -1
- package/dist/collection/interfaces/Column.js +0 -1
- package/dist/collection/interfaces/ColumnConfig.js +0 -1
- package/dist/collection/interfaces/localization.js +0 -1
- package/dist/collection/templates/navigation.docs.js +0 -1
- package/dist/collection/utils/class.utils.js +0 -1
- package/dist/collection/utils/constants.js +0 -1
- package/dist/collection/utils/dom.utils.js +8 -1
- package/dist/collection/utils/events.utils.js +0 -1
- package/dist/collection/utils/i18n.utils.js +0 -1
- package/dist/collection/utils/input.utils.js +0 -1
- package/dist/collection/utils/search-engine/engine.js +0 -1
- package/dist/collection/utils/search-engine/guards.js +0 -1
- package/dist/collection/utils/search-engine/index.js +0 -1
- package/dist/collection/utils/search-engine/indexer.js +0 -1
- package/dist/collection/utils/search-engine/normalize.js +0 -1
- package/dist/collection/utils/search-engine/strategies/fuzzy.js +0 -1
- package/dist/collection/utils/search-engine/strategies/smart.js +0 -1
- package/dist/collection/utils/search-engine/strategies/strict.js +0 -1
- package/dist/collection/utils/search-engine/test/engine.test.js +0 -1
- package/dist/collection/utils/search-engine/test/guards.test.js +0 -1
- package/dist/collection/utils/search-engine/test/indexer.test.js +0 -1
- package/dist/collection/utils/search-engine/test/normalize.test.js +0 -1
- package/dist/collection/utils/search-engine/test/strategies.test.js +0 -1
- package/dist/collection/utils/search-engine/types.js +0 -1
- package/dist/collection/utils/search-engine/worker/index.js +0 -1
- package/dist/collection/utils/search-engine/worker/search.worker.js +0 -1
- package/dist/collection/utils/search-engine/worker/worker-client.js +0 -1
- package/dist/collection/utils/string.utils.js +0 -1
- package/dist/collection/utils/test/class.utils.test.js +0 -2
- package/dist/collection/utils/test/dom.utils.test.js +24 -3
- package/dist/collection/utils/test/i18n.utils.test.js +0 -1
- package/dist/collection/utils/test/input.utils.test.js +0 -1
- package/dist/collection/utils/test/uri.utils.test.js +0 -1
- package/dist/collection/utils/uri.utils.js +0 -1
- package/dist/components/_.entry.js +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -583
- package/dist/components/nv-accordion-item.js +1 -9
- package/dist/components/nv-accordion.js +1 -229
- package/dist/components/nv-alert.js +1 -211
- package/dist/components/nv-avatar.js +1 -105
- package/dist/components/nv-badge.js +1 -9
- package/dist/components/nv-breadcrumb.js +1 -80
- package/dist/components/nv-breadcrumbs.js +1 -39
- package/dist/components/nv-button.js +1 -9
- package/dist/components/nv-buttongroup.js +1 -223
- package/dist/components/nv-calendar.js +1 -9
- package/dist/components/nv-col.js +1 -58
- package/dist/components/nv-datagrid.js +1 -4580
- package/dist/components/nv-datagridcolumn.js +1 -47
- package/dist/components/nv-dialog.js +1 -362
- package/dist/components/nv-dialogfooter.js +1 -9
- package/dist/components/nv-dialogheader.js +1 -9
- package/dist/components/nv-drawer.js +1 -507
- package/dist/components/nv-drawerfooter.js +1 -9
- package/dist/components/nv-drawerheader.js +1 -9
- package/dist/components/nv-fieldcheckbox.js +1 -9
- package/dist/components/nv-fielddate.js +1 -507
- package/dist/components/nv-fielddaterange.js +1 -670
- package/dist/components/nv-fielddropdown.js +1 -768
- package/dist/components/nv-fielddropdownitem.js +1 -9
- package/dist/components/nv-fielddropdownitemcheck.js +1 -9
- package/dist/components/nv-fieldmultiselect.js +1 -1587
- package/dist/components/nv-fieldnumber.js +1 -9
- package/dist/components/nv-fieldpassword.js +1 -227
- package/dist/components/nv-fieldradio.js +1 -137
- package/dist/components/nv-fieldselect.js +1 -460
- package/dist/components/nv-fieldslider.js +1 -801
- package/dist/components/nv-fieldtext.js +1 -9
- package/dist/components/nv-fieldtextarea.js +1 -282
- package/dist/components/nv-fieldtime.js +1 -1189
- package/dist/components/nv-icon.js +1 -9
- package/dist/components/nv-iconbutton.js +1 -9
- package/dist/components/nv-loader.js +1 -9
- package/dist/components/nv-menu.js +1 -254
- package/dist/components/nv-menuitem.js +1 -9
- package/dist/components/nv-notification-bullet.js +1 -9
- package/dist/components/nv-notification.js +1 -212
- package/dist/components/nv-notificationcontainer.js +1 -61
- package/dist/components/nv-paginationtable.d.ts +11 -0
- package/dist/components/nv-paginationtable.js +1 -0
- package/dist/components/nv-popover.js +1 -9
- package/dist/components/nv-row.js +1 -40
- package/dist/components/nv-sidebar.js +1 -210
- package/dist/components/nv-sidebarcontent.js +1 -40
- package/dist/components/nv-sidebardivider.js +1 -40
- package/dist/components/nv-sidebarfooter.js +1 -40
- package/dist/components/nv-sidebargroup.js +1 -43
- package/dist/components/nv-sidebarheader.js +1 -40
- package/dist/components/nv-sidebarlogo.js +1 -54
- package/dist/components/nv-sidebarnavitem.js +1 -336
- package/dist/components/nv-sidebarnavsubitem.js +1 -55
- package/dist/components/nv-split.js +1 -370
- package/dist/components/nv-stack.js +1 -55
- package/dist/components/nv-table.js +1 -261
- package/dist/components/nv-tableheader.js +1 -114
- package/dist/components/nv-toggle.js +1 -111
- package/dist/components/nv-togglebutton.js +1 -91
- package/dist/components/nv-togglebuttongroup.js +1 -200
- package/dist/components/nv-tooltip.js +1 -9
- package/dist/components/p-9xYwU7ku.js +1 -724
- package/dist/components/p-B5KLppep.js +1 -0
- package/dist/components/p-B6GgGra-.js +1 -29
- package/dist/components/p-BAlaMmS4.js +1 -0
- package/dist/components/p-BPufjY85.js +1 -0
- package/dist/components/p-BReL3Lsa.js +1 -286
- package/dist/components/p-BaF3Tuua.js +1 -0
- package/dist/components/p-BdYh22OP.js +1 -57
- package/dist/components/p-BfaMgLx7.js +9 -0
- package/dist/components/p-Bh6WGsHA.js +1 -0
- package/dist/components/p-C2J7j_fw.js +1 -0
- package/dist/components/p-C9p4yTS2.js +1 -0
- package/dist/components/p-CAKTe96z.js +1 -0
- package/dist/components/p-CEI7jWvn.js +1 -0
- package/dist/components/p-CR9MpYzU.js +1 -0
- package/dist/components/p-CZcMM7Lh.js +1 -0
- package/dist/components/p-Ce1IBFTa.js +1 -0
- package/dist/components/p-CgHCo_Ho.js +1 -42
- package/dist/components/p-ChV9xqsO.js +1 -6
- package/dist/components/p-CnI0auJM.js +1 -24
- package/dist/components/p-CuXVGECR.js +1 -0
- package/dist/components/p-D02w_Ru6.js +1 -91
- package/dist/components/p-D15RdWEG.js +1 -0
- package/dist/components/p-D1C_pu0E.js +1 -218
- package/dist/components/p-D2otK4Ce.js +1 -91
- package/dist/components/p-D3eWMME9.js +1 -534
- package/dist/components/p-DDqZBSGn.js +1 -0
- package/dist/components/p-DHNSuxz-.js +1 -0
- package/dist/components/p-DhDxhFz-.js +1 -0
- package/dist/components/p-DqU-wS_x.js +1 -0
- package/dist/components/p-Dz1GUhVy.js +15 -1119
- package/dist/components/p-FSPz8FER.js +1 -0
- package/dist/components/p-RUeDcouW.js +1 -0
- package/dist/components/p-iXsbKJzR.js +2 -0
- package/dist/components/p-jZF_Ggmx.js +1 -0
- package/dist/components/p-laRga5dw.js +1 -0
- package/dist/components/p-nmQOuX7R.js +1 -0
- package/dist/components/p-yHGZRC6Q.js +1 -0
- package/dist/esm/_commonjsHelpers-B85MJLTf.js +0 -3
- package/dist/esm/clsx-ChV9xqsO.js +0 -3
- package/dist/esm/collapse.animation-DZDm0vSK.js +0 -3
- package/dist/esm/constants-BReL3Lsa.js +0 -3
- package/dist/esm/dom.utils-CuXVGECR.js +173 -0
- package/dist/esm/events.utils-B6GgGra-.js +0 -3
- package/dist/esm/fade.animation-DcRL9lcm.js +0 -3
- package/dist/esm/grow.animation-D7ep_aVl.js +0 -3
- package/dist/esm/i18n.utils-CR9MpYzU.js +74 -0
- package/dist/esm/index-S-IZ4AN_.js +4796 -0
- package/dist/esm/index.esm-D3eWMME9.js +0 -3
- package/dist/esm/index.js +53 -3
- package/dist/esm/inputmask-CSo292ul.js +0 -3
- package/dist/esm/loader.js +3 -5
- package/dist/esm/native.js +32 -7
- package/dist/esm/nv-accordion-item.entry.js +8 -8
- package/dist/esm/nv-accordion.entry.js +10 -9
- package/dist/esm/nv-alert.entry.js +6 -5
- package/dist/esm/nv-avatar.entry.js +3 -4
- package/dist/esm/nv-badge_2.entry.js +18 -12
- package/dist/esm/nv-breadcrumb.entry.js +14 -12
- package/dist/esm/nv-breadcrumbs.entry.js +4 -5
- package/dist/esm/nv-button.entry.js +9 -6
- package/dist/esm/nv-buttongroup.entry.js +12 -7
- package/dist/esm/nv-calendar.entry.js +27 -20
- package/dist/esm/nv-col.entry.js +3 -4
- package/dist/esm/nv-datagrid.entry.js +42 -180
- package/dist/esm/nv-datagridcolumn.entry.js +1 -2
- package/dist/esm/nv-dialog.entry.js +19 -21
- package/dist/esm/nv-dialogfooter_2.entry.js +11 -30
- package/dist/esm/nv-drawer.entry.js +19 -20
- package/dist/esm/nv-drawerfooter_2.entry.js +11 -30
- package/dist/esm/nv-fieldcheckbox.entry.js +10 -9
- package/dist/esm/nv-fielddate.entry.js +15 -14
- package/dist/esm/nv-fielddaterange.entry.js +15 -15
- package/dist/esm/nv-fielddropdown.entry.js +19 -17
- package/dist/esm/nv-fielddropdownitem.entry.js +5 -9
- package/dist/esm/nv-fieldmultiselect.entry.js +14 -10
- package/dist/esm/nv-fieldnumber.entry.js +10 -9
- package/dist/esm/nv-fieldpassword.entry.js +10 -9
- package/dist/esm/nv-fieldradio.entry.js +9 -8
- package/dist/esm/nv-fieldselect.entry.js +20 -13
- package/dist/esm/nv-fieldslider.entry.js +33 -16
- package/dist/esm/nv-fieldtext.entry.js +7 -8
- package/dist/esm/nv-fieldtextarea.entry.js +42 -35
- package/dist/esm/nv-fieldtime.entry.js +15 -10
- package/dist/esm/nv-icon.entry.js +4 -5
- package/dist/esm/nv-iconbutton_2.entry.js +13 -10
- package/dist/esm/nv-menu.entry.js +9 -14
- package/dist/esm/nv-menuitem.entry.js +4 -6
- package/dist/esm/nv-notification-bullet.entry.js +3 -4
- package/dist/esm/nv-notification.entry.js +4 -5
- package/dist/esm/nv-notificationcontainer.entry.js +4 -5
- package/dist/esm/nv-paginationtable.entry.js +226 -0
- package/dist/esm/nv-popover.entry.js +105 -34
- package/dist/esm/nv-row.entry.js +4 -5
- package/dist/esm/nv-sidebar.entry.js +10 -7
- package/dist/esm/nv-sidebarcontent.entry.js +4 -5
- package/dist/esm/nv-sidebardivider.entry.js +4 -5
- package/dist/esm/nv-sidebarfooter.entry.js +4 -5
- package/dist/esm/nv-sidebargroup.entry.js +4 -5
- package/dist/esm/nv-sidebarheader.entry.js +4 -5
- package/dist/esm/nv-sidebarlogo.entry.js +4 -5
- package/dist/esm/nv-sidebarnavitem.entry.js +9 -8
- package/dist/esm/nv-sidebarnavsubitem.entry.js +4 -5
- package/dist/esm/nv-split.entry.js +10 -7
- package/dist/esm/nv-stack.entry.js +4 -5
- package/dist/esm/nv-table.entry.js +6 -5
- package/dist/esm/nv-tableheader.entry.js +4 -5
- package/dist/esm/nv-toggle.entry.js +8 -7
- package/dist/esm/nv-togglebutton.entry.js +4 -6
- package/dist/esm/nv-togglebuttongroup.entry.js +13 -10
- package/dist/esm/nv-tooltip.entry.js +10 -10
- package/dist/esm/slide.animation-CmH5d1of.js +0 -3
- package/dist/esm/style-value-types.es-xlgmw4x8.js +0 -3
- package/dist/esm/timeline.animation-CgHCo_Ho.js +0 -3
- package/dist/esm/uri.utils-CnI0auJM.js +0 -3
- package/dist/esm/v4-BdYh22OP.js +0 -3
- package/dist/{components/p-IlwlcG9l.js → esm/worker-client-BaF3Tuua.js} +20 -77
- package/dist/lib/generators/angular-output.js +0 -1
- package/dist/lib/generators/docs-blazor.js +0 -1
- package/dist/lib/generators/vue-output.js +0 -1
- package/dist/lib/scripts/nextjs-entry-shim.js +25 -0
- package/dist/lib/utils/componentBinding.js +0 -1
- package/dist/lib/utils/parseToCSharpTypes.js +0 -1
- package/dist/lib/utils/spread.js +0 -1
- package/dist/lib/utils/test/parseToCSharpTypes.test.js +0 -1
- package/dist/native/index.esm.js +1 -2
- package/dist/native/native.css +1 -1
- package/dist/native/native.esm.js +1 -2
- package/dist/native/p-043d500e.entry.js +1 -0
- package/dist/native/p-04956305.entry.js +1 -0
- package/dist/native/p-06a17aba.entry.js +1 -0
- package/dist/native/p-0819a7b1.entry.js +1 -0
- package/dist/native/p-0bfd188c.entry.js +1 -0
- package/dist/native/p-0e8b544b.entry.js +1 -0
- package/dist/native/p-0ec34d19.entry.js +1 -0
- package/dist/native/p-11eb959b.entry.js +1 -0
- package/dist/native/p-13YSIyGW.js +1 -2
- package/dist/native/p-17f2525a.entry.js +1 -0
- package/dist/native/p-1a5db5e9.entry.js +1 -0
- package/dist/native/p-1bf1a213.entry.js +1 -0
- package/dist/native/p-1dd3da3b.entry.js +1 -0
- package/dist/native/p-2106dfbd.entry.js +1 -0
- package/dist/native/p-31301f1e.entry.js +1 -0
- package/dist/native/p-3a04a563.entry.js +1 -0
- package/dist/native/p-3fb1a188.entry.js +1 -0
- package/dist/native/p-48e7b457.entry.js +1 -0
- package/dist/native/p-5cbf5973.entry.js +1 -0
- package/dist/native/p-64104dbd.entry.js +1 -0
- package/dist/native/p-6a9363a6.entry.js +1 -0
- package/dist/native/p-6b655545.entry.js +1 -0
- package/dist/native/p-702a6646.entry.js +1 -0
- package/dist/native/p-70abbe4f.entry.js +1 -0
- package/dist/native/p-79d8c26b.entry.js +1 -0
- package/dist/native/p-7a8e2ef3.entry.js +1 -0
- package/dist/native/p-7c413f8b.entry.js +1 -0
- package/dist/native/p-85c8be32.entry.js +1 -0
- package/dist/native/p-87a1b06c.entry.js +1 -0
- package/dist/native/p-89f7d483.entry.js +1 -0
- package/dist/native/p-8ce17efd.entry.js +1 -0
- package/dist/native/p-8dadc0c9.entry.js +1 -0
- package/dist/native/p-945ca1db.entry.js +1 -0
- package/dist/native/p-97a5f8d5.entry.js +1 -0
- package/dist/native/p-98ea927d.entry.js +1 -0
- package/dist/native/p-B6GgGra-.js +1 -2
- package/dist/native/p-B85MJLTf.js +1 -2
- package/dist/native/p-BReL3Lsa.js +1 -2
- package/dist/native/p-BaF3Tuua.js +1 -0
- package/dist/native/p-BdYh22OP.js +1 -2
- package/dist/native/p-Blc6XEY7.js +1 -2
- package/dist/native/p-CR9MpYzU.js +1 -0
- package/dist/native/p-CgHCo_Ho.js +1 -2
- package/dist/native/p-ChV9xqsO.js +1 -2
- package/dist/native/p-CnI0auJM.js +1 -2
- package/dist/native/p-CuXVGECR.js +1 -0
- package/dist/native/p-D3eWMME9.js +1 -2
- package/dist/native/p-DmUOtOcY.js +1 -2
- package/dist/native/p-Hfc8Oh0x.js +3 -4
- package/dist/native/p-S-IZ4AN_.js +2 -0
- package/dist/native/p-a8bc3b92.entry.js +1 -0
- package/dist/native/p-a92e2ad8.entry.js +1 -0
- package/dist/native/p-a9a07a8d.entry.js +1 -0
- package/dist/native/p-a9a20f37.entry.js +1 -0
- package/dist/native/p-aa232a20.entry.js +1 -0
- package/dist/native/p-ae4fc02a.entry.js +1 -0
- package/dist/native/p-b0d97496.entry.js +1 -0
- package/dist/native/p-bd143e7b.entry.js +1 -0
- package/dist/native/p-bdaab534.entry.js +1 -0
- package/dist/native/p-bdbc92d9.entry.js +1 -0
- package/dist/native/p-bef3d325.entry.js +1 -0
- package/dist/native/p-c3ea1eca.entry.js +1 -0
- package/dist/native/p-c825c542.entry.js +1 -0
- package/dist/native/p-ce2c17dc.entry.js +1 -0
- package/dist/native/p-d46ea49a.entry.js +1 -0
- package/dist/native/p-dc0d1690.entry.js +1 -0
- package/dist/native/p-e05b6008.entry.js +1 -0
- package/dist/native/p-e1021e2c.entry.js +1 -0
- package/dist/native/p-e937d495.entry.js +1 -0
- package/dist/native/p-f22d2ad9.entry.js +1 -0
- package/dist/native/p-f2a32774.entry.js +1 -0
- package/dist/native/p-f5eff2b2.entry.js +1 -0
- package/dist/native/p-f64f1bea.entry.js +1 -0
- package/dist/native/p-fba55e2f.entry.js +1 -0
- package/dist/native/p-sqVK8yoD.js +1 -2
- package/dist/native/p-xlgmw4x8.js +2 -3
- package/dist/types/components/nv-breadcrumb/nv-breadcrumb.d.ts +4 -2
- package/dist/types/components/nv-dialog/nv-dialog.d.ts +4 -9
- package/dist/types/components/nv-dialogfooter/nv-dialogfooter.d.ts +3 -4
- package/dist/types/components/nv-dialogheader/nv-dialogheader.d.ts +0 -3
- package/dist/types/components/nv-drawer/nv-drawer.d.ts +3 -3
- package/dist/types/components/nv-drawerfooter/nv-drawerfooter.d.ts +3 -4
- package/dist/types/components/nv-drawerheader/nv-drawerheader.d.ts +0 -3
- package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +4 -0
- package/dist/types/components/nv-fielddropdownitem/nv-fielddropdownitem.d.ts +2 -3
- package/dist/types/components/nv-fieldtextarea/nv-fieldtextarea.d.ts +9 -1
- package/dist/types/components/nv-menu/nv-menu.d.ts +5 -1
- package/dist/types/components/nv-paginationtable/nv-paginationtable.d.ts +112 -0
- package/dist/types/components/nv-paginationtable/nv-paginationtable.docs.d.ts +4 -0
- package/dist/types/components/nv-paginationtable/nv-paginationtable.utils.d.ts +61 -0
- package/dist/types/components/nv-paginationtable/test/nv-paginationtable.utils.test.d.ts +1 -0
- package/dist/types/components/nv-popover/nv-popover.d.ts +2 -3
- package/dist/types/components/nv-tooltip/nv-tooltip.d.ts +4 -2
- package/dist/types/components.d.ts +182 -5
- package/dist/types/index.d.ts +1 -0
- package/dist/types/nova-docs.d.ts +0 -1
- package/dist/types/stencil-public-runtime.d.ts +87 -4
- package/dist/types/utils/dom.utils.d.ts +6 -0
- package/dist/types/utils/events.utils.d.ts +2 -2
- package/dist/vscode-data.json +641 -588
- package/hydrate/index.d.ts +12 -0
- package/hydrate/index.js +6999 -1257
- package/hydrate/index.mjs +6998 -1258
- package/package.json +11 -9
- package/dist/cjs/_commonjsHelpers-CFO10eej.js.map +0 -1
- package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -8
- package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
- package/dist/cjs/clsx-BtxeOLZW.js.map +0 -1
- package/dist/cjs/collapse.animation-CcG0GAWk.js.map +0 -1
- package/dist/cjs/constants-BugGJYqL.js.map +0 -1
- package/dist/cjs/events.utils-BE6R5q9C.js.map +0 -1
- package/dist/cjs/fade.animation-BQSqXXOJ.js.map +0 -1
- package/dist/cjs/grow.animation-ynu_HmA_.js.map +0 -1
- package/dist/cjs/i18n.utils-ku0bScip.js.map +0 -1
- package/dist/cjs/index-B1na8x6M.js +0 -2841
- package/dist/cjs/index-B1na8x6M.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/index.esm-CG1TVKfu.js.map +0 -1
- package/dist/cjs/inputmask-DtXnpVWa.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/native.cjs.js.map +0 -1
- package/dist/cjs/nv-accordion-item.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-accordion.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-alert.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-avatar.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-badge.nv-fielddropdownitemcheck.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-breadcrumb.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-breadcrumbs.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-button.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-buttongroup.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-calendar.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-col.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-datagrid.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-datagridcolumn.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-dialog.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-dialogfooter.nv-dialogheader.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-drawer.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-drawerfooter.nv-drawerheader.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldcheckbox.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fielddate.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fielddaterange.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fielddropdown.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fielddropdownitem.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldmultiselect.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldnumber.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldpassword.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldradio.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldselect.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldslider.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldtext.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldtextarea.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-fieldtime.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-icon.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-iconbutton.nv-loader.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-menu.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-menuitem.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-notification-bullet.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-notification.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-notificationcontainer.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-popover.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-row.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-sidebar.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-sidebarcontent.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-sidebardivider.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-sidebarfooter.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-sidebargroup.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-sidebarheader.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-sidebarlogo.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-sidebarnavitem.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-sidebarnavsubitem.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-split.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-stack.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-table.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-tableheader.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-toggle.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-togglebutton.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-togglebuttongroup.entry.cjs.js.map +0 -1
- package/dist/cjs/nv-tooltip.entry.cjs.js.map +0 -1
- package/dist/cjs/slide.animation-Cb3tpLQv.js.map +0 -1
- package/dist/cjs/style-value-types.es-B1vLqX9m.js.map +0 -1
- package/dist/cjs/timeline.animation-KteJaZPb.js.map +0 -1
- package/dist/cjs/uri.utils-DiMLQx64.js.map +0 -1
- package/dist/cjs/v4-C1vaJ4yP.js.map +0 -1
- package/dist/collection/animations/collapse.animation.js.map +0 -1
- package/dist/collection/animations/fade.animation.js.map +0 -1
- package/dist/collection/animations/grow.animation.js.map +0 -1
- package/dist/collection/animations/index.js.map +0 -1
- package/dist/collection/animations/slide.animation.js.map +0 -1
- package/dist/collection/animations/timeline.animation.js.map +0 -1
- package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +0 -1
- package/dist/collection/components/nv-accordion/nv-accordion.js.map +0 -1
- package/dist/collection/components/nv-accordion-item/nv-accordion-item.docs.js.map +0 -1
- package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +0 -1
- package/dist/collection/components/nv-alert/nv-alert.docs.js.map +0 -1
- package/dist/collection/components/nv-alert/nv-alert.js.map +0 -1
- package/dist/collection/components/nv-avatar/nv-avatar.docs.js.map +0 -1
- package/dist/collection/components/nv-avatar/nv-avatar.js.map +0 -1
- package/dist/collection/components/nv-badge/nv-badge.docs.js.map +0 -1
- package/dist/collection/components/nv-badge/nv-badge.js.map +0 -1
- package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.docs.js.map +0 -1
- package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js.map +0 -1
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js.map +0 -1
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js.map +0 -1
- package/dist/collection/components/nv-button/nv-button.docs.js.map +0 -1
- package/dist/collection/components/nv-button/nv-button.js.map +0 -1
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js.map +0 -1
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.js.map +0 -1
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.utils.js.map +0 -1
- package/dist/collection/components/nv-buttongroup/test/nv-buttongroup.utils.test.js.map +0 -1
- package/dist/collection/components/nv-calendar/nv-calendar.docs.js.map +0 -1
- package/dist/collection/components/nv-calendar/nv-calendar.js.map +0 -1
- package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +0 -1
- package/dist/collection/components/nv-calendar/partials/calendar-actions.js.map +0 -1
- package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +0 -1
- package/dist/collection/components/nv-calendar/partials/calendar-header.js.map +0 -1
- package/dist/collection/components/nv-calendar/partials/calendar-shortcuts.js.map +0 -1
- package/dist/collection/components/nv-calendar/partials/day-cell.js.map +0 -1
- package/dist/collection/components/nv-calendar/partials/index.js.map +0 -1
- package/dist/collection/components/nv-calendar/partials/week-numbers.js.map +0 -1
- package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js.map +0 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-actions.logic.test.js.map +0 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js.map +0 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-header.logic.test.js.map +0 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js.map +0 -1
- package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js.map +0 -1
- package/dist/collection/components/nv-calendar/test/partials/week-numbers.logic.test.js.map +0 -1
- package/dist/collection/components/nv-col/nv-col.docs.js.map +0 -1
- package/dist/collection/components/nv-col/nv-col.js.map +0 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +0 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +0 -1
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.docs.js.map +0 -1
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +0 -1
- package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +0 -1
- package/dist/collection/components/nv-dialog/nv-dialog.js.map +0 -1
- package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.docs.js.map +0 -1
- package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js.map +0 -1
- package/dist/collection/components/nv-dialogheader/nv-dialogheader.docs.js.map +0 -1
- package/dist/collection/components/nv-dialogheader/nv-dialogheader.js.map +0 -1
- package/dist/collection/components/nv-drawer/nv-drawer.docs.js.map +0 -1
- package/dist/collection/components/nv-drawer/nv-drawer.js.map +0 -1
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.docs.js.map +0 -1
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.js.map +0 -1
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.docs.js.map +0 -1
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.js.map +0 -1
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +0 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js.map +0 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +0 -1
- package/dist/collection/components/nv-fielddate/test/nv-fielddate.logic.test.js.map +0 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js.map +0 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +0 -1
- package/dist/collection/components/nv-fielddaterange/test/nv-fielddaterange.logic.test.js.map +0 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +0 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +0 -1
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.docs.js.map +0 -1
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +0 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.js.map +0 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +0 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +0 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +0 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +0 -1
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +0 -1
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +0 -1
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.js.map +0 -1
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js.map +0 -1
- package/dist/collection/components/nv-fieldslider/partials/field-input.js.map +0 -1
- package/dist/collection/components/nv-fieldslider/partials/range-thumb.js.map +0 -1
- package/dist/collection/components/nv-fieldslider/partials/single-thumb.js.map +0 -1
- package/dist/collection/components/nv-fieldslider/partials/tick-marks.js.map +0 -1
- package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js.map +0 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +0 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +0 -1
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +0 -1
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +0 -1
- package/dist/collection/components/nv-fieldtime/utils/format-utils.js.map +0 -1
- package/dist/collection/components/nv-icon/nv-icon.docs.js.map +0 -1
- package/dist/collection/components/nv-icon/nv-icon.js.map +0 -1
- package/dist/collection/components/nv-icon/nv-icons.js.map +0 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.docs.js.map +0 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +0 -1
- package/dist/collection/components/nv-loader/nv-loader.docs.js.map +0 -1
- package/dist/collection/components/nv-loader/nv-loader.js.map +0 -1
- package/dist/collection/components/nv-menu/nv-menu.docs.js.map +0 -1
- package/dist/collection/components/nv-menu/nv-menu.js.map +0 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.docs.js.map +0 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.js.map +0 -1
- package/dist/collection/components/nv-notification/nv-notification.docs.js.map +0 -1
- package/dist/collection/components/nv-notification/nv-notification.js.map +0 -1
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js.map +0 -1
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js.map +0 -1
- package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.docs.js.map +0 -1
- package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js.map +0 -1
- package/dist/collection/components/nv-popover/nv-popover.docs.js.map +0 -1
- package/dist/collection/components/nv-popover/nv-popover.js.map +0 -1
- package/dist/collection/components/nv-row/nv-row.docs.js.map +0 -1
- package/dist/collection/components/nv-row/nv-row.js.map +0 -1
- package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js.map +0 -1
- package/dist/collection/components/nv-sidebar/nv-sidebar.js.map +0 -1
- package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.docs.js.map +0 -1
- package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.js.map +0 -1
- package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.docs.js.map +0 -1
- package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.js.map +0 -1
- package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.docs.js.map +0 -1
- package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.js.map +0 -1
- package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.docs.js.map +0 -1
- package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.js.map +0 -1
- package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.docs.js.map +0 -1
- package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.js.map +0 -1
- package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.docs.js.map +0 -1
- package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.js.map +0 -1
- package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.docs.js.map +0 -1
- package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js.map +0 -1
- package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.docs.js.map +0 -1
- package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.js.map +0 -1
- package/dist/collection/components/nv-split/nv-split.docs.js.map +0 -1
- package/dist/collection/components/nv-split/nv-split.js.map +0 -1
- package/dist/collection/components/nv-stack/nv-stack.docs.js.map +0 -1
- package/dist/collection/components/nv-stack/nv-stack.js.map +0 -1
- package/dist/collection/components/nv-table/nv-table.docs.js.map +0 -1
- package/dist/collection/components/nv-table/nv-table.js.map +0 -1
- package/dist/collection/components/nv-table/nv-table.utils.js.map +0 -1
- package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +0 -1
- package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js.map +0 -1
- package/dist/collection/components/nv-tableheader/nv-tableheader.js.map +0 -1
- package/dist/collection/components/nv-toggle/nv-toggle.docs.js.map +0 -1
- package/dist/collection/components/nv-toggle/nv-toggle.js.map +0 -1
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.docs.js.map +0 -1
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.js.map +0 -1
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +0 -1
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +0 -1
- package/dist/collection/components/nv-tooltip/nv-tooltip.docs.js.map +0 -1
- package/dist/collection/components/nv-tooltip/nv-tooltip.js.map +0 -1
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/interfaces/Column.js.map +0 -1
- package/dist/collection/interfaces/ColumnConfig.js.map +0 -1
- package/dist/collection/interfaces/localization.js.map +0 -1
- package/dist/collection/templates/navigation.docs.js.map +0 -1
- package/dist/collection/utils/class.utils.js.map +0 -1
- package/dist/collection/utils/constants.js.map +0 -1
- package/dist/collection/utils/dom.utils.js.map +0 -1
- package/dist/collection/utils/events.utils.js.map +0 -1
- package/dist/collection/utils/i18n.utils.js.map +0 -1
- package/dist/collection/utils/input.utils.js.map +0 -1
- package/dist/collection/utils/search-engine/engine.js.map +0 -1
- package/dist/collection/utils/search-engine/guards.js.map +0 -1
- package/dist/collection/utils/search-engine/index.js.map +0 -1
- package/dist/collection/utils/search-engine/indexer.js.map +0 -1
- package/dist/collection/utils/search-engine/normalize.js.map +0 -1
- package/dist/collection/utils/search-engine/strategies/fuzzy.js.map +0 -1
- package/dist/collection/utils/search-engine/strategies/smart.js.map +0 -1
- package/dist/collection/utils/search-engine/strategies/strict.js.map +0 -1
- package/dist/collection/utils/search-engine/test/engine.test.js.map +0 -1
- package/dist/collection/utils/search-engine/test/guards.test.js.map +0 -1
- package/dist/collection/utils/search-engine/test/indexer.test.js.map +0 -1
- package/dist/collection/utils/search-engine/test/normalize.test.js.map +0 -1
- package/dist/collection/utils/search-engine/test/strategies.test.js.map +0 -1
- package/dist/collection/utils/search-engine/types.js.map +0 -1
- package/dist/collection/utils/search-engine/worker/index.js.map +0 -1
- package/dist/collection/utils/search-engine/worker/search.worker.js.map +0 -1
- package/dist/collection/utils/search-engine/worker/worker-client.js.map +0 -1
- package/dist/collection/utils/string.utils.js.map +0 -1
- package/dist/collection/utils/test/class.utils.test.js.map +0 -1
- package/dist/collection/utils/test/dom.utils.test.js.map +0 -1
- package/dist/collection/utils/test/i18n.utils.test.js.map +0 -1
- package/dist/collection/utils/test/input.utils.test.js.map +0 -1
- package/dist/collection/utils/test/uri.utils.test.js.map +0 -1
- package/dist/collection/utils/uri.utils.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/nv-accordion-item.js.map +0 -1
- package/dist/components/nv-accordion.js.map +0 -1
- package/dist/components/nv-alert.js.map +0 -1
- package/dist/components/nv-avatar.js.map +0 -1
- package/dist/components/nv-badge.js.map +0 -1
- package/dist/components/nv-breadcrumb.js.map +0 -1
- package/dist/components/nv-breadcrumbs.js.map +0 -1
- package/dist/components/nv-button.js.map +0 -1
- package/dist/components/nv-buttongroup.js.map +0 -1
- package/dist/components/nv-calendar.js.map +0 -1
- package/dist/components/nv-col.js.map +0 -1
- package/dist/components/nv-datagrid.js.map +0 -1
- package/dist/components/nv-datagridcolumn.js.map +0 -1
- package/dist/components/nv-dialog.js.map +0 -1
- package/dist/components/nv-dialogfooter.js.map +0 -1
- package/dist/components/nv-dialogheader.js.map +0 -1
- package/dist/components/nv-drawer.js.map +0 -1
- package/dist/components/nv-drawerfooter.js.map +0 -1
- package/dist/components/nv-drawerheader.js.map +0 -1
- package/dist/components/nv-fieldcheckbox.js.map +0 -1
- package/dist/components/nv-fielddate.js.map +0 -1
- package/dist/components/nv-fielddaterange.js.map +0 -1
- package/dist/components/nv-fielddropdown.js.map +0 -1
- package/dist/components/nv-fielddropdownitem.js.map +0 -1
- package/dist/components/nv-fielddropdownitemcheck.js.map +0 -1
- package/dist/components/nv-fieldmultiselect.js.map +0 -1
- package/dist/components/nv-fieldnumber.js.map +0 -1
- package/dist/components/nv-fieldpassword.js.map +0 -1
- package/dist/components/nv-fieldradio.js.map +0 -1
- package/dist/components/nv-fieldselect.js.map +0 -1
- package/dist/components/nv-fieldslider.js.map +0 -1
- package/dist/components/nv-fieldtext.js.map +0 -1
- package/dist/components/nv-fieldtextarea.js.map +0 -1
- package/dist/components/nv-fieldtime.js.map +0 -1
- package/dist/components/nv-icon.js.map +0 -1
- package/dist/components/nv-iconbutton.js.map +0 -1
- package/dist/components/nv-loader.js.map +0 -1
- package/dist/components/nv-menu.js.map +0 -1
- package/dist/components/nv-menuitem.js.map +0 -1
- package/dist/components/nv-notification-bullet.js.map +0 -1
- package/dist/components/nv-notification.js.map +0 -1
- package/dist/components/nv-notificationcontainer.js.map +0 -1
- package/dist/components/nv-popover.js.map +0 -1
- package/dist/components/nv-row.js.map +0 -1
- package/dist/components/nv-sidebar.js.map +0 -1
- package/dist/components/nv-sidebarcontent.js.map +0 -1
- package/dist/components/nv-sidebardivider.js.map +0 -1
- package/dist/components/nv-sidebarfooter.js.map +0 -1
- package/dist/components/nv-sidebargroup.js.map +0 -1
- package/dist/components/nv-sidebarheader.js.map +0 -1
- package/dist/components/nv-sidebarlogo.js.map +0 -1
- package/dist/components/nv-sidebarnavitem.js.map +0 -1
- package/dist/components/nv-sidebarnavsubitem.js.map +0 -1
- package/dist/components/nv-split.js.map +0 -1
- package/dist/components/nv-stack.js.map +0 -1
- package/dist/components/nv-table.js.map +0 -1
- package/dist/components/nv-tableheader.js.map +0 -1
- package/dist/components/nv-toggle.js.map +0 -1
- package/dist/components/nv-togglebutton.js.map +0 -1
- package/dist/components/nv-togglebuttongroup.js.map +0 -1
- package/dist/components/nv-tooltip.js.map +0 -1
- package/dist/components/p-9xYwU7ku.js.map +0 -1
- package/dist/components/p-B45HbBWe.js +0 -191
- package/dist/components/p-B45HbBWe.js.map +0 -1
- package/dist/components/p-B5jN7NKA.js +0 -59
- package/dist/components/p-B5jN7NKA.js.map +0 -1
- package/dist/components/p-B6GgGra-.js.map +0 -1
- package/dist/components/p-B7VlEQVW.js +0 -1475
- package/dist/components/p-B7VlEQVW.js.map +0 -1
- package/dist/components/p-B9i3m6rk.js +0 -1941
- package/dist/components/p-B9i3m6rk.js.map +0 -1
- package/dist/components/p-BILd3Ta-.js +0 -209
- package/dist/components/p-BILd3Ta-.js.map +0 -1
- package/dist/components/p-BISctfud.js +0 -214
- package/dist/components/p-BISctfud.js.map +0 -1
- package/dist/components/p-BReL3Lsa.js.map +0 -1
- package/dist/components/p-BVOv1zgq.js +0 -82
- package/dist/components/p-BVOv1zgq.js.map +0 -1
- package/dist/components/p-BdYh22OP.js.map +0 -1
- package/dist/components/p-Bg_l3jn1.js +0 -191
- package/dist/components/p-Bg_l3jn1.js.map +0 -1
- package/dist/components/p-C2QAWGhf.js +0 -88
- package/dist/components/p-C2QAWGhf.js.map +0 -1
- package/dist/components/p-C63Xpg9a.js +0 -2338
- package/dist/components/p-C63Xpg9a.js.map +0 -1
- package/dist/components/p-COnt5ux_.js +0 -51
- package/dist/components/p-COnt5ux_.js.map +0 -1
- package/dist/components/p-Cc7XnqPp.js +0 -260
- package/dist/components/p-Cc7XnqPp.js.map +0 -1
- package/dist/components/p-CgHCo_Ho.js.map +0 -1
- package/dist/components/p-ChV9xqsO.js.map +0 -1
- package/dist/components/p-CnI0auJM.js.map +0 -1
- package/dist/components/p-D02w_Ru6.js.map +0 -1
- package/dist/components/p-D1C_pu0E.js.map +0 -1
- package/dist/components/p-D2otK4Ce.js.map +0 -1
- package/dist/components/p-D3eWMME9.js.map +0 -1
- package/dist/components/p-D6APFL6N.js +0 -243
- package/dist/components/p-D6APFL6N.js.map +0 -1
- package/dist/components/p-DZJHk4fr.js +0 -3759
- package/dist/components/p-DZJHk4fr.js.map +0 -1
- package/dist/components/p-DiUP3TzF.js +0 -140
- package/dist/components/p-DiUP3TzF.js.map +0 -1
- package/dist/components/p-DpDooigg.js +0 -99
- package/dist/components/p-DpDooigg.js.map +0 -1
- package/dist/components/p-Dr-67WvG.js +0 -94
- package/dist/components/p-Dr-67WvG.js.map +0 -1
- package/dist/components/p-DvapDVBj.js +0 -176
- package/dist/components/p-DvapDVBj.js.map +0 -1
- package/dist/components/p-Dz1GUhVy.js.map +0 -1
- package/dist/components/p-IlwlcG9l.js.map +0 -1
- package/dist/components/p-W6vOfMC9.js +0 -63
- package/dist/components/p-W6vOfMC9.js.map +0 -1
- package/dist/components/p-nfYynlVq.js +0 -90
- package/dist/components/p-nfYynlVq.js.map +0 -1
- package/dist/components/p-tyaJ-nGV.js +0 -97
- package/dist/components/p-tyaJ-nGV.js.map +0 -1
- package/dist/components/p-u-maNLLs.js +0 -145
- package/dist/components/p-u-maNLLs.js.map +0 -1
- package/dist/esm/_commonjsHelpers-B85MJLTf.js.map +0 -1
- package/dist/esm/app-globals-DQuL1Twl.js +0 -6
- package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
- package/dist/esm/clsx-ChV9xqsO.js.map +0 -1
- package/dist/esm/collapse.animation-DZDm0vSK.js.map +0 -1
- package/dist/esm/constants-BReL3Lsa.js.map +0 -1
- package/dist/esm/events.utils-B6GgGra-.js.map +0 -1
- package/dist/esm/fade.animation-DcRL9lcm.js.map +0 -1
- package/dist/esm/grow.animation-D7ep_aVl.js.map +0 -1
- package/dist/esm/i18n.utils-IlwlcG9l.js +0 -2485
- package/dist/esm/i18n.utils-IlwlcG9l.js.map +0 -1
- package/dist/esm/index-CasQushP.js +0 -2811
- package/dist/esm/index-CasQushP.js.map +0 -1
- package/dist/esm/index.esm-D3eWMME9.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/inputmask-CSo292ul.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/native.js.map +0 -1
- package/dist/esm/nv-accordion-item.entry.js.map +0 -1
- package/dist/esm/nv-accordion.entry.js.map +0 -1
- package/dist/esm/nv-alert.entry.js.map +0 -1
- package/dist/esm/nv-avatar.entry.js.map +0 -1
- package/dist/esm/nv-badge.nv-fielddropdownitemcheck.entry.js.map +0 -1
- package/dist/esm/nv-breadcrumb.entry.js.map +0 -1
- package/dist/esm/nv-breadcrumbs.entry.js.map +0 -1
- package/dist/esm/nv-button.entry.js.map +0 -1
- package/dist/esm/nv-buttongroup.entry.js.map +0 -1
- package/dist/esm/nv-calendar.entry.js.map +0 -1
- package/dist/esm/nv-col.entry.js.map +0 -1
- package/dist/esm/nv-datagrid.entry.js.map +0 -1
- package/dist/esm/nv-datagridcolumn.entry.js.map +0 -1
- package/dist/esm/nv-dialog.entry.js.map +0 -1
- package/dist/esm/nv-dialogfooter.nv-dialogheader.entry.js.map +0 -1
- package/dist/esm/nv-drawer.entry.js.map +0 -1
- package/dist/esm/nv-drawerfooter.nv-drawerheader.entry.js.map +0 -1
- package/dist/esm/nv-fieldcheckbox.entry.js.map +0 -1
- package/dist/esm/nv-fielddate.entry.js.map +0 -1
- package/dist/esm/nv-fielddaterange.entry.js.map +0 -1
- package/dist/esm/nv-fielddropdown.entry.js.map +0 -1
- package/dist/esm/nv-fielddropdownitem.entry.js.map +0 -1
- package/dist/esm/nv-fieldmultiselect.entry.js.map +0 -1
- package/dist/esm/nv-fieldnumber.entry.js.map +0 -1
- package/dist/esm/nv-fieldpassword.entry.js.map +0 -1
- package/dist/esm/nv-fieldradio.entry.js.map +0 -1
- package/dist/esm/nv-fieldselect.entry.js.map +0 -1
- package/dist/esm/nv-fieldslider.entry.js.map +0 -1
- package/dist/esm/nv-fieldtext.entry.js.map +0 -1
- package/dist/esm/nv-fieldtextarea.entry.js.map +0 -1
- package/dist/esm/nv-fieldtime.entry.js.map +0 -1
- package/dist/esm/nv-icon.entry.js.map +0 -1
- package/dist/esm/nv-iconbutton.nv-loader.entry.js.map +0 -1
- package/dist/esm/nv-menu.entry.js.map +0 -1
- package/dist/esm/nv-menuitem.entry.js.map +0 -1
- package/dist/esm/nv-notification-bullet.entry.js.map +0 -1
- package/dist/esm/nv-notification.entry.js.map +0 -1
- package/dist/esm/nv-notificationcontainer.entry.js.map +0 -1
- package/dist/esm/nv-popover.entry.js.map +0 -1
- package/dist/esm/nv-row.entry.js.map +0 -1
- package/dist/esm/nv-sidebar.entry.js.map +0 -1
- package/dist/esm/nv-sidebarcontent.entry.js.map +0 -1
- package/dist/esm/nv-sidebardivider.entry.js.map +0 -1
- package/dist/esm/nv-sidebarfooter.entry.js.map +0 -1
- package/dist/esm/nv-sidebargroup.entry.js.map +0 -1
- package/dist/esm/nv-sidebarheader.entry.js.map +0 -1
- package/dist/esm/nv-sidebarlogo.entry.js.map +0 -1
- package/dist/esm/nv-sidebarnavitem.entry.js.map +0 -1
- package/dist/esm/nv-sidebarnavsubitem.entry.js.map +0 -1
- package/dist/esm/nv-split.entry.js.map +0 -1
- package/dist/esm/nv-stack.entry.js.map +0 -1
- package/dist/esm/nv-table.entry.js.map +0 -1
- package/dist/esm/nv-tableheader.entry.js.map +0 -1
- package/dist/esm/nv-toggle.entry.js.map +0 -1
- package/dist/esm/nv-togglebutton.entry.js.map +0 -1
- package/dist/esm/nv-togglebuttongroup.entry.js.map +0 -1
- package/dist/esm/nv-tooltip.entry.js.map +0 -1
- package/dist/esm/slide.animation-CmH5d1of.js.map +0 -1
- package/dist/esm/style-value-types.es-xlgmw4x8.js.map +0 -1
- package/dist/esm/timeline.animation-CgHCo_Ho.js.map +0 -1
- package/dist/esm/uri.utils-CnI0auJM.js.map +0 -1
- package/dist/esm/v4-BdYh22OP.js.map +0 -1
- package/dist/lib/generators/angular-output.js.map +0 -1
- package/dist/lib/generators/docs-blazor.js.map +0 -1
- package/dist/lib/generators/vue-output.js.map +0 -1
- package/dist/lib/utils/componentBinding.js.map +0 -1
- package/dist/lib/utils/parseToCSharpTypes.js.map +0 -1
- package/dist/lib/utils/spread.js.map +0 -1
- package/dist/lib/utils/test/parseToCSharpTypes.test.js.map +0 -1
- package/dist/native/index.esm.js.map +0 -1
- package/dist/native/loader.esm.js.map +0 -1
- package/dist/native/native.esm.js.map +0 -1
- package/dist/native/nv-accordion-item.entry.esm.js.map +0 -1
- package/dist/native/nv-accordion.entry.esm.js.map +0 -1
- package/dist/native/nv-alert.entry.esm.js.map +0 -1
- package/dist/native/nv-avatar.entry.esm.js.map +0 -1
- package/dist/native/nv-badge.nv-fielddropdownitemcheck.entry.esm.js.map +0 -1
- package/dist/native/nv-breadcrumb.entry.esm.js.map +0 -1
- package/dist/native/nv-breadcrumbs.entry.esm.js.map +0 -1
- package/dist/native/nv-button.entry.esm.js.map +0 -1
- package/dist/native/nv-buttongroup.entry.esm.js.map +0 -1
- package/dist/native/nv-calendar.entry.esm.js.map +0 -1
- package/dist/native/nv-col.entry.esm.js.map +0 -1
- package/dist/native/nv-datagrid.entry.esm.js.map +0 -1
- package/dist/native/nv-datagridcolumn.entry.esm.js.map +0 -1
- package/dist/native/nv-dialog.entry.esm.js.map +0 -1
- package/dist/native/nv-dialogfooter.nv-dialogheader.entry.esm.js.map +0 -1
- package/dist/native/nv-drawer.entry.esm.js.map +0 -1
- package/dist/native/nv-drawerfooter.nv-drawerheader.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldcheckbox.entry.esm.js.map +0 -1
- package/dist/native/nv-fielddate.entry.esm.js.map +0 -1
- package/dist/native/nv-fielddaterange.entry.esm.js.map +0 -1
- package/dist/native/nv-fielddropdown.entry.esm.js.map +0 -1
- package/dist/native/nv-fielddropdownitem.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldmultiselect.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldnumber.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldpassword.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldradio.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldselect.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldslider.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldtext.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldtextarea.entry.esm.js.map +0 -1
- package/dist/native/nv-fieldtime.entry.esm.js.map +0 -1
- package/dist/native/nv-icon.entry.esm.js.map +0 -1
- package/dist/native/nv-iconbutton.nv-loader.entry.esm.js.map +0 -1
- package/dist/native/nv-menu.entry.esm.js.map +0 -1
- package/dist/native/nv-menuitem.entry.esm.js.map +0 -1
- package/dist/native/nv-notification-bullet.entry.esm.js.map +0 -1
- package/dist/native/nv-notification.entry.esm.js.map +0 -1
- package/dist/native/nv-notificationcontainer.entry.esm.js.map +0 -1
- package/dist/native/nv-popover.entry.esm.js.map +0 -1
- package/dist/native/nv-row.entry.esm.js.map +0 -1
- package/dist/native/nv-sidebar.entry.esm.js.map +0 -1
- package/dist/native/nv-sidebarcontent.entry.esm.js.map +0 -1
- package/dist/native/nv-sidebardivider.entry.esm.js.map +0 -1
- package/dist/native/nv-sidebarfooter.entry.esm.js.map +0 -1
- package/dist/native/nv-sidebargroup.entry.esm.js.map +0 -1
- package/dist/native/nv-sidebarheader.entry.esm.js.map +0 -1
- package/dist/native/nv-sidebarlogo.entry.esm.js.map +0 -1
- package/dist/native/nv-sidebarnavitem.entry.esm.js.map +0 -1
- package/dist/native/nv-sidebarnavsubitem.entry.esm.js.map +0 -1
- package/dist/native/nv-split.entry.esm.js.map +0 -1
- package/dist/native/nv-stack.entry.esm.js.map +0 -1
- package/dist/native/nv-table.entry.esm.js.map +0 -1
- package/dist/native/nv-tableheader.entry.esm.js.map +0 -1
- package/dist/native/nv-toggle.entry.esm.js.map +0 -1
- package/dist/native/nv-togglebutton.entry.esm.js.map +0 -1
- package/dist/native/nv-togglebuttongroup.entry.esm.js.map +0 -1
- package/dist/native/nv-tooltip.entry.esm.js.map +0 -1
- package/dist/native/p-02e6228a.entry.js +0 -2
- package/dist/native/p-02e6228a.entry.js.map +0 -1
- package/dist/native/p-04a2fe7f.entry.js +0 -2
- package/dist/native/p-04a2fe7f.entry.js.map +0 -1
- package/dist/native/p-08204da4.entry.js +0 -2
- package/dist/native/p-08204da4.entry.js.map +0 -1
- package/dist/native/p-0e07b91b.entry.js +0 -2
- package/dist/native/p-0e07b91b.entry.js.map +0 -1
- package/dist/native/p-136dfb3e.entry.js +0 -2
- package/dist/native/p-136dfb3e.entry.js.map +0 -1
- package/dist/native/p-13YSIyGW.js.map +0 -1
- package/dist/native/p-1f2dd37f.entry.js +0 -2
- package/dist/native/p-1f2dd37f.entry.js.map +0 -1
- package/dist/native/p-255a0482.entry.js +0 -2
- package/dist/native/p-255a0482.entry.js.map +0 -1
- package/dist/native/p-3305a7e6.entry.js +0 -2
- package/dist/native/p-3305a7e6.entry.js.map +0 -1
- package/dist/native/p-36b0a6f0.entry.js +0 -2
- package/dist/native/p-36b0a6f0.entry.js.map +0 -1
- package/dist/native/p-434bc910.entry.js +0 -2
- package/dist/native/p-434bc910.entry.js.map +0 -1
- package/dist/native/p-436029a5.entry.js +0 -2
- package/dist/native/p-436029a5.entry.js.map +0 -1
- package/dist/native/p-460fdf02.entry.js +0 -2
- package/dist/native/p-460fdf02.entry.js.map +0 -1
- package/dist/native/p-477e02cf.entry.js +0 -2
- package/dist/native/p-477e02cf.entry.js.map +0 -1
- package/dist/native/p-4efb582b.entry.js +0 -2
- package/dist/native/p-4efb582b.entry.js.map +0 -1
- package/dist/native/p-4f1dfa32.entry.js +0 -2
- package/dist/native/p-4f1dfa32.entry.js.map +0 -1
- package/dist/native/p-50ce41ac.entry.js +0 -2
- package/dist/native/p-50ce41ac.entry.js.map +0 -1
- package/dist/native/p-51b7de55.entry.js +0 -13
- package/dist/native/p-51b7de55.entry.js.map +0 -1
- package/dist/native/p-5dd120dc.entry.js +0 -2
- package/dist/native/p-5dd120dc.entry.js.map +0 -1
- package/dist/native/p-60bb0d48.entry.js +0 -2
- package/dist/native/p-60bb0d48.entry.js.map +0 -1
- package/dist/native/p-67181258.entry.js +0 -2
- package/dist/native/p-67181258.entry.js.map +0 -1
- package/dist/native/p-6a81884b.entry.js +0 -2
- package/dist/native/p-6a81884b.entry.js.map +0 -1
- package/dist/native/p-6aa483de.entry.js +0 -2
- package/dist/native/p-6aa483de.entry.js.map +0 -1
- package/dist/native/p-6fc79712.entry.js +0 -2
- package/dist/native/p-6fc79712.entry.js.map +0 -1
- package/dist/native/p-70e9e067.entry.js +0 -2
- package/dist/native/p-70e9e067.entry.js.map +0 -1
- package/dist/native/p-729589cb.entry.js +0 -2
- package/dist/native/p-729589cb.entry.js.map +0 -1
- package/dist/native/p-78bf7650.entry.js +0 -2
- package/dist/native/p-78bf7650.entry.js.map +0 -1
- package/dist/native/p-7e6e9ea2.entry.js +0 -2
- package/dist/native/p-7e6e9ea2.entry.js.map +0 -1
- package/dist/native/p-8f1cd9e2.entry.js +0 -2
- package/dist/native/p-8f1cd9e2.entry.js.map +0 -1
- package/dist/native/p-910cd685.entry.js +0 -2
- package/dist/native/p-910cd685.entry.js.map +0 -1
- package/dist/native/p-91eaf02e.entry.js +0 -2
- package/dist/native/p-91eaf02e.entry.js.map +0 -1
- package/dist/native/p-93b77ed4.entry.js +0 -2
- package/dist/native/p-93b77ed4.entry.js.map +0 -1
- package/dist/native/p-93e35975.entry.js +0 -2
- package/dist/native/p-93e35975.entry.js.map +0 -1
- package/dist/native/p-96c45604.entry.js +0 -2
- package/dist/native/p-96c45604.entry.js.map +0 -1
- package/dist/native/p-9b6ad782.entry.js +0 -2
- package/dist/native/p-9b6ad782.entry.js.map +0 -1
- package/dist/native/p-9f32c3ea.entry.js +0 -2
- package/dist/native/p-9f32c3ea.entry.js.map +0 -1
- package/dist/native/p-B6GgGra-.js.map +0 -1
- package/dist/native/p-B85MJLTf.js.map +0 -1
- package/dist/native/p-BReL3Lsa.js.map +0 -1
- package/dist/native/p-BdYh22OP.js.map +0 -1
- package/dist/native/p-Blc6XEY7.js.map +0 -1
- package/dist/native/p-CasQushP.js +0 -3
- package/dist/native/p-CasQushP.js.map +0 -1
- package/dist/native/p-CgHCo_Ho.js.map +0 -1
- package/dist/native/p-ChV9xqsO.js.map +0 -1
- package/dist/native/p-CnI0auJM.js.map +0 -1
- package/dist/native/p-D3eWMME9.js.map +0 -1
- package/dist/native/p-DQuL1Twl.js +0 -2
- package/dist/native/p-DQuL1Twl.js.map +0 -1
- package/dist/native/p-DmUOtOcY.js.map +0 -1
- package/dist/native/p-Hfc8Oh0x.js.map +0 -1
- package/dist/native/p-IlwlcG9l.js +0 -2
- package/dist/native/p-IlwlcG9l.js.map +0 -1
- package/dist/native/p-a6fea322.entry.js +0 -2
- package/dist/native/p-a6fea322.entry.js.map +0 -1
- package/dist/native/p-ae279ae9.entry.js +0 -2
- package/dist/native/p-ae279ae9.entry.js.map +0 -1
- package/dist/native/p-b7765048.entry.js +0 -2
- package/dist/native/p-b7765048.entry.js.map +0 -1
- package/dist/native/p-ba1286aa.entry.js +0 -2
- package/dist/native/p-ba1286aa.entry.js.map +0 -1
- package/dist/native/p-bb52a5a9.entry.js +0 -2
- package/dist/native/p-bb52a5a9.entry.js.map +0 -1
- package/dist/native/p-bc90247e.entry.js +0 -2
- package/dist/native/p-bc90247e.entry.js.map +0 -1
- package/dist/native/p-c2a73a5a.entry.js +0 -2
- package/dist/native/p-c2a73a5a.entry.js.map +0 -1
- package/dist/native/p-c4c11549.entry.js +0 -2
- package/dist/native/p-c4c11549.entry.js.map +0 -1
- package/dist/native/p-c5ecdc49.entry.js +0 -2
- package/dist/native/p-c5ecdc49.entry.js.map +0 -1
- package/dist/native/p-cb1b9edb.entry.js +0 -2
- package/dist/native/p-cb1b9edb.entry.js.map +0 -1
- package/dist/native/p-cdaf54b0.entry.js +0 -2
- package/dist/native/p-cdaf54b0.entry.js.map +0 -1
- package/dist/native/p-ceb8fe8a.entry.js +0 -2
- package/dist/native/p-ceb8fe8a.entry.js.map +0 -1
- package/dist/native/p-daf7541b.entry.js +0 -2
- package/dist/native/p-daf7541b.entry.js.map +0 -1
- package/dist/native/p-de4f53a5.entry.js +0 -2
- package/dist/native/p-de4f53a5.entry.js.map +0 -1
- package/dist/native/p-ded4be77.entry.js +0 -2
- package/dist/native/p-ded4be77.entry.js.map +0 -1
- package/dist/native/p-e1fc5f8c.entry.js +0 -2
- package/dist/native/p-e1fc5f8c.entry.js.map +0 -1
- package/dist/native/p-e6c69f7d.entry.js +0 -2
- package/dist/native/p-e6c69f7d.entry.js.map +0 -1
- package/dist/native/p-e83603f1.entry.js +0 -2
- package/dist/native/p-e83603f1.entry.js.map +0 -1
- package/dist/native/p-ec217581.entry.js +0 -2
- package/dist/native/p-ec217581.entry.js.map +0 -1
- package/dist/native/p-ee694832.entry.js +0 -2
- package/dist/native/p-ee694832.entry.js.map +0 -1
- package/dist/native/p-f39aef8e.entry.js +0 -2
- package/dist/native/p-f39aef8e.entry.js.map +0 -1
- package/dist/native/p-f7e0146e.entry.js +0 -2
- package/dist/native/p-f7e0146e.entry.js.map +0 -1
- package/dist/native/p-sqVK8yoD.js.map +0 -1
- package/dist/native/p-xlgmw4x8.js.map +0 -1
|
@@ -1,1587 +1 @@
|
|
|
1
|
-
import { p as proxyCustomElement, H, c as createEvent, h, F as Fragment, d as Host } from './p-C63Xpg9a.js';
|
|
2
|
-
import { g as getEffectiveFilterMode, c as clampMaxResults, b as buildIndex, s as shouldUseWorker, i as isWorkerSupported, S as SearchWorkerClient, a as search, d as getTruncatedResultsText, f as formatTruncatedResults, e as clampWorkerThreshold } from './p-IlwlcG9l.js';
|
|
3
|
-
import { d as defineCustomElement$8 } from './p-Bg_l3jn1.js';
|
|
4
|
-
import { d as defineCustomElement$7 } from './p-BISctfud.js';
|
|
5
|
-
import { d as defineCustomElement$6 } from './p-Dr-67WvG.js';
|
|
6
|
-
import { d as defineCustomElement$5 } from './p-nfYynlVq.js';
|
|
7
|
-
import { d as defineCustomElement$4 } from './p-DvapDVBj.js';
|
|
8
|
-
import { d as defineCustomElement$3 } from './p-COnt5ux_.js';
|
|
9
|
-
import { d as defineCustomElement$2 } from './p-B9i3m6rk.js';
|
|
10
|
-
import { v as v4 } from './p-BdYh22OP.js';
|
|
11
|
-
|
|
12
|
-
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}";
|
|
13
|
-
|
|
14
|
-
const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmultiselect extends H {
|
|
15
|
-
constructor(registerHost) {
|
|
16
|
-
super();
|
|
17
|
-
if (registerHost !== false) {
|
|
18
|
-
this.__registerHost();
|
|
19
|
-
}
|
|
20
|
-
this.valueChanged = createEvent(this, "valueChanged", 3);
|
|
21
|
-
this.filterTextChanged = createEvent(this, "filterTextChanged", 3);
|
|
22
|
-
this.isBulkOperation = false;
|
|
23
|
-
// Add the flag to the class
|
|
24
|
-
this.preventBlurClose = false;
|
|
25
|
-
/** Pre-computed search index for efficient filtering */
|
|
26
|
-
this.indexedItems = [];
|
|
27
|
-
/** Raw items for worker initialization */
|
|
28
|
-
this.rawItems = [];
|
|
29
|
-
/** Web Worker client for async search operations */
|
|
30
|
-
this.workerClient = null;
|
|
31
|
-
/** Effective filter mode (may differ from prop if fuzzy falls back to smart) */
|
|
32
|
-
this.effectiveFilterMode = 'strict';
|
|
33
|
-
/**
|
|
34
|
-
* Sets the ID for the input element and the for attribute of the associated
|
|
35
|
-
* label. If no ID is provided, a random one will be automatically generated
|
|
36
|
-
* to ensure unique identification, facilitating proper label association and
|
|
37
|
-
* accessibility.
|
|
38
|
-
*/
|
|
39
|
-
this.inputId = v4();
|
|
40
|
-
/**
|
|
41
|
-
* The autocomplete prop helps users fill out the input field faster by
|
|
42
|
-
* suggesting entries they've used before, like their email or address.
|
|
43
|
-
* You can turn it on to make forms more convenient or off to ensure users
|
|
44
|
-
* always type in fresh data.
|
|
45
|
-
*/
|
|
46
|
-
this.autocomplete = 'off';
|
|
47
|
-
/**
|
|
48
|
-
* Marks the input field as required.
|
|
49
|
-
* @note This uses the native HTML `required` attribute, which triggers browser validation.
|
|
50
|
-
*/
|
|
51
|
-
this.required = false;
|
|
52
|
-
/**
|
|
53
|
-
* Marks the input field as required for accessibility purposes without triggering
|
|
54
|
-
* native HTML validation. Use this when implementing custom validation logic.
|
|
55
|
-
* @note When set, this uses `aria-required` instead of the native `required` attribute.
|
|
56
|
-
* This allows developers to implement custom validation while maintaining accessibility.
|
|
57
|
-
* @note If this prop is not explicitly set, the component will check for the HTML attribute
|
|
58
|
-
* 'aria-required' directly to determine if it should be applied.
|
|
59
|
-
*/
|
|
60
|
-
this.ariaRequiredAttr = false;
|
|
61
|
-
/**
|
|
62
|
-
* Display the input field's content without allowing users to change it.
|
|
63
|
-
*/
|
|
64
|
-
this.readonly = false;
|
|
65
|
-
/**
|
|
66
|
-
* Disables the input field.
|
|
67
|
-
*/
|
|
68
|
-
this.disabled = false;
|
|
69
|
-
/**
|
|
70
|
-
* Alters the input field's appearance to indicate an error, helping users
|
|
71
|
-
* identify fields that need correction.
|
|
72
|
-
* @validator error
|
|
73
|
-
*/
|
|
74
|
-
this.error = false;
|
|
75
|
-
/**
|
|
76
|
-
* Defines the maximum height of the multiselect list when open.
|
|
77
|
-
*/
|
|
78
|
-
this.maxHeight = '';
|
|
79
|
-
/**
|
|
80
|
-
* State of the multiselect popover.
|
|
81
|
-
*/
|
|
82
|
-
this.open = false;
|
|
83
|
-
/**
|
|
84
|
-
* Allows the field to stretch and fill the entire width of its container.
|
|
85
|
-
*/
|
|
86
|
-
this.fluid = false;
|
|
87
|
-
/**
|
|
88
|
-
* Specifies the selected values of the multiselect field.
|
|
89
|
-
* This is the canonical value for the component and is used for form submission.
|
|
90
|
-
*/
|
|
91
|
-
this.value = [];
|
|
92
|
-
/**
|
|
93
|
-
* Enables or disables the filtering feature for the multiselect items.
|
|
94
|
-
*/
|
|
95
|
-
this.filterable = false;
|
|
96
|
-
/**
|
|
97
|
-
* The text to display when no items match the filter.
|
|
98
|
-
*/
|
|
99
|
-
this.emptyResult = 'No results found';
|
|
100
|
-
/**
|
|
101
|
-
* Delay in milliseconds before the search is triggered when typing in the filter input.
|
|
102
|
-
* @default 300
|
|
103
|
-
*/
|
|
104
|
-
this.debounceDelay = 300;
|
|
105
|
-
/**
|
|
106
|
-
* Applies focus to the input field as soon as the component is mounted. This
|
|
107
|
-
* is equivalent to setting the native autofocus attribute on an <input>
|
|
108
|
-
* element.
|
|
109
|
-
*/
|
|
110
|
-
this.autofocus = false;
|
|
111
|
-
/**
|
|
112
|
-
* Text for the badge showing the number of selected items.
|
|
113
|
-
*/
|
|
114
|
-
this.badgeLabel = '';
|
|
115
|
-
/**
|
|
116
|
-
* The text entered by the user for filtering multiselect items.
|
|
117
|
-
*/
|
|
118
|
-
this.filterText = '';
|
|
119
|
-
/**
|
|
120
|
-
* Enables or disables the "Select All / Deselect All" toggle functionality.
|
|
121
|
-
*/
|
|
122
|
-
this.enableSelectAll = false;
|
|
123
|
-
/**
|
|
124
|
-
* Text for the "Select All" button.
|
|
125
|
-
*/
|
|
126
|
-
this.selectAllLabel = 'Select/deselect all';
|
|
127
|
-
/**
|
|
128
|
-
* Text for the "Deselect All" button.
|
|
129
|
-
*/
|
|
130
|
-
this.deselectAllLabel = 'Select/deselect all';
|
|
131
|
-
/**
|
|
132
|
-
* Filter mode for multiselect search:
|
|
133
|
-
* - 'strict': Simple substring matching (normalized includes)
|
|
134
|
-
* - 'smart': Token-based matching (all query tokens must exist, order ignored)
|
|
135
|
-
* - 'fuzzy': Typo-tolerant matching using Fuse.js (runs in Web Worker)
|
|
136
|
-
* @default 'strict'
|
|
137
|
-
*/
|
|
138
|
-
this.filterMode = 'strict';
|
|
139
|
-
/**
|
|
140
|
-
* Maximum number of results to display. Protects UI performance on large datasets.
|
|
141
|
-
* Values are clamped between 10 and 500 (hard cap).
|
|
142
|
-
* @default 25
|
|
143
|
-
*/
|
|
144
|
-
this.maxResults = 25;
|
|
145
|
-
/**
|
|
146
|
-
* Minimum number of characters required before filtering starts.
|
|
147
|
-
* Useful for preventing overwhelming results on very large datasets.
|
|
148
|
-
* @default 0
|
|
149
|
-
*/
|
|
150
|
-
this.startFilterAt = 0;
|
|
151
|
-
/**
|
|
152
|
-
* Number of items above which filtering is offloaded to a Web Worker.
|
|
153
|
-
* This keeps the main thread responsive for large datasets.
|
|
154
|
-
* @default 2000
|
|
155
|
-
*/
|
|
156
|
-
this.workerThreshold = 2000;
|
|
157
|
-
/**
|
|
158
|
-
* Threshold for fuzzy matching (0-1). Lower values are stricter.
|
|
159
|
-
* Only applies when filterMode is 'fuzzy'.
|
|
160
|
-
* @default 0.3
|
|
161
|
-
* @see {@link https://fusejs.io/api/options.html#threshold} Fuse.js threshold documentation
|
|
162
|
-
*/
|
|
163
|
-
this.fuzzyThreshold = 0.3;
|
|
164
|
-
//#endregion PROPERTIES
|
|
165
|
-
/****************************************************************************/
|
|
166
|
-
//#region STATE
|
|
167
|
-
/**
|
|
168
|
-
* Sorted options for display.
|
|
169
|
-
*/
|
|
170
|
-
this.sortedOptions = [];
|
|
171
|
-
this.isHandlingEscape = false;
|
|
172
|
-
/**
|
|
173
|
-
* Indicates whether the current filter has visible results.
|
|
174
|
-
* Used to control the visibility of the "Select All" button.
|
|
175
|
-
*/
|
|
176
|
-
this.hasFilterResults = true;
|
|
177
|
-
/**
|
|
178
|
-
* Controls the visibility of the select all section.
|
|
179
|
-
*/
|
|
180
|
-
this.isSelectAllSectionVisible = true;
|
|
181
|
-
/**
|
|
182
|
-
* Whether search results were truncated due to maxResults limit.
|
|
183
|
-
*/
|
|
184
|
-
this.resultsTruncated = false;
|
|
185
|
-
/**
|
|
186
|
-
* Total number of matches before truncation.
|
|
187
|
-
*/
|
|
188
|
-
this.totalResults = 0;
|
|
189
|
-
/**
|
|
190
|
-
* Whether a worker search is in progress.
|
|
191
|
-
*/
|
|
192
|
-
this.isSearching = false;
|
|
193
|
-
// (filterItems handles both options and slots mode)
|
|
194
|
-
/**
|
|
195
|
-
* Handle badge close for options mode.
|
|
196
|
-
*/
|
|
197
|
-
this.handleBadgeCloseOptions = () => {
|
|
198
|
-
this.value = [];
|
|
199
|
-
this.valueChanged.emit(this.value);
|
|
200
|
-
// Uncheck all elements
|
|
201
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
202
|
-
items.forEach(item => {
|
|
203
|
-
item.checked = false;
|
|
204
|
-
item.style.display = '';
|
|
205
|
-
});
|
|
206
|
-
// Reorder options without the divider since there are no selected elements
|
|
207
|
-
this.options = this.options.filter(option => !option.isDivider);
|
|
208
|
-
// Reorder options without the divider since there are no selected elements
|
|
209
|
-
this.reorderOptionsContent();
|
|
210
|
-
};
|
|
211
|
-
/**
|
|
212
|
-
* Handle badge close for slots mode.
|
|
213
|
-
*/
|
|
214
|
-
this.handleBadgeCloseSlots = () => {
|
|
215
|
-
this.value = [];
|
|
216
|
-
this.valueChanged.emit(this.value);
|
|
217
|
-
// Uncheck all elements
|
|
218
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
219
|
-
items.forEach(item => {
|
|
220
|
-
item.checked = false;
|
|
221
|
-
item.style.display = '';
|
|
222
|
-
});
|
|
223
|
-
// Force DOM update before reordering
|
|
224
|
-
requestAnimationFrame(() => {
|
|
225
|
-
// Reorder slot content
|
|
226
|
-
this.reorderSlotContent();
|
|
227
|
-
});
|
|
228
|
-
};
|
|
229
|
-
/**
|
|
230
|
-
* Handle popover close
|
|
231
|
-
*/
|
|
232
|
-
this.handlePopoverClose = () => {
|
|
233
|
-
// If we are handling Escape, ignore this event
|
|
234
|
-
if (this.isHandlingEscape) {
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
// Filter reset is handled in handleOpenChanged; no need to repeat
|
|
238
|
-
};
|
|
239
|
-
/**
|
|
240
|
-
* Clear the filter text
|
|
241
|
-
*/
|
|
242
|
-
this.clearFilterText = () => {
|
|
243
|
-
if (this.filterText !== '') {
|
|
244
|
-
this.filterText = '';
|
|
245
|
-
this.filterTextChanged.emit('');
|
|
246
|
-
}
|
|
247
|
-
this.resetFilter();
|
|
248
|
-
this.hasFilterResults = true;
|
|
249
|
-
};
|
|
250
|
-
/**
|
|
251
|
-
* Handle input blur for options mode.
|
|
252
|
-
*/
|
|
253
|
-
this.handleInputBlurOptions = () => {
|
|
254
|
-
setTimeout(() => {
|
|
255
|
-
if (this.preventBlurClose) {
|
|
256
|
-
this.preventBlurClose = false;
|
|
257
|
-
return; // Don't close the popover
|
|
258
|
-
}
|
|
259
|
-
if (!this.el.contains(document.activeElement)) {
|
|
260
|
-
this.open = false; // Close the popover on blur
|
|
261
|
-
if (this.filterable) {
|
|
262
|
-
this.clearFilterText(); // Clear filter text on blur
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}, 150);
|
|
266
|
-
};
|
|
267
|
-
/**
|
|
268
|
-
* Handle click on the input container for options mode.
|
|
269
|
-
* @param {MouseEvent} event - The click event.
|
|
270
|
-
*/
|
|
271
|
-
this.handleInputContainerClickOptions = (event) => {
|
|
272
|
-
if (this.disabled || this.readonly) {
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
const target = event.target;
|
|
276
|
-
if (target.tagName === 'P' || target.tagName === 'SPAN') {
|
|
277
|
-
this.open = true;
|
|
278
|
-
const inputContainer = this.el.querySelector('.input-container');
|
|
279
|
-
if (inputContainer) {
|
|
280
|
-
inputContainer.classList.add('focus-within');
|
|
281
|
-
const removeFocusWithin = () => {
|
|
282
|
-
inputContainer.classList.remove('focus-within');
|
|
283
|
-
};
|
|
284
|
-
this.popoverElement.addEventListener('hide', removeFocusWithin);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
};
|
|
288
|
-
/**
|
|
289
|
-
* Handle click on the input container for slots mode.
|
|
290
|
-
* @param {MouseEvent} event - The click event.
|
|
291
|
-
*/
|
|
292
|
-
this.handleInputContainerClickSlots = (event) => {
|
|
293
|
-
if (this.disabled || this.readonly) {
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
const target = event.target;
|
|
297
|
-
if (target.tagName === 'P' || target.tagName === 'SPAN') {
|
|
298
|
-
this.open = true;
|
|
299
|
-
const inputContainer = this.el.querySelector('.input-container');
|
|
300
|
-
if (inputContainer) {
|
|
301
|
-
inputContainer.classList.add('focus-within');
|
|
302
|
-
const removeFocusWithin = () => {
|
|
303
|
-
inputContainer.classList.remove('focus-within');
|
|
304
|
-
};
|
|
305
|
-
this.popoverElement.addEventListener('hide', removeFocusWithin);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
};
|
|
309
|
-
/**
|
|
310
|
-
* Handle input change for options mode.
|
|
311
|
-
* @param {Event} event - The input event.
|
|
312
|
-
*/
|
|
313
|
-
this.handleInputOptions = (event) => {
|
|
314
|
-
if (!this.filterable)
|
|
315
|
-
return;
|
|
316
|
-
if (this.disabled || this.readonly) {
|
|
317
|
-
return;
|
|
318
|
-
}
|
|
319
|
-
const input = event.target;
|
|
320
|
-
this.filterText = input.value;
|
|
321
|
-
this.filterTextChanged.emit(this.filterText);
|
|
322
|
-
// Clear any existing timer
|
|
323
|
-
if (this.debounceTimer) {
|
|
324
|
-
window.clearTimeout(this.debounceTimer);
|
|
325
|
-
}
|
|
326
|
-
// Set a new timer for filtering
|
|
327
|
-
this.debounceTimer = window.setTimeout(() => {
|
|
328
|
-
void this.filterItems();
|
|
329
|
-
}, this.debounceDelay);
|
|
330
|
-
};
|
|
331
|
-
/**
|
|
332
|
-
* Handle input change for slots mode
|
|
333
|
-
* @param {Event} event - The input event.
|
|
334
|
-
*/
|
|
335
|
-
this.handleInputSlots = (event) => {
|
|
336
|
-
if (!this.filterable)
|
|
337
|
-
return;
|
|
338
|
-
if (this.disabled || this.readonly)
|
|
339
|
-
return;
|
|
340
|
-
const input = event.target;
|
|
341
|
-
this.filterText = input.value;
|
|
342
|
-
this.filterTextChanged.emit(this.filterText);
|
|
343
|
-
// Clear any existing timer
|
|
344
|
-
if (this.debounceTimer) {
|
|
345
|
-
window.clearTimeout(this.debounceTimer);
|
|
346
|
-
}
|
|
347
|
-
// Set a new timer for filtering
|
|
348
|
-
this.debounceTimer = window.setTimeout(() => {
|
|
349
|
-
void this.filterItems();
|
|
350
|
-
}, this.debounceDelay);
|
|
351
|
-
};
|
|
352
|
-
/**
|
|
353
|
-
* Handle input focus for options mode.
|
|
354
|
-
*/
|
|
355
|
-
this.handleInputFocusOptions = () => {
|
|
356
|
-
if (this.disabled || this.readonly) {
|
|
357
|
-
return;
|
|
358
|
-
}
|
|
359
|
-
this.open = true;
|
|
360
|
-
};
|
|
361
|
-
/**
|
|
362
|
-
* Handle input focus for slots mode.
|
|
363
|
-
*/
|
|
364
|
-
this.handleInputFocusSlots = () => {
|
|
365
|
-
if (this.disabled || this.readonly) {
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
this.open = true;
|
|
369
|
-
};
|
|
370
|
-
/**
|
|
371
|
-
* Handle input blur for slots mode.
|
|
372
|
-
*/
|
|
373
|
-
this.handleInputBlurSlots = () => {
|
|
374
|
-
setTimeout(() => {
|
|
375
|
-
if (this.preventBlurClose) {
|
|
376
|
-
this.preventBlurClose = false;
|
|
377
|
-
return; // Don't close the popover
|
|
378
|
-
}
|
|
379
|
-
if (!this.el.contains(document.activeElement)) {
|
|
380
|
-
this.open = false; // Close the popover on blur
|
|
381
|
-
if (this.filterable) {
|
|
382
|
-
this.clearFilterText(); // Clear filter text on blur
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
}, 150);
|
|
386
|
-
};
|
|
387
|
-
/**
|
|
388
|
-
* Toggle the multiselect popover for options mode.
|
|
389
|
-
*/
|
|
390
|
-
this.togglePopoverOptions = () => {
|
|
391
|
-
if (this.disabled || this.readonly) {
|
|
392
|
-
return;
|
|
393
|
-
}
|
|
394
|
-
this.open = !this.open;
|
|
395
|
-
};
|
|
396
|
-
/**
|
|
397
|
-
* Toggle the multiselect popover for slots mode.
|
|
398
|
-
*/
|
|
399
|
-
this.togglePopoverSlots = () => {
|
|
400
|
-
if (this.disabled || this.readonly) {
|
|
401
|
-
return;
|
|
402
|
-
}
|
|
403
|
-
this.open = !this.open;
|
|
404
|
-
};
|
|
405
|
-
/**
|
|
406
|
-
* Toggles the selection state of all non-disabled options in options mode.
|
|
407
|
-
* Respects filtering by only selecting/deselecting visible items.
|
|
408
|
-
* @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
|
|
409
|
-
*/
|
|
410
|
-
this.toggleSelectAllOptions = (selectAll) => {
|
|
411
|
-
if (!this.options)
|
|
412
|
-
return;
|
|
413
|
-
this.isBulkOperation = true; // Set flag to suppress individual emissions
|
|
414
|
-
try {
|
|
415
|
-
// Get visible and enabled option values from DOM
|
|
416
|
-
const visibleOptionValues = this.getVisibleEnabledOptionItems();
|
|
417
|
-
if (selectAll) {
|
|
418
|
-
// Select all visible options - merge with existing selections
|
|
419
|
-
this.value = [...new Set([...this.value, ...visibleOptionValues])];
|
|
420
|
-
}
|
|
421
|
-
else {
|
|
422
|
-
// Deselect only the visible options, keep others that might be filtered out
|
|
423
|
-
this.value = this.value.filter(val => !visibleOptionValues.includes(val));
|
|
424
|
-
}
|
|
425
|
-
// Emit the change event
|
|
426
|
-
this.valueChanged.emit(this.value);
|
|
427
|
-
// Synchronize child components
|
|
428
|
-
this.syncChildComponents();
|
|
429
|
-
// Reorder content to move selected items to top
|
|
430
|
-
this.reorderOptionsContent();
|
|
431
|
-
}
|
|
432
|
-
finally {
|
|
433
|
-
// Defer reset to next frame to ensure any async child emissions are ignored
|
|
434
|
-
requestAnimationFrame(() => {
|
|
435
|
-
this.isBulkOperation = false; // Reset flag
|
|
436
|
-
});
|
|
437
|
-
}
|
|
438
|
-
};
|
|
439
|
-
/**
|
|
440
|
-
* Toggles the selection state of all non-disabled slot items.
|
|
441
|
-
* @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
|
|
442
|
-
*/
|
|
443
|
-
this.toggleSelectAllSlots = (selectAll) => {
|
|
444
|
-
if (this.options)
|
|
445
|
-
return; // Only for slots mode
|
|
446
|
-
this.isBulkOperation = true; // Set flag to suppress individual emissions
|
|
447
|
-
try {
|
|
448
|
-
// Get visible and enabled items
|
|
449
|
-
const items = this.getVisibleEnabledSlotItems();
|
|
450
|
-
if (selectAll) {
|
|
451
|
-
// Select all visible items
|
|
452
|
-
const allActiveValues = items
|
|
453
|
-
.map(item => item.getAttribute('value') || item.getAttribute('label') || '')
|
|
454
|
-
.filter(value => value !== '');
|
|
455
|
-
this.value = [...new Set([...this.value, ...allActiveValues])];
|
|
456
|
-
}
|
|
457
|
-
else {
|
|
458
|
-
// Deselect only the visible items, keep others that might be filtered out
|
|
459
|
-
const visibleValues = items
|
|
460
|
-
.map(item => item.getAttribute('value') || item.getAttribute('label') || '')
|
|
461
|
-
.filter(value => value !== '');
|
|
462
|
-
this.value = this.value.filter(val => !visibleValues.includes(val));
|
|
463
|
-
}
|
|
464
|
-
// Emit the change event
|
|
465
|
-
this.valueChanged.emit(this.value);
|
|
466
|
-
// Force synchronization with a small delay to ensure DOM is updated
|
|
467
|
-
requestAnimationFrame(() => {
|
|
468
|
-
this.syncChildComponents();
|
|
469
|
-
this.reorderSlotContent();
|
|
470
|
-
});
|
|
471
|
-
}
|
|
472
|
-
finally {
|
|
473
|
-
// Defer reset to next frame to ensure any async child emissions are ignored
|
|
474
|
-
requestAnimationFrame(() => {
|
|
475
|
-
this.isBulkOperation = false; // Reset flag
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
|
-
};
|
|
479
|
-
/**
|
|
480
|
-
* Handle click on the select all checkbox in options mode.
|
|
481
|
-
* @param {Event} event - The click event.
|
|
482
|
-
*/
|
|
483
|
-
this.handleSelectAllCheckboxOptionsClick = (event) => {
|
|
484
|
-
event.stopPropagation();
|
|
485
|
-
event.preventDefault();
|
|
486
|
-
const currentState = this.getSelectAllCheckboxStateOptions();
|
|
487
|
-
// Logic to handle the indeterminate state
|
|
488
|
-
// - unchecked → select all
|
|
489
|
-
// - indeterminate → select all (clicking on indeterminate will change to checked)
|
|
490
|
-
// - checked → deselect all
|
|
491
|
-
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
492
|
-
this.toggleSelectAllOptions(shouldSelectAll);
|
|
493
|
-
};
|
|
494
|
-
/**
|
|
495
|
-
* Handle click on the select all checkbox in slots mode.
|
|
496
|
-
* @param {Event} event - The click event.
|
|
497
|
-
*/
|
|
498
|
-
this.handleSelectAllCheckboxSlotsClick = (event) => {
|
|
499
|
-
event.stopPropagation();
|
|
500
|
-
event.preventDefault();
|
|
501
|
-
const currentState = this.getSelectAllCheckboxStateSlots();
|
|
502
|
-
// Logic to handle the indeterminate state
|
|
503
|
-
// - unchecked → select all
|
|
504
|
-
// - indeterminate → select all (clicking on indeterminate will change to checked)
|
|
505
|
-
// - checked → deselect all
|
|
506
|
-
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
507
|
-
this.toggleSelectAllSlots(shouldSelectAll);
|
|
508
|
-
};
|
|
509
|
-
this.handleMouseDownPreventBlur = () => {
|
|
510
|
-
this.preventBlurClose = true;
|
|
511
|
-
};
|
|
512
|
-
//#endregion METHODS
|
|
513
|
-
/****************************************************************************/
|
|
514
|
-
//#region RENDER
|
|
515
|
-
/**
|
|
516
|
-
* Renders the component in options mode
|
|
517
|
-
* @returns {any} The JSX for options mode
|
|
518
|
-
*/
|
|
519
|
-
this.renderOptionsMode = () => {
|
|
520
|
-
return (h(Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { htmlFor: this.inputId }, h("slot", { name: "label" }, this.label))), h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open, onOpenChanged: this.handleOpenChanged }, h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, h("slot", { name: "before-input" }), h("div", { class: "input-container-multiselect" }, h("slot", { name: "leading-input" }), (this.value?.length || 0) > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: (this.value?.length || 0) > 0, label: `${this.value?.length || 0} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value?.length || 0} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseOptions })), this.filterable || this.disabled || this.readonly ? (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.getRequiredAttributes().useNativeRequired
|
|
521
|
-
? this.required
|
|
522
|
-
: undefined, ...(this.getRequiredAttributes().ariaRequiredValue !==
|
|
523
|
-
undefined && {
|
|
524
|
-
'aria-required': String(this.getRequiredAttributes().ariaRequiredValue),
|
|
525
|
-
}), disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (h(Fragment, null, h("input", { id: this.inputId, type: "text", style: {
|
|
526
|
-
position: 'absolute',
|
|
527
|
-
opacity: '0',
|
|
528
|
-
width: '0',
|
|
529
|
-
height: '0',
|
|
530
|
-
pointerEvents: 'none',
|
|
531
|
-
}, tabIndex: -1, "aria-hidden": "true", autoComplete: this.autocomplete, name: this.name, onFocus: this.handleInputFocusOptions }), h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickOptions, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusOptions, "aria-label": this.label, "aria-controls": `${this.inputId}-listbox`, "data-scope": "focusable", role: "button" }, h("span", null, this.placeholder)))), this.error && (h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (h("nv-iconbutton", { "data-scope": "clear-filter", name: "x", size: "md", emphasis: "lower", "aria-label": "Clear filter text", tabindex: "-1", title: "Clear filter text", onMouseDown: this.handleMouseDownPreventBlur, onClick: this.clearFilterText })), 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', title: this.open ? 'Hide dropdown' : 'Show dropdown', onMouseDown: this.handleMouseDownPreventBlur, onClick: this.togglePopoverOptions })), h("slot", { name: "after-input" })), h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {}, onMouseDown: this.handleMouseDownPreventBlur }, this.shouldShowToggleAllOptionsButton() && (h("div", { class: "select-all-container" }, h("div", { class: "select-all-header" }, this.isSelectAllSectionVisible && (h("nv-fieldcheckbox", { checked: this.getSelectAllCheckboxStateOptions() === 'checked', indeterminate: this.getSelectAllCheckboxStateOptions() ===
|
|
532
|
-
'indeterminate', label: this.getSelectAllCheckboxStateOptions() === 'unchecked'
|
|
533
|
-
? this.selectAllLabel
|
|
534
|
-
: this.deselectAllLabel, onMouseDown: this.handleMouseDownPreventBlur, onClick: this.handleSelectAllCheckboxOptionsClick }))))), h("ul", { role: "listbox", "aria-multiselectable": "true" }, this.options.map(option => (h("nv-fielddropdownitemcheck", { role: "option", label: option.label, description: option.description, value: option.value, checked: (this.value || []).includes(option.value), disabled: option.disabled })))))), this.renderDescriptions()));
|
|
535
|
-
};
|
|
536
|
-
/**
|
|
537
|
-
* Renders the component in slots mode
|
|
538
|
-
* @returns {any} The JSX for slots mode
|
|
539
|
-
*/
|
|
540
|
-
this.renderSlotsMode = () => {
|
|
541
|
-
return (h(Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { htmlFor: this.inputId }, h("slot", { name: "label" }, this.label))), h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, h("slot", { name: "before-input" }), h("div", { class: "input-container-multiselect", onClick: this.handleInputContainerClickSlots }, h("slot", { name: "leading-input" }), (this.value?.length || 0) > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: (this.value?.length || 0) > 0, label: `${this.value?.length || 0} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value?.length || 0} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseSlots })), this.filterable || this.disabled || this.readonly ? (h("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.getRequiredAttributes().useNativeRequired
|
|
542
|
-
? this.required
|
|
543
|
-
: undefined, ...(this.getRequiredAttributes().ariaRequiredValue !==
|
|
544
|
-
undefined && {
|
|
545
|
-
'aria-required': String(this.getRequiredAttributes().ariaRequiredValue),
|
|
546
|
-
}), disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputSlots, onFocus: this.handleInputFocusSlots, onBlur: this.handleInputBlurSlots, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (h(Fragment, null, h("input", { id: this.inputId, type: "text", style: {
|
|
547
|
-
position: 'absolute',
|
|
548
|
-
opacity: '0',
|
|
549
|
-
width: '0',
|
|
550
|
-
height: '0',
|
|
551
|
-
pointerEvents: 'none',
|
|
552
|
-
}, tabIndex: -1, "aria-hidden": "true", autoComplete: this.autocomplete, name: this.name, onFocus: this.handleInputFocusSlots }), h("p", { id: this.inputId, class: "non-filterable-text", "aria-label": this.label, onClick: this.handleInputContainerClickSlots, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusSlots, "aria-controls": `${this.inputId}-listbox`, "data-scope": "focusable", role: "button" }, h("span", null, this.placeholder)))), this.error && (h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (h("nv-iconbutton", { name: "x", size: "md", emphasis: "lower", tabindex: "-1", onMouseDown: this.handleMouseDownPreventBlur, onClick: this.clearFilterText, "aria-label": "Clear filter text" })), 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', title: this.open ? 'Hide dropdown' : 'Show dropdown', onMouseDown: this.handleMouseDownPreventBlur, onClick: this.togglePopoverSlots })), h("slot", { name: "after-input" })), h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {}, onMouseDown: this.handleMouseDownPreventBlur }, this.shouldShowToggleAllSlotButton() && (h("div", { class: "select-all-container" }, h("div", { class: "select-all-header" }, this.isSelectAllSectionVisible && (h("nv-fieldcheckbox", { checked: this.getSelectAllCheckboxStateSlots() === 'checked', indeterminate: this.getSelectAllCheckboxStateSlots() ===
|
|
553
|
-
'indeterminate', label: this.getSelectAllCheckboxStateSlots() === 'unchecked'
|
|
554
|
-
? this.selectAllLabel
|
|
555
|
-
: this.deselectAllLabel, onMouseDown: this.handleMouseDownPreventBlur, onClick: this.handleSelectAllCheckboxSlotsClick }))))), h("slot", { name: "content" }))), this.renderDescriptions()));
|
|
556
|
-
};
|
|
557
|
-
}
|
|
558
|
-
//#endregion EVENTS
|
|
559
|
-
/****************************************************************************/
|
|
560
|
-
//#region WATCHERS
|
|
561
|
-
handleOptionsChange(newValue) {
|
|
562
|
-
if (!newValue)
|
|
563
|
-
return;
|
|
564
|
-
// If the parent has set a value prop, use it. Otherwise, derive from checked options.
|
|
565
|
-
// (Assume: if value is undefined, it's not set by parent; if it's an array, it's set.)
|
|
566
|
-
if (!this.value || this.value.length === 0) {
|
|
567
|
-
this.value = newValue
|
|
568
|
-
.filter(option => option.checked)
|
|
569
|
-
.map(option => option.value);
|
|
570
|
-
}
|
|
571
|
-
else {
|
|
572
|
-
// If value is set, ensure checked states in options match value
|
|
573
|
-
newValue.forEach(option => {
|
|
574
|
-
option.checked = (this.value || []).includes(option.value);
|
|
575
|
-
});
|
|
576
|
-
}
|
|
577
|
-
this.reorderOptionsContent();
|
|
578
|
-
}
|
|
579
|
-
watchValueHandler() {
|
|
580
|
-
// Skip processing during bulk operations
|
|
581
|
-
if (this.isBulkOperation) {
|
|
582
|
-
return;
|
|
583
|
-
}
|
|
584
|
-
// Synchronize child components when value changes programmatically
|
|
585
|
-
if (this.el && this.el.isConnected) {
|
|
586
|
-
this.syncChildComponents();
|
|
587
|
-
}
|
|
588
|
-
// Also, update options checked state if options exist
|
|
589
|
-
if (this.options) {
|
|
590
|
-
this.options.forEach(option => {
|
|
591
|
-
option.checked = (this.value || []).includes(option.value);
|
|
592
|
-
});
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
handleOpenChange(newOpen) {
|
|
596
|
-
// React to external changes, e.g., reorder or filter
|
|
597
|
-
if (newOpen) {
|
|
598
|
-
if (this.options) {
|
|
599
|
-
this.reorderOptionsContent();
|
|
600
|
-
}
|
|
601
|
-
else {
|
|
602
|
-
this.reorderSlotContent();
|
|
603
|
-
}
|
|
604
|
-
if (this.filterText) {
|
|
605
|
-
this.filterItems();
|
|
606
|
-
}
|
|
607
|
-
}
|
|
608
|
-
}
|
|
609
|
-
//#endregion WATCHERS
|
|
610
|
-
/****************************************************************************/
|
|
611
|
-
//#region LISTENERS
|
|
612
|
-
/* eslint-disable nova/native-event-listener */
|
|
613
|
-
/**
|
|
614
|
-
* Listen for the `itemChecked` event emitted by child items.
|
|
615
|
-
* @param {CustomEvent} event - The event object containing the selected value and its checked state.
|
|
616
|
-
*/
|
|
617
|
-
handleItemChecked(event) {
|
|
618
|
-
event.stopPropagation();
|
|
619
|
-
if (this.disabled || this.readonly || this.isBulkOperation) {
|
|
620
|
-
// Skip processing itemChecked events during bulk operations
|
|
621
|
-
return;
|
|
622
|
-
}
|
|
623
|
-
const { value, checked } = event.detail;
|
|
624
|
-
if (value !== undefined && value !== null) {
|
|
625
|
-
const newValue = [...(this.value || [])];
|
|
626
|
-
const valueIndex = newValue.indexOf(value);
|
|
627
|
-
let hasChanged = false;
|
|
628
|
-
if (checked && valueIndex === -1) {
|
|
629
|
-
newValue.push(value);
|
|
630
|
-
hasChanged = true;
|
|
631
|
-
}
|
|
632
|
-
else if (!checked && valueIndex > -1) {
|
|
633
|
-
newValue.splice(valueIndex, 1);
|
|
634
|
-
hasChanged = true;
|
|
635
|
-
}
|
|
636
|
-
if (hasChanged) {
|
|
637
|
-
this.value = newValue;
|
|
638
|
-
this.valueChanged.emit(this.value);
|
|
639
|
-
this.syncChildComponents();
|
|
640
|
-
}
|
|
641
|
-
// Preserve the filter text in the input
|
|
642
|
-
if (this.filterable && this.inputElement) {
|
|
643
|
-
this.inputElement.value = this.filterText;
|
|
644
|
-
}
|
|
645
|
-
}
|
|
646
|
-
else {
|
|
647
|
-
console.warn('[Event:itemChecked] Received itemChecked event with undefined or null value'); // Warning log
|
|
648
|
-
}
|
|
649
|
-
}
|
|
650
|
-
/* eslint-enable nova/native-event-listener */
|
|
651
|
-
// Add a listener for the slot content
|
|
652
|
-
handleSlotChange(event) {
|
|
653
|
-
// Check: we only want to reorder if it's the "content" slot
|
|
654
|
-
const slot = event.target;
|
|
655
|
-
if (slot && slot.name === 'content') {
|
|
656
|
-
// To give other platforms (VueJS, React, etc.) time to insert all their items,
|
|
657
|
-
// we place the reorder in a requestAnimationFrame
|
|
658
|
-
requestAnimationFrame(() => {
|
|
659
|
-
this.reorderSlotContent();
|
|
660
|
-
});
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
/**
|
|
664
|
-
* Handle keyboard events & arrow key navigation.
|
|
665
|
-
* If the multiselect is not open, opens it and focuses on the first item if the list is not filterable.
|
|
666
|
-
* If the multiselect is open, handles arrow key navigation and closes it if the focus is outside the component.
|
|
667
|
-
* @param {KeyboardEvent} event - The keyboard event.
|
|
668
|
-
*/
|
|
669
|
-
async handleKeyDown(event) {
|
|
670
|
-
if (event.key === 'Escape') {
|
|
671
|
-
this.open = false;
|
|
672
|
-
return;
|
|
673
|
-
}
|
|
674
|
-
if (!this.open) {
|
|
675
|
-
if (event.key === 'ArrowDown') {
|
|
676
|
-
this.open = true;
|
|
677
|
-
// Focus on the first item if the list is not filterable
|
|
678
|
-
if (!this.filterable) {
|
|
679
|
-
requestAnimationFrame(() => {
|
|
680
|
-
this.focusFirstItem();
|
|
681
|
-
});
|
|
682
|
-
}
|
|
683
|
-
event.preventDefault();
|
|
684
|
-
return;
|
|
685
|
-
}
|
|
686
|
-
return;
|
|
687
|
-
}
|
|
688
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck:not([style*="display: none"])'));
|
|
689
|
-
if (items.length === 0) {
|
|
690
|
-
console.warn('No visible items found to navigate');
|
|
691
|
-
return;
|
|
692
|
-
}
|
|
693
|
-
let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
|
|
694
|
-
if (event.key === 'ArrowDown') {
|
|
695
|
-
event.preventDefault();
|
|
696
|
-
currentIndex =
|
|
697
|
-
currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;
|
|
698
|
-
this.updateHighlightedItem(items, currentIndex);
|
|
699
|
-
}
|
|
700
|
-
else if (event.key === 'ArrowUp') {
|
|
701
|
-
event.preventDefault();
|
|
702
|
-
currentIndex =
|
|
703
|
-
currentIndex === -1
|
|
704
|
-
? items.length - 1
|
|
705
|
-
: (currentIndex - 1 + items.length) % items.length;
|
|
706
|
-
this.updateHighlightedItem(items, currentIndex);
|
|
707
|
-
}
|
|
708
|
-
else if (event.key === 'Enter' && currentIndex >= 0) {
|
|
709
|
-
event.preventDefault();
|
|
710
|
-
const selectedItem = items[currentIndex];
|
|
711
|
-
// Toggle the checked state
|
|
712
|
-
const isCurrentlyChecked = selectedItem.hasAttribute('checked');
|
|
713
|
-
selectedItem.checked = !isCurrentlyChecked;
|
|
714
|
-
// Trigger a click event to ensure proper event handling
|
|
715
|
-
selectedItem.dispatchEvent(new MouseEvent('click', {
|
|
716
|
-
view: window,
|
|
717
|
-
bubbles: true,
|
|
718
|
-
cancelable: true,
|
|
719
|
-
}));
|
|
720
|
-
}
|
|
721
|
-
else if (event.key === 'Escape') {
|
|
722
|
-
event.preventDefault();
|
|
723
|
-
event.stopPropagation(); // Prevent the event from propagating to the popover
|
|
724
|
-
// Do the reorder and wait a bit before closing
|
|
725
|
-
const handleEscape = async () => {
|
|
726
|
-
this.isHandlingEscape = true; // Disable the hide listener
|
|
727
|
-
if (this.options) {
|
|
728
|
-
this.reorderOptionsContent();
|
|
729
|
-
}
|
|
730
|
-
else {
|
|
731
|
-
this.reorderSlotContent();
|
|
732
|
-
}
|
|
733
|
-
// Wait for the reorder to be applied
|
|
734
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
735
|
-
// Reactivate the hide listener after a short delay
|
|
736
|
-
setTimeout(() => {
|
|
737
|
-
this.isHandlingEscape = false;
|
|
738
|
-
this.open = false;
|
|
739
|
-
}, 150);
|
|
740
|
-
if (this.inputElement) {
|
|
741
|
-
this.inputElement.blur();
|
|
742
|
-
}
|
|
743
|
-
};
|
|
744
|
-
await handleEscape();
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
//#endregion LISTENERS
|
|
748
|
-
/****************************************************************************/
|
|
749
|
-
//#region LIFECYCLE
|
|
750
|
-
/**
|
|
751
|
-
* Subscribe to click outside event.
|
|
752
|
-
*/
|
|
753
|
-
connectedCallback() {
|
|
754
|
-
// Bind once and reuse the same reference for add/remove to avoid leaks
|
|
755
|
-
if (!this._boundHandleClickOutside) {
|
|
756
|
-
this._boundHandleClickOutside = this.handleClickOutside.bind(this);
|
|
757
|
-
}
|
|
758
|
-
document.addEventListener('click', this._boundHandleClickOutside);
|
|
759
|
-
}
|
|
760
|
-
/**
|
|
761
|
-
* Set the mode state and handle options change.
|
|
762
|
-
*/
|
|
763
|
-
componentWillLoad() {
|
|
764
|
-
// Don't call handleOptionsChange if we are in slots mode
|
|
765
|
-
if (this.options) {
|
|
766
|
-
this.handleOptionsChange(this.options);
|
|
767
|
-
}
|
|
768
|
-
// Specific initialization for slots mode
|
|
769
|
-
if (!this.options) {
|
|
770
|
-
// Initialize value from checked slotted children
|
|
771
|
-
this.initializeValueFromSlots();
|
|
772
|
-
// Use a microtask to ensure DOM is ready
|
|
773
|
-
Promise.resolve().then(() => {
|
|
774
|
-
// Synchronize child components
|
|
775
|
-
this.syncChildComponents();
|
|
776
|
-
// Force a reorder after initialization
|
|
777
|
-
requestAnimationFrame(() => {
|
|
778
|
-
this.reorderSlotContent();
|
|
779
|
-
});
|
|
780
|
-
});
|
|
781
|
-
}
|
|
782
|
-
// Initialize the sorted options array with the parsed options for initial rendering
|
|
783
|
-
if (this.options) {
|
|
784
|
-
this.sortedOptions = [...(this.options ?? [])];
|
|
785
|
-
}
|
|
786
|
-
// Reset filter if needed
|
|
787
|
-
if (!this.filterText) {
|
|
788
|
-
this.resetFilter();
|
|
789
|
-
}
|
|
790
|
-
// Initialize filter results state
|
|
791
|
-
this.hasFilterResults = true;
|
|
792
|
-
}
|
|
793
|
-
/**
|
|
794
|
-
* Force reorder if options mode in componentDidLoad because of the initial render not trigger @watch
|
|
795
|
-
*/
|
|
796
|
-
componentDidLoad() {
|
|
797
|
-
if (this.options) {
|
|
798
|
-
this.handleOptionsChange(this.options);
|
|
799
|
-
}
|
|
800
|
-
// Final synchronization of child components after everything is loaded
|
|
801
|
-
this.syncChildComponents();
|
|
802
|
-
// For slots mode, ensure value is initialized from checked children if not already
|
|
803
|
-
if (!this.options) {
|
|
804
|
-
this.initializeValueFromSlots();
|
|
805
|
-
this.syncChildComponents();
|
|
806
|
-
}
|
|
807
|
-
// Build the search index on load
|
|
808
|
-
this.rebuildSearchIndex();
|
|
809
|
-
}
|
|
810
|
-
/**
|
|
811
|
-
* Unsubscribe from click outside event and clean up worker.
|
|
812
|
-
*/
|
|
813
|
-
disconnectedCallback() {
|
|
814
|
-
if (this._boundHandleClickOutside) {
|
|
815
|
-
document.removeEventListener('click', this._boundHandleClickOutside);
|
|
816
|
-
}
|
|
817
|
-
this.terminateSearchWorker();
|
|
818
|
-
}
|
|
819
|
-
//#endregion LIFECYCLE
|
|
820
|
-
/****************************************************************************/
|
|
821
|
-
//#region METHODS
|
|
822
|
-
/**
|
|
823
|
-
* Retrieves the current filter text entered by the user.
|
|
824
|
-
* @returns {string} The filter text.
|
|
825
|
-
*/
|
|
826
|
-
async getFilterText() {
|
|
827
|
-
return this.filterText;
|
|
828
|
-
}
|
|
829
|
-
/**
|
|
830
|
-
* Reset the filter and make all items visible.
|
|
831
|
-
*/
|
|
832
|
-
async resetFilter() {
|
|
833
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
834
|
-
// Reset visibility state of all dropdown items
|
|
835
|
-
items.forEach(item => {
|
|
836
|
-
item.style.display = '';
|
|
837
|
-
});
|
|
838
|
-
// Clean up filter-related UI elements
|
|
839
|
-
const ul = this.el.querySelector('ul');
|
|
840
|
-
if (ul) {
|
|
841
|
-
const emptyMessage = ul.querySelector('[data-empty]');
|
|
842
|
-
if (emptyMessage)
|
|
843
|
-
emptyMessage.remove();
|
|
844
|
-
// Reorder with divider if needed
|
|
845
|
-
const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
846
|
-
const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
847
|
-
if (selectedItems.length > 0) {
|
|
848
|
-
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
849
|
-
}
|
|
850
|
-
}
|
|
851
|
-
// Reset filter results state
|
|
852
|
-
this.hasFilterResults = true;
|
|
853
|
-
}
|
|
854
|
-
/**
|
|
855
|
-
* Returns the list of selected values.
|
|
856
|
-
* @returns {string[]} The selected values.
|
|
857
|
-
*/
|
|
858
|
-
async getSelectedValues() {
|
|
859
|
-
return this.value;
|
|
860
|
-
}
|
|
861
|
-
/**
|
|
862
|
-
* Select all visible and enabled items.
|
|
863
|
-
* Works for both options and slots mode.
|
|
864
|
-
* @returns {Promise<void>}
|
|
865
|
-
*/
|
|
866
|
-
async selectAll() {
|
|
867
|
-
if (this.disabled || this.readonly)
|
|
868
|
-
return;
|
|
869
|
-
if (this.options) {
|
|
870
|
-
this.toggleSelectAllOptions(true);
|
|
871
|
-
}
|
|
872
|
-
else {
|
|
873
|
-
this.toggleSelectAllSlots(true);
|
|
874
|
-
}
|
|
875
|
-
}
|
|
876
|
-
/**
|
|
877
|
-
* Deselect all visible and enabled items.
|
|
878
|
-
* Works for both options and slots mode.
|
|
879
|
-
* @returns {Promise<void>}
|
|
880
|
-
*/
|
|
881
|
-
async deselectAll() {
|
|
882
|
-
if (this.disabled || this.readonly)
|
|
883
|
-
return;
|
|
884
|
-
if (this.options) {
|
|
885
|
-
this.toggleSelectAllOptions(false);
|
|
886
|
-
}
|
|
887
|
-
else {
|
|
888
|
-
this.toggleSelectAllSlots(false);
|
|
889
|
-
}
|
|
890
|
-
}
|
|
891
|
-
/**
|
|
892
|
-
* Toggle selection state of all visible and enabled items.
|
|
893
|
-
* If all items are selected, deselects all. Otherwise, selects all.
|
|
894
|
-
* Works for both options and slots mode.
|
|
895
|
-
* @returns {Promise<void>}
|
|
896
|
-
*/
|
|
897
|
-
async toggleSelectAll() {
|
|
898
|
-
if (this.disabled || this.readonly)
|
|
899
|
-
return;
|
|
900
|
-
const currentState = this.options
|
|
901
|
-
? this.getSelectAllCheckboxStateOptions()
|
|
902
|
-
: this.getSelectAllCheckboxStateSlots();
|
|
903
|
-
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
904
|
-
if (this.options) {
|
|
905
|
-
this.toggleSelectAllOptions(shouldSelectAll);
|
|
906
|
-
}
|
|
907
|
-
else {
|
|
908
|
-
this.toggleSelectAllSlots(shouldSelectAll);
|
|
909
|
-
}
|
|
910
|
-
}
|
|
911
|
-
/**
|
|
912
|
-
* Reorder the content of the slot.
|
|
913
|
-
*/
|
|
914
|
-
reorderSlotContent() {
|
|
915
|
-
if (this.options)
|
|
916
|
-
return;
|
|
917
|
-
const ul = this.el.querySelector('ul');
|
|
918
|
-
if (!ul)
|
|
919
|
-
return;
|
|
920
|
-
// Remove all existing <hr class="multiselect-divider">
|
|
921
|
-
ul.querySelectorAll('hr.multiselect-divider').forEach(divider => divider.remove());
|
|
922
|
-
// Retrieve all items (not hidden)
|
|
923
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
|
|
924
|
-
// If you possibly have a "No results" message:
|
|
925
|
-
const hasEmptyMessage = ul.querySelector('[data-empty]');
|
|
926
|
-
if (hasEmptyMessage) {
|
|
927
|
-
// if there is a "No results found" message, do not reorder
|
|
928
|
-
return;
|
|
929
|
-
}
|
|
930
|
-
// Separate checked vs unchecked
|
|
931
|
-
const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
932
|
-
const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
933
|
-
// Reinsert CHECKED items FIRST
|
|
934
|
-
// appendChild() moves the element without recreating it
|
|
935
|
-
// this is not trigger a re-rendering of the component in the platforms
|
|
936
|
-
selectedItems.forEach(item => {
|
|
937
|
-
ul.appendChild(item); // <-- The <li> (or <nv-fielddropdownitemcheck>) is just "moved" to the end of the list
|
|
938
|
-
});
|
|
939
|
-
// Add a divider if needed
|
|
940
|
-
if (selectedItems.length > 0 && unselectedItems.length > 0) {
|
|
941
|
-
const divider = document.createElement('hr');
|
|
942
|
-
divider.className = 'multiselect-divider';
|
|
943
|
-
ul.appendChild(divider);
|
|
944
|
-
}
|
|
945
|
-
// Reinsert UNCHECKED items at the end
|
|
946
|
-
unselectedItems.forEach(item => {
|
|
947
|
-
ul.appendChild(item);
|
|
948
|
-
});
|
|
949
|
-
}
|
|
950
|
-
/**
|
|
951
|
-
* Reorder the content for options mode with async handling
|
|
952
|
-
*/
|
|
953
|
-
reorderOptionsContent() {
|
|
954
|
-
const ul = this.el.querySelector('ul');
|
|
955
|
-
if (!ul)
|
|
956
|
-
return;
|
|
957
|
-
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
|
|
958
|
-
const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
959
|
-
const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
960
|
-
// Reorder the elements
|
|
961
|
-
selectedItems.forEach(item => ul.appendChild(item));
|
|
962
|
-
unselectedItems.forEach(item => ul.appendChild(item));
|
|
963
|
-
// Manage the divider after the reordering
|
|
964
|
-
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
965
|
-
}
|
|
966
|
-
/**
|
|
967
|
-
* Filter multiselect items based on the text entered by the user.
|
|
968
|
-
* Uses the search engine for optimized filtering with configurable modes.
|
|
969
|
-
*/
|
|
970
|
-
async filterItems() {
|
|
971
|
-
const ul = this.el.querySelector('ul');
|
|
972
|
-
if (!ul)
|
|
973
|
-
return;
|
|
974
|
-
this.effectiveFilterMode = getEffectiveFilterMode(this.filterMode);
|
|
975
|
-
// Remove existing empty message and truncation message if any
|
|
976
|
-
ul.querySelector('[data-empty]')?.remove();
|
|
977
|
-
ul.querySelector('[data-truncated]')?.remove();
|
|
978
|
-
// Reset truncation state
|
|
979
|
-
this.resultsTruncated = false;
|
|
980
|
-
this.totalResults = 0;
|
|
981
|
-
if (!this.filterText.trim() ||
|
|
982
|
-
this.filterText.length < this.startFilterAt) {
|
|
983
|
-
// Reset display and apply maxResults limit
|
|
984
|
-
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
985
|
-
const effectiveMaxResults = clampMaxResults(this.maxResults);
|
|
986
|
-
let visibleCount = 0;
|
|
987
|
-
items.forEach(item => {
|
|
988
|
-
if (visibleCount < effectiveMaxResults) {
|
|
989
|
-
item.style.display = '';
|
|
990
|
-
visibleCount++;
|
|
991
|
-
}
|
|
992
|
-
else {
|
|
993
|
-
item.style.display = 'none';
|
|
994
|
-
}
|
|
995
|
-
});
|
|
996
|
-
// Track truncation
|
|
997
|
-
this.totalResults = items.length;
|
|
998
|
-
this.resultsTruncated = items.length > effectiveMaxResults;
|
|
999
|
-
this.hasFilterResults = visibleCount > 0;
|
|
1000
|
-
// Reorder with divider
|
|
1001
|
-
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
1002
|
-
const selectedItems = visibleItems.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
1003
|
-
const unselectedItems = visibleItems.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
1004
|
-
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
1005
|
-
if (this.resultsTruncated) {
|
|
1006
|
-
this.addTruncatedMessage(ul, effectiveMaxResults, items.length);
|
|
1007
|
-
}
|
|
1008
|
-
return;
|
|
1009
|
-
}
|
|
1010
|
-
// Use advanced search engine
|
|
1011
|
-
const result = await this.performAdvancedSearch();
|
|
1012
|
-
this.resultsTruncated = result.truncated;
|
|
1013
|
-
this.totalResults = result.total;
|
|
1014
|
-
// Create a Set of matching IDs for fast lookup
|
|
1015
|
-
const matchingIds = new Set(result.ids);
|
|
1016
|
-
let hasVisibleItems = false;
|
|
1017
|
-
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1018
|
-
const effectiveMaxResults = clampMaxResults(this.maxResults);
|
|
1019
|
-
let visibleCount = 0;
|
|
1020
|
-
items.forEach(item => {
|
|
1021
|
-
const itemValue = item.getAttribute('value') || '';
|
|
1022
|
-
// Check if this item matches
|
|
1023
|
-
const isMatch = matchingIds.has(itemValue);
|
|
1024
|
-
if (isMatch && visibleCount < effectiveMaxResults) {
|
|
1025
|
-
item.style.display = '';
|
|
1026
|
-
hasVisibleItems = true;
|
|
1027
|
-
visibleCount++;
|
|
1028
|
-
}
|
|
1029
|
-
else {
|
|
1030
|
-
item.style.display = 'none';
|
|
1031
|
-
}
|
|
1032
|
-
});
|
|
1033
|
-
// Manage the divider with the visible items
|
|
1034
|
-
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
1035
|
-
const visibleSelected = visibleItems.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
1036
|
-
const visibleUnselected = visibleItems.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
1037
|
-
this.manageDivider(ul, visibleSelected, visibleUnselected);
|
|
1038
|
-
// Add empty message if no items match the filter
|
|
1039
|
-
this.hasFilterResults = hasVisibleItems;
|
|
1040
|
-
if (!hasVisibleItems) {
|
|
1041
|
-
const emptyMessage = document.createElement('li');
|
|
1042
|
-
emptyMessage.setAttribute('data-empty', 'true');
|
|
1043
|
-
emptyMessage.textContent = this.emptyResult;
|
|
1044
|
-
emptyMessage.classList.add('no-results-message');
|
|
1045
|
-
ul.appendChild(emptyMessage);
|
|
1046
|
-
}
|
|
1047
|
-
else if (result.truncated) {
|
|
1048
|
-
this.addTruncatedMessage(ul, result.ids.length, result.total);
|
|
1049
|
-
}
|
|
1050
|
-
if (this.options) {
|
|
1051
|
-
this.reorderOptionsContent();
|
|
1052
|
-
}
|
|
1053
|
-
else {
|
|
1054
|
-
this.reorderSlotContent();
|
|
1055
|
-
}
|
|
1056
|
-
}
|
|
1057
|
-
/**
|
|
1058
|
-
* Rebuilds the search index from current items (options prop or slot items).
|
|
1059
|
-
*/
|
|
1060
|
-
async rebuildSearchIndex() {
|
|
1061
|
-
// Build raw items array for indexing
|
|
1062
|
-
this.rawItems = [];
|
|
1063
|
-
if (this.options?.length) {
|
|
1064
|
-
this.options.forEach((opt, index) => {
|
|
1065
|
-
if (!opt.isDivider) {
|
|
1066
|
-
this.rawItems.push({
|
|
1067
|
-
id: opt.value || `opt-${index}`,
|
|
1068
|
-
label: opt.label || opt.value || '',
|
|
1069
|
-
});
|
|
1070
|
-
}
|
|
1071
|
-
});
|
|
1072
|
-
}
|
|
1073
|
-
else {
|
|
1074
|
-
// Use slot items
|
|
1075
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1076
|
-
items.forEach((item, index) => {
|
|
1077
|
-
this.rawItems.push({
|
|
1078
|
-
id: item.getAttribute('value') || `item-${index}`,
|
|
1079
|
-
label: item.getAttribute('label') || item.textContent?.trim() || '',
|
|
1080
|
-
});
|
|
1081
|
-
});
|
|
1082
|
-
}
|
|
1083
|
-
// Build local index for main-thread search
|
|
1084
|
-
this.indexedItems = buildIndex(this.rawItems);
|
|
1085
|
-
// Determine effective filter mode
|
|
1086
|
-
this.effectiveFilterMode = getEffectiveFilterMode(this.filterMode);
|
|
1087
|
-
// Initialize worker if needed
|
|
1088
|
-
const itemCount = this.rawItems.length;
|
|
1089
|
-
const threshold = clampWorkerThreshold(this.workerThreshold);
|
|
1090
|
-
if (shouldUseWorker(itemCount, this.effectiveFilterMode, threshold)) {
|
|
1091
|
-
await this.initSearchWorker();
|
|
1092
|
-
}
|
|
1093
|
-
else {
|
|
1094
|
-
this.terminateSearchWorker();
|
|
1095
|
-
}
|
|
1096
|
-
}
|
|
1097
|
-
/**
|
|
1098
|
-
* Initializes the Web Worker for search operations.
|
|
1099
|
-
* Falls back to main thread if worker is not available.
|
|
1100
|
-
* Note: Fuzzy search now works on main thread with Fuse.js, so no mode change needed.
|
|
1101
|
-
*/
|
|
1102
|
-
async initSearchWorker() {
|
|
1103
|
-
if (!isWorkerSupported()) {
|
|
1104
|
-
// Workers not supported - will use main thread (fuzzy still works with Fuse.js)
|
|
1105
|
-
return;
|
|
1106
|
-
}
|
|
1107
|
-
if (!this.workerClient) {
|
|
1108
|
-
this.workerClient = new SearchWorkerClient();
|
|
1109
|
-
// No fallback mode change needed - fuzzy works on main thread now
|
|
1110
|
-
}
|
|
1111
|
-
// Init will silently handle fallback if worker can't be created
|
|
1112
|
-
await this.workerClient.init(this.rawItems);
|
|
1113
|
-
}
|
|
1114
|
-
/**
|
|
1115
|
-
* Terminates the Web Worker and cleans up resources.
|
|
1116
|
-
*/
|
|
1117
|
-
terminateSearchWorker() {
|
|
1118
|
-
if (this.workerClient) {
|
|
1119
|
-
this.workerClient.terminate();
|
|
1120
|
-
this.workerClient = null;
|
|
1121
|
-
}
|
|
1122
|
-
}
|
|
1123
|
-
/**
|
|
1124
|
-
* Performs a search over the indexed items, using a Web Worker when available
|
|
1125
|
-
* and falling back to the main thread otherwise.
|
|
1126
|
-
* @returns {Promise<SearchResult>} Resolves with the search results.
|
|
1127
|
-
*/
|
|
1128
|
-
async performAdvancedSearch() {
|
|
1129
|
-
// Ensure index is built
|
|
1130
|
-
if (!this.indexedItems.length) {
|
|
1131
|
-
await this.rebuildSearchIndex();
|
|
1132
|
-
}
|
|
1133
|
-
const itemCount = this.rawItems.length;
|
|
1134
|
-
const threshold = clampWorkerThreshold(this.workerThreshold);
|
|
1135
|
-
const useWorker = shouldUseWorker(itemCount, this.effectiveFilterMode, threshold);
|
|
1136
|
-
if (useWorker && this.workerClient?.isReady) {
|
|
1137
|
-
this.isSearching = true;
|
|
1138
|
-
try {
|
|
1139
|
-
return await this.workerClient.search(this.filterText, this.effectiveFilterMode, this.maxResults, this.fuzzyThreshold);
|
|
1140
|
-
}
|
|
1141
|
-
catch (error) {
|
|
1142
|
-
console.error('Worker search failed:', error);
|
|
1143
|
-
// Fall back to main thread (fuzzy now works with Fuse.js)
|
|
1144
|
-
return search(this.indexedItems, {
|
|
1145
|
-
query: this.filterText,
|
|
1146
|
-
filterMode: this.effectiveFilterMode,
|
|
1147
|
-
maxResults: this.maxResults,
|
|
1148
|
-
startFilterAt: this.startFilterAt,
|
|
1149
|
-
fuzzyThreshold: this.fuzzyThreshold,
|
|
1150
|
-
});
|
|
1151
|
-
}
|
|
1152
|
-
finally {
|
|
1153
|
-
this.isSearching = false;
|
|
1154
|
-
}
|
|
1155
|
-
}
|
|
1156
|
-
// Use main thread search (fuzzy now works with Fuse.js)
|
|
1157
|
-
return search(this.indexedItems, {
|
|
1158
|
-
query: this.filterText,
|
|
1159
|
-
filterMode: this.effectiveFilterMode,
|
|
1160
|
-
maxResults: this.maxResults,
|
|
1161
|
-
startFilterAt: this.startFilterAt,
|
|
1162
|
-
fuzzyThreshold: this.fuzzyThreshold,
|
|
1163
|
-
});
|
|
1164
|
-
}
|
|
1165
|
-
/**
|
|
1166
|
-
* Adds a non-selectable list item showing truncation information.
|
|
1167
|
-
* @param {HTMLElement} ul - The list element to which the truncation message will be appended.
|
|
1168
|
-
* @param {number} shown - The number of items currently shown.
|
|
1169
|
-
* @param {number} total - The total number of available items.
|
|
1170
|
-
*/
|
|
1171
|
-
addTruncatedMessage(ul, shown, total) {
|
|
1172
|
-
// Remove existing truncation message
|
|
1173
|
-
ul.querySelector('[data-truncated]')?.remove();
|
|
1174
|
-
// Get the text template: use provided text or auto-detect from locale
|
|
1175
|
-
const textTemplate = this.truncatedResultsText || getTruncatedResultsText(this.locale);
|
|
1176
|
-
const truncatedItem = document.createElement('li');
|
|
1177
|
-
truncatedItem.setAttribute('data-truncated', 'true');
|
|
1178
|
-
truncatedItem.className = 'truncated-message no-results-message';
|
|
1179
|
-
truncatedItem.textContent = formatTruncatedResults(textTemplate, shown, total);
|
|
1180
|
-
ul.appendChild(truncatedItem);
|
|
1181
|
-
}
|
|
1182
|
-
handleClickOutside(event) {
|
|
1183
|
-
if (this.el.contains(event.target) ||
|
|
1184
|
-
(this.inputElement && this.inputElement.contains(event.target))) {
|
|
1185
|
-
return;
|
|
1186
|
-
}
|
|
1187
|
-
this.open = false;
|
|
1188
|
-
}
|
|
1189
|
-
/**
|
|
1190
|
-
* Updates the highlighted item in the dropdown list.
|
|
1191
|
-
*
|
|
1192
|
-
* @param {(HTMLNvFielddropdownitemElement | HTMLNvFielddropdownitemcheckElement)[]} items - The items to update.
|
|
1193
|
-
* @param {number} index - The index of the item to highlight.
|
|
1194
|
-
*/
|
|
1195
|
-
updateHighlightedItem(items, index) {
|
|
1196
|
-
items.forEach((item, i) => {
|
|
1197
|
-
if (i === index) {
|
|
1198
|
-
item.classList.add('highlighted');
|
|
1199
|
-
item.setAttribute('tabindex', '0');
|
|
1200
|
-
item.scrollIntoView({ block: 'nearest' });
|
|
1201
|
-
// Focus on the nv-fieldcheckbox inside
|
|
1202
|
-
const checkbox = item.querySelector('nv-fieldcheckbox');
|
|
1203
|
-
if (checkbox) {
|
|
1204
|
-
checkbox.focus();
|
|
1205
|
-
}
|
|
1206
|
-
}
|
|
1207
|
-
else {
|
|
1208
|
-
item.classList.remove('highlighted');
|
|
1209
|
-
item.setAttribute('tabindex', '-1');
|
|
1210
|
-
}
|
|
1211
|
-
});
|
|
1212
|
-
}
|
|
1213
|
-
/**
|
|
1214
|
-
* Focus on the first item in the dropdown list.
|
|
1215
|
-
*/
|
|
1216
|
-
focusFirstItem() {
|
|
1217
|
-
const firstItem = this.el.querySelector('nv-fielddropdownitemcheck:not([style*="display: none"])');
|
|
1218
|
-
if (firstItem) {
|
|
1219
|
-
firstItem.setAttribute('tabindex', '0');
|
|
1220
|
-
firstItem.classList.add('highlighted');
|
|
1221
|
-
firstItem.scrollIntoView({ block: 'nearest' });
|
|
1222
|
-
// Focus on the nv-fieldcheckbox inside
|
|
1223
|
-
const checkbox = firstItem.querySelector('nv-fieldcheckbox');
|
|
1224
|
-
if (checkbox) {
|
|
1225
|
-
checkbox.focus();
|
|
1226
|
-
}
|
|
1227
|
-
}
|
|
1228
|
-
else {
|
|
1229
|
-
console.warn('No visible first item found to focus');
|
|
1230
|
-
}
|
|
1231
|
-
}
|
|
1232
|
-
manageDivider(ul, selectedItems, unselectedItems) {
|
|
1233
|
-
let divider = ul.querySelector('hr.multiselect-divider');
|
|
1234
|
-
if (!divider) {
|
|
1235
|
-
divider = document.createElement('hr');
|
|
1236
|
-
divider.className = 'multiselect-divider';
|
|
1237
|
-
ul.appendChild(divider);
|
|
1238
|
-
}
|
|
1239
|
-
const shouldShowDivider = selectedItems.length > 0 && unselectedItems.length > 0;
|
|
1240
|
-
if (shouldShowDivider) {
|
|
1241
|
-
// Place the divider after the last selected item
|
|
1242
|
-
const lastSelectedItem = selectedItems[selectedItems.length - 1];
|
|
1243
|
-
lastSelectedItem.after(divider);
|
|
1244
|
-
divider.style.display = '';
|
|
1245
|
-
}
|
|
1246
|
-
else {
|
|
1247
|
-
divider.style.display = 'none';
|
|
1248
|
-
}
|
|
1249
|
-
}
|
|
1250
|
-
/**
|
|
1251
|
-
* Synchronizes the checked state of all child nv-fielddropdownitemcheck components
|
|
1252
|
-
* with the current selectedValues state.
|
|
1253
|
-
*/
|
|
1254
|
-
syncChildComponents() {
|
|
1255
|
-
// Early return if element is not ready
|
|
1256
|
-
if (!this.el || !this.el.isConnected) {
|
|
1257
|
-
return;
|
|
1258
|
-
}
|
|
1259
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1260
|
-
items.forEach(item => {
|
|
1261
|
-
// Get the effective value: use explicit value if present, otherwise use label
|
|
1262
|
-
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
1263
|
-
const shouldBeChecked = (this.value || []).includes(itemValue);
|
|
1264
|
-
// Only update if the checked state differs to avoid triggering unnecessary events
|
|
1265
|
-
if (item.checked !== shouldBeChecked) {
|
|
1266
|
-
// Set attribute and property, but avoid triggering itemChecked during bulk
|
|
1267
|
-
if (this.isBulkOperation) {
|
|
1268
|
-
// Directly update the DOM attribute to avoid triggering the setter
|
|
1269
|
-
if (shouldBeChecked) {
|
|
1270
|
-
item.setAttribute('checked', '');
|
|
1271
|
-
}
|
|
1272
|
-
else {
|
|
1273
|
-
item.removeAttribute('checked');
|
|
1274
|
-
}
|
|
1275
|
-
// Update internal state without emitting events (assumes nv-fielddropdownitemcheck respects this)
|
|
1276
|
-
item.checked = shouldBeChecked;
|
|
1277
|
-
}
|
|
1278
|
-
else {
|
|
1279
|
-
item.checked = shouldBeChecked;
|
|
1280
|
-
}
|
|
1281
|
-
}
|
|
1282
|
-
});
|
|
1283
|
-
}
|
|
1284
|
-
/**
|
|
1285
|
-
* Gets visible and enabled slot items using consistent logic.
|
|
1286
|
-
* @returns {Element[]} Array of visible and enabled items
|
|
1287
|
-
*/
|
|
1288
|
-
getVisibleEnabledSlotItems() {
|
|
1289
|
-
const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1290
|
-
return allItems.filter(item => {
|
|
1291
|
-
const isHidden = item.style.display === 'none';
|
|
1292
|
-
const isDisabled = item.hasAttribute('disabled');
|
|
1293
|
-
return !isHidden && !isDisabled;
|
|
1294
|
-
});
|
|
1295
|
-
}
|
|
1296
|
-
/**
|
|
1297
|
-
* Gets visible and enabled option items by checking DOM elements.
|
|
1298
|
-
* @returns {string[]} Array of visible and enabled option values
|
|
1299
|
-
*/
|
|
1300
|
-
getVisibleEnabledOptionItems() {
|
|
1301
|
-
const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1302
|
-
const visibleItems = allItems.filter(item => {
|
|
1303
|
-
const isHidden = item.style.display === 'none' ||
|
|
1304
|
-
item.getAttribute('aria-hidden') === 'true';
|
|
1305
|
-
const isDisabled = item.hasAttribute('disabled') ||
|
|
1306
|
-
item.getAttribute('disabled') === 'true';
|
|
1307
|
-
return !isHidden && !isDisabled;
|
|
1308
|
-
});
|
|
1309
|
-
return visibleItems
|
|
1310
|
-
.map(item => item.getAttribute('value') || '')
|
|
1311
|
-
.filter(value => value !== '');
|
|
1312
|
-
}
|
|
1313
|
-
/**
|
|
1314
|
-
* Determines if the toggle all button should be shown in options mode.
|
|
1315
|
-
* @returns {boolean} True if there are visible items and no "No results found" message
|
|
1316
|
-
*/
|
|
1317
|
-
shouldShowToggleAllOptionsButton() {
|
|
1318
|
-
if (!this.options)
|
|
1319
|
-
return false; // Only for options mode
|
|
1320
|
-
return this.enableSelectAll && this.hasFilterResults;
|
|
1321
|
-
}
|
|
1322
|
-
/**
|
|
1323
|
-
* Gets the checkbox state for the select all checkbox in options mode.
|
|
1324
|
-
* @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
|
|
1325
|
-
*/
|
|
1326
|
-
getSelectAllCheckboxStateOptions() {
|
|
1327
|
-
if (!this.options)
|
|
1328
|
-
return 'unchecked';
|
|
1329
|
-
// Get visible and enabled option values from DOM
|
|
1330
|
-
const visibleOptionValues = this.getVisibleEnabledOptionItems();
|
|
1331
|
-
if (visibleOptionValues.length === 0)
|
|
1332
|
-
return 'unchecked';
|
|
1333
|
-
const selectedVisibleOptions = visibleOptionValues.filter(value => (this.value || []).includes(value));
|
|
1334
|
-
if (selectedVisibleOptions.length === 0)
|
|
1335
|
-
return 'unchecked';
|
|
1336
|
-
if (selectedVisibleOptions.length === visibleOptionValues.length)
|
|
1337
|
-
return 'checked';
|
|
1338
|
-
return 'indeterminate';
|
|
1339
|
-
}
|
|
1340
|
-
/**
|
|
1341
|
-
* Gets the checkbox state for the select all checkbox in slots mode.
|
|
1342
|
-
* @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
|
|
1343
|
-
*/
|
|
1344
|
-
getSelectAllCheckboxStateSlots() {
|
|
1345
|
-
if (this.options)
|
|
1346
|
-
return 'unchecked';
|
|
1347
|
-
// Get all visible and enabled items
|
|
1348
|
-
const items = this.getVisibleEnabledSlotItems();
|
|
1349
|
-
if (items.length === 0)
|
|
1350
|
-
return 'unchecked';
|
|
1351
|
-
const selectedItems = items.filter(item => {
|
|
1352
|
-
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
1353
|
-
return itemValue !== '' && (this.value || []).includes(itemValue);
|
|
1354
|
-
});
|
|
1355
|
-
if (selectedItems.length === 0)
|
|
1356
|
-
return 'unchecked';
|
|
1357
|
-
if (selectedItems.length === items.length)
|
|
1358
|
-
return 'checked';
|
|
1359
|
-
return 'indeterminate';
|
|
1360
|
-
}
|
|
1361
|
-
/**
|
|
1362
|
-
* Determines if the toggle all button should be shown in slots mode.
|
|
1363
|
-
* @returns {boolean} True if there are visible items and no "No results found" message
|
|
1364
|
-
*/
|
|
1365
|
-
shouldShowToggleAllSlotButton() {
|
|
1366
|
-
if (this.options)
|
|
1367
|
-
return false; // Only for slots mode
|
|
1368
|
-
return this.enableSelectAll && this.hasFilterResults;
|
|
1369
|
-
}
|
|
1370
|
-
/**
|
|
1371
|
-
* Initializes the value array from checked slotted nv-fielddropdownitemcheck elements (slots mode only).
|
|
1372
|
-
*/
|
|
1373
|
-
initializeValueFromSlots() {
|
|
1374
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1375
|
-
// Values from checked slot children
|
|
1376
|
-
const checkedValues = items
|
|
1377
|
-
.filter(item => item.hasAttribute('checked'))
|
|
1378
|
-
.map(item => item.getAttribute('value') || item.getAttribute('label') || '');
|
|
1379
|
-
// Combine with current this.value (set by code), ensuring uniqueness
|
|
1380
|
-
this.value = Array.from(new Set([...(this.value || []), ...checkedValues]));
|
|
1381
|
-
}
|
|
1382
|
-
/**
|
|
1383
|
-
* Calculates aria-required and native required values based on props and attributes
|
|
1384
|
-
* @returns {object} Object with ariaRequiredValue and useNativeRequired
|
|
1385
|
-
*/
|
|
1386
|
-
getRequiredAttributes() {
|
|
1387
|
-
// Check aria-required from multiple sources:
|
|
1388
|
-
// 1. JavaScript prop (most reliable)
|
|
1389
|
-
// 2. HTML attribute 'aria-required' (direct HTML)
|
|
1390
|
-
// 3. HTML attribute 'aria-required-attr' (from JSX kebab-case conversion)
|
|
1391
|
-
// Check aria-required from multiple sources:
|
|
1392
|
-
// 1. HTML attribute 'aria-required' (direct HTML) - check if explicitly set
|
|
1393
|
-
// 2. JavaScript prop (when prop is explicitly set via JavaScript)
|
|
1394
|
-
// We use hasAttribute to determine if the attribute was explicitly set by the user,
|
|
1395
|
-
// since the prop now defaults to false (to maintain Blazor compatibility)
|
|
1396
|
-
const hasAriaRequiredAttr = this.el.hasAttribute('aria-required') ||
|
|
1397
|
-
this.el.hasAttribute('aria-required-attr');
|
|
1398
|
-
const ariaRequiredFromAttr = hasAriaRequiredAttr
|
|
1399
|
-
? this.el.getAttribute('aria-required') ||
|
|
1400
|
-
this.el.getAttribute('aria-required-attr')
|
|
1401
|
-
: null;
|
|
1402
|
-
// Use aria-required if the attribute was explicitly set
|
|
1403
|
-
// With reflect: true, setting the prop will also set the attribute
|
|
1404
|
-
const useAriaRequired = hasAriaRequiredAttr;
|
|
1405
|
-
// Determine the value: use attribute if it exists (prop reflects to attribute via reflect: true)
|
|
1406
|
-
// If attribute doesn't exist, the prop was never set and we don't use aria-required
|
|
1407
|
-
const ariaRequiredAttrValue = hasAriaRequiredAttr
|
|
1408
|
-
? ariaRequiredFromAttr
|
|
1409
|
-
: null;
|
|
1410
|
-
// Determine which attributes to use
|
|
1411
|
-
// If aria-required HTML attribute is present, use it (convert string to boolean)
|
|
1412
|
-
// If required is set and aria-required is not "false", use native required
|
|
1413
|
-
// If aria-required is "false", don't use native required even if required is set
|
|
1414
|
-
const ariaRequiredValue = useAriaRequired
|
|
1415
|
-
? ariaRequiredAttrValue === 'true' || ariaRequiredAttrValue === ''
|
|
1416
|
-
: undefined;
|
|
1417
|
-
const useNativeRequired = this.required && (!useAriaRequired || ariaRequiredValue === true);
|
|
1418
|
-
return {
|
|
1419
|
-
ariaRequiredValue,
|
|
1420
|
-
useNativeRequired,
|
|
1421
|
-
};
|
|
1422
|
-
}
|
|
1423
|
-
/**
|
|
1424
|
-
* Emitted when the input loses focus.
|
|
1425
|
-
* @param {CustomEvent<boolean>} event - The event object containing the focus state.
|
|
1426
|
-
*/
|
|
1427
|
-
handleOpenChanged(event) {
|
|
1428
|
-
// Only update if open state differs to avoid redundant actions
|
|
1429
|
-
if (this.open !== event.detail) {
|
|
1430
|
-
this.open = event.detail;
|
|
1431
|
-
if (this.open) {
|
|
1432
|
-
// Filter items only if there is filter text
|
|
1433
|
-
if (this.filterText) {
|
|
1434
|
-
this.filterItems();
|
|
1435
|
-
}
|
|
1436
|
-
}
|
|
1437
|
-
else {
|
|
1438
|
-
// Clear filter text on close if filterable
|
|
1439
|
-
if (this.filterable) {
|
|
1440
|
-
this.clearFilterText();
|
|
1441
|
-
}
|
|
1442
|
-
this.handlePopoverClose();
|
|
1443
|
-
}
|
|
1444
|
-
// Reorder content as needed
|
|
1445
|
-
if (this.options) {
|
|
1446
|
-
this.reorderOptionsContent();
|
|
1447
|
-
}
|
|
1448
|
-
else {
|
|
1449
|
-
this.reorderSlotContent();
|
|
1450
|
-
}
|
|
1451
|
-
}
|
|
1452
|
-
}
|
|
1453
|
-
/**
|
|
1454
|
-
* Renders description and error description sections
|
|
1455
|
-
* @returns {any} The JSX for descriptions
|
|
1456
|
-
*/
|
|
1457
|
-
renderDescriptions() {
|
|
1458
|
-
return [
|
|
1459
|
-
(this.description || this.el.querySelector('[slot="description"]')) && (h("div", { class: "description" }, h("slot", { name: "description" }, this.description))),
|
|
1460
|
-
(this.errorDescription ||
|
|
1461
|
-
this.el.querySelector('[slot="error-description"]')) && (h("div", { hidden: !this.error, class: "error-description" }, h("slot", { name: "error-description" }, this.errorDescription))),
|
|
1462
|
-
];
|
|
1463
|
-
}
|
|
1464
|
-
/**
|
|
1465
|
-
* Main render method that decides which mode to render
|
|
1466
|
-
* @returns {any} The JSX for the component
|
|
1467
|
-
*/
|
|
1468
|
-
render() {
|
|
1469
|
-
return this.options ? this.renderOptionsMode() : this.renderSlotsMode();
|
|
1470
|
-
}
|
|
1471
|
-
static get formAssociated() { return true; }
|
|
1472
|
-
get el() { return this; }
|
|
1473
|
-
static get watchers() { return {
|
|
1474
|
-
"options": ["handleOptionsChange"],
|
|
1475
|
-
"value": ["watchValueHandler"],
|
|
1476
|
-
"open": ["handleOpenChange"]
|
|
1477
|
-
}; }
|
|
1478
|
-
static get style() { return nvFieldmultiselectCss; }
|
|
1479
|
-
}, [324, "nv-fieldmultiselect", {
|
|
1480
|
-
"label": [513],
|
|
1481
|
-
"inputId": [513, "input-id"],
|
|
1482
|
-
"name": [513],
|
|
1483
|
-
"description": [513],
|
|
1484
|
-
"placeholder": [513],
|
|
1485
|
-
"autocomplete": [513],
|
|
1486
|
-
"required": [516],
|
|
1487
|
-
"ariaRequiredAttr": [516, "aria-required"],
|
|
1488
|
-
"readonly": [516],
|
|
1489
|
-
"disabled": [516],
|
|
1490
|
-
"error": [516],
|
|
1491
|
-
"errorDescription": [513, "error-description"],
|
|
1492
|
-
"maxHeight": [513, "max-height"],
|
|
1493
|
-
"open": [1540],
|
|
1494
|
-
"fluid": [516],
|
|
1495
|
-
"options": [1040],
|
|
1496
|
-
"value": [1040],
|
|
1497
|
-
"filterable": [516],
|
|
1498
|
-
"emptyResult": [513, "empty-result"],
|
|
1499
|
-
"debounceDelay": [514, "debounce-delay"],
|
|
1500
|
-
"autofocus": [516],
|
|
1501
|
-
"badgeLabel": [513, "badge-label"],
|
|
1502
|
-
"filterText": [1537, "filter-text"],
|
|
1503
|
-
"enableSelectAll": [516, "enable-select-all"],
|
|
1504
|
-
"selectAllLabel": [513, "select-all-label"],
|
|
1505
|
-
"deselectAllLabel": [513, "deselect-all-label"],
|
|
1506
|
-
"filterMode": [513, "filter-mode"],
|
|
1507
|
-
"maxResults": [514, "max-results"],
|
|
1508
|
-
"startFilterAt": [514, "start-filter-at"],
|
|
1509
|
-
"locale": [513],
|
|
1510
|
-
"truncatedResultsText": [513, "truncated-results-text"],
|
|
1511
|
-
"workerThreshold": [514, "worker-threshold"],
|
|
1512
|
-
"fuzzyThreshold": [514, "fuzzy-threshold"],
|
|
1513
|
-
"sortedOptions": [32],
|
|
1514
|
-
"isHandlingEscape": [32],
|
|
1515
|
-
"hasFilterResults": [32],
|
|
1516
|
-
"isSelectAllSectionVisible": [32],
|
|
1517
|
-
"resultsTruncated": [32],
|
|
1518
|
-
"totalResults": [32],
|
|
1519
|
-
"isSearching": [32],
|
|
1520
|
-
"getFilterText": [64],
|
|
1521
|
-
"resetFilter": [64],
|
|
1522
|
-
"getSelectedValues": [64],
|
|
1523
|
-
"selectAll": [64],
|
|
1524
|
-
"deselectAll": [64],
|
|
1525
|
-
"toggleSelectAll": [64]
|
|
1526
|
-
}, [[0, "itemChecked", "handleItemChecked"], [0, "slotchange", "handleSlotChange"], [0, "keydown", "handleKeyDown"]], {
|
|
1527
|
-
"options": ["handleOptionsChange"],
|
|
1528
|
-
"value": ["watchValueHandler"],
|
|
1529
|
-
"open": ["handleOpenChange"]
|
|
1530
|
-
}]);
|
|
1531
|
-
function defineCustomElement$1() {
|
|
1532
|
-
if (typeof customElements === "undefined") {
|
|
1533
|
-
return;
|
|
1534
|
-
}
|
|
1535
|
-
const components = ["nv-fieldmultiselect", "nv-badge", "nv-fieldcheckbox", "nv-fielddropdownitemcheck", "nv-icon", "nv-iconbutton", "nv-loader", "nv-popover"];
|
|
1536
|
-
components.forEach(tagName => { switch (tagName) {
|
|
1537
|
-
case "nv-fieldmultiselect":
|
|
1538
|
-
if (!customElements.get(tagName)) {
|
|
1539
|
-
customElements.define(tagName, NvFieldmultiselect$1);
|
|
1540
|
-
}
|
|
1541
|
-
break;
|
|
1542
|
-
case "nv-badge":
|
|
1543
|
-
if (!customElements.get(tagName)) {
|
|
1544
|
-
defineCustomElement$8();
|
|
1545
|
-
}
|
|
1546
|
-
break;
|
|
1547
|
-
case "nv-fieldcheckbox":
|
|
1548
|
-
if (!customElements.get(tagName)) {
|
|
1549
|
-
defineCustomElement$7();
|
|
1550
|
-
}
|
|
1551
|
-
break;
|
|
1552
|
-
case "nv-fielddropdownitemcheck":
|
|
1553
|
-
if (!customElements.get(tagName)) {
|
|
1554
|
-
defineCustomElement$6();
|
|
1555
|
-
}
|
|
1556
|
-
break;
|
|
1557
|
-
case "nv-icon":
|
|
1558
|
-
if (!customElements.get(tagName)) {
|
|
1559
|
-
defineCustomElement$5();
|
|
1560
|
-
}
|
|
1561
|
-
break;
|
|
1562
|
-
case "nv-iconbutton":
|
|
1563
|
-
if (!customElements.get(tagName)) {
|
|
1564
|
-
defineCustomElement$4();
|
|
1565
|
-
}
|
|
1566
|
-
break;
|
|
1567
|
-
case "nv-loader":
|
|
1568
|
-
if (!customElements.get(tagName)) {
|
|
1569
|
-
defineCustomElement$3();
|
|
1570
|
-
}
|
|
1571
|
-
break;
|
|
1572
|
-
case "nv-popover":
|
|
1573
|
-
if (!customElements.get(tagName)) {
|
|
1574
|
-
defineCustomElement$2();
|
|
1575
|
-
}
|
|
1576
|
-
break;
|
|
1577
|
-
} });
|
|
1578
|
-
}
|
|
1579
|
-
defineCustomElement$1();
|
|
1580
|
-
|
|
1581
|
-
const NvFieldmultiselect = NvFieldmultiselect$1;
|
|
1582
|
-
const defineCustomElement = defineCustomElement$1;
|
|
1583
|
-
|
|
1584
|
-
export { NvFieldmultiselect, defineCustomElement };
|
|
1585
|
-
//# sourceMappingURL=nv-fieldmultiselect.js.map
|
|
1586
|
-
|
|
1587
|
-
//# sourceMappingURL=nv-fieldmultiselect.js.map
|
|
1
|
+
import{t,p as e,H as i,c as s,h as o,F as l,d as n}from"./p-iXsbKJzR.js";import{k as r,h as a,f as d,q as h,l as c,S as u,s as f,i as m}from"./p-BaF3Tuua.js";import{g as p,f as v}from"./p-CR9MpYzU.js";import{d as b}from"./p-laRga5dw.js";import{d as g}from"./p-D15RdWEG.js";import{d as w}from"./p-Bh6WGsHA.js";import{d as k}from"./p-jZF_Ggmx.js";import{d as y}from"./p-DDqZBSGn.js";import{d as x}from"./p-CAKTe96z.js";import{d as A}from"./p-DHNSuxz-.js";import{v as C}from"./p-BdYh22OP.js";const S=e(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.valueChanged=s(this,"valueChanged",3),this.filterTextChanged=s(this,"filterTextChanged",3),this.isBulkOperation=!1,this.preventBlurClose=!1,this.indexedItems=[],this.rawItems=[],this.workerClient=null,this.effectiveFilterMode="strict",this.inputId=C(),this.autocomplete="off",this.required=!1,this.ariaRequiredAttr=!1,this.readonly=!1,this.disabled=!1,this.error=!1,this.maxHeight="",this.open=!1,this.fluid=!1,this.value=[],this.filterable=!1,this.emptyResult="No results found",this.debounceDelay=300,this.autofocus=!1,this.badgeLabel="",this.filterText="",this.enableSelectAll=!1,this.selectAllLabel="Select/deselect all",this.deselectAllLabel="Select/deselect all",this.filterMode="strict",this.maxResults=25,this.startFilterAt=0,this.workerThreshold=2e3,this.fuzzyThreshold=.3,this.sortedOptions=[],this.isHandlingEscape=!1,this.hasFilterResults=!0,this.isSelectAllSectionVisible=!0,this.resultsTruncated=!1,this.totalResults=0,this.isSearching=!1,this.handleBadgeCloseOptions=()=>{this.value=[],this.valueChanged.emit(this.value),Array.from(this.el.querySelectorAll("nv-fielddropdownitemcheck")).forEach((t=>{t.checked=!1,t.style.display=""})),this.options=this.options.filter((t=>!t.isDivider)),this.reorderOptionsContent()},this.handleBadgeCloseSlots=()=>{this.value=[],this.valueChanged.emit(this.value),Array.from(this.el.querySelectorAll("nv-fielddropdownitemcheck")).forEach((t=>{t.checked=!1,t.style.display=""})),requestAnimationFrame((()=>{this.reorderSlotContent()}))},this.handlePopoverClose=()=>{},this.clearFilterText=()=>{""!==this.filterText&&(this.filterText="",this.filterTextChanged.emit("")),this.resetFilter(),this.hasFilterResults=!0},this.handleInputBlurOptions=()=>{setTimeout((()=>{this.preventBlurClose?this.preventBlurClose=!1:this.el.contains(document.activeElement)||(this.open=!1,this.filterable&&this.clearFilterText())}),150)},this.handleInputContainerClickOptions=t=>{if(this.disabled||this.readonly)return;const e=t.target;if("P"===e.tagName||"SPAN"===e.tagName){this.open=!0;const t=this.el.querySelector(".input-container");t&&(t.classList.add("focus-within"),this.popoverElement.addEventListener("hide",(()=>{t.classList.remove("focus-within")})))}},this.handleInputContainerClickSlots=t=>{if(this.disabled||this.readonly)return;const e=t.target;if("P"===e.tagName||"SPAN"===e.tagName){this.open=!0;const t=this.el.querySelector(".input-container");t&&(t.classList.add("focus-within"),this.popoverElement.addEventListener("hide",(()=>{t.classList.remove("focus-within")})))}},this.handleInputOptions=t=>{this.filterable&&(this.disabled||this.readonly||(this.filterText=t.target.value,this.filterTextChanged.emit(this.filterText),this.debounceTimer&&window.clearTimeout(this.debounceTimer),this.debounceTimer=window.setTimeout((()=>{this.filterItems()}),this.debounceDelay)))},this.handleInputSlots=t=>{this.filterable&&(this.disabled||this.readonly||(this.filterText=t.target.value,this.filterTextChanged.emit(this.filterText),this.debounceTimer&&window.clearTimeout(this.debounceTimer),this.debounceTimer=window.setTimeout((()=>{this.filterItems()}),this.debounceDelay)))},this.handleInputFocusOptions=()=>{this.disabled||this.readonly||(this.open=!0)},this.handleInputFocusSlots=()=>{this.disabled||this.readonly||(this.open=!0)},this.handleInputBlurSlots=()=>{setTimeout((()=>{this.preventBlurClose?this.preventBlurClose=!1:this.el.contains(document.activeElement)||(this.open=!1,this.filterable&&this.clearFilterText())}),150)},this.togglePopoverOptions=()=>{this.disabled||this.readonly||(this.open=!this.open)},this.togglePopoverSlots=()=>{this.disabled||this.readonly||(this.open=!this.open)},this.toggleSelectAllOptions=t=>{if(this.options){this.isBulkOperation=!0;try{const e=this.getVisibleEnabledOptionItems();this.value=t?[...new Set([...this.value,...e])]:this.value.filter((t=>!e.includes(t))),this.valueChanged.emit(this.value),this.syncChildComponents(),this.reorderOptionsContent()}finally{requestAnimationFrame((()=>{this.isBulkOperation=!1}))}}},this.toggleSelectAllSlots=t=>{if(!this.options){this.isBulkOperation=!0;try{const e=this.getVisibleEnabledSlotItems();if(t){const t=e.map((t=>t.getAttribute("value")||t.getAttribute("label")||"")).filter((t=>""!==t));this.value=[...new Set([...this.value,...t])]}else{const t=e.map((t=>t.getAttribute("value")||t.getAttribute("label")||"")).filter((t=>""!==t));this.value=this.value.filter((e=>!t.includes(e)))}this.valueChanged.emit(this.value),requestAnimationFrame((()=>{this.syncChildComponents(),this.reorderSlotContent()}))}finally{requestAnimationFrame((()=>{this.isBulkOperation=!1}))}}},this.handleSelectAllCheckboxOptionsClick=t=>{t.stopPropagation(),t.preventDefault();const e=this.getSelectAllCheckboxStateOptions();this.toggleSelectAllOptions("unchecked"===e||"indeterminate"===e)},this.handleSelectAllCheckboxSlotsClick=t=>{t.stopPropagation(),t.preventDefault();const e=this.getSelectAllCheckboxStateSlots();this.toggleSelectAllSlots("unchecked"===e||"indeterminate"===e)},this.handleMouseDownPreventBlur=()=>{this.preventBlurClose=!0},this.renderOptionsMode=()=>o(n,{"aria-label":this.label},(this.label||this.el.querySelector('[slot="label"]'))&&o("label",{htmlFor:this.inputId},o("slot",{name:"label"},this.label)),o("nv-popover",{ref:t=>this.popoverElement=t,triggerMode:"controlled",placement:"bottom-start",open:this.open,onOpenChanged:this.handleOpenChanged},o("div",{class:"input-wrapper-multiselect",slot:"trigger"},o("slot",{name:"before-input"}),o("div",{class:"input-container-multiselect"},o("slot",{name:"leading-input"}),(this.value?.length||0)>0&&o("nv-badge",{slot:"leading-input","prevent-auto-close":!0,color:"10",dismissible:(this.value?.length||0)>0,label:`${this.value?.length||0} ${this.badgeLabel}`,"aria-label":`Clear all ${this.value?.length||0} ${this.badgeLabel} items`,onCloseClicked:this.handleBadgeCloseOptions}),this.filterable||this.disabled||this.readonly?o("input",{type:"text",id:this.inputId,ref:t=>this.inputElement=t,autofocus:this.autofocus,autocomplete:this.autocomplete,placeholder:this.placeholder,name:this.name,value:this.filterText,required:this.getRequiredAttributes().useNativeRequired?this.required:void 0,...void 0!==this.getRequiredAttributes().ariaRequiredValue&&{"aria-required":this.getRequiredAttributes().ariaRequiredValue+""},disabled:this.disabled,readOnly:this.readonly,onInput:this.handleInputOptions,onFocus:this.handleInputFocusOptions,onBlur:this.handleInputBlurOptions,onKeyDown:this.handleKeyDown,"data-scope":"focusable","aria-label":this.label,"aria-controls":this.inputId+"-listbox"}):o(l,null,o("input",{id:this.inputId,type:"text",style:{position:"absolute",opacity:"0",width:"0",height:"0",pointerEvents:"none"},tabIndex:-1,"aria-hidden":"true",autoComplete:this.autocomplete,name:this.name,onFocus:this.handleInputFocusOptions}),o("p",{id:this.inputId,class:"non-filterable-text",onClick:this.handleInputContainerClickOptions,tabIndex:0,onKeyDown:this.handleKeyDown,onFocus:this.handleInputFocusOptions,"aria-label":this.label,"aria-controls":this.inputId+"-listbox","data-scope":"focusable",role:"button"},o("span",null,this.placeholder))),this.error&&o("nv-icon",{name:"alert-circle",class:"validation",size:"md"}),this.filterable&&this.filterText.length>0&&o("nv-iconbutton",{"data-scope":"clear-filter",name:"x",size:"md",emphasis:"lower","aria-label":"Clear filter text",tabindex:"-1",title:"Clear filter text",onMouseDown:this.handleMouseDownPreventBlur,onClick:this.clearFilterText}),o("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",title:this.open?"Hide dropdown":"Show dropdown",onMouseDown:this.handleMouseDownPreventBlur,onClick:this.togglePopoverOptions})),o("slot",{name:"after-input"})),o("div",{id:this.inputId+"-listbox",slot:"content",style:this.maxHeight?{maxHeight:this.maxHeight}:{},onMouseDown:this.handleMouseDownPreventBlur},this.shouldShowToggleAllOptionsButton()&&o("div",{class:"select-all-container"},o("div",{class:"select-all-header"},this.isSelectAllSectionVisible&&o("nv-fieldcheckbox",{checked:"checked"===this.getSelectAllCheckboxStateOptions(),indeterminate:"indeterminate"===this.getSelectAllCheckboxStateOptions(),label:"unchecked"===this.getSelectAllCheckboxStateOptions()?this.selectAllLabel:this.deselectAllLabel,onMouseDown:this.handleMouseDownPreventBlur,onClick:this.handleSelectAllCheckboxOptionsClick}))),o("ul",{role:"listbox","aria-multiselectable":"true"},this.options.map((t=>o("nv-fielddropdownitemcheck",{role:"option",label:t.label,description:t.description,value:t.value,checked:(this.value||[]).includes(t.value),disabled:t.disabled})))))),this.renderDescriptions()),this.renderSlotsMode=()=>o(n,{"aria-label":this.label},(this.label||this.el.querySelector('[slot="label"]'))&&o("label",{htmlFor:this.inputId},o("slot",{name:"label"},this.label)),o("nv-popover",{ref:t=>this.popoverElement=t,triggerMode:"controlled",placement:"bottom-start",open:this.open},o("div",{class:"input-wrapper-multiselect",slot:"trigger"},o("slot",{name:"before-input"}),o("div",{class:"input-container-multiselect",onClick:this.handleInputContainerClickSlots},o("slot",{name:"leading-input"}),(this.value?.length||0)>0&&o("nv-badge",{slot:"leading-input","prevent-auto-close":!0,color:"10",dismissible:(this.value?.length||0)>0,label:`${this.value?.length||0} ${this.badgeLabel}`,"aria-label":`Clear all ${this.value?.length||0} ${this.badgeLabel} items`,onCloseClicked:this.handleBadgeCloseSlots}),this.filterable||this.disabled||this.readonly?o("input",{id:this.inputId,ref:t=>this.inputElement=t,autocomplete:this.autocomplete,placeholder:this.placeholder,name:this.name,value:this.filterText,required:this.getRequiredAttributes().useNativeRequired?this.required:void 0,...void 0!==this.getRequiredAttributes().ariaRequiredValue&&{"aria-required":this.getRequiredAttributes().ariaRequiredValue+""},disabled:this.disabled,readOnly:this.readonly,onInput:this.handleInputSlots,onFocus:this.handleInputFocusSlots,onBlur:this.handleInputBlurSlots,onKeyDown:this.handleKeyDown,"data-scope":"focusable","aria-label":this.label,"aria-controls":this.inputId+"-listbox"}):o(l,null,o("input",{id:this.inputId,type:"text",style:{position:"absolute",opacity:"0",width:"0",height:"0",pointerEvents:"none"},tabIndex:-1,"aria-hidden":"true",autoComplete:this.autocomplete,name:this.name,onFocus:this.handleInputFocusSlots}),o("p",{id:this.inputId,class:"non-filterable-text","aria-label":this.label,onClick:this.handleInputContainerClickSlots,tabIndex:0,onKeyDown:this.handleKeyDown,onFocus:this.handleInputFocusSlots,"aria-controls":this.inputId+"-listbox","data-scope":"focusable",role:"button"},o("span",null,this.placeholder))),this.error&&o("nv-icon",{name:"alert-circle",class:"validation",size:"md"}),this.filterable&&this.filterText.length>0&&o("nv-iconbutton",{name:"x",size:"md",emphasis:"lower",tabindex:"-1",onMouseDown:this.handleMouseDownPreventBlur,onClick:this.clearFilterText,"aria-label":"Clear filter text"}),o("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",title:this.open?"Hide dropdown":"Show dropdown",onMouseDown:this.handleMouseDownPreventBlur,onClick:this.togglePopoverSlots})),o("slot",{name:"after-input"})),o("div",{id:this.inputId+"-listbox",slot:"content",style:this.maxHeight?{maxHeight:this.maxHeight}:{},onMouseDown:this.handleMouseDownPreventBlur},this.shouldShowToggleAllSlotButton()&&o("div",{class:"select-all-container"},o("div",{class:"select-all-header"},this.isSelectAllSectionVisible&&o("nv-fieldcheckbox",{checked:"checked"===this.getSelectAllCheckboxStateSlots(),indeterminate:"indeterminate"===this.getSelectAllCheckboxStateSlots(),label:"unchecked"===this.getSelectAllCheckboxStateSlots()?this.selectAllLabel:this.deselectAllLabel,onMouseDown:this.handleMouseDownPreventBlur,onClick:this.handleSelectAllCheckboxSlotsClick}))),o("slot",{name:"content"}))),this.renderDescriptions())}handleOptionsChange(t){t&&(this.value&&0!==this.value.length?t.forEach((t=>{t.checked=(this.value||[]).includes(t.value)})):this.value=t.filter((t=>t.checked)).map((t=>t.value)),this.reorderOptionsContent())}watchValueHandler(){this.isBulkOperation||(this.el&&this.el.isConnected&&this.syncChildComponents(),this.options&&this.options.forEach((t=>{t.checked=(this.value||[]).includes(t.value)})))}handleOpenChange(t){t&&(this.options?this.reorderOptionsContent():this.reorderSlotContent(),this.filterText&&this.filterItems())}handleItemChecked(t){if(t.stopPropagation(),this.disabled||this.readonly||this.isBulkOperation)return;const{value:e,checked:i}=t.detail;if(null!=e){const t=[...this.value||[]],s=t.indexOf(e);let o=!1;i&&-1===s?(t.push(e),o=!0):!i&&s>-1&&(t.splice(s,1),o=!0),o&&(this.value=t,this.valueChanged.emit(this.value),this.syncChildComponents()),this.filterable&&this.inputElement&&(this.inputElement.value=this.filterText)}else console.warn("[Event:itemChecked] Received itemChecked event with undefined or null value")}handleSlotChange(t){const e=t.target;e&&"content"===e.name&&requestAnimationFrame((()=>{this.reorderSlotContent()}))}async handleKeyDown(t){if("Escape"===t.key)return void(this.open=!1);if(!this.open)return"ArrowDown"===t.key?(this.open=!0,this.filterable||requestAnimationFrame((()=>{this.focusFirstItem()})),void t.preventDefault()):void 0;const e=Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck:not([style*="display: none"])'));if(0===e.length)return void console.warn("No visible items found to navigate");let i=e.findIndex((t=>t.classList.contains("highlighted")));if("ArrowDown"===t.key)t.preventDefault(),i=-1===i?0:(i+1)%e.length,this.updateHighlightedItem(e,i);else if("ArrowUp"===t.key)t.preventDefault(),i=-1===i?e.length-1:(i-1+e.length)%e.length,this.updateHighlightedItem(e,i);else if("Enter"===t.key&&i>=0){t.preventDefault();const s=e[i],o=s.hasAttribute("checked");s.checked=!o,s.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))}else if("Escape"===t.key){t.preventDefault(),t.stopPropagation();const e=async()=>{this.isHandlingEscape=!0,this.options?this.reorderOptionsContent():this.reorderSlotContent(),await new Promise((t=>setTimeout(t,100))),setTimeout((()=>{this.isHandlingEscape=!1,this.open=!1}),150),this.inputElement&&this.inputElement.blur()};await e()}}connectedCallback(){this._boundHandleClickOutside||(this._boundHandleClickOutside=this.handleClickOutside.bind(this)),document.addEventListener("click",this._boundHandleClickOutside)}componentWillLoad(){this.options&&this.handleOptionsChange(this.options),this.options||(this.initializeValueFromSlots(),Promise.resolve().then((()=>{this.syncChildComponents(),requestAnimationFrame((()=>{this.reorderSlotContent()}))}))),this.options&&(this.sortedOptions=[...this.options??[]]),this.filterText||this.resetFilter(),this.hasFilterResults=!0}componentDidLoad(){this.options&&this.handleOptionsChange(this.options),this.syncChildComponents(),this.options||(this.initializeValueFromSlots(),this.syncChildComponents()),this.rebuildSearchIndex()}disconnectedCallback(){this._boundHandleClickOutside&&document.removeEventListener("click",this._boundHandleClickOutside),this.terminateSearchWorker()}async getFilterText(){return this.filterText}async resetFilter(){const t=Array.from(this.el.querySelectorAll("nv-fielddropdownitemcheck"));t.forEach((t=>{t.style.display=""}));const e=this.el.querySelector("ul");if(e){const i=e.querySelector("[data-empty]");i&&i.remove();const s=t.filter((t=>(this.value||[]).includes(t.getAttribute("value")||""))),o=t.filter((t=>!(this.value||[]).includes(t.getAttribute("value")||"")));s.length>0&&this.manageDivider(e,s,o)}this.hasFilterResults=!0}async getSelectedValues(){return this.value}async selectAll(){this.disabled||this.readonly||(this.options?this.toggleSelectAllOptions(!0):this.toggleSelectAllSlots(!0))}async deselectAll(){this.disabled||this.readonly||(this.options?this.toggleSelectAllOptions(!1):this.toggleSelectAllSlots(!1))}async toggleSelectAll(){if(this.disabled||this.readonly)return;const t=this.options?this.getSelectAllCheckboxStateOptions():this.getSelectAllCheckboxStateSlots(),e="unchecked"===t||"indeterminate"===t;this.options?this.toggleSelectAllOptions(e):this.toggleSelectAllSlots(e)}reorderSlotContent(){if(this.options)return;const t=this.el.querySelector("ul");if(!t)return;t.querySelectorAll("hr.multiselect-divider").forEach((t=>t.remove()));const e=Array.from(this.el.querySelectorAll("nv-fielddropdownitemcheck")).filter((t=>"none"!==t.style.display));if(t.querySelector("[data-empty]"))return;const i=e.filter((t=>(this.value||[]).includes(t.getAttribute("value")||""))),s=e.filter((t=>!(this.value||[]).includes(t.getAttribute("value")||"")));if(i.forEach((e=>{t.appendChild(e)})),i.length>0&&s.length>0){const e=document.createElement("hr");e.className="multiselect-divider",t.appendChild(e)}s.forEach((e=>{t.appendChild(e)}))}reorderOptionsContent(){const t=this.el.querySelector("ul");if(!t)return;const e=Array.from(t.querySelectorAll("nv-fielddropdownitemcheck")).filter((t=>"none"!==t.style.display)),i=e.filter((t=>(this.value||[]).includes(t.getAttribute("value")||""))),s=e.filter((t=>!(this.value||[]).includes(t.getAttribute("value")||"")));i.forEach((e=>t.appendChild(e))),s.forEach((e=>t.appendChild(e))),this.manageDivider(t,i,s)}async filterItems(){const t=this.el.querySelector("ul");if(!t)return;if(this.effectiveFilterMode=r(this.filterMode),t.querySelector("[data-empty]")?.remove(),t.querySelector("[data-truncated]")?.remove(),this.resultsTruncated=!1,this.totalResults=0,!this.filterText.trim()||this.filterText.length<this.startFilterAt){const e=Array.from(t.querySelectorAll("nv-fielddropdownitemcheck")),i=a(this.maxResults);let s=0;e.forEach((t=>{s<i?(t.style.display="",s++):t.style.display="none"})),this.totalResults=e.length,this.resultsTruncated=e.length>i,this.hasFilterResults=s>0;const o=e.filter((t=>"none"!==t.style.display)),l=o.filter((t=>(this.value||[]).includes(t.getAttribute("value")||""))),n=o.filter((t=>!(this.value||[]).includes(t.getAttribute("value")||"")));return this.manageDivider(t,l,n),void(this.resultsTruncated&&this.addTruncatedMessage(t,i,e.length))}const e=await this.performAdvancedSearch();this.resultsTruncated=e.truncated,this.totalResults=e.total;const i=new Set(e.ids);let s=!1;const o=Array.from(t.querySelectorAll("nv-fielddropdownitemcheck")),l=a(this.maxResults);let n=0;o.forEach((t=>{const e=t.getAttribute("value")||"";i.has(e)&&n<l?(t.style.display="",s=!0,n++):t.style.display="none"}));const d=o.filter((t=>"none"!==t.style.display)),h=d.filter((t=>(this.value||[]).includes(t.getAttribute("value")||""))),c=d.filter((t=>!(this.value||[]).includes(t.getAttribute("value")||"")));if(this.manageDivider(t,h,c),this.hasFilterResults=s,s)e.truncated&&this.addTruncatedMessage(t,e.ids.length,e.total);else{const e=document.createElement("li");e.setAttribute("data-empty","true"),e.textContent=this.emptyResult,e.classList.add("no-results-message"),t.appendChild(e)}this.options?this.reorderOptionsContent():this.reorderSlotContent()}async rebuildSearchIndex(){this.rawItems=[],this.options?.length?this.options.forEach(((t,e)=>{t.isDivider||this.rawItems.push({id:t.value||"opt-"+e,label:t.label||t.value||""})})):Array.from(this.el.querySelectorAll("nv-fielddropdownitemcheck")).forEach(((t,e)=>{this.rawItems.push({id:t.getAttribute("value")||"item-"+e,label:t.getAttribute("label")||t.textContent?.trim()||""})})),this.indexedItems=d(this.rawItems),this.effectiveFilterMode=r(this.filterMode);const t=this.rawItems.length,e=m(this.workerThreshold);h(t,this.effectiveFilterMode,e)?await this.initSearchWorker():this.terminateSearchWorker()}async initSearchWorker(){c()&&(this.workerClient||(this.workerClient=new u),await this.workerClient.init(this.rawItems))}terminateSearchWorker(){this.workerClient&&(this.workerClient.terminate(),this.workerClient=null)}async performAdvancedSearch(){this.indexedItems.length||await this.rebuildSearchIndex();const t=this.rawItems.length,e=m(this.workerThreshold);if(h(t,this.effectiveFilterMode,e)&&this.workerClient?.isReady){this.isSearching=!0;try{return await this.workerClient.search(this.filterText,this.effectiveFilterMode,this.maxResults,this.fuzzyThreshold)}catch(t){return console.error("Worker search failed:",t),f(this.indexedItems,{query:this.filterText,filterMode:this.effectiveFilterMode,maxResults:this.maxResults,startFilterAt:this.startFilterAt,fuzzyThreshold:this.fuzzyThreshold})}finally{this.isSearching=!1}}return f(this.indexedItems,{query:this.filterText,filterMode:this.effectiveFilterMode,maxResults:this.maxResults,startFilterAt:this.startFilterAt,fuzzyThreshold:this.fuzzyThreshold})}addTruncatedMessage(t,e,i){t.querySelector("[data-truncated]")?.remove();const s=this.truncatedResultsText||p(this.locale),o=document.createElement("li");o.setAttribute("data-truncated","true"),o.className="truncated-message no-results-message",o.textContent=v(s,e,i),t.appendChild(o)}handleClickOutside(t){this.el.contains(t.target)||this.inputElement&&this.inputElement.contains(t.target)||(this.open=!1)}updateHighlightedItem(t,e){t.forEach(((t,i)=>{if(i===e){t.classList.add("highlighted"),t.setAttribute("tabindex","0"),t.scrollIntoView({block:"nearest"});const e=t.querySelector("nv-fieldcheckbox");e&&e.focus()}else t.classList.remove("highlighted"),t.setAttribute("tabindex","-1")}))}focusFirstItem(){const t=this.el.querySelector('nv-fielddropdownitemcheck:not([style*="display: none"])');if(t){t.setAttribute("tabindex","0"),t.classList.add("highlighted"),t.scrollIntoView({block:"nearest"});const e=t.querySelector("nv-fieldcheckbox");e&&e.focus()}else console.warn("No visible first item found to focus")}manageDivider(t,e,i){let s=t.querySelector("hr.multiselect-divider");s||(s=document.createElement("hr"),s.className="multiselect-divider",t.appendChild(s)),e.length>0&&i.length>0?(e[e.length-1].after(s),s.style.display=""):s.style.display="none"}syncChildComponents(){this.el&&this.el.isConnected&&Array.from(this.el.querySelectorAll("nv-fielddropdownitemcheck")).forEach((t=>{const e=t.getAttribute("value")||t.getAttribute("label")||"",i=(this.value||[]).includes(e);t.checked!==i&&(this.isBulkOperation?(i?t.setAttribute("checked",""):t.removeAttribute("checked"),t.checked=i):t.checked=i)}))}getVisibleEnabledSlotItems(){return Array.from(this.el.querySelectorAll("nv-fielddropdownitemcheck")).filter((t=>{const e="none"===t.style.display,i=t.hasAttribute("disabled");return!e&&!i}))}getVisibleEnabledOptionItems(){return Array.from(this.el.querySelectorAll("nv-fielddropdownitemcheck")).filter((t=>{const e="none"===t.style.display||"true"===t.getAttribute("aria-hidden"),i=t.hasAttribute("disabled")||"true"===t.getAttribute("disabled");return!e&&!i})).map((t=>t.getAttribute("value")||"")).filter((t=>""!==t))}shouldShowToggleAllOptionsButton(){return!!this.options&&this.enableSelectAll&&this.hasFilterResults}getSelectAllCheckboxStateOptions(){if(!this.options)return"unchecked";const t=this.getVisibleEnabledOptionItems();if(0===t.length)return"unchecked";const e=t.filter((t=>(this.value||[]).includes(t)));return 0===e.length?"unchecked":e.length===t.length?"checked":"indeterminate"}getSelectAllCheckboxStateSlots(){if(this.options)return"unchecked";const t=this.getVisibleEnabledSlotItems();if(0===t.length)return"unchecked";const e=t.filter((t=>{const e=t.getAttribute("value")||t.getAttribute("label")||"";return""!==e&&(this.value||[]).includes(e)}));return 0===e.length?"unchecked":e.length===t.length?"checked":"indeterminate"}shouldShowToggleAllSlotButton(){return!this.options&&this.enableSelectAll&&this.hasFilterResults}initializeValueFromSlots(){const t=Array.from(this.el.querySelectorAll("nv-fielddropdownitemcheck")).filter((t=>t.hasAttribute("checked"))).map((t=>t.getAttribute("value")||t.getAttribute("label")||""));this.value=Array.from(new Set([...this.value||[],...t]))}getRequiredAttributes(){const t=this.el.hasAttribute("aria-required")||this.el.hasAttribute("aria-required-attr"),e=t?this.el.getAttribute("aria-required")||this.el.getAttribute("aria-required-attr"):null,i=t?e:null,s=t?"true"===i||""===i:void 0;return{ariaRequiredValue:s,useNativeRequired:this.required&&(!t||!0===s)}}handleOpenChanged(t){this.open!==t.detail&&(this.open=t.detail,this.open?this.filterText&&this.filterItems():(this.filterable&&this.clearFilterText(),this.handlePopoverClose()),this.options?this.reorderOptionsContent():this.reorderSlotContent())}renderDescriptions(){return[(this.description||this.el.querySelector('[slot="description"]'))&&o("div",{class:"description"},o("slot",{name:"description"},this.description)),(this.errorDescription||this.el.querySelector('[slot="error-description"]'))&&o("div",{hidden:!this.error,class:"error-description"},o("slot",{name:"error-description"},this.errorDescription))]}render(){return this.options?this.renderOptionsMode():this.renderSlotsMode()}static get formAssociated(){return!0}get el(){return this}static get watchers(){return{options:[{handleOptionsChange:0}],value:[{watchValueHandler:0}],open:[{handleOpenChange:0}]}}static get style(){return'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}'}},[324,"nv-fieldmultiselect",{label:[513],inputId:[513,"input-id"],name:[513],description:[513],placeholder:[513],autocomplete:[513],required:[516],ariaRequiredAttr:[516,"aria-required"],readonly:[516],disabled:[516],error:[516],errorDescription:[513,"error-description"],maxHeight:[513,"max-height"],open:[1540],fluid:[516],options:[1040],value:[1040],filterable:[516],emptyResult:[513,"empty-result"],debounceDelay:[514,"debounce-delay"],autofocus:[516],badgeLabel:[513,"badge-label"],filterText:[1537,"filter-text"],enableSelectAll:[516,"enable-select-all"],selectAllLabel:[513,"select-all-label"],deselectAllLabel:[513,"deselect-all-label"],filterMode:[513,"filter-mode"],maxResults:[514,"max-results"],startFilterAt:[514,"start-filter-at"],locale:[513],truncatedResultsText:[513,"truncated-results-text"],workerThreshold:[514,"worker-threshold"],fuzzyThreshold:[514,"fuzzy-threshold"],sortedOptions:[32],isHandlingEscape:[32],hasFilterResults:[32],isSelectAllSectionVisible:[32],resultsTruncated:[32],totalResults:[32],isSearching:[32],getFilterText:[64],resetFilter:[64],getSelectedValues:[64],selectAll:[64],deselectAll:[64],toggleSelectAll:[64]},[[0,"itemChecked","handleItemChecked"],[0,"slotchange","handleSlotChange"],[0,"keydown","handleKeyDown"]],{options:[{handleOptionsChange:0}],value:[{watchValueHandler:0}],open:[{handleOpenChange:0}]}]);function z(){"undefined"!=typeof customElements&&["nv-fieldmultiselect","nv-badge","nv-fieldcheckbox","nv-fielddropdownitemcheck","nv-icon","nv-iconbutton","nv-loader","nv-popover"].forEach((e=>{switch(e){case"nv-fieldmultiselect":customElements.get(t(e))||customElements.define(t(e),S);break;case"nv-badge":customElements.get(t(e))||b();break;case"nv-fieldcheckbox":customElements.get(t(e))||g();break;case"nv-fielddropdownitemcheck":customElements.get(t(e))||w();break;case"nv-icon":customElements.get(t(e))||k();break;case"nv-iconbutton":customElements.get(t(e))||y();break;case"nv-loader":customElements.get(t(e))||x();break;case"nv-popover":customElements.get(t(e))||A()}}))}z();const q=S,F=z;export{q as NvFieldmultiselect,F as defineCustomElement}
|