@nova-design-system/nova-webcomponents 3.9.1 → 3.10.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/{constants-8fb8ccc0.js → constants-3b6beb66.js} +15 -1
- package/dist/cjs/constants-3b6beb66.js.map +1 -0
- package/dist/cjs/index-c56424e5.js +12 -0
- package/dist/cjs/index.cjs.js +7 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/native.cjs.js +1 -1
- package/dist/cjs/nv-accordion-item.cjs.entry.js +1 -1
- package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-alert.cjs.entry.js +2 -2
- package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
- package/dist/cjs/nv-badge_2.cjs.entry.js +2 -2
- package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-button.cjs.entry.js +2 -2
- package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-buttongroup.cjs.entry.js +198 -0
- package/dist/cjs/nv-buttongroup.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-calendar.cjs.entry.js +114 -37
- package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-col.cjs.entry.js +1 -1
- package/dist/cjs/nv-datagrid.cjs.entry.js +4 -4
- package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
- package/dist/cjs/nv-dialog.cjs.entry.js +2 -2
- package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +5 -5
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddate.cjs.entry.js +6 -6
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +6 -6
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -3
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +377 -27
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldradio.cjs.entry.js +4 -4
- package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
- package/dist/cjs/nv-fieldslider.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldtime.cjs.entry.js +10 -10
- package/dist/cjs/nv-icon.cjs.entry.js +3 -3
- package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js +3 -3
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-menu.cjs.entry.js +1 -1
- package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-popover.cjs.entry.js +1 -1
- package/dist/cjs/nv-row.cjs.entry.js +1 -1
- package/dist/cjs/nv-stack.cjs.entry.js +1 -1
- package/dist/cjs/nv-table.cjs.entry.js +2 -2
- package/dist/cjs/nv-toggle.cjs.entry.js +3 -3
- package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-togglebutton.cjs.entry.js +58 -0
- package/dist/cjs/nv-togglebutton.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +172 -0
- package/dist/cjs/nv-togglebuttongroup.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +3 -0
- package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +1 -1
- package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
- package/dist/collection/components/nv-alert/nv-alert.css +5 -0
- package/dist/collection/components/nv-badge/nv-badge.css +21 -0
- package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +2 -0
- package/dist/collection/components/nv-button/styles/nv-button.css +8 -0
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js +43 -0
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js.map +1 -0
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.js +217 -0
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.js.map +1 -0
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.utils.js +86 -0
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.utils.js.map +1 -0
- package/dist/collection/components/nv-buttongroup/styles/nv-buttongroup.css +73 -0
- package/dist/collection/components/nv-buttongroup/test/nv-buttongroup.utils.test.js +312 -0
- package/dist/collection/components/nv-buttongroup/test/nv-buttongroup.utils.test.js.map +1 -0
- package/dist/collection/components/nv-calendar/nv-calendar.css +9 -0
- package/dist/collection/components/nv-calendar/nv-calendar.js +37 -24
- package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.utils.js +68 -0
- package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +1 -1
- package/dist/collection/components/nv-calendar/partials/calendar-grid.js +5 -3
- package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -1
- package/dist/collection/components/nv-calendar/partials/day-cell.js +4 -9
- package/dist/collection/components/nv-calendar/partials/day-cell.js.map +1 -1
- package/dist/collection/components/nv-col/nv-col.js +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.css +1 -0
- package/dist/collection/components/nv-datagrid/nv-datagrid.js +2 -2
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
- package/dist/collection/components/nv-dialog/nv-dialog.js +1 -1
- package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
- package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +1 -0
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +4 -4
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +6 -6
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +6 -6
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +3 -3
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +885 -122
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +561 -89
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +70 -16
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +1 -0
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
- package/dist/collection/components/nv-icon/nv-icon.js +1 -1
- package/dist/collection/components/nv-icon/nv-icons.js +6 -0
- package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +4 -0
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
- package/dist/collection/components/nv-loader/nv-loader.js +1 -1
- package/dist/collection/components/nv-menu/nv-menu.js +1 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
- package/dist/collection/components/nv-popover/nv-popover.js +1 -1
- package/dist/collection/components/nv-row/nv-row.js +1 -1
- package/dist/collection/components/nv-stack/nv-stack.js +1 -1
- package/dist/collection/components/nv-table/nv-table.js +2 -2
- package/dist/collection/components/nv-toggle/nv-toggle.css +1 -0
- package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.docs.js +6 -0
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.docs.js.map +1 -0
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +191 -0
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.js.map +1 -0
- package/dist/collection/components/nv-togglebutton/styles/nv-togglebutton.css +135 -0
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +56 -0
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -0
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +324 -0
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -0
- package/dist/collection/components/nv-togglebuttongroup/styles/nv-togglebuttongroup.css +45 -0
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
- package/dist/collection/utils/constants.js +12 -0
- package/dist/collection/utils/constants.js.map +1 -1
- package/dist/components/index.js +7 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/nv-accordion-item.js +1 -1
- package/dist/components/nv-accordion.js +4 -4
- package/dist/components/nv-alert.js +3 -3
- package/dist/components/nv-alert.js.map +1 -1
- package/dist/components/nv-avatar.js +2 -2
- package/dist/components/nv-badge.js +1 -1
- package/dist/components/nv-breadcrumb.js +3 -3
- package/dist/components/nv-breadcrumb.js.map +1 -1
- package/dist/components/nv-button.js +1 -1
- package/dist/components/nv-buttongroup.d.ts +11 -0
- package/dist/components/nv-buttongroup.js +221 -0
- package/dist/components/nv-buttongroup.js.map +1 -0
- package/dist/components/nv-calendar.js +1 -1
- package/dist/components/nv-col.js +1 -1
- package/dist/components/nv-datagrid.js +6 -6
- package/dist/components/nv-datagrid.js.map +1 -1
- package/dist/components/nv-datagridcolumn.js +1 -1
- package/dist/components/nv-dialog.js +7 -7
- package/dist/components/nv-dialogfooter.js +1 -1
- package/dist/components/nv-dialogheader.js +1 -1
- package/dist/components/nv-fieldcheckbox.js +1 -1
- package/dist/components/nv-fielddate.js +12 -12
- package/dist/components/nv-fielddaterange.js +12 -12
- package/dist/components/nv-fielddropdown.js +8 -8
- package/dist/components/nv-fielddropdownitem.js +1 -1
- package/dist/components/nv-fielddropdownitemcheck.js +1 -1
- package/dist/components/nv-fieldmultiselect.js +399 -41
- package/dist/components/nv-fieldmultiselect.js.map +1 -1
- package/dist/components/nv-fieldnumber.js +1 -1
- package/dist/components/nv-fieldpassword.js +6 -6
- package/dist/components/nv-fieldradio.js +4 -4
- package/dist/components/nv-fieldradio.js.map +1 -1
- package/dist/components/nv-fieldselect.js +8 -8
- package/dist/components/nv-fieldslider.js +7 -7
- package/dist/components/nv-fieldtext.js +1 -1
- package/dist/components/nv-fieldtextarea.js +3 -3
- package/dist/components/nv-fieldtime.js +14 -14
- package/dist/components/nv-icon.js +1 -1
- package/dist/components/nv-iconbutton.js +1 -1
- package/dist/components/nv-loader.js +1 -1
- package/dist/components/nv-menu.js +4 -4
- package/dist/components/nv-menuitem.js +1 -1
- package/dist/components/nv-popover.js +1 -1
- package/dist/components/nv-row.js +1 -1
- package/dist/components/nv-stack.js +1 -1
- package/dist/components/nv-table.js +2 -2
- package/dist/components/nv-toggle.js +3 -3
- package/dist/components/nv-toggle.js.map +1 -1
- package/dist/components/nv-togglebutton.d.ts +11 -0
- package/dist/components/nv-togglebutton.js +78 -0
- package/dist/components/nv-togglebutton.js.map +1 -0
- package/dist/components/nv-togglebuttongroup.d.ts +11 -0
- package/dist/components/nv-togglebuttongroup.js +196 -0
- package/dist/components/nv-togglebuttongroup.js.map +1 -0
- package/dist/components/nv-tooltip.js +1 -1
- package/dist/components/{p-68ff562f.js → p-0ffb4785.js} +5 -5
- package/dist/components/{p-68ff562f.js.map → p-0ffb4785.js.map} +1 -1
- package/dist/components/{p-8067d283.js → p-195f46f3.js} +2 -2
- package/dist/components/{p-8067d283.js.map → p-195f46f3.js.map} +1 -1
- package/dist/components/{p-e4e1a926.js → p-1bb737fa.js} +3 -3
- package/dist/components/{p-e4e1a926.js.map → p-1bb737fa.js.map} +1 -1
- package/dist/components/{p-db4ba1d9.js → p-2db5d1ab.js} +7 -7
- package/dist/components/{p-db4ba1d9.js.map → p-2db5d1ab.js.map} +1 -1
- package/dist/components/{p-ba87d9d5.js → p-2ef4fb88.js} +3 -3
- package/dist/components/{p-ba87d9d5.js.map → p-2ef4fb88.js.map} +1 -1
- package/dist/components/{p-f1df2634.js → p-32e8e42e.js} +2 -2
- package/dist/components/{p-f1df2634.js.map → p-32e8e42e.js.map} +1 -1
- package/dist/components/{p-6de6866c.js → p-45a625fb.js} +6 -6
- package/dist/components/{p-6de6866c.js.map → p-45a625fb.js.map} +1 -1
- package/dist/components/{p-025b8a78.js → p-50d0db7b.js} +5 -5
- package/dist/components/{p-025b8a78.js.map → p-50d0db7b.js.map} +1 -1
- package/dist/components/{p-ed6686a1.js → p-51876ca1.js} +2 -2
- package/dist/components/{p-ed6686a1.js.map → p-51876ca1.js.map} +1 -1
- package/dist/components/{p-e104c58a.js → p-51a156ff.js} +3 -3
- package/dist/components/p-51a156ff.js.map +1 -0
- package/dist/components/p-8011513c.js +189 -0
- package/dist/components/{p-60064345.js.map → p-8011513c.js.map} +1 -1
- package/dist/components/{p-82e5674c.js → p-8aee1010.js} +116 -38
- package/dist/components/p-8aee1010.js.map +1 -0
- package/dist/components/{p-79e6b6a2.js → p-9fdaea9a.js} +5 -5
- package/dist/components/p-9fdaea9a.js.map +1 -0
- package/dist/components/{p-6460318d.js → p-a1fe0a5d.js} +4 -4
- package/dist/components/p-a1fe0a5d.js.map +1 -0
- package/dist/components/{p-1f505531.js → p-a3ddec4c.js} +15 -1
- package/dist/components/p-a3ddec4c.js.map +1 -0
- package/dist/components/{p-0143cee0.js → p-a5002d14.js} +6 -6
- package/dist/components/{p-0143cee0.js.map → p-a5002d14.js.map} +1 -1
- package/dist/components/{p-30f970c3.js → p-b659b999.js} +3 -3
- package/dist/components/{p-30f970c3.js.map → p-b659b999.js.map} +1 -1
- package/dist/components/{p-5d5668f0.js → p-cf06032d.js} +4 -4
- package/dist/components/{p-5d5668f0.js.map → p-cf06032d.js.map} +1 -1
- package/dist/components/{p-dfd2d4f0.js → p-fda58a76.js} +2 -2
- package/dist/components/{p-dfd2d4f0.js.map → p-fda58a76.js.map} +1 -1
- package/dist/esm/{constants-4faa1fae.js → constants-23aaef7b.js} +15 -1
- package/dist/esm/constants-23aaef7b.js.map +1 -0
- package/dist/esm/index-a1936cd0.js +12 -0
- package/dist/esm/index.js +7 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/native.js +1 -1
- package/dist/esm/nv-accordion-item.entry.js +1 -1
- package/dist/esm/nv-accordion-item.entry.js.map +1 -1
- package/dist/esm/nv-alert.entry.js +2 -2
- package/dist/esm/nv-alert.entry.js.map +1 -1
- package/dist/esm/nv-avatar.entry.js +1 -1
- package/dist/esm/nv-badge_2.entry.js +2 -2
- package/dist/esm/nv-badge_2.entry.js.map +1 -1
- package/dist/esm/nv-breadcrumb.entry.js +1 -1
- package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
- package/dist/esm/nv-button.entry.js +2 -2
- package/dist/esm/nv-button.entry.js.map +1 -1
- package/dist/esm/nv-buttongroup.entry.js +194 -0
- package/dist/esm/nv-buttongroup.entry.js.map +1 -0
- package/dist/esm/nv-calendar.entry.js +114 -37
- package/dist/esm/nv-calendar.entry.js.map +1 -1
- package/dist/esm/nv-col.entry.js +1 -1
- package/dist/esm/nv-datagrid.entry.js +4 -4
- package/dist/esm/nv-datagrid.entry.js.map +1 -1
- package/dist/esm/nv-datagridcolumn.entry.js +1 -1
- package/dist/esm/nv-dialog.entry.js +2 -2
- package/dist/esm/nv-dialogfooter_2.entry.js +3 -3
- package/dist/esm/nv-fieldcheckbox.entry.js +5 -5
- package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
- package/dist/esm/nv-fielddate.entry.js +6 -6
- package/dist/esm/nv-fielddaterange.entry.js +6 -6
- package/dist/esm/nv-fielddropdown.entry.js +3 -3
- package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
- package/dist/esm/nv-fieldmultiselect.entry.js +378 -28
- package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldnumber.entry.js +3 -3
- package/dist/esm/nv-fieldpassword.entry.js +3 -3
- package/dist/esm/nv-fieldradio.entry.js +4 -4
- package/dist/esm/nv-fieldradio.entry.js.map +1 -1
- package/dist/esm/nv-fieldselect.entry.js +5 -5
- package/dist/esm/nv-fieldslider.entry.js +3 -3
- package/dist/esm/nv-fieldtext.entry.js +3 -3
- package/dist/esm/nv-fieldtextarea.entry.js +3 -3
- package/dist/esm/nv-fieldtime.entry.js +10 -10
- package/dist/esm/nv-icon.entry.js +3 -3
- package/dist/esm/nv-icon.entry.js.map +1 -1
- package/dist/esm/nv-iconbutton_2.entry.js +3 -3
- package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
- package/dist/esm/nv-menu.entry.js +1 -1
- package/dist/esm/nv-menuitem.entry.js +1 -1
- package/dist/esm/nv-popover.entry.js +1 -1
- package/dist/esm/nv-row.entry.js +1 -1
- package/dist/esm/nv-stack.entry.js +1 -1
- package/dist/esm/nv-table.entry.js +2 -2
- package/dist/esm/nv-toggle.entry.js +3 -3
- package/dist/esm/nv-toggle.entry.js.map +1 -1
- package/dist/esm/nv-togglebutton.entry.js +54 -0
- package/dist/esm/nv-togglebutton.entry.js.map +1 -0
- package/dist/esm/nv-togglebuttongroup.entry.js +168 -0
- package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -0
- package/dist/esm/nv-tooltip.entry.js +1 -1
- package/dist/native/index.esm.js +1 -1
- package/dist/native/index.esm.js.map +1 -1
- package/dist/native/native.css +1 -1
- package/dist/native/native.esm.js +1 -1
- package/dist/native/native.esm.js.map +1 -1
- package/dist/native/{p-2a6783ca.entry.js → p-0da8f0d1.entry.js} +2 -2
- package/dist/native/{p-2a6783ca.entry.js.map → p-0da8f0d1.entry.js.map} +1 -1
- package/dist/native/p-0ef94dae.entry.js +2 -0
- package/dist/native/{p-1ad1bff9.entry.js.map → p-0ef94dae.entry.js.map} +1 -1
- package/dist/native/p-13032ec1.entry.js +2 -0
- package/dist/native/p-13032ec1.entry.js.map +1 -0
- package/dist/native/p-184032cb.entry.js +2 -0
- package/dist/native/{p-a73fa60a.entry.js.map → p-184032cb.entry.js.map} +1 -1
- package/dist/native/p-2197ffdf.entry.js +2 -0
- package/dist/native/{p-fa81b77f.entry.js.map → p-2197ffdf.entry.js.map} +1 -1
- package/dist/native/p-234cfa2e.entry.js +2 -0
- package/dist/native/p-2a3325fb.entry.js +2 -0
- package/dist/native/p-2a3325fb.entry.js.map +1 -0
- package/dist/native/{p-3f139780.entry.js → p-2d647761.entry.js} +2 -2
- package/dist/native/{p-ff248eb8.entry.js → p-348c6bb4.entry.js} +2 -2
- package/dist/native/p-397c0fca.entry.js +2 -0
- package/dist/native/{p-51a57a3a.entry.js.map → p-397c0fca.entry.js.map} +1 -1
- package/dist/native/{p-55cd3d62.entry.js → p-3da64006.entry.js} +2 -2
- package/dist/native/p-3ed84cd9.entry.js +2 -0
- package/dist/native/{p-fcd52432.entry.js.map → p-3ed84cd9.entry.js.map} +1 -1
- package/dist/native/{p-3ff7a912.entry.js → p-3fcaac6d.entry.js} +2 -2
- package/dist/native/{p-b7ec9a1b.entry.js → p-4302824a.entry.js} +2 -2
- package/dist/native/p-43071c3b.entry.js +2 -0
- package/dist/native/p-44dd9a4c.entry.js +2 -0
- package/dist/native/p-44dd9a4c.entry.js.map +1 -0
- package/dist/native/p-464bb197.entry.js +2 -0
- package/dist/native/p-464bb197.entry.js.map +1 -0
- package/dist/native/{p-916acbd3.entry.js → p-49504fd6.entry.js} +2 -2
- package/dist/native/{p-bc77cac1.entry.js → p-553778e6.entry.js} +2 -2
- package/dist/native/p-553778e6.entry.js.map +1 -0
- package/dist/native/{p-bee62b2b.entry.js → p-5f0776cb.entry.js} +2 -2
- package/dist/native/p-62032cd9.entry.js +2 -0
- package/dist/native/p-62032cd9.entry.js.map +1 -0
- package/dist/native/{p-11012998.entry.js → p-676447d7.entry.js} +3 -3
- package/dist/native/{p-16ef7dd4.entry.js → p-681f2bac.entry.js} +2 -2
- package/dist/native/{p-4b15cff3.entry.js → p-7f0d576b.entry.js} +2 -2
- package/dist/native/{p-68edb2e8.entry.js → p-85f8f11a.entry.js} +2 -2
- package/dist/native/{p-0e005d95.entry.js → p-888ad58e.entry.js} +2 -2
- package/dist/native/{p-34bf336f.entry.js → p-92931ab8.entry.js} +2 -2
- package/dist/native/{p-f00a4552.entry.js → p-94dc9c41.entry.js} +2 -2
- package/dist/native/{p-85a54ef2.entry.js → p-9c5d6827.entry.js} +2 -2
- package/dist/native/{p-08452012.entry.js → p-9f451b8a.entry.js} +3 -3
- package/dist/native/{p-08452012.entry.js.map → p-9f451b8a.entry.js.map} +1 -1
- package/dist/native/{p-1f932a4b.entry.js → p-aacd8789.entry.js} +2 -2
- package/dist/native/p-ac5496e7.entry.js +2 -0
- package/dist/native/{p-9ea3d30d.entry.js → p-ad2cc829.entry.js} +2 -2
- package/dist/native/p-b2442d4b.entry.js +2 -0
- package/dist/native/{p-a36dc25a.entry.js.map → p-b2442d4b.entry.js.map} +1 -1
- package/dist/native/{p-67c34b8c.entry.js → p-b58fb522.entry.js} +2 -2
- package/dist/native/p-ba9906b7.entry.js +2 -0
- package/dist/native/{p-64cb38e6.entry.js.map → p-ba9906b7.entry.js.map} +1 -1
- package/dist/native/{p-f540db71.entry.js → p-dd023fd6.entry.js} +2 -2
- package/dist/native/p-f033c4ce.entry.js +2 -0
- package/dist/native/p-f033c4ce.entry.js.map +1 -0
- package/dist/native/{p-051db87c.entry.js → p-fb672f90.entry.js} +2 -2
- package/dist/native/p-fc9564b3.js +2 -0
- package/dist/native/p-fc9564b3.js.map +1 -0
- package/dist/types/components/nv-buttongroup/nv-buttongroup.d.ts +50 -0
- package/dist/types/components/nv-buttongroup/nv-buttongroup.docs.d.ts +4 -0
- package/dist/types/components/nv-buttongroup/nv-buttongroup.utils.d.ts +25 -0
- package/dist/types/components/nv-buttongroup/test/nv-buttongroup.utils.test.d.ts +1 -0
- package/dist/types/components/nv-calendar/nv-calendar.d.ts +11 -1
- package/dist/types/components/nv-calendar/nv-calendar.utils.d.ts +31 -0
- package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +11 -1
- package/dist/types/components/nv-calendar/partials/day-cell.d.ts +7 -1
- package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +116 -23
- package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
- package/dist/types/components/nv-togglebutton/nv-togglebutton.d.ts +46 -0
- package/dist/types/components/nv-togglebutton/nv-togglebutton.docs.d.ts +4 -0
- package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.d.ts +80 -0
- package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.d.ts +4 -0
- package/dist/types/components.d.ts +289 -2
- package/dist/types/utils/constants.d.ts +10 -0
- package/dist/vscode-data.json +189 -0
- package/hydrate/index.js +1058 -154
- package/hydrate/index.mjs +1058 -154
- package/package.json +14 -2
- package/dist/cjs/constants-8fb8ccc0.js.map +0 -1
- package/dist/components/p-1f505531.js.map +0 -1
- package/dist/components/p-60064345.js +0 -189
- package/dist/components/p-6460318d.js.map +0 -1
- package/dist/components/p-79e6b6a2.js.map +0 -1
- package/dist/components/p-82e5674c.js.map +0 -1
- package/dist/components/p-e104c58a.js.map +0 -1
- package/dist/esm/constants-4faa1fae.js.map +0 -1
- package/dist/native/p-10ce53ea.entry.js +0 -2
- package/dist/native/p-1ad1bff9.entry.js +0 -2
- package/dist/native/p-4a533dd8.entry.js +0 -2
- package/dist/native/p-4a533dd8.entry.js.map +0 -1
- package/dist/native/p-51a57a3a.entry.js +0 -2
- package/dist/native/p-64cb38e6.entry.js +0 -2
- package/dist/native/p-73c08f3b.entry.js +0 -2
- package/dist/native/p-73c08f3b.entry.js.map +0 -1
- package/dist/native/p-a36dc25a.entry.js +0 -2
- package/dist/native/p-a50f3850.entry.js +0 -2
- package/dist/native/p-a73fa60a.entry.js +0 -2
- package/dist/native/p-b3f9db23.entry.js +0 -2
- package/dist/native/p-b3f9db23.entry.js.map +0 -1
- package/dist/native/p-bc77cac1.entry.js.map +0 -1
- package/dist/native/p-e2d0a77d.js +0 -2
- package/dist/native/p-e2d0a77d.js.map +0 -1
- package/dist/native/p-ec92ee7a.entry.js +0 -2
- package/dist/native/p-fa81b77f.entry.js +0 -2
- package/dist/native/p-fcd52432.entry.js +0 -2
- /package/dist/native/{p-ec92ee7a.entry.js.map → p-234cfa2e.entry.js.map} +0 -0
- /package/dist/native/{p-3f139780.entry.js.map → p-2d647761.entry.js.map} +0 -0
- /package/dist/native/{p-ff248eb8.entry.js.map → p-348c6bb4.entry.js.map} +0 -0
- /package/dist/native/{p-55cd3d62.entry.js.map → p-3da64006.entry.js.map} +0 -0
- /package/dist/native/{p-3ff7a912.entry.js.map → p-3fcaac6d.entry.js.map} +0 -0
- /package/dist/native/{p-b7ec9a1b.entry.js.map → p-4302824a.entry.js.map} +0 -0
- /package/dist/native/{p-10ce53ea.entry.js.map → p-43071c3b.entry.js.map} +0 -0
- /package/dist/native/{p-916acbd3.entry.js.map → p-49504fd6.entry.js.map} +0 -0
- /package/dist/native/{p-bee62b2b.entry.js.map → p-5f0776cb.entry.js.map} +0 -0
- /package/dist/native/{p-11012998.entry.js.map → p-676447d7.entry.js.map} +0 -0
- /package/dist/native/{p-16ef7dd4.entry.js.map → p-681f2bac.entry.js.map} +0 -0
- /package/dist/native/{p-4b15cff3.entry.js.map → p-7f0d576b.entry.js.map} +0 -0
- /package/dist/native/{p-68edb2e8.entry.js.map → p-85f8f11a.entry.js.map} +0 -0
- /package/dist/native/{p-0e005d95.entry.js.map → p-888ad58e.entry.js.map} +0 -0
- /package/dist/native/{p-34bf336f.entry.js.map → p-92931ab8.entry.js.map} +0 -0
- /package/dist/native/{p-f00a4552.entry.js.map → p-94dc9c41.entry.js.map} +0 -0
- /package/dist/native/{p-85a54ef2.entry.js.map → p-9c5d6827.entry.js.map} +0 -0
- /package/dist/native/{p-1f932a4b.entry.js.map → p-aacd8789.entry.js.map} +0 -0
- /package/dist/native/{p-a50f3850.entry.js.map → p-ac5496e7.entry.js.map} +0 -0
- /package/dist/native/{p-9ea3d30d.entry.js.map → p-ad2cc829.entry.js.map} +0 -0
- /package/dist/native/{p-67c34b8c.entry.js.map → p-b58fb522.entry.js.map} +0 -0
- /package/dist/native/{p-f540db71.entry.js.map → p-dd023fd6.entry.js.map} +0 -0
- /package/dist/native/{p-051db87c.entry.js.map → p-fb672f90.entry.js.map} +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-aff3ed68.js';
|
|
2
|
-
import { d as defineCustomElement$8 } from './p-
|
|
3
|
-
import { d as defineCustomElement$7 } from './p-
|
|
4
|
-
import { d as defineCustomElement$6 } from './p-
|
|
5
|
-
import { d as defineCustomElement$5 } from './p-
|
|
6
|
-
import { d as defineCustomElement$4 } from './p-
|
|
7
|
-
import { d as defineCustomElement$3 } from './p-
|
|
8
|
-
import { d as defineCustomElement$2 } from './p-
|
|
1
|
+
import { p as proxyCustomElement, H, c as createEvent, h, F as Fragment, d as Host } from './p-aff3ed68.js';
|
|
2
|
+
import { d as defineCustomElement$8 } from './p-8011513c.js';
|
|
3
|
+
import { d as defineCustomElement$7 } from './p-a5002d14.js';
|
|
4
|
+
import { d as defineCustomElement$6 } from './p-51a156ff.js';
|
|
5
|
+
import { d as defineCustomElement$5 } from './p-a1fe0a5d.js';
|
|
6
|
+
import { d as defineCustomElement$4 } from './p-50d0db7b.js';
|
|
7
|
+
import { d as defineCustomElement$3 } from './p-fda58a76.js';
|
|
8
|
+
import { d as defineCustomElement$2 } from './p-195f46f3.js';
|
|
9
9
|
import { v as v4 } from './p-f5ff676c.js';
|
|
10
10
|
|
|
11
|
-
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{content:\"*\";color:var(--components-form-text-required);font-weight:700}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:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fieldmultiselect nv-popover{width:100%;display:block}nv-fieldmultiselect nv-popover [data-scope=popover]{width:100%;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]{max-height:calc(90vh - var(--list-dropdown-padding) * 2);overflow-y:auto;position:relative}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 .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;position:relative;width:100%;min-height:40px;}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){opacity:0.5;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>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:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height);width:100%;width:100%;flex-grow:1;margin:0;min-height:100%;box-sizing:border-box}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:\"TT Norms Pro\", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}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>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-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:500;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:\"TT Norms Pro\", 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:\"TT Norms Pro\", 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{text-align:center;padding:10px;color:var(--components-form-text-description-error)}.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}";
|
|
11
|
+
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-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{content:\"*\";color:var(--components-form-text-required);font-weight:700}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:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fieldmultiselect nv-popover{width:100%;display:block}nv-fieldmultiselect nv-popover [data-scope=popover]{width:100%;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]{max-height:calc(90vh - var(--list-dropdown-padding) * 2);overflow-y:auto;position:relative}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 .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;position:relative;width:100%;min-height:40px}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){opacity:0.5;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>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:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height);width:100%;width:100%;flex-grow:1;margin:0;min-height:100%;box-sizing:border-box}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:\"TT Norms Pro\", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}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>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-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:500;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:\"TT Norms Pro\", 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:\"TT Norms Pro\", 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}";
|
|
12
12
|
const NvFieldmultiselectStyle0 = nvFieldmultiselectCss;
|
|
13
13
|
|
|
14
14
|
const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmultiselect extends H {
|
|
@@ -17,8 +17,6 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
17
17
|
this.__registerHost();
|
|
18
18
|
this.valueChanged = createEvent(this, "valueChanged", 7);
|
|
19
19
|
this.filterTextChanged = createEvent(this, "filterTextChanged", 7);
|
|
20
|
-
/****************************************************************************/
|
|
21
|
-
//#region PROPERTIES
|
|
22
20
|
/**
|
|
23
21
|
* Sets the ID for the input element and the for attribute of the associated
|
|
24
22
|
* label. If no ID is provided, a random one will be automatically generated
|
|
@@ -33,11 +31,6 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
33
31
|
* always type in fresh data.
|
|
34
32
|
*/
|
|
35
33
|
this.autocomplete = 'off';
|
|
36
|
-
/**
|
|
37
|
-
* Specifies the selected values of the multiselect field.
|
|
38
|
-
* This is the canonical value for the component and is used for form submission.
|
|
39
|
-
*/
|
|
40
|
-
this.value = [];
|
|
41
34
|
/**
|
|
42
35
|
* Marks the input field as required.
|
|
43
36
|
*/
|
|
@@ -65,13 +58,22 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
65
58
|
*/
|
|
66
59
|
this.open = false;
|
|
67
60
|
/**
|
|
68
|
-
*
|
|
61
|
+
* Allows the field to stretch and fill the entire width of its container.
|
|
69
62
|
*/
|
|
70
|
-
this.
|
|
63
|
+
this.fluid = false;
|
|
64
|
+
/**
|
|
65
|
+
* Specifies the selected values of the multiselect field.
|
|
66
|
+
* This is the canonical value for the component and is used for form submission.
|
|
67
|
+
*/
|
|
68
|
+
this.value = [];
|
|
71
69
|
/**
|
|
72
70
|
* Enables or disables the filtering feature for the multiselect items.
|
|
73
71
|
*/
|
|
74
72
|
this.filterable = false;
|
|
73
|
+
/**
|
|
74
|
+
* The text to display when no items match the filter.
|
|
75
|
+
*/
|
|
76
|
+
this.emptyResult = 'No results found';
|
|
75
77
|
/**
|
|
76
78
|
* Delay in milliseconds before the search is triggered when typing in the filter input.
|
|
77
79
|
* @default 300
|
|
@@ -83,10 +85,6 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
83
85
|
* element.
|
|
84
86
|
*/
|
|
85
87
|
this.autofocus = false;
|
|
86
|
-
/**
|
|
87
|
-
* Allows the field to stretch and fill the entire width of its container.
|
|
88
|
-
*/
|
|
89
|
-
this.fluid = false;
|
|
90
88
|
/**
|
|
91
89
|
* Text for the badge showing the number of selected items.
|
|
92
90
|
*/
|
|
@@ -95,6 +93,18 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
95
93
|
* The text entered by the user for filtering multiselect items.
|
|
96
94
|
*/
|
|
97
95
|
this.filterText = '';
|
|
96
|
+
/**
|
|
97
|
+
* Enables or disables the "Select All / Deselect All" toggle functionality.
|
|
98
|
+
*/
|
|
99
|
+
this.enableSelectAll = false;
|
|
100
|
+
/**
|
|
101
|
+
* Text for the "Select All" button.
|
|
102
|
+
*/
|
|
103
|
+
this.selectAllLabel = 'Select/deselect all';
|
|
104
|
+
/**
|
|
105
|
+
* Text for the "Deselect All" button.
|
|
106
|
+
*/
|
|
107
|
+
this.deselectAllLabel = 'Select/deselect all';
|
|
98
108
|
//#endregion PROPERTIES
|
|
99
109
|
/****************************************************************************/
|
|
100
110
|
//#region STATE
|
|
@@ -103,10 +113,22 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
103
113
|
*/
|
|
104
114
|
this.sortedOptions = [];
|
|
105
115
|
this.isHandlingEscape = false;
|
|
116
|
+
/**
|
|
117
|
+
* Indicates whether the current filter has visible results.
|
|
118
|
+
* Used to control the visibility of the "Select All" button.
|
|
119
|
+
*/
|
|
120
|
+
this.hasFilterResults = true;
|
|
121
|
+
/**
|
|
122
|
+
* Controls the visibility of the select all section.
|
|
123
|
+
*/
|
|
124
|
+
this.isSelectAllSectionVisible = true;
|
|
125
|
+
// Add the flag to the class
|
|
126
|
+
this.preventBlurClose = false;
|
|
106
127
|
/**
|
|
107
128
|
* Handle badge close for options mode.
|
|
108
129
|
*/
|
|
109
130
|
this.handleBadgeCloseOptions = () => {
|
|
131
|
+
console.info('handleBadgeCloseOptions:', this.value);
|
|
110
132
|
this.value = [];
|
|
111
133
|
this.valueChanged.emit(this.value);
|
|
112
134
|
// Uncheck all elements
|
|
@@ -124,6 +146,7 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
124
146
|
* Handle badge close for slots mode.
|
|
125
147
|
*/
|
|
126
148
|
this.handleBadgeCloseSlots = () => {
|
|
149
|
+
console.info('handleBadgeCloseSlots:', this.value);
|
|
127
150
|
this.value = [];
|
|
128
151
|
this.valueChanged.emit(this.value);
|
|
129
152
|
// Uncheck all elements
|
|
@@ -132,8 +155,11 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
132
155
|
item.checked = false;
|
|
133
156
|
item.style.display = '';
|
|
134
157
|
});
|
|
135
|
-
//
|
|
136
|
-
|
|
158
|
+
// Force DOM update before reordering
|
|
159
|
+
requestAnimationFrame(() => {
|
|
160
|
+
// Reorder slot content
|
|
161
|
+
this.reorderSlotContent();
|
|
162
|
+
});
|
|
137
163
|
};
|
|
138
164
|
/**
|
|
139
165
|
* Handle popover close
|
|
@@ -155,12 +181,17 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
155
181
|
this.filterText = '';
|
|
156
182
|
this.filterTextChanged.emit('');
|
|
157
183
|
this.resetFilter();
|
|
184
|
+
this.hasFilterResults = true;
|
|
158
185
|
};
|
|
159
186
|
/**
|
|
160
187
|
* Handle input blur for options mode.
|
|
161
188
|
*/
|
|
162
189
|
this.handleInputBlurOptions = () => {
|
|
163
190
|
setTimeout(() => {
|
|
191
|
+
if (this.preventBlurClose) {
|
|
192
|
+
this.preventBlurClose = false;
|
|
193
|
+
return; // Don't close the popover
|
|
194
|
+
}
|
|
164
195
|
if (!this.el.contains(document.activeElement)) {
|
|
165
196
|
// Close the popover without affecting the divider
|
|
166
197
|
this.open = false;
|
|
@@ -307,6 +338,102 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
307
338
|
}
|
|
308
339
|
this.open = !this.open;
|
|
309
340
|
};
|
|
341
|
+
/**
|
|
342
|
+
* Toggles the selection state of all non-disabled options in options mode.
|
|
343
|
+
* Respects filtering by only selecting/deselecting visible items.
|
|
344
|
+
* @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
|
|
345
|
+
*/
|
|
346
|
+
this.toggleSelectAllOptions = (selectAll) => {
|
|
347
|
+
if (!this.options)
|
|
348
|
+
return;
|
|
349
|
+
// Get visible and enabled option values from DOM
|
|
350
|
+
const visibleOptionValues = this.getVisibleEnabledOptionItems();
|
|
351
|
+
console.info('[SelectAll][Options] toggleSelectAllOptions called. selectAll:', selectAll, 'visibleOptionValues:', visibleOptionValues, 'Current value:', this.value);
|
|
352
|
+
if (selectAll) {
|
|
353
|
+
// Select all visible options - merge with existing selections
|
|
354
|
+
this.value = [...new Set([...this.value, ...visibleOptionValues])];
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
// Deselect only the visible options, keep others that might be filtered out
|
|
358
|
+
this.value = this.value.filter(val => !visibleOptionValues.includes(val));
|
|
359
|
+
}
|
|
360
|
+
console.info('[SelectAll][Options] New value after toggle:', this.value);
|
|
361
|
+
// Emit the change event
|
|
362
|
+
this.valueChanged.emit(this.value);
|
|
363
|
+
// Synchronize child components
|
|
364
|
+
this.syncChildComponents();
|
|
365
|
+
// Reorder content to move selected items to top
|
|
366
|
+
this.reorderOptionsContent();
|
|
367
|
+
};
|
|
368
|
+
/**
|
|
369
|
+
* Toggles the selection state of all non-disabled slot items.
|
|
370
|
+
* @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
|
|
371
|
+
*/
|
|
372
|
+
this.toggleSelectAllSlots = (selectAll) => {
|
|
373
|
+
if (this.options)
|
|
374
|
+
return; // Only for slots mode
|
|
375
|
+
// Get visible and enabled items
|
|
376
|
+
const items = this.getVisibleEnabledSlotItems();
|
|
377
|
+
console.info('[SelectAll][Slots] toggleSelectAllSlots called. selectAll:', selectAll, 'visible slot items:', items.map(item => item.getAttribute('value') || item.getAttribute('label')), 'Current value:', this.value);
|
|
378
|
+
if (selectAll) {
|
|
379
|
+
// Select all visible items
|
|
380
|
+
const allActiveValues = items
|
|
381
|
+
.map(item => item.getAttribute('value') || item.getAttribute('label') || '')
|
|
382
|
+
.filter(value => value !== '');
|
|
383
|
+
this.value = [...new Set([...this.value, ...allActiveValues])];
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
// Deselect only the visible items, keep others that might be filtered out
|
|
387
|
+
const visibleValues = items
|
|
388
|
+
.map(item => item.getAttribute('value') || item.getAttribute('label') || '')
|
|
389
|
+
.filter(value => value !== '');
|
|
390
|
+
this.value = this.value.filter(val => !visibleValues.includes(val));
|
|
391
|
+
}
|
|
392
|
+
console.info('[SelectAll][Slots] New value after toggle:', this.value);
|
|
393
|
+
// Emit the change event
|
|
394
|
+
this.valueChanged.emit(this.value);
|
|
395
|
+
// Force synchronization with a small delay to ensure DOM is updated
|
|
396
|
+
requestAnimationFrame(() => {
|
|
397
|
+
this.syncChildComponents();
|
|
398
|
+
this.reorderSlotContent();
|
|
399
|
+
});
|
|
400
|
+
};
|
|
401
|
+
/**
|
|
402
|
+
* Handle click on the select all checkbox in options mode.
|
|
403
|
+
* @param {Event} event - The click event.
|
|
404
|
+
*/
|
|
405
|
+
this.handleSelectAllCheckboxOptionsClick = (event) => {
|
|
406
|
+
event.stopPropagation();
|
|
407
|
+
event.preventDefault();
|
|
408
|
+
console.info('[handleSelectAllCheckboxOptionsClick] event:', event);
|
|
409
|
+
const currentState = this.getSelectAllCheckboxStateOptions();
|
|
410
|
+
console.info('[SelectAll][Options] Checkbox clicked. Current state:', currentState, 'Current value:', this.value);
|
|
411
|
+
// Logic to handle the indeterminate state
|
|
412
|
+
// - unchecked → select all
|
|
413
|
+
// - indeterminate → select all (clicking on indeterminate will change to checked)
|
|
414
|
+
// - checked → deselect all
|
|
415
|
+
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
416
|
+
console.info('[SelectAll][Options] shouldSelectAll:', shouldSelectAll);
|
|
417
|
+
this.toggleSelectAllOptions(shouldSelectAll);
|
|
418
|
+
};
|
|
419
|
+
/**
|
|
420
|
+
* Handle click on the select all checkbox in slots mode.
|
|
421
|
+
* @param {Event} event - The click event.
|
|
422
|
+
*/
|
|
423
|
+
this.handleSelectAllCheckboxSlotsClick = (event) => {
|
|
424
|
+
event.stopPropagation();
|
|
425
|
+
event.preventDefault();
|
|
426
|
+
console.info('[handleSelectAllCheckboxSlotsClick] event:', event);
|
|
427
|
+
const currentState = this.getSelectAllCheckboxStateSlots();
|
|
428
|
+
console.info('[SelectAll][Slots] Checkbox clicked. Current state:', currentState, 'Current value:', this.value);
|
|
429
|
+
// Logic to handle the indeterminate state
|
|
430
|
+
// - unchecked → select all
|
|
431
|
+
// - indeterminate → select all (clicking on indeterminate will change to checked)
|
|
432
|
+
// - checked → deselect all
|
|
433
|
+
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
434
|
+
console.info('[SelectAll][Slots] shouldSelectAll:', shouldSelectAll);
|
|
435
|
+
this.toggleSelectAllSlots(shouldSelectAll);
|
|
436
|
+
};
|
|
310
437
|
//#endregion METHODS
|
|
311
438
|
/****************************************************************************/
|
|
312
439
|
//#region RENDER
|
|
@@ -315,35 +442,83 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
315
442
|
* @returns {any} The JSX for options mode
|
|
316
443
|
*/
|
|
317
444
|
this.renderOptionsMode = () => {
|
|
318
|
-
return (h(Host, { "aria-label": this.label
|
|
445
|
+
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" }, h("slot", { name: "leading-input" }), this.value.length > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.value.length > 0, label: `${this.value.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseOptions })), this.filterable || this.disabled || this.readonly ? (h("input", { type: "text", id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (h(Fragment, null, h("input", { id: this.inputId, type: "text", style: {
|
|
446
|
+
position: 'absolute',
|
|
447
|
+
opacity: '0',
|
|
448
|
+
width: '0',
|
|
449
|
+
height: '0',
|
|
450
|
+
pointerEvents: 'none',
|
|
451
|
+
}, 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: () => {
|
|
452
|
+
this.preventBlurClose = true;
|
|
453
|
+
}, 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: () => {
|
|
454
|
+
this.preventBlurClose = true;
|
|
455
|
+
}, onClick: this.togglePopoverOptions })), h("slot", { name: "after-input" })), h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, 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() ===
|
|
456
|
+
'indeterminate', label: this.getSelectAllCheckboxStateOptions() === 'unchecked'
|
|
457
|
+
? this.selectAllLabel
|
|
458
|
+
: this.deselectAllLabel, onMouseDown: () => {
|
|
459
|
+
this.preventBlurClose = true;
|
|
460
|
+
}, 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()));
|
|
319
461
|
};
|
|
320
462
|
/**
|
|
321
463
|
* Renders the component in slots mode
|
|
322
464
|
* @returns {any} The JSX for slots mode
|
|
323
465
|
*/
|
|
324
466
|
this.renderSlotsMode = () => {
|
|
325
|
-
return (h(Host, { "aria-label": this.label
|
|
467
|
+
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 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.value.length > 0, label: `${this.value.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseSlots })), this.filterable || this.disabled || this.readonly ? (h("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputSlots, onFocus: this.handleInputFocusSlots, onBlur: this.handleInputBlurSlots, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (h(Fragment, null, h("input", { id: this.inputId, type: "text", style: {
|
|
468
|
+
position: 'absolute',
|
|
469
|
+
opacity: '0',
|
|
470
|
+
width: '0',
|
|
471
|
+
height: '0',
|
|
472
|
+
pointerEvents: 'none',
|
|
473
|
+
}, 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: () => {
|
|
474
|
+
this.preventBlurClose = true;
|
|
475
|
+
}, 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: () => {
|
|
476
|
+
this.preventBlurClose = true;
|
|
477
|
+
}, onClick: this.togglePopoverSlots })), h("slot", { name: "after-input" })), h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, 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() ===
|
|
478
|
+
'indeterminate', label: this.getSelectAllCheckboxStateSlots() === 'unchecked'
|
|
479
|
+
? this.selectAllLabel
|
|
480
|
+
: this.deselectAllLabel, onMouseDown: () => {
|
|
481
|
+
this.preventBlurClose = true;
|
|
482
|
+
}, onClick: this.handleSelectAllCheckboxSlotsClick }))))), h("slot", { name: "content" }))), this.renderDescriptions()));
|
|
326
483
|
};
|
|
327
484
|
}
|
|
328
485
|
//#endregion EVENTS
|
|
329
486
|
/****************************************************************************/
|
|
330
487
|
//#region WATCHERS
|
|
331
488
|
handleOptionsChange(newValue) {
|
|
489
|
+
console.info('[Watch:options] newValue:', newValue);
|
|
490
|
+
console.info('[Watch:options] current value before update:', this.value);
|
|
332
491
|
if (!newValue)
|
|
333
492
|
return;
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
493
|
+
// If the parent has set a value prop, use it. Otherwise, derive from checked options.
|
|
494
|
+
// (Assume: if value is undefined, it's not set by parent; if it's an array, it's set.)
|
|
495
|
+
if (this.value === undefined || this.value.length === 0) {
|
|
496
|
+
this.value = newValue
|
|
497
|
+
.filter(option => option.checked)
|
|
498
|
+
.map(option => option.value);
|
|
499
|
+
console.info('[Watch:options] updated value from checked options:', this.value);
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
// If value is set, ensure checked states in options match value
|
|
503
|
+
newValue.forEach(option => {
|
|
504
|
+
option.checked = this.value.includes(option.value);
|
|
505
|
+
});
|
|
506
|
+
console.info('[Watch:options] options checked state synced to value:', newValue);
|
|
507
|
+
}
|
|
337
508
|
this.reorderOptionsContent();
|
|
338
509
|
}
|
|
339
|
-
/**
|
|
340
|
-
* Emitted when the value changes.
|
|
341
|
-
*/
|
|
342
510
|
watchValueHandler() {
|
|
511
|
+
console.info('[Watch:value] Value changed:', this.value);
|
|
343
512
|
// Synchronize child components when value changes programmatically
|
|
344
513
|
if (this.el && this.el.isConnected) {
|
|
345
514
|
this.syncChildComponents();
|
|
346
515
|
}
|
|
516
|
+
// Also, update options checked state if options exist
|
|
517
|
+
if (this.options) {
|
|
518
|
+
this.options.forEach(option => {
|
|
519
|
+
option.checked = this.value.includes(option.value);
|
|
520
|
+
});
|
|
521
|
+
}
|
|
347
522
|
}
|
|
348
523
|
//#endregion WATCHERS
|
|
349
524
|
/****************************************************************************/
|
|
@@ -382,6 +557,7 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
382
557
|
return;
|
|
383
558
|
}
|
|
384
559
|
const { value, checked } = event.detail;
|
|
560
|
+
console.info('[Event:itemChecked] value:', value, 'checked:', checked, 'current value:', this.value);
|
|
385
561
|
if (value !== undefined && value !== null) {
|
|
386
562
|
const newValue = [...this.value];
|
|
387
563
|
const valueIndex = newValue.indexOf(value);
|
|
@@ -391,6 +567,7 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
391
567
|
else if (!checked && valueIndex > -1) {
|
|
392
568
|
newValue.splice(valueIndex, 1);
|
|
393
569
|
}
|
|
570
|
+
console.info('[Event:itemChecked] newValue after update:', newValue);
|
|
394
571
|
// Always update the state and emit the event when an item is checked/unchecked
|
|
395
572
|
this.value = newValue;
|
|
396
573
|
this.valueChanged.emit(this.value);
|
|
@@ -403,7 +580,7 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
403
580
|
}
|
|
404
581
|
}
|
|
405
582
|
else {
|
|
406
|
-
console.warn('Received itemChecked event with undefined or null value'); // Warning log
|
|
583
|
+
console.warn('[Event:itemChecked] Received itemChecked event with undefined or null value'); // Warning log
|
|
407
584
|
}
|
|
408
585
|
}
|
|
409
586
|
// Add a listener for the slot content
|
|
@@ -425,6 +602,7 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
425
602
|
* Subscribe to click outside event.
|
|
426
603
|
*/
|
|
427
604
|
connectedCallback() {
|
|
605
|
+
console.info('[Lifecycle] connectedCallback - value:', this.value);
|
|
428
606
|
document.addEventListener('click', this.handleClickOutside.bind(this));
|
|
429
607
|
}
|
|
430
608
|
/**
|
|
@@ -432,12 +610,15 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
432
610
|
*/
|
|
433
611
|
componentWillLoad() {
|
|
434
612
|
var _a;
|
|
613
|
+
console.info('[Lifecycle] componentWillLoad - value:', this.value, 'options:', this.options);
|
|
435
614
|
// Don't call handleOptionsChange if we are in slots mode
|
|
436
615
|
if (this.options) {
|
|
437
616
|
this.handleOptionsChange(this.options);
|
|
438
617
|
}
|
|
439
618
|
// Specific initialization for slots mode
|
|
440
619
|
if (!this.options) {
|
|
620
|
+
// Initialize value from checked slotted children
|
|
621
|
+
this.initializeValueFromSlots();
|
|
441
622
|
// Use a microtask to ensure DOM is ready
|
|
442
623
|
Promise.resolve().then(() => {
|
|
443
624
|
// Synchronize child components
|
|
@@ -456,21 +637,30 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
456
637
|
if (!this.filterText) {
|
|
457
638
|
this.resetFilter();
|
|
458
639
|
}
|
|
640
|
+
// Initialize filter results state
|
|
641
|
+
this.hasFilterResults = true;
|
|
459
642
|
}
|
|
460
643
|
/**
|
|
461
644
|
* Force reorder if options mode in componentDidLoad because of the initial render not trigger @watch
|
|
462
645
|
*/
|
|
463
646
|
componentDidLoad() {
|
|
647
|
+
console.info('[Lifecycle] componentDidLoad - value:', this.value, 'options:', this.options);
|
|
464
648
|
if (this.options) {
|
|
465
649
|
this.handleOptionsChange(this.options);
|
|
466
650
|
}
|
|
467
651
|
// Final synchronization of child components after everything is loaded
|
|
468
652
|
this.syncChildComponents();
|
|
653
|
+
// For slots mode, ensure value is initialized from checked children if not already
|
|
654
|
+
if (!this.options) {
|
|
655
|
+
this.initializeValueFromSlots();
|
|
656
|
+
this.syncChildComponents();
|
|
657
|
+
}
|
|
469
658
|
}
|
|
470
659
|
/**
|
|
471
660
|
* Unsubscribe from click outside event.
|
|
472
661
|
*/
|
|
473
662
|
disconnectedCallback() {
|
|
663
|
+
console.info('[Lifecycle] disconnectedCallback - value:', this.value);
|
|
474
664
|
document.removeEventListener('click', this.handleClickOutside.bind(this));
|
|
475
665
|
}
|
|
476
666
|
//#endregion LIFECYCLE
|
|
@@ -505,14 +695,67 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
505
695
|
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
506
696
|
}
|
|
507
697
|
}
|
|
698
|
+
// Reset filter results state
|
|
699
|
+
this.hasFilterResults = true;
|
|
508
700
|
}
|
|
509
701
|
/**
|
|
510
702
|
* Returns the list of selected values.
|
|
511
703
|
* @returns {string[]} The selected values.
|
|
512
704
|
*/
|
|
513
705
|
async getSelectedValues() {
|
|
706
|
+
console.info('getSelectedValues:', this.value);
|
|
514
707
|
return this.value;
|
|
515
708
|
}
|
|
709
|
+
/**
|
|
710
|
+
* Select all visible and enabled items.
|
|
711
|
+
* Works for both options and slots mode.
|
|
712
|
+
* @returns {Promise<void>}
|
|
713
|
+
*/
|
|
714
|
+
async selectAll() {
|
|
715
|
+
if (this.disabled || this.readonly)
|
|
716
|
+
return;
|
|
717
|
+
if (this.options) {
|
|
718
|
+
this.toggleSelectAllOptions(true);
|
|
719
|
+
}
|
|
720
|
+
else {
|
|
721
|
+
this.toggleSelectAllSlots(true);
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
/**
|
|
725
|
+
* Deselect all visible and enabled items.
|
|
726
|
+
* Works for both options and slots mode.
|
|
727
|
+
* @returns {Promise<void>}
|
|
728
|
+
*/
|
|
729
|
+
async deselectAll() {
|
|
730
|
+
if (this.disabled || this.readonly)
|
|
731
|
+
return;
|
|
732
|
+
if (this.options) {
|
|
733
|
+
this.toggleSelectAllOptions(false);
|
|
734
|
+
}
|
|
735
|
+
else {
|
|
736
|
+
this.toggleSelectAllSlots(false);
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
/**
|
|
740
|
+
* Toggle selection state of all visible and enabled items.
|
|
741
|
+
* If all items are selected, deselects all. Otherwise, selects all.
|
|
742
|
+
* Works for both options and slots mode.
|
|
743
|
+
* @returns {Promise<void>}
|
|
744
|
+
*/
|
|
745
|
+
async toggleSelectAll() {
|
|
746
|
+
if (this.disabled || this.readonly)
|
|
747
|
+
return;
|
|
748
|
+
const currentState = this.options
|
|
749
|
+
? this.getSelectAllCheckboxStateOptions()
|
|
750
|
+
: this.getSelectAllCheckboxStateSlots();
|
|
751
|
+
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
752
|
+
if (this.options) {
|
|
753
|
+
this.toggleSelectAllOptions(shouldSelectAll);
|
|
754
|
+
}
|
|
755
|
+
else {
|
|
756
|
+
this.toggleSelectAllSlots(shouldSelectAll);
|
|
757
|
+
}
|
|
758
|
+
}
|
|
516
759
|
/**
|
|
517
760
|
* Reorder the content of the slot.
|
|
518
761
|
*/
|
|
@@ -556,7 +799,7 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
556
799
|
* Reorder the content for options mode with async handling
|
|
557
800
|
*/
|
|
558
801
|
reorderOptionsContent() {
|
|
559
|
-
const ul = this.el.querySelector('ul
|
|
802
|
+
const ul = this.el.querySelector('ul');
|
|
560
803
|
if (!ul)
|
|
561
804
|
return;
|
|
562
805
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
|
|
@@ -664,6 +907,7 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
664
907
|
this.removeEmptyMessageOption(ul);
|
|
665
908
|
items.forEach(item => (item.style.display = ''));
|
|
666
909
|
this.reorderOptionsContent(); // Reorder after reset
|
|
910
|
+
this.hasFilterResults = true; // Reset filter means we have results
|
|
667
911
|
return;
|
|
668
912
|
}
|
|
669
913
|
// Filter the items
|
|
@@ -676,6 +920,8 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
676
920
|
if (matchesFilter)
|
|
677
921
|
hasVisibleItems = true;
|
|
678
922
|
});
|
|
923
|
+
// Update the filter results state
|
|
924
|
+
this.hasFilterResults = hasVisibleItems;
|
|
679
925
|
// Manage the divider with the visible items
|
|
680
926
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
681
927
|
const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
@@ -706,6 +952,7 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
706
952
|
// If filter text is empty, reset all items visibility
|
|
707
953
|
if (!this.filterText.trim()) {
|
|
708
954
|
this.resetFilter();
|
|
955
|
+
this.hasFilterResults = true; // Reset filter means we have results
|
|
709
956
|
return;
|
|
710
957
|
}
|
|
711
958
|
const normalizedFilter = this.normalizeText(this.filterText);
|
|
@@ -725,6 +972,8 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
725
972
|
if (matchesFilter)
|
|
726
973
|
hasVisibleItems = true;
|
|
727
974
|
});
|
|
975
|
+
// Update the filter results state
|
|
976
|
+
this.hasFilterResults = hasVisibleItems;
|
|
728
977
|
// Get visible items after filtering
|
|
729
978
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
730
979
|
const visibleSelectedItems = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
@@ -935,10 +1184,13 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
935
1184
|
return;
|
|
936
1185
|
}
|
|
937
1186
|
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1187
|
+
console.info('[syncChildComponents] value:', this.value);
|
|
938
1188
|
items.forEach(item => {
|
|
939
1189
|
// Get the effective value: use explicit value if present, otherwise use label
|
|
940
1190
|
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
941
|
-
|
|
1191
|
+
const shouldBeChecked = this.value.includes(itemValue);
|
|
1192
|
+
console.info('[syncChildComponents] itemValue:', itemValue, 'shouldBeChecked:', shouldBeChecked, 'item.checked(before):', item.checked);
|
|
1193
|
+
if (shouldBeChecked) {
|
|
942
1194
|
item.setAttribute('checked', '');
|
|
943
1195
|
item.checked = true;
|
|
944
1196
|
}
|
|
@@ -946,8 +1198,106 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
946
1198
|
item.removeAttribute('checked');
|
|
947
1199
|
item.checked = false;
|
|
948
1200
|
}
|
|
1201
|
+
console.info('[syncChildComponents] itemValue:', itemValue, 'item.checked(after):', item.checked);
|
|
949
1202
|
});
|
|
950
1203
|
}
|
|
1204
|
+
/**
|
|
1205
|
+
* Gets visible and enabled slot items using consistent logic.
|
|
1206
|
+
* @returns {Element[]} Array of visible and enabled items
|
|
1207
|
+
*/
|
|
1208
|
+
getVisibleEnabledSlotItems() {
|
|
1209
|
+
const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1210
|
+
return allItems.filter(item => {
|
|
1211
|
+
const isHidden = item.style.display === 'none';
|
|
1212
|
+
const isDisabled = item.hasAttribute('disabled');
|
|
1213
|
+
return !isHidden && !isDisabled;
|
|
1214
|
+
});
|
|
1215
|
+
}
|
|
1216
|
+
/**
|
|
1217
|
+
* Gets visible and enabled option items by checking DOM elements.
|
|
1218
|
+
* @returns {string[]} Array of visible and enabled option values
|
|
1219
|
+
*/
|
|
1220
|
+
getVisibleEnabledOptionItems() {
|
|
1221
|
+
const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1222
|
+
const visibleItems = allItems.filter(item => {
|
|
1223
|
+
const isHidden = item.style.display === 'none';
|
|
1224
|
+
const isDisabled = item.hasAttribute('disabled');
|
|
1225
|
+
return !isHidden && !isDisabled;
|
|
1226
|
+
});
|
|
1227
|
+
return visibleItems
|
|
1228
|
+
.map(item => item.getAttribute('value') || '')
|
|
1229
|
+
.filter(value => value !== '');
|
|
1230
|
+
}
|
|
1231
|
+
/**
|
|
1232
|
+
* Determines if the toggle all button should be shown in options mode.
|
|
1233
|
+
* @returns {boolean} True if there are visible items and no "No results found" message
|
|
1234
|
+
*/
|
|
1235
|
+
shouldShowToggleAllOptionsButton() {
|
|
1236
|
+
if (!this.options)
|
|
1237
|
+
return false; // Only for options mode
|
|
1238
|
+
return this.enableSelectAll && this.hasFilterResults;
|
|
1239
|
+
}
|
|
1240
|
+
/**
|
|
1241
|
+
* Gets the checkbox state for the select all checkbox in options mode.
|
|
1242
|
+
* @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
|
|
1243
|
+
*/
|
|
1244
|
+
getSelectAllCheckboxStateOptions() {
|
|
1245
|
+
if (!this.options)
|
|
1246
|
+
return 'unchecked';
|
|
1247
|
+
// Get visible and enabled option values from DOM
|
|
1248
|
+
const visibleOptionValues = this.getVisibleEnabledOptionItems();
|
|
1249
|
+
if (visibleOptionValues.length === 0)
|
|
1250
|
+
return 'unchecked';
|
|
1251
|
+
const selectedVisibleOptions = visibleOptionValues.filter(value => this.value.includes(value));
|
|
1252
|
+
if (selectedVisibleOptions.length === 0)
|
|
1253
|
+
return 'unchecked';
|
|
1254
|
+
if (selectedVisibleOptions.length === visibleOptionValues.length)
|
|
1255
|
+
return 'checked';
|
|
1256
|
+
return 'indeterminate';
|
|
1257
|
+
}
|
|
1258
|
+
/**
|
|
1259
|
+
* Gets the checkbox state for the select all checkbox in slots mode.
|
|
1260
|
+
* @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
|
|
1261
|
+
*/
|
|
1262
|
+
getSelectAllCheckboxStateSlots() {
|
|
1263
|
+
if (this.options)
|
|
1264
|
+
return 'unchecked';
|
|
1265
|
+
// Get all visible and enabled items
|
|
1266
|
+
const items = this.getVisibleEnabledSlotItems();
|
|
1267
|
+
if (items.length === 0)
|
|
1268
|
+
return 'unchecked';
|
|
1269
|
+
const selectedItems = items.filter(item => {
|
|
1270
|
+
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
1271
|
+
return itemValue !== '' && this.value.includes(itemValue);
|
|
1272
|
+
});
|
|
1273
|
+
if (selectedItems.length === 0)
|
|
1274
|
+
return 'unchecked';
|
|
1275
|
+
if (selectedItems.length === items.length)
|
|
1276
|
+
return 'checked';
|
|
1277
|
+
return 'indeterminate';
|
|
1278
|
+
}
|
|
1279
|
+
/**
|
|
1280
|
+
* Determines if the toggle all button should be shown in slots mode.
|
|
1281
|
+
* @returns {boolean} True if there are visible items and no "No results found" message
|
|
1282
|
+
*/
|
|
1283
|
+
shouldShowToggleAllSlotButton() {
|
|
1284
|
+
if (this.options)
|
|
1285
|
+
return false; // Only for slots mode
|
|
1286
|
+
return this.enableSelectAll && this.hasFilterResults;
|
|
1287
|
+
}
|
|
1288
|
+
/**
|
|
1289
|
+
* Initializes the value array from checked slotted nv-fielddropdownitemcheck elements (slots mode only).
|
|
1290
|
+
*/
|
|
1291
|
+
initializeValueFromSlots() {
|
|
1292
|
+
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1293
|
+
// Values from checked slot children
|
|
1294
|
+
const checkedValues = items
|
|
1295
|
+
.filter(item => item.hasAttribute('checked'))
|
|
1296
|
+
.map(item => item.getAttribute('value') || item.getAttribute('label') || '');
|
|
1297
|
+
// Combine with current this.value (set by code), ensuring uniqueness
|
|
1298
|
+
this.value = Array.from(new Set([...(this.value || []), ...checkedValues]));
|
|
1299
|
+
console.info('[initializeValueFromSlots] checkedValues:', checkedValues, 'combined value:', this.value);
|
|
1300
|
+
}
|
|
951
1301
|
/**
|
|
952
1302
|
* Renders description and error description sections
|
|
953
1303
|
* @returns {any} The JSX for descriptions
|
|
@@ -974,13 +1324,12 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
974
1324
|
}; }
|
|
975
1325
|
static get style() { return NvFieldmultiselectStyle0; }
|
|
976
1326
|
}, [68, "nv-fieldmultiselect", {
|
|
1327
|
+
"label": [513],
|
|
977
1328
|
"inputId": [513, "input-id"],
|
|
978
1329
|
"name": [513],
|
|
979
|
-
"label": [513],
|
|
980
1330
|
"description": [513],
|
|
981
1331
|
"placeholder": [513],
|
|
982
1332
|
"autocomplete": [513],
|
|
983
|
-
"value": [1040],
|
|
984
1333
|
"required": [516],
|
|
985
1334
|
"readonly": [516],
|
|
986
1335
|
"disabled": [516],
|
|
@@ -988,19 +1337,28 @@ const NvFieldmultiselect$1 = /*@__PURE__*/ proxyCustomElement(class NvFieldmulti
|
|
|
988
1337
|
"errorDescription": [513, "error-description"],
|
|
989
1338
|
"maxHeight": [513, "max-height"],
|
|
990
1339
|
"open": [1540],
|
|
991
|
-
"
|
|
992
|
-
"filterable": [516],
|
|
1340
|
+
"fluid": [516],
|
|
993
1341
|
"options": [1040],
|
|
1342
|
+
"value": [1040],
|
|
1343
|
+
"filterable": [516],
|
|
1344
|
+
"emptyResult": [513, "empty-result"],
|
|
994
1345
|
"debounceDelay": [514, "debounce-delay"],
|
|
995
1346
|
"autofocus": [516],
|
|
996
|
-
"fluid": [516],
|
|
997
1347
|
"badgeLabel": [513, "badge-label"],
|
|
998
1348
|
"filterText": [1537, "filter-text"],
|
|
1349
|
+
"enableSelectAll": [516, "enable-select-all"],
|
|
1350
|
+
"selectAllLabel": [513, "select-all-label"],
|
|
1351
|
+
"deselectAllLabel": [513, "deselect-all-label"],
|
|
999
1352
|
"sortedOptions": [32],
|
|
1000
1353
|
"isHandlingEscape": [32],
|
|
1354
|
+
"hasFilterResults": [32],
|
|
1355
|
+
"isSelectAllSectionVisible": [32],
|
|
1001
1356
|
"getFilterText": [64],
|
|
1002
1357
|
"resetFilter": [64],
|
|
1003
|
-
"getSelectedValues": [64]
|
|
1358
|
+
"getSelectedValues": [64],
|
|
1359
|
+
"selectAll": [64],
|
|
1360
|
+
"deselectAll": [64],
|
|
1361
|
+
"toggleSelectAll": [64]
|
|
1004
1362
|
}, [[0, "openChanged", "handleOpenChanged"], [0, "itemChecked", "handleItemChecked"], [0, "slotchange", "handleSlotChange"], [0, "keydown", "handleKeyDown"]], {
|
|
1005
1363
|
"options": ["handleOptionsChange"],
|
|
1006
1364
|
"value": ["watchValueHandler"]
|