@nova-design-system/nova-webcomponents 3.9.0 → 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 +121 -38
- 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 +62 -94
- package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +52 -33
- package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
- 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 +44 -25
- 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 +63 -94
- package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +52 -33
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
- 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 +70 -102
- package/dist/components/nv-fielddate.js.map +1 -1
- package/dist/components/nv-fielddaterange.js +58 -39
- package/dist/components/nv-fielddaterange.js.map +1 -1
- 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-91a558eb.js → p-32e8e42e.js} +2 -2
- package/dist/components/{p-91a558eb.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-d32b75ac.js → p-8aee1010.js} +123 -39
- 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 +121 -38
- 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 +62 -94
- package/dist/esm/nv-fielddate.entry.js.map +1 -1
- package/dist/esm/nv-fielddaterange.entry.js +52 -33
- package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
- 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-f687e05c.entry.js → p-3da64006.entry.js} +2 -2
- package/dist/native/p-3da64006.entry.js.map +1 -0
- 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-516da423.entry.js → p-ad2cc829.entry.js} +2 -2
- package/dist/native/p-ad2cc829.entry.js.map +1 -0
- 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-fielddate/nv-fielddate.d.ts +4 -19
- package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +1 -0
- 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 +1167 -271
- package/hydrate/index.mjs +1167 -271
- 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-d32b75ac.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-516da423.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-dc34da69.entry.js +0 -2
- package/dist/native/p-dc34da69.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-f687e05c.entry.js.map +0 -1
- 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-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-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
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
const index = require('./index-c56424e5.js');
|
|
6
6
|
const v4 = require('./v4-7014b8b0.js');
|
|
7
7
|
|
|
8
|
-
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}";
|
|
8
|
+
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}";
|
|
9
9
|
const NvFieldmultiselectStyle0 = nvFieldmultiselectCss;
|
|
10
10
|
|
|
11
11
|
const NvFieldmultiselect = class {
|
|
@@ -13,8 +13,6 @@ const NvFieldmultiselect = class {
|
|
|
13
13
|
index.registerInstance(this, hostRef);
|
|
14
14
|
this.valueChanged = index.createEvent(this, "valueChanged", 7);
|
|
15
15
|
this.filterTextChanged = index.createEvent(this, "filterTextChanged", 7);
|
|
16
|
-
/****************************************************************************/
|
|
17
|
-
//#region PROPERTIES
|
|
18
16
|
/**
|
|
19
17
|
* Sets the ID for the input element and the for attribute of the associated
|
|
20
18
|
* label. If no ID is provided, a random one will be automatically generated
|
|
@@ -29,11 +27,6 @@ const NvFieldmultiselect = class {
|
|
|
29
27
|
* always type in fresh data.
|
|
30
28
|
*/
|
|
31
29
|
this.autocomplete = 'off';
|
|
32
|
-
/**
|
|
33
|
-
* Specifies the selected values of the multiselect field.
|
|
34
|
-
* This is the canonical value for the component and is used for form submission.
|
|
35
|
-
*/
|
|
36
|
-
this.value = [];
|
|
37
30
|
/**
|
|
38
31
|
* Marks the input field as required.
|
|
39
32
|
*/
|
|
@@ -61,13 +54,22 @@ const NvFieldmultiselect = class {
|
|
|
61
54
|
*/
|
|
62
55
|
this.open = false;
|
|
63
56
|
/**
|
|
64
|
-
*
|
|
57
|
+
* Allows the field to stretch and fill the entire width of its container.
|
|
65
58
|
*/
|
|
66
|
-
this.
|
|
59
|
+
this.fluid = false;
|
|
60
|
+
/**
|
|
61
|
+
* Specifies the selected values of the multiselect field.
|
|
62
|
+
* This is the canonical value for the component and is used for form submission.
|
|
63
|
+
*/
|
|
64
|
+
this.value = [];
|
|
67
65
|
/**
|
|
68
66
|
* Enables or disables the filtering feature for the multiselect items.
|
|
69
67
|
*/
|
|
70
68
|
this.filterable = false;
|
|
69
|
+
/**
|
|
70
|
+
* The text to display when no items match the filter.
|
|
71
|
+
*/
|
|
72
|
+
this.emptyResult = 'No results found';
|
|
71
73
|
/**
|
|
72
74
|
* Delay in milliseconds before the search is triggered when typing in the filter input.
|
|
73
75
|
* @default 300
|
|
@@ -79,10 +81,6 @@ const NvFieldmultiselect = class {
|
|
|
79
81
|
* element.
|
|
80
82
|
*/
|
|
81
83
|
this.autofocus = false;
|
|
82
|
-
/**
|
|
83
|
-
* Allows the field to stretch and fill the entire width of its container.
|
|
84
|
-
*/
|
|
85
|
-
this.fluid = false;
|
|
86
84
|
/**
|
|
87
85
|
* Text for the badge showing the number of selected items.
|
|
88
86
|
*/
|
|
@@ -91,6 +89,18 @@ const NvFieldmultiselect = class {
|
|
|
91
89
|
* The text entered by the user for filtering multiselect items.
|
|
92
90
|
*/
|
|
93
91
|
this.filterText = '';
|
|
92
|
+
/**
|
|
93
|
+
* Enables or disables the "Select All / Deselect All" toggle functionality.
|
|
94
|
+
*/
|
|
95
|
+
this.enableSelectAll = false;
|
|
96
|
+
/**
|
|
97
|
+
* Text for the "Select All" button.
|
|
98
|
+
*/
|
|
99
|
+
this.selectAllLabel = 'Select/deselect all';
|
|
100
|
+
/**
|
|
101
|
+
* Text for the "Deselect All" button.
|
|
102
|
+
*/
|
|
103
|
+
this.deselectAllLabel = 'Select/deselect all';
|
|
94
104
|
//#endregion PROPERTIES
|
|
95
105
|
/****************************************************************************/
|
|
96
106
|
//#region STATE
|
|
@@ -99,10 +109,22 @@ const NvFieldmultiselect = class {
|
|
|
99
109
|
*/
|
|
100
110
|
this.sortedOptions = [];
|
|
101
111
|
this.isHandlingEscape = false;
|
|
112
|
+
/**
|
|
113
|
+
* Indicates whether the current filter has visible results.
|
|
114
|
+
* Used to control the visibility of the "Select All" button.
|
|
115
|
+
*/
|
|
116
|
+
this.hasFilterResults = true;
|
|
117
|
+
/**
|
|
118
|
+
* Controls the visibility of the select all section.
|
|
119
|
+
*/
|
|
120
|
+
this.isSelectAllSectionVisible = true;
|
|
121
|
+
// Add the flag to the class
|
|
122
|
+
this.preventBlurClose = false;
|
|
102
123
|
/**
|
|
103
124
|
* Handle badge close for options mode.
|
|
104
125
|
*/
|
|
105
126
|
this.handleBadgeCloseOptions = () => {
|
|
127
|
+
console.info('handleBadgeCloseOptions:', this.value);
|
|
106
128
|
this.value = [];
|
|
107
129
|
this.valueChanged.emit(this.value);
|
|
108
130
|
// Uncheck all elements
|
|
@@ -120,6 +142,7 @@ const NvFieldmultiselect = class {
|
|
|
120
142
|
* Handle badge close for slots mode.
|
|
121
143
|
*/
|
|
122
144
|
this.handleBadgeCloseSlots = () => {
|
|
145
|
+
console.info('handleBadgeCloseSlots:', this.value);
|
|
123
146
|
this.value = [];
|
|
124
147
|
this.valueChanged.emit(this.value);
|
|
125
148
|
// Uncheck all elements
|
|
@@ -128,8 +151,11 @@ const NvFieldmultiselect = class {
|
|
|
128
151
|
item.checked = false;
|
|
129
152
|
item.style.display = '';
|
|
130
153
|
});
|
|
131
|
-
//
|
|
132
|
-
|
|
154
|
+
// Force DOM update before reordering
|
|
155
|
+
requestAnimationFrame(() => {
|
|
156
|
+
// Reorder slot content
|
|
157
|
+
this.reorderSlotContent();
|
|
158
|
+
});
|
|
133
159
|
};
|
|
134
160
|
/**
|
|
135
161
|
* Handle popover close
|
|
@@ -151,12 +177,17 @@ const NvFieldmultiselect = class {
|
|
|
151
177
|
this.filterText = '';
|
|
152
178
|
this.filterTextChanged.emit('');
|
|
153
179
|
this.resetFilter();
|
|
180
|
+
this.hasFilterResults = true;
|
|
154
181
|
};
|
|
155
182
|
/**
|
|
156
183
|
* Handle input blur for options mode.
|
|
157
184
|
*/
|
|
158
185
|
this.handleInputBlurOptions = () => {
|
|
159
186
|
setTimeout(() => {
|
|
187
|
+
if (this.preventBlurClose) {
|
|
188
|
+
this.preventBlurClose = false;
|
|
189
|
+
return; // Don't close the popover
|
|
190
|
+
}
|
|
160
191
|
if (!this.el.contains(document.activeElement)) {
|
|
161
192
|
// Close the popover without affecting the divider
|
|
162
193
|
this.open = false;
|
|
@@ -303,6 +334,102 @@ const NvFieldmultiselect = class {
|
|
|
303
334
|
}
|
|
304
335
|
this.open = !this.open;
|
|
305
336
|
};
|
|
337
|
+
/**
|
|
338
|
+
* Toggles the selection state of all non-disabled options in options mode.
|
|
339
|
+
* Respects filtering by only selecting/deselecting visible items.
|
|
340
|
+
* @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
|
|
341
|
+
*/
|
|
342
|
+
this.toggleSelectAllOptions = (selectAll) => {
|
|
343
|
+
if (!this.options)
|
|
344
|
+
return;
|
|
345
|
+
// Get visible and enabled option values from DOM
|
|
346
|
+
const visibleOptionValues = this.getVisibleEnabledOptionItems();
|
|
347
|
+
console.info('[SelectAll][Options] toggleSelectAllOptions called. selectAll:', selectAll, 'visibleOptionValues:', visibleOptionValues, 'Current value:', this.value);
|
|
348
|
+
if (selectAll) {
|
|
349
|
+
// Select all visible options - merge with existing selections
|
|
350
|
+
this.value = [...new Set([...this.value, ...visibleOptionValues])];
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
// Deselect only the visible options, keep others that might be filtered out
|
|
354
|
+
this.value = this.value.filter(val => !visibleOptionValues.includes(val));
|
|
355
|
+
}
|
|
356
|
+
console.info('[SelectAll][Options] New value after toggle:', this.value);
|
|
357
|
+
// Emit the change event
|
|
358
|
+
this.valueChanged.emit(this.value);
|
|
359
|
+
// Synchronize child components
|
|
360
|
+
this.syncChildComponents();
|
|
361
|
+
// Reorder content to move selected items to top
|
|
362
|
+
this.reorderOptionsContent();
|
|
363
|
+
};
|
|
364
|
+
/**
|
|
365
|
+
* Toggles the selection state of all non-disabled slot items.
|
|
366
|
+
* @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
|
|
367
|
+
*/
|
|
368
|
+
this.toggleSelectAllSlots = (selectAll) => {
|
|
369
|
+
if (this.options)
|
|
370
|
+
return; // Only for slots mode
|
|
371
|
+
// Get visible and enabled items
|
|
372
|
+
const items = this.getVisibleEnabledSlotItems();
|
|
373
|
+
console.info('[SelectAll][Slots] toggleSelectAllSlots called. selectAll:', selectAll, 'visible slot items:', items.map(item => item.getAttribute('value') || item.getAttribute('label')), 'Current value:', this.value);
|
|
374
|
+
if (selectAll) {
|
|
375
|
+
// Select all visible items
|
|
376
|
+
const allActiveValues = items
|
|
377
|
+
.map(item => item.getAttribute('value') || item.getAttribute('label') || '')
|
|
378
|
+
.filter(value => value !== '');
|
|
379
|
+
this.value = [...new Set([...this.value, ...allActiveValues])];
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
// Deselect only the visible items, keep others that might be filtered out
|
|
383
|
+
const visibleValues = items
|
|
384
|
+
.map(item => item.getAttribute('value') || item.getAttribute('label') || '')
|
|
385
|
+
.filter(value => value !== '');
|
|
386
|
+
this.value = this.value.filter(val => !visibleValues.includes(val));
|
|
387
|
+
}
|
|
388
|
+
console.info('[SelectAll][Slots] New value after toggle:', this.value);
|
|
389
|
+
// Emit the change event
|
|
390
|
+
this.valueChanged.emit(this.value);
|
|
391
|
+
// Force synchronization with a small delay to ensure DOM is updated
|
|
392
|
+
requestAnimationFrame(() => {
|
|
393
|
+
this.syncChildComponents();
|
|
394
|
+
this.reorderSlotContent();
|
|
395
|
+
});
|
|
396
|
+
};
|
|
397
|
+
/**
|
|
398
|
+
* Handle click on the select all checkbox in options mode.
|
|
399
|
+
* @param {Event} event - The click event.
|
|
400
|
+
*/
|
|
401
|
+
this.handleSelectAllCheckboxOptionsClick = (event) => {
|
|
402
|
+
event.stopPropagation();
|
|
403
|
+
event.preventDefault();
|
|
404
|
+
console.info('[handleSelectAllCheckboxOptionsClick] event:', event);
|
|
405
|
+
const currentState = this.getSelectAllCheckboxStateOptions();
|
|
406
|
+
console.info('[SelectAll][Options] Checkbox clicked. Current state:', currentState, 'Current value:', this.value);
|
|
407
|
+
// Logic to handle the indeterminate state
|
|
408
|
+
// - unchecked → select all
|
|
409
|
+
// - indeterminate → select all (clicking on indeterminate will change to checked)
|
|
410
|
+
// - checked → deselect all
|
|
411
|
+
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
412
|
+
console.info('[SelectAll][Options] shouldSelectAll:', shouldSelectAll);
|
|
413
|
+
this.toggleSelectAllOptions(shouldSelectAll);
|
|
414
|
+
};
|
|
415
|
+
/**
|
|
416
|
+
* Handle click on the select all checkbox in slots mode.
|
|
417
|
+
* @param {Event} event - The click event.
|
|
418
|
+
*/
|
|
419
|
+
this.handleSelectAllCheckboxSlotsClick = (event) => {
|
|
420
|
+
event.stopPropagation();
|
|
421
|
+
event.preventDefault();
|
|
422
|
+
console.info('[handleSelectAllCheckboxSlotsClick] event:', event);
|
|
423
|
+
const currentState = this.getSelectAllCheckboxStateSlots();
|
|
424
|
+
console.info('[SelectAll][Slots] Checkbox clicked. Current state:', currentState, 'Current value:', this.value);
|
|
425
|
+
// Logic to handle the indeterminate state
|
|
426
|
+
// - unchecked → select all
|
|
427
|
+
// - indeterminate → select all (clicking on indeterminate will change to checked)
|
|
428
|
+
// - checked → deselect all
|
|
429
|
+
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
430
|
+
console.info('[SelectAll][Slots] shouldSelectAll:', shouldSelectAll);
|
|
431
|
+
this.toggleSelectAllSlots(shouldSelectAll);
|
|
432
|
+
};
|
|
306
433
|
//#endregion METHODS
|
|
307
434
|
/****************************************************************************/
|
|
308
435
|
//#region RENDER
|
|
@@ -311,35 +438,83 @@ const NvFieldmultiselect = class {
|
|
|
311
438
|
* @returns {any} The JSX for options mode
|
|
312
439
|
*/
|
|
313
440
|
this.renderOptionsMode = () => {
|
|
314
|
-
return (index.h(index.Host, { "aria-label": this.label
|
|
441
|
+
return (index.h(index.Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect" }, index.h("slot", { name: "leading-input" }), this.value.length > 0 && (index.h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.value.length > 0, label: `${this.value.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseOptions })), this.filterable || this.disabled || this.readonly ? (index.h("input", { type: "text", id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputOptions, onFocus: this.handleInputFocusOptions, onBlur: this.handleInputBlurOptions, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (index.h(index.Fragment, null, index.h("input", { id: this.inputId, type: "text", style: {
|
|
442
|
+
position: 'absolute',
|
|
443
|
+
opacity: '0',
|
|
444
|
+
width: '0',
|
|
445
|
+
height: '0',
|
|
446
|
+
pointerEvents: 'none',
|
|
447
|
+
}, tabIndex: -1, "aria-hidden": "true", autoComplete: this.autocomplete, name: this.name, onFocus: this.handleInputFocusOptions }), index.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" }, index.h("span", null, this.placeholder)))), this.error && (index.h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (index.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: () => {
|
|
448
|
+
this.preventBlurClose = true;
|
|
449
|
+
}, onClick: this.clearFilterText })), index.h("nv-iconbutton", { "data-scope": "toggle-dropdown", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', title: this.open ? 'Hide dropdown' : 'Show dropdown', onMouseDown: () => {
|
|
450
|
+
this.preventBlurClose = true;
|
|
451
|
+
}, onClick: this.togglePopoverOptions })), index.h("slot", { name: "after-input" })), index.h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, this.shouldShowToggleAllOptionsButton() && (index.h("div", { class: "select-all-container" }, index.h("div", { class: "select-all-header" }, this.isSelectAllSectionVisible && (index.h("nv-fieldcheckbox", { checked: this.getSelectAllCheckboxStateOptions() === 'checked', indeterminate: this.getSelectAllCheckboxStateOptions() ===
|
|
452
|
+
'indeterminate', label: this.getSelectAllCheckboxStateOptions() === 'unchecked'
|
|
453
|
+
? this.selectAllLabel
|
|
454
|
+
: this.deselectAllLabel, onMouseDown: () => {
|
|
455
|
+
this.preventBlurClose = true;
|
|
456
|
+
}, onClick: this.handleSelectAllCheckboxOptionsClick }))))), index.h("ul", { role: "listbox", "aria-multiselectable": "true" }, this.options.map(option => (index.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()));
|
|
315
457
|
};
|
|
316
458
|
/**
|
|
317
459
|
* Renders the component in slots mode
|
|
318
460
|
* @returns {any} The JSX for slots mode
|
|
319
461
|
*/
|
|
320
462
|
this.renderSlotsMode = () => {
|
|
321
|
-
return (index.h(index.Host, { "aria-label": this.label
|
|
463
|
+
return (index.h(index.Host, { "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { htmlFor: this.inputId }, index.h("slot", { name: "label" }, this.label))), index.h("nv-popover", { ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { class: "input-wrapper-multiselect", slot: "trigger" }, index.h("slot", { name: "before-input" }), index.h("div", { class: "input-container-multiselect", onClick: this.handleInputContainerClickSlots }, index.h("slot", { name: "leading-input" }), this.value.length > 0 && (index.h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: this.value.length > 0, label: `${this.value.length} ${this.badgeLabel}`, "aria-label": `Clear all ${this.value.length} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseSlots })), this.filterable || this.disabled || this.readonly ? (index.h("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInputSlots, onFocus: this.handleInputFocusSlots, onBlur: this.handleInputBlurSlots, onKeyDown: this.handleKeyDown, "data-scope": "focusable", "aria-label": this.label, "aria-controls": `${this.inputId}-listbox` })) : (index.h(index.Fragment, null, index.h("input", { id: this.inputId, type: "text", style: {
|
|
464
|
+
position: 'absolute',
|
|
465
|
+
opacity: '0',
|
|
466
|
+
width: '0',
|
|
467
|
+
height: '0',
|
|
468
|
+
pointerEvents: 'none',
|
|
469
|
+
}, tabIndex: -1, "aria-hidden": "true", autoComplete: this.autocomplete, name: this.name, onFocus: this.handleInputFocusSlots }), index.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" }, index.h("span", null, this.placeholder)))), this.error && (index.h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (index.h("nv-iconbutton", { name: "x", size: "md", emphasis: "lower", tabindex: "-1", onMouseDown: () => {
|
|
470
|
+
this.preventBlurClose = true;
|
|
471
|
+
}, onClick: this.clearFilterText, "aria-label": "Clear filter text" })), index.h("nv-iconbutton", { "data-scope": "toggle-dropdown", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', title: this.open ? 'Hide dropdown' : 'Show dropdown', onMouseDown: () => {
|
|
472
|
+
this.preventBlurClose = true;
|
|
473
|
+
}, onClick: this.togglePopoverSlots })), index.h("slot", { name: "after-input" })), index.h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, this.shouldShowToggleAllSlotButton() && (index.h("div", { class: "select-all-container" }, index.h("div", { class: "select-all-header" }, this.isSelectAllSectionVisible && (index.h("nv-fieldcheckbox", { checked: this.getSelectAllCheckboxStateSlots() === 'checked', indeterminate: this.getSelectAllCheckboxStateSlots() ===
|
|
474
|
+
'indeterminate', label: this.getSelectAllCheckboxStateSlots() === 'unchecked'
|
|
475
|
+
? this.selectAllLabel
|
|
476
|
+
: this.deselectAllLabel, onMouseDown: () => {
|
|
477
|
+
this.preventBlurClose = true;
|
|
478
|
+
}, onClick: this.handleSelectAllCheckboxSlotsClick }))))), index.h("slot", { name: "content" }))), this.renderDescriptions()));
|
|
322
479
|
};
|
|
323
480
|
}
|
|
324
481
|
//#endregion EVENTS
|
|
325
482
|
/****************************************************************************/
|
|
326
483
|
//#region WATCHERS
|
|
327
484
|
handleOptionsChange(newValue) {
|
|
485
|
+
console.info('[Watch:options] newValue:', newValue);
|
|
486
|
+
console.info('[Watch:options] current value before update:', this.value);
|
|
328
487
|
if (!newValue)
|
|
329
488
|
return;
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
489
|
+
// If the parent has set a value prop, use it. Otherwise, derive from checked options.
|
|
490
|
+
// (Assume: if value is undefined, it's not set by parent; if it's an array, it's set.)
|
|
491
|
+
if (this.value === undefined || this.value.length === 0) {
|
|
492
|
+
this.value = newValue
|
|
493
|
+
.filter(option => option.checked)
|
|
494
|
+
.map(option => option.value);
|
|
495
|
+
console.info('[Watch:options] updated value from checked options:', this.value);
|
|
496
|
+
}
|
|
497
|
+
else {
|
|
498
|
+
// If value is set, ensure checked states in options match value
|
|
499
|
+
newValue.forEach(option => {
|
|
500
|
+
option.checked = this.value.includes(option.value);
|
|
501
|
+
});
|
|
502
|
+
console.info('[Watch:options] options checked state synced to value:', newValue);
|
|
503
|
+
}
|
|
333
504
|
this.reorderOptionsContent();
|
|
334
505
|
}
|
|
335
|
-
/**
|
|
336
|
-
* Emitted when the value changes.
|
|
337
|
-
*/
|
|
338
506
|
watchValueHandler() {
|
|
507
|
+
console.info('[Watch:value] Value changed:', this.value);
|
|
339
508
|
// Synchronize child components when value changes programmatically
|
|
340
509
|
if (this.el && this.el.isConnected) {
|
|
341
510
|
this.syncChildComponents();
|
|
342
511
|
}
|
|
512
|
+
// Also, update options checked state if options exist
|
|
513
|
+
if (this.options) {
|
|
514
|
+
this.options.forEach(option => {
|
|
515
|
+
option.checked = this.value.includes(option.value);
|
|
516
|
+
});
|
|
517
|
+
}
|
|
343
518
|
}
|
|
344
519
|
//#endregion WATCHERS
|
|
345
520
|
/****************************************************************************/
|
|
@@ -378,6 +553,7 @@ const NvFieldmultiselect = class {
|
|
|
378
553
|
return;
|
|
379
554
|
}
|
|
380
555
|
const { value, checked } = event.detail;
|
|
556
|
+
console.info('[Event:itemChecked] value:', value, 'checked:', checked, 'current value:', this.value);
|
|
381
557
|
if (value !== undefined && value !== null) {
|
|
382
558
|
const newValue = [...this.value];
|
|
383
559
|
const valueIndex = newValue.indexOf(value);
|
|
@@ -387,6 +563,7 @@ const NvFieldmultiselect = class {
|
|
|
387
563
|
else if (!checked && valueIndex > -1) {
|
|
388
564
|
newValue.splice(valueIndex, 1);
|
|
389
565
|
}
|
|
566
|
+
console.info('[Event:itemChecked] newValue after update:', newValue);
|
|
390
567
|
// Always update the state and emit the event when an item is checked/unchecked
|
|
391
568
|
this.value = newValue;
|
|
392
569
|
this.valueChanged.emit(this.value);
|
|
@@ -399,7 +576,7 @@ const NvFieldmultiselect = class {
|
|
|
399
576
|
}
|
|
400
577
|
}
|
|
401
578
|
else {
|
|
402
|
-
console.warn('Received itemChecked event with undefined or null value'); // Warning log
|
|
579
|
+
console.warn('[Event:itemChecked] Received itemChecked event with undefined or null value'); // Warning log
|
|
403
580
|
}
|
|
404
581
|
}
|
|
405
582
|
// Add a listener for the slot content
|
|
@@ -421,6 +598,7 @@ const NvFieldmultiselect = class {
|
|
|
421
598
|
* Subscribe to click outside event.
|
|
422
599
|
*/
|
|
423
600
|
connectedCallback() {
|
|
601
|
+
console.info('[Lifecycle] connectedCallback - value:', this.value);
|
|
424
602
|
document.addEventListener('click', this.handleClickOutside.bind(this));
|
|
425
603
|
}
|
|
426
604
|
/**
|
|
@@ -428,12 +606,15 @@ const NvFieldmultiselect = class {
|
|
|
428
606
|
*/
|
|
429
607
|
componentWillLoad() {
|
|
430
608
|
var _a;
|
|
609
|
+
console.info('[Lifecycle] componentWillLoad - value:', this.value, 'options:', this.options);
|
|
431
610
|
// Don't call handleOptionsChange if we are in slots mode
|
|
432
611
|
if (this.options) {
|
|
433
612
|
this.handleOptionsChange(this.options);
|
|
434
613
|
}
|
|
435
614
|
// Specific initialization for slots mode
|
|
436
615
|
if (!this.options) {
|
|
616
|
+
// Initialize value from checked slotted children
|
|
617
|
+
this.initializeValueFromSlots();
|
|
437
618
|
// Use a microtask to ensure DOM is ready
|
|
438
619
|
Promise.resolve().then(() => {
|
|
439
620
|
// Synchronize child components
|
|
@@ -452,21 +633,30 @@ const NvFieldmultiselect = class {
|
|
|
452
633
|
if (!this.filterText) {
|
|
453
634
|
this.resetFilter();
|
|
454
635
|
}
|
|
636
|
+
// Initialize filter results state
|
|
637
|
+
this.hasFilterResults = true;
|
|
455
638
|
}
|
|
456
639
|
/**
|
|
457
640
|
* Force reorder if options mode in componentDidLoad because of the initial render not trigger @watch
|
|
458
641
|
*/
|
|
459
642
|
componentDidLoad() {
|
|
643
|
+
console.info('[Lifecycle] componentDidLoad - value:', this.value, 'options:', this.options);
|
|
460
644
|
if (this.options) {
|
|
461
645
|
this.handleOptionsChange(this.options);
|
|
462
646
|
}
|
|
463
647
|
// Final synchronization of child components after everything is loaded
|
|
464
648
|
this.syncChildComponents();
|
|
649
|
+
// For slots mode, ensure value is initialized from checked children if not already
|
|
650
|
+
if (!this.options) {
|
|
651
|
+
this.initializeValueFromSlots();
|
|
652
|
+
this.syncChildComponents();
|
|
653
|
+
}
|
|
465
654
|
}
|
|
466
655
|
/**
|
|
467
656
|
* Unsubscribe from click outside event.
|
|
468
657
|
*/
|
|
469
658
|
disconnectedCallback() {
|
|
659
|
+
console.info('[Lifecycle] disconnectedCallback - value:', this.value);
|
|
470
660
|
document.removeEventListener('click', this.handleClickOutside.bind(this));
|
|
471
661
|
}
|
|
472
662
|
//#endregion LIFECYCLE
|
|
@@ -501,14 +691,67 @@ const NvFieldmultiselect = class {
|
|
|
501
691
|
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
502
692
|
}
|
|
503
693
|
}
|
|
694
|
+
// Reset filter results state
|
|
695
|
+
this.hasFilterResults = true;
|
|
504
696
|
}
|
|
505
697
|
/**
|
|
506
698
|
* Returns the list of selected values.
|
|
507
699
|
* @returns {string[]} The selected values.
|
|
508
700
|
*/
|
|
509
701
|
async getSelectedValues() {
|
|
702
|
+
console.info('getSelectedValues:', this.value);
|
|
510
703
|
return this.value;
|
|
511
704
|
}
|
|
705
|
+
/**
|
|
706
|
+
* Select all visible and enabled items.
|
|
707
|
+
* Works for both options and slots mode.
|
|
708
|
+
* @returns {Promise<void>}
|
|
709
|
+
*/
|
|
710
|
+
async selectAll() {
|
|
711
|
+
if (this.disabled || this.readonly)
|
|
712
|
+
return;
|
|
713
|
+
if (this.options) {
|
|
714
|
+
this.toggleSelectAllOptions(true);
|
|
715
|
+
}
|
|
716
|
+
else {
|
|
717
|
+
this.toggleSelectAllSlots(true);
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
/**
|
|
721
|
+
* Deselect all visible and enabled items.
|
|
722
|
+
* Works for both options and slots mode.
|
|
723
|
+
* @returns {Promise<void>}
|
|
724
|
+
*/
|
|
725
|
+
async deselectAll() {
|
|
726
|
+
if (this.disabled || this.readonly)
|
|
727
|
+
return;
|
|
728
|
+
if (this.options) {
|
|
729
|
+
this.toggleSelectAllOptions(false);
|
|
730
|
+
}
|
|
731
|
+
else {
|
|
732
|
+
this.toggleSelectAllSlots(false);
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
/**
|
|
736
|
+
* Toggle selection state of all visible and enabled items.
|
|
737
|
+
* If all items are selected, deselects all. Otherwise, selects all.
|
|
738
|
+
* Works for both options and slots mode.
|
|
739
|
+
* @returns {Promise<void>}
|
|
740
|
+
*/
|
|
741
|
+
async toggleSelectAll() {
|
|
742
|
+
if (this.disabled || this.readonly)
|
|
743
|
+
return;
|
|
744
|
+
const currentState = this.options
|
|
745
|
+
? this.getSelectAllCheckboxStateOptions()
|
|
746
|
+
: this.getSelectAllCheckboxStateSlots();
|
|
747
|
+
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
748
|
+
if (this.options) {
|
|
749
|
+
this.toggleSelectAllOptions(shouldSelectAll);
|
|
750
|
+
}
|
|
751
|
+
else {
|
|
752
|
+
this.toggleSelectAllSlots(shouldSelectAll);
|
|
753
|
+
}
|
|
754
|
+
}
|
|
512
755
|
/**
|
|
513
756
|
* Reorder the content of the slot.
|
|
514
757
|
*/
|
|
@@ -552,7 +795,7 @@ const NvFieldmultiselect = class {
|
|
|
552
795
|
* Reorder the content for options mode with async handling
|
|
553
796
|
*/
|
|
554
797
|
reorderOptionsContent() {
|
|
555
|
-
const ul = this.el.querySelector('ul
|
|
798
|
+
const ul = this.el.querySelector('ul');
|
|
556
799
|
if (!ul)
|
|
557
800
|
return;
|
|
558
801
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
|
|
@@ -660,6 +903,7 @@ const NvFieldmultiselect = class {
|
|
|
660
903
|
this.removeEmptyMessageOption(ul);
|
|
661
904
|
items.forEach(item => (item.style.display = ''));
|
|
662
905
|
this.reorderOptionsContent(); // Reorder after reset
|
|
906
|
+
this.hasFilterResults = true; // Reset filter means we have results
|
|
663
907
|
return;
|
|
664
908
|
}
|
|
665
909
|
// Filter the items
|
|
@@ -672,6 +916,8 @@ const NvFieldmultiselect = class {
|
|
|
672
916
|
if (matchesFilter)
|
|
673
917
|
hasVisibleItems = true;
|
|
674
918
|
});
|
|
919
|
+
// Update the filter results state
|
|
920
|
+
this.hasFilterResults = hasVisibleItems;
|
|
675
921
|
// Manage the divider with the visible items
|
|
676
922
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
677
923
|
const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
@@ -702,6 +948,7 @@ const NvFieldmultiselect = class {
|
|
|
702
948
|
// If filter text is empty, reset all items visibility
|
|
703
949
|
if (!this.filterText.trim()) {
|
|
704
950
|
this.resetFilter();
|
|
951
|
+
this.hasFilterResults = true; // Reset filter means we have results
|
|
705
952
|
return;
|
|
706
953
|
}
|
|
707
954
|
const normalizedFilter = this.normalizeText(this.filterText);
|
|
@@ -721,6 +968,8 @@ const NvFieldmultiselect = class {
|
|
|
721
968
|
if (matchesFilter)
|
|
722
969
|
hasVisibleItems = true;
|
|
723
970
|
});
|
|
971
|
+
// Update the filter results state
|
|
972
|
+
this.hasFilterResults = hasVisibleItems;
|
|
724
973
|
// Get visible items after filtering
|
|
725
974
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
726
975
|
const visibleSelectedItems = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
@@ -931,10 +1180,13 @@ const NvFieldmultiselect = class {
|
|
|
931
1180
|
return;
|
|
932
1181
|
}
|
|
933
1182
|
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1183
|
+
console.info('[syncChildComponents] value:', this.value);
|
|
934
1184
|
items.forEach(item => {
|
|
935
1185
|
// Get the effective value: use explicit value if present, otherwise use label
|
|
936
1186
|
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
937
|
-
|
|
1187
|
+
const shouldBeChecked = this.value.includes(itemValue);
|
|
1188
|
+
console.info('[syncChildComponents] itemValue:', itemValue, 'shouldBeChecked:', shouldBeChecked, 'item.checked(before):', item.checked);
|
|
1189
|
+
if (shouldBeChecked) {
|
|
938
1190
|
item.setAttribute('checked', '');
|
|
939
1191
|
item.checked = true;
|
|
940
1192
|
}
|
|
@@ -942,8 +1194,106 @@ const NvFieldmultiselect = class {
|
|
|
942
1194
|
item.removeAttribute('checked');
|
|
943
1195
|
item.checked = false;
|
|
944
1196
|
}
|
|
1197
|
+
console.info('[syncChildComponents] itemValue:', itemValue, 'item.checked(after):', item.checked);
|
|
1198
|
+
});
|
|
1199
|
+
}
|
|
1200
|
+
/**
|
|
1201
|
+
* Gets visible and enabled slot items using consistent logic.
|
|
1202
|
+
* @returns {Element[]} Array of visible and enabled items
|
|
1203
|
+
*/
|
|
1204
|
+
getVisibleEnabledSlotItems() {
|
|
1205
|
+
const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1206
|
+
return allItems.filter(item => {
|
|
1207
|
+
const isHidden = item.style.display === 'none';
|
|
1208
|
+
const isDisabled = item.hasAttribute('disabled');
|
|
1209
|
+
return !isHidden && !isDisabled;
|
|
945
1210
|
});
|
|
946
1211
|
}
|
|
1212
|
+
/**
|
|
1213
|
+
* Gets visible and enabled option items by checking DOM elements.
|
|
1214
|
+
* @returns {string[]} Array of visible and enabled option values
|
|
1215
|
+
*/
|
|
1216
|
+
getVisibleEnabledOptionItems() {
|
|
1217
|
+
const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1218
|
+
const visibleItems = allItems.filter(item => {
|
|
1219
|
+
const isHidden = item.style.display === 'none';
|
|
1220
|
+
const isDisabled = item.hasAttribute('disabled');
|
|
1221
|
+
return !isHidden && !isDisabled;
|
|
1222
|
+
});
|
|
1223
|
+
return visibleItems
|
|
1224
|
+
.map(item => item.getAttribute('value') || '')
|
|
1225
|
+
.filter(value => value !== '');
|
|
1226
|
+
}
|
|
1227
|
+
/**
|
|
1228
|
+
* Determines if the toggle all button should be shown in options mode.
|
|
1229
|
+
* @returns {boolean} True if there are visible items and no "No results found" message
|
|
1230
|
+
*/
|
|
1231
|
+
shouldShowToggleAllOptionsButton() {
|
|
1232
|
+
if (!this.options)
|
|
1233
|
+
return false; // Only for options mode
|
|
1234
|
+
return this.enableSelectAll && this.hasFilterResults;
|
|
1235
|
+
}
|
|
1236
|
+
/**
|
|
1237
|
+
* Gets the checkbox state for the select all checkbox in options mode.
|
|
1238
|
+
* @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
|
|
1239
|
+
*/
|
|
1240
|
+
getSelectAllCheckboxStateOptions() {
|
|
1241
|
+
if (!this.options)
|
|
1242
|
+
return 'unchecked';
|
|
1243
|
+
// Get visible and enabled option values from DOM
|
|
1244
|
+
const visibleOptionValues = this.getVisibleEnabledOptionItems();
|
|
1245
|
+
if (visibleOptionValues.length === 0)
|
|
1246
|
+
return 'unchecked';
|
|
1247
|
+
const selectedVisibleOptions = visibleOptionValues.filter(value => this.value.includes(value));
|
|
1248
|
+
if (selectedVisibleOptions.length === 0)
|
|
1249
|
+
return 'unchecked';
|
|
1250
|
+
if (selectedVisibleOptions.length === visibleOptionValues.length)
|
|
1251
|
+
return 'checked';
|
|
1252
|
+
return 'indeterminate';
|
|
1253
|
+
}
|
|
1254
|
+
/**
|
|
1255
|
+
* Gets the checkbox state for the select all checkbox in slots mode.
|
|
1256
|
+
* @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
|
|
1257
|
+
*/
|
|
1258
|
+
getSelectAllCheckboxStateSlots() {
|
|
1259
|
+
if (this.options)
|
|
1260
|
+
return 'unchecked';
|
|
1261
|
+
// Get all visible and enabled items
|
|
1262
|
+
const items = this.getVisibleEnabledSlotItems();
|
|
1263
|
+
if (items.length === 0)
|
|
1264
|
+
return 'unchecked';
|
|
1265
|
+
const selectedItems = items.filter(item => {
|
|
1266
|
+
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
1267
|
+
return itemValue !== '' && this.value.includes(itemValue);
|
|
1268
|
+
});
|
|
1269
|
+
if (selectedItems.length === 0)
|
|
1270
|
+
return 'unchecked';
|
|
1271
|
+
if (selectedItems.length === items.length)
|
|
1272
|
+
return 'checked';
|
|
1273
|
+
return 'indeterminate';
|
|
1274
|
+
}
|
|
1275
|
+
/**
|
|
1276
|
+
* Determines if the toggle all button should be shown in slots mode.
|
|
1277
|
+
* @returns {boolean} True if there are visible items and no "No results found" message
|
|
1278
|
+
*/
|
|
1279
|
+
shouldShowToggleAllSlotButton() {
|
|
1280
|
+
if (this.options)
|
|
1281
|
+
return false; // Only for slots mode
|
|
1282
|
+
return this.enableSelectAll && this.hasFilterResults;
|
|
1283
|
+
}
|
|
1284
|
+
/**
|
|
1285
|
+
* Initializes the value array from checked slotted nv-fielddropdownitemcheck elements (slots mode only).
|
|
1286
|
+
*/
|
|
1287
|
+
initializeValueFromSlots() {
|
|
1288
|
+
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1289
|
+
// Values from checked slot children
|
|
1290
|
+
const checkedValues = items
|
|
1291
|
+
.filter(item => item.hasAttribute('checked'))
|
|
1292
|
+
.map(item => item.getAttribute('value') || item.getAttribute('label') || '');
|
|
1293
|
+
// Combine with current this.value (set by code), ensuring uniqueness
|
|
1294
|
+
this.value = Array.from(new Set([...(this.value || []), ...checkedValues]));
|
|
1295
|
+
console.info('[initializeValueFromSlots] checkedValues:', checkedValues, 'combined value:', this.value);
|
|
1296
|
+
}
|
|
947
1297
|
/**
|
|
948
1298
|
* Renders description and error description sections
|
|
949
1299
|
* @returns {any} The JSX for descriptions
|