@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,7 +1,7 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-a1936cd0.js';
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, F as Fragment, H as Host, g as getElement } from './index-a1936cd0.js';
|
|
2
2
|
import { v as v4 } from './v4-a79185f4.js';
|
|
3
3
|
|
|
4
|
-
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}";
|
|
4
|
+
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}";
|
|
5
5
|
const NvFieldmultiselectStyle0 = nvFieldmultiselectCss;
|
|
6
6
|
|
|
7
7
|
const NvFieldmultiselect = class {
|
|
@@ -9,8 +9,6 @@ const NvFieldmultiselect = class {
|
|
|
9
9
|
registerInstance(this, hostRef);
|
|
10
10
|
this.valueChanged = createEvent(this, "valueChanged", 7);
|
|
11
11
|
this.filterTextChanged = createEvent(this, "filterTextChanged", 7);
|
|
12
|
-
/****************************************************************************/
|
|
13
|
-
//#region PROPERTIES
|
|
14
12
|
/**
|
|
15
13
|
* Sets the ID for the input element and the for attribute of the associated
|
|
16
14
|
* label. If no ID is provided, a random one will be automatically generated
|
|
@@ -25,11 +23,6 @@ const NvFieldmultiselect = class {
|
|
|
25
23
|
* always type in fresh data.
|
|
26
24
|
*/
|
|
27
25
|
this.autocomplete = 'off';
|
|
28
|
-
/**
|
|
29
|
-
* Specifies the selected values of the multiselect field.
|
|
30
|
-
* This is the canonical value for the component and is used for form submission.
|
|
31
|
-
*/
|
|
32
|
-
this.value = [];
|
|
33
26
|
/**
|
|
34
27
|
* Marks the input field as required.
|
|
35
28
|
*/
|
|
@@ -57,13 +50,22 @@ const NvFieldmultiselect = class {
|
|
|
57
50
|
*/
|
|
58
51
|
this.open = false;
|
|
59
52
|
/**
|
|
60
|
-
*
|
|
53
|
+
* Allows the field to stretch and fill the entire width of its container.
|
|
61
54
|
*/
|
|
62
|
-
this.
|
|
55
|
+
this.fluid = false;
|
|
56
|
+
/**
|
|
57
|
+
* Specifies the selected values of the multiselect field.
|
|
58
|
+
* This is the canonical value for the component and is used for form submission.
|
|
59
|
+
*/
|
|
60
|
+
this.value = [];
|
|
63
61
|
/**
|
|
64
62
|
* Enables or disables the filtering feature for the multiselect items.
|
|
65
63
|
*/
|
|
66
64
|
this.filterable = false;
|
|
65
|
+
/**
|
|
66
|
+
* The text to display when no items match the filter.
|
|
67
|
+
*/
|
|
68
|
+
this.emptyResult = 'No results found';
|
|
67
69
|
/**
|
|
68
70
|
* Delay in milliseconds before the search is triggered when typing in the filter input.
|
|
69
71
|
* @default 300
|
|
@@ -75,10 +77,6 @@ const NvFieldmultiselect = class {
|
|
|
75
77
|
* element.
|
|
76
78
|
*/
|
|
77
79
|
this.autofocus = false;
|
|
78
|
-
/**
|
|
79
|
-
* Allows the field to stretch and fill the entire width of its container.
|
|
80
|
-
*/
|
|
81
|
-
this.fluid = false;
|
|
82
80
|
/**
|
|
83
81
|
* Text for the badge showing the number of selected items.
|
|
84
82
|
*/
|
|
@@ -87,6 +85,18 @@ const NvFieldmultiselect = class {
|
|
|
87
85
|
* The text entered by the user for filtering multiselect items.
|
|
88
86
|
*/
|
|
89
87
|
this.filterText = '';
|
|
88
|
+
/**
|
|
89
|
+
* Enables or disables the "Select All / Deselect All" toggle functionality.
|
|
90
|
+
*/
|
|
91
|
+
this.enableSelectAll = false;
|
|
92
|
+
/**
|
|
93
|
+
* Text for the "Select All" button.
|
|
94
|
+
*/
|
|
95
|
+
this.selectAllLabel = 'Select/deselect all';
|
|
96
|
+
/**
|
|
97
|
+
* Text for the "Deselect All" button.
|
|
98
|
+
*/
|
|
99
|
+
this.deselectAllLabel = 'Select/deselect all';
|
|
90
100
|
//#endregion PROPERTIES
|
|
91
101
|
/****************************************************************************/
|
|
92
102
|
//#region STATE
|
|
@@ -95,10 +105,22 @@ const NvFieldmultiselect = class {
|
|
|
95
105
|
*/
|
|
96
106
|
this.sortedOptions = [];
|
|
97
107
|
this.isHandlingEscape = false;
|
|
108
|
+
/**
|
|
109
|
+
* Indicates whether the current filter has visible results.
|
|
110
|
+
* Used to control the visibility of the "Select All" button.
|
|
111
|
+
*/
|
|
112
|
+
this.hasFilterResults = true;
|
|
113
|
+
/**
|
|
114
|
+
* Controls the visibility of the select all section.
|
|
115
|
+
*/
|
|
116
|
+
this.isSelectAllSectionVisible = true;
|
|
117
|
+
// Add the flag to the class
|
|
118
|
+
this.preventBlurClose = false;
|
|
98
119
|
/**
|
|
99
120
|
* Handle badge close for options mode.
|
|
100
121
|
*/
|
|
101
122
|
this.handleBadgeCloseOptions = () => {
|
|
123
|
+
console.info('handleBadgeCloseOptions:', this.value);
|
|
102
124
|
this.value = [];
|
|
103
125
|
this.valueChanged.emit(this.value);
|
|
104
126
|
// Uncheck all elements
|
|
@@ -116,6 +138,7 @@ const NvFieldmultiselect = class {
|
|
|
116
138
|
* Handle badge close for slots mode.
|
|
117
139
|
*/
|
|
118
140
|
this.handleBadgeCloseSlots = () => {
|
|
141
|
+
console.info('handleBadgeCloseSlots:', this.value);
|
|
119
142
|
this.value = [];
|
|
120
143
|
this.valueChanged.emit(this.value);
|
|
121
144
|
// Uncheck all elements
|
|
@@ -124,8 +147,11 @@ const NvFieldmultiselect = class {
|
|
|
124
147
|
item.checked = false;
|
|
125
148
|
item.style.display = '';
|
|
126
149
|
});
|
|
127
|
-
//
|
|
128
|
-
|
|
150
|
+
// Force DOM update before reordering
|
|
151
|
+
requestAnimationFrame(() => {
|
|
152
|
+
// Reorder slot content
|
|
153
|
+
this.reorderSlotContent();
|
|
154
|
+
});
|
|
129
155
|
};
|
|
130
156
|
/**
|
|
131
157
|
* Handle popover close
|
|
@@ -147,12 +173,17 @@ const NvFieldmultiselect = class {
|
|
|
147
173
|
this.filterText = '';
|
|
148
174
|
this.filterTextChanged.emit('');
|
|
149
175
|
this.resetFilter();
|
|
176
|
+
this.hasFilterResults = true;
|
|
150
177
|
};
|
|
151
178
|
/**
|
|
152
179
|
* Handle input blur for options mode.
|
|
153
180
|
*/
|
|
154
181
|
this.handleInputBlurOptions = () => {
|
|
155
182
|
setTimeout(() => {
|
|
183
|
+
if (this.preventBlurClose) {
|
|
184
|
+
this.preventBlurClose = false;
|
|
185
|
+
return; // Don't close the popover
|
|
186
|
+
}
|
|
156
187
|
if (!this.el.contains(document.activeElement)) {
|
|
157
188
|
// Close the popover without affecting the divider
|
|
158
189
|
this.open = false;
|
|
@@ -299,6 +330,102 @@ const NvFieldmultiselect = class {
|
|
|
299
330
|
}
|
|
300
331
|
this.open = !this.open;
|
|
301
332
|
};
|
|
333
|
+
/**
|
|
334
|
+
* Toggles the selection state of all non-disabled options in options mode.
|
|
335
|
+
* Respects filtering by only selecting/deselecting visible items.
|
|
336
|
+
* @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
|
|
337
|
+
*/
|
|
338
|
+
this.toggleSelectAllOptions = (selectAll) => {
|
|
339
|
+
if (!this.options)
|
|
340
|
+
return;
|
|
341
|
+
// Get visible and enabled option values from DOM
|
|
342
|
+
const visibleOptionValues = this.getVisibleEnabledOptionItems();
|
|
343
|
+
console.info('[SelectAll][Options] toggleSelectAllOptions called. selectAll:', selectAll, 'visibleOptionValues:', visibleOptionValues, 'Current value:', this.value);
|
|
344
|
+
if (selectAll) {
|
|
345
|
+
// Select all visible options - merge with existing selections
|
|
346
|
+
this.value = [...new Set([...this.value, ...visibleOptionValues])];
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
// Deselect only the visible options, keep others that might be filtered out
|
|
350
|
+
this.value = this.value.filter(val => !visibleOptionValues.includes(val));
|
|
351
|
+
}
|
|
352
|
+
console.info('[SelectAll][Options] New value after toggle:', this.value);
|
|
353
|
+
// Emit the change event
|
|
354
|
+
this.valueChanged.emit(this.value);
|
|
355
|
+
// Synchronize child components
|
|
356
|
+
this.syncChildComponents();
|
|
357
|
+
// Reorder content to move selected items to top
|
|
358
|
+
this.reorderOptionsContent();
|
|
359
|
+
};
|
|
360
|
+
/**
|
|
361
|
+
* Toggles the selection state of all non-disabled slot items.
|
|
362
|
+
* @param {boolean} selectAll - Whether to select all items (true) or deselect all (false)
|
|
363
|
+
*/
|
|
364
|
+
this.toggleSelectAllSlots = (selectAll) => {
|
|
365
|
+
if (this.options)
|
|
366
|
+
return; // Only for slots mode
|
|
367
|
+
// Get visible and enabled items
|
|
368
|
+
const items = this.getVisibleEnabledSlotItems();
|
|
369
|
+
console.info('[SelectAll][Slots] toggleSelectAllSlots called. selectAll:', selectAll, 'visible slot items:', items.map(item => item.getAttribute('value') || item.getAttribute('label')), 'Current value:', this.value);
|
|
370
|
+
if (selectAll) {
|
|
371
|
+
// Select all visible items
|
|
372
|
+
const allActiveValues = items
|
|
373
|
+
.map(item => item.getAttribute('value') || item.getAttribute('label') || '')
|
|
374
|
+
.filter(value => value !== '');
|
|
375
|
+
this.value = [...new Set([...this.value, ...allActiveValues])];
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
// Deselect only the visible items, keep others that might be filtered out
|
|
379
|
+
const visibleValues = items
|
|
380
|
+
.map(item => item.getAttribute('value') || item.getAttribute('label') || '')
|
|
381
|
+
.filter(value => value !== '');
|
|
382
|
+
this.value = this.value.filter(val => !visibleValues.includes(val));
|
|
383
|
+
}
|
|
384
|
+
console.info('[SelectAll][Slots] New value after toggle:', this.value);
|
|
385
|
+
// Emit the change event
|
|
386
|
+
this.valueChanged.emit(this.value);
|
|
387
|
+
// Force synchronization with a small delay to ensure DOM is updated
|
|
388
|
+
requestAnimationFrame(() => {
|
|
389
|
+
this.syncChildComponents();
|
|
390
|
+
this.reorderSlotContent();
|
|
391
|
+
});
|
|
392
|
+
};
|
|
393
|
+
/**
|
|
394
|
+
* Handle click on the select all checkbox in options mode.
|
|
395
|
+
* @param {Event} event - The click event.
|
|
396
|
+
*/
|
|
397
|
+
this.handleSelectAllCheckboxOptionsClick = (event) => {
|
|
398
|
+
event.stopPropagation();
|
|
399
|
+
event.preventDefault();
|
|
400
|
+
console.info('[handleSelectAllCheckboxOptionsClick] event:', event);
|
|
401
|
+
const currentState = this.getSelectAllCheckboxStateOptions();
|
|
402
|
+
console.info('[SelectAll][Options] Checkbox clicked. Current state:', currentState, 'Current value:', this.value);
|
|
403
|
+
// Logic to handle the indeterminate state
|
|
404
|
+
// - unchecked → select all
|
|
405
|
+
// - indeterminate → select all (clicking on indeterminate will change to checked)
|
|
406
|
+
// - checked → deselect all
|
|
407
|
+
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
408
|
+
console.info('[SelectAll][Options] shouldSelectAll:', shouldSelectAll);
|
|
409
|
+
this.toggleSelectAllOptions(shouldSelectAll);
|
|
410
|
+
};
|
|
411
|
+
/**
|
|
412
|
+
* Handle click on the select all checkbox in slots mode.
|
|
413
|
+
* @param {Event} event - The click event.
|
|
414
|
+
*/
|
|
415
|
+
this.handleSelectAllCheckboxSlotsClick = (event) => {
|
|
416
|
+
event.stopPropagation();
|
|
417
|
+
event.preventDefault();
|
|
418
|
+
console.info('[handleSelectAllCheckboxSlotsClick] event:', event);
|
|
419
|
+
const currentState = this.getSelectAllCheckboxStateSlots();
|
|
420
|
+
console.info('[SelectAll][Slots] Checkbox clicked. Current state:', currentState, 'Current value:', this.value);
|
|
421
|
+
// Logic to handle the indeterminate state
|
|
422
|
+
// - unchecked → select all
|
|
423
|
+
// - indeterminate → select all (clicking on indeterminate will change to checked)
|
|
424
|
+
// - checked → deselect all
|
|
425
|
+
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
426
|
+
console.info('[SelectAll][Slots] shouldSelectAll:', shouldSelectAll);
|
|
427
|
+
this.toggleSelectAllSlots(shouldSelectAll);
|
|
428
|
+
};
|
|
302
429
|
//#endregion METHODS
|
|
303
430
|
/****************************************************************************/
|
|
304
431
|
//#region RENDER
|
|
@@ -307,35 +434,83 @@ const NvFieldmultiselect = class {
|
|
|
307
434
|
* @returns {any} The JSX for options mode
|
|
308
435
|
*/
|
|
309
436
|
this.renderOptionsMode = () => {
|
|
310
|
-
return (h(Host, { "aria-label": this.label
|
|
437
|
+
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: {
|
|
438
|
+
position: 'absolute',
|
|
439
|
+
opacity: '0',
|
|
440
|
+
width: '0',
|
|
441
|
+
height: '0',
|
|
442
|
+
pointerEvents: 'none',
|
|
443
|
+
}, 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: () => {
|
|
444
|
+
this.preventBlurClose = true;
|
|
445
|
+
}, 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: () => {
|
|
446
|
+
this.preventBlurClose = true;
|
|
447
|
+
}, 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() ===
|
|
448
|
+
'indeterminate', label: this.getSelectAllCheckboxStateOptions() === 'unchecked'
|
|
449
|
+
? this.selectAllLabel
|
|
450
|
+
: this.deselectAllLabel, onMouseDown: () => {
|
|
451
|
+
this.preventBlurClose = true;
|
|
452
|
+
}, 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()));
|
|
311
453
|
};
|
|
312
454
|
/**
|
|
313
455
|
* Renders the component in slots mode
|
|
314
456
|
* @returns {any} The JSX for slots mode
|
|
315
457
|
*/
|
|
316
458
|
this.renderSlotsMode = () => {
|
|
317
|
-
return (h(Host, { "aria-label": this.label
|
|
459
|
+
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: {
|
|
460
|
+
position: 'absolute',
|
|
461
|
+
opacity: '0',
|
|
462
|
+
width: '0',
|
|
463
|
+
height: '0',
|
|
464
|
+
pointerEvents: 'none',
|
|
465
|
+
}, 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: () => {
|
|
466
|
+
this.preventBlurClose = true;
|
|
467
|
+
}, 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: () => {
|
|
468
|
+
this.preventBlurClose = true;
|
|
469
|
+
}, 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() ===
|
|
470
|
+
'indeterminate', label: this.getSelectAllCheckboxStateSlots() === 'unchecked'
|
|
471
|
+
? this.selectAllLabel
|
|
472
|
+
: this.deselectAllLabel, onMouseDown: () => {
|
|
473
|
+
this.preventBlurClose = true;
|
|
474
|
+
}, onClick: this.handleSelectAllCheckboxSlotsClick }))))), h("slot", { name: "content" }))), this.renderDescriptions()));
|
|
318
475
|
};
|
|
319
476
|
}
|
|
320
477
|
//#endregion EVENTS
|
|
321
478
|
/****************************************************************************/
|
|
322
479
|
//#region WATCHERS
|
|
323
480
|
handleOptionsChange(newValue) {
|
|
481
|
+
console.info('[Watch:options] newValue:', newValue);
|
|
482
|
+
console.info('[Watch:options] current value before update:', this.value);
|
|
324
483
|
if (!newValue)
|
|
325
484
|
return;
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
485
|
+
// If the parent has set a value prop, use it. Otherwise, derive from checked options.
|
|
486
|
+
// (Assume: if value is undefined, it's not set by parent; if it's an array, it's set.)
|
|
487
|
+
if (this.value === undefined || this.value.length === 0) {
|
|
488
|
+
this.value = newValue
|
|
489
|
+
.filter(option => option.checked)
|
|
490
|
+
.map(option => option.value);
|
|
491
|
+
console.info('[Watch:options] updated value from checked options:', this.value);
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
// If value is set, ensure checked states in options match value
|
|
495
|
+
newValue.forEach(option => {
|
|
496
|
+
option.checked = this.value.includes(option.value);
|
|
497
|
+
});
|
|
498
|
+
console.info('[Watch:options] options checked state synced to value:', newValue);
|
|
499
|
+
}
|
|
329
500
|
this.reorderOptionsContent();
|
|
330
501
|
}
|
|
331
|
-
/**
|
|
332
|
-
* Emitted when the value changes.
|
|
333
|
-
*/
|
|
334
502
|
watchValueHandler() {
|
|
503
|
+
console.info('[Watch:value] Value changed:', this.value);
|
|
335
504
|
// Synchronize child components when value changes programmatically
|
|
336
505
|
if (this.el && this.el.isConnected) {
|
|
337
506
|
this.syncChildComponents();
|
|
338
507
|
}
|
|
508
|
+
// Also, update options checked state if options exist
|
|
509
|
+
if (this.options) {
|
|
510
|
+
this.options.forEach(option => {
|
|
511
|
+
option.checked = this.value.includes(option.value);
|
|
512
|
+
});
|
|
513
|
+
}
|
|
339
514
|
}
|
|
340
515
|
//#endregion WATCHERS
|
|
341
516
|
/****************************************************************************/
|
|
@@ -374,6 +549,7 @@ const NvFieldmultiselect = class {
|
|
|
374
549
|
return;
|
|
375
550
|
}
|
|
376
551
|
const { value, checked } = event.detail;
|
|
552
|
+
console.info('[Event:itemChecked] value:', value, 'checked:', checked, 'current value:', this.value);
|
|
377
553
|
if (value !== undefined && value !== null) {
|
|
378
554
|
const newValue = [...this.value];
|
|
379
555
|
const valueIndex = newValue.indexOf(value);
|
|
@@ -383,6 +559,7 @@ const NvFieldmultiselect = class {
|
|
|
383
559
|
else if (!checked && valueIndex > -1) {
|
|
384
560
|
newValue.splice(valueIndex, 1);
|
|
385
561
|
}
|
|
562
|
+
console.info('[Event:itemChecked] newValue after update:', newValue);
|
|
386
563
|
// Always update the state and emit the event when an item is checked/unchecked
|
|
387
564
|
this.value = newValue;
|
|
388
565
|
this.valueChanged.emit(this.value);
|
|
@@ -395,7 +572,7 @@ const NvFieldmultiselect = class {
|
|
|
395
572
|
}
|
|
396
573
|
}
|
|
397
574
|
else {
|
|
398
|
-
console.warn('Received itemChecked event with undefined or null value'); // Warning log
|
|
575
|
+
console.warn('[Event:itemChecked] Received itemChecked event with undefined or null value'); // Warning log
|
|
399
576
|
}
|
|
400
577
|
}
|
|
401
578
|
// Add a listener for the slot content
|
|
@@ -417,6 +594,7 @@ const NvFieldmultiselect = class {
|
|
|
417
594
|
* Subscribe to click outside event.
|
|
418
595
|
*/
|
|
419
596
|
connectedCallback() {
|
|
597
|
+
console.info('[Lifecycle] connectedCallback - value:', this.value);
|
|
420
598
|
document.addEventListener('click', this.handleClickOutside.bind(this));
|
|
421
599
|
}
|
|
422
600
|
/**
|
|
@@ -424,12 +602,15 @@ const NvFieldmultiselect = class {
|
|
|
424
602
|
*/
|
|
425
603
|
componentWillLoad() {
|
|
426
604
|
var _a;
|
|
605
|
+
console.info('[Lifecycle] componentWillLoad - value:', this.value, 'options:', this.options);
|
|
427
606
|
// Don't call handleOptionsChange if we are in slots mode
|
|
428
607
|
if (this.options) {
|
|
429
608
|
this.handleOptionsChange(this.options);
|
|
430
609
|
}
|
|
431
610
|
// Specific initialization for slots mode
|
|
432
611
|
if (!this.options) {
|
|
612
|
+
// Initialize value from checked slotted children
|
|
613
|
+
this.initializeValueFromSlots();
|
|
433
614
|
// Use a microtask to ensure DOM is ready
|
|
434
615
|
Promise.resolve().then(() => {
|
|
435
616
|
// Synchronize child components
|
|
@@ -448,21 +629,30 @@ const NvFieldmultiselect = class {
|
|
|
448
629
|
if (!this.filterText) {
|
|
449
630
|
this.resetFilter();
|
|
450
631
|
}
|
|
632
|
+
// Initialize filter results state
|
|
633
|
+
this.hasFilterResults = true;
|
|
451
634
|
}
|
|
452
635
|
/**
|
|
453
636
|
* Force reorder if options mode in componentDidLoad because of the initial render not trigger @watch
|
|
454
637
|
*/
|
|
455
638
|
componentDidLoad() {
|
|
639
|
+
console.info('[Lifecycle] componentDidLoad - value:', this.value, 'options:', this.options);
|
|
456
640
|
if (this.options) {
|
|
457
641
|
this.handleOptionsChange(this.options);
|
|
458
642
|
}
|
|
459
643
|
// Final synchronization of child components after everything is loaded
|
|
460
644
|
this.syncChildComponents();
|
|
645
|
+
// For slots mode, ensure value is initialized from checked children if not already
|
|
646
|
+
if (!this.options) {
|
|
647
|
+
this.initializeValueFromSlots();
|
|
648
|
+
this.syncChildComponents();
|
|
649
|
+
}
|
|
461
650
|
}
|
|
462
651
|
/**
|
|
463
652
|
* Unsubscribe from click outside event.
|
|
464
653
|
*/
|
|
465
654
|
disconnectedCallback() {
|
|
655
|
+
console.info('[Lifecycle] disconnectedCallback - value:', this.value);
|
|
466
656
|
document.removeEventListener('click', this.handleClickOutside.bind(this));
|
|
467
657
|
}
|
|
468
658
|
//#endregion LIFECYCLE
|
|
@@ -497,14 +687,67 @@ const NvFieldmultiselect = class {
|
|
|
497
687
|
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
498
688
|
}
|
|
499
689
|
}
|
|
690
|
+
// Reset filter results state
|
|
691
|
+
this.hasFilterResults = true;
|
|
500
692
|
}
|
|
501
693
|
/**
|
|
502
694
|
* Returns the list of selected values.
|
|
503
695
|
* @returns {string[]} The selected values.
|
|
504
696
|
*/
|
|
505
697
|
async getSelectedValues() {
|
|
698
|
+
console.info('getSelectedValues:', this.value);
|
|
506
699
|
return this.value;
|
|
507
700
|
}
|
|
701
|
+
/**
|
|
702
|
+
* Select all visible and enabled items.
|
|
703
|
+
* Works for both options and slots mode.
|
|
704
|
+
* @returns {Promise<void>}
|
|
705
|
+
*/
|
|
706
|
+
async selectAll() {
|
|
707
|
+
if (this.disabled || this.readonly)
|
|
708
|
+
return;
|
|
709
|
+
if (this.options) {
|
|
710
|
+
this.toggleSelectAllOptions(true);
|
|
711
|
+
}
|
|
712
|
+
else {
|
|
713
|
+
this.toggleSelectAllSlots(true);
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
/**
|
|
717
|
+
* Deselect all visible and enabled items.
|
|
718
|
+
* Works for both options and slots mode.
|
|
719
|
+
* @returns {Promise<void>}
|
|
720
|
+
*/
|
|
721
|
+
async deselectAll() {
|
|
722
|
+
if (this.disabled || this.readonly)
|
|
723
|
+
return;
|
|
724
|
+
if (this.options) {
|
|
725
|
+
this.toggleSelectAllOptions(false);
|
|
726
|
+
}
|
|
727
|
+
else {
|
|
728
|
+
this.toggleSelectAllSlots(false);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
/**
|
|
732
|
+
* Toggle selection state of all visible and enabled items.
|
|
733
|
+
* If all items are selected, deselects all. Otherwise, selects all.
|
|
734
|
+
* Works for both options and slots mode.
|
|
735
|
+
* @returns {Promise<void>}
|
|
736
|
+
*/
|
|
737
|
+
async toggleSelectAll() {
|
|
738
|
+
if (this.disabled || this.readonly)
|
|
739
|
+
return;
|
|
740
|
+
const currentState = this.options
|
|
741
|
+
? this.getSelectAllCheckboxStateOptions()
|
|
742
|
+
: this.getSelectAllCheckboxStateSlots();
|
|
743
|
+
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
744
|
+
if (this.options) {
|
|
745
|
+
this.toggleSelectAllOptions(shouldSelectAll);
|
|
746
|
+
}
|
|
747
|
+
else {
|
|
748
|
+
this.toggleSelectAllSlots(shouldSelectAll);
|
|
749
|
+
}
|
|
750
|
+
}
|
|
508
751
|
/**
|
|
509
752
|
* Reorder the content of the slot.
|
|
510
753
|
*/
|
|
@@ -548,7 +791,7 @@ const NvFieldmultiselect = class {
|
|
|
548
791
|
* Reorder the content for options mode with async handling
|
|
549
792
|
*/
|
|
550
793
|
reorderOptionsContent() {
|
|
551
|
-
const ul = this.el.querySelector('ul
|
|
794
|
+
const ul = this.el.querySelector('ul');
|
|
552
795
|
if (!ul)
|
|
553
796
|
return;
|
|
554
797
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
|
|
@@ -656,6 +899,7 @@ const NvFieldmultiselect = class {
|
|
|
656
899
|
this.removeEmptyMessageOption(ul);
|
|
657
900
|
items.forEach(item => (item.style.display = ''));
|
|
658
901
|
this.reorderOptionsContent(); // Reorder after reset
|
|
902
|
+
this.hasFilterResults = true; // Reset filter means we have results
|
|
659
903
|
return;
|
|
660
904
|
}
|
|
661
905
|
// Filter the items
|
|
@@ -668,6 +912,8 @@ const NvFieldmultiselect = class {
|
|
|
668
912
|
if (matchesFilter)
|
|
669
913
|
hasVisibleItems = true;
|
|
670
914
|
});
|
|
915
|
+
// Update the filter results state
|
|
916
|
+
this.hasFilterResults = hasVisibleItems;
|
|
671
917
|
// Manage the divider with the visible items
|
|
672
918
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
673
919
|
const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
@@ -698,6 +944,7 @@ const NvFieldmultiselect = class {
|
|
|
698
944
|
// If filter text is empty, reset all items visibility
|
|
699
945
|
if (!this.filterText.trim()) {
|
|
700
946
|
this.resetFilter();
|
|
947
|
+
this.hasFilterResults = true; // Reset filter means we have results
|
|
701
948
|
return;
|
|
702
949
|
}
|
|
703
950
|
const normalizedFilter = this.normalizeText(this.filterText);
|
|
@@ -717,6 +964,8 @@ const NvFieldmultiselect = class {
|
|
|
717
964
|
if (matchesFilter)
|
|
718
965
|
hasVisibleItems = true;
|
|
719
966
|
});
|
|
967
|
+
// Update the filter results state
|
|
968
|
+
this.hasFilterResults = hasVisibleItems;
|
|
720
969
|
// Get visible items after filtering
|
|
721
970
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
722
971
|
const visibleSelectedItems = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
@@ -927,10 +1176,13 @@ const NvFieldmultiselect = class {
|
|
|
927
1176
|
return;
|
|
928
1177
|
}
|
|
929
1178
|
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1179
|
+
console.info('[syncChildComponents] value:', this.value);
|
|
930
1180
|
items.forEach(item => {
|
|
931
1181
|
// Get the effective value: use explicit value if present, otherwise use label
|
|
932
1182
|
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
933
|
-
|
|
1183
|
+
const shouldBeChecked = this.value.includes(itemValue);
|
|
1184
|
+
console.info('[syncChildComponents] itemValue:', itemValue, 'shouldBeChecked:', shouldBeChecked, 'item.checked(before):', item.checked);
|
|
1185
|
+
if (shouldBeChecked) {
|
|
934
1186
|
item.setAttribute('checked', '');
|
|
935
1187
|
item.checked = true;
|
|
936
1188
|
}
|
|
@@ -938,8 +1190,106 @@ const NvFieldmultiselect = class {
|
|
|
938
1190
|
item.removeAttribute('checked');
|
|
939
1191
|
item.checked = false;
|
|
940
1192
|
}
|
|
1193
|
+
console.info('[syncChildComponents] itemValue:', itemValue, 'item.checked(after):', item.checked);
|
|
1194
|
+
});
|
|
1195
|
+
}
|
|
1196
|
+
/**
|
|
1197
|
+
* Gets visible and enabled slot items using consistent logic.
|
|
1198
|
+
* @returns {Element[]} Array of visible and enabled items
|
|
1199
|
+
*/
|
|
1200
|
+
getVisibleEnabledSlotItems() {
|
|
1201
|
+
const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1202
|
+
return allItems.filter(item => {
|
|
1203
|
+
const isHidden = item.style.display === 'none';
|
|
1204
|
+
const isDisabled = item.hasAttribute('disabled');
|
|
1205
|
+
return !isHidden && !isDisabled;
|
|
941
1206
|
});
|
|
942
1207
|
}
|
|
1208
|
+
/**
|
|
1209
|
+
* Gets visible and enabled option items by checking DOM elements.
|
|
1210
|
+
* @returns {string[]} Array of visible and enabled option values
|
|
1211
|
+
*/
|
|
1212
|
+
getVisibleEnabledOptionItems() {
|
|
1213
|
+
const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1214
|
+
const visibleItems = allItems.filter(item => {
|
|
1215
|
+
const isHidden = item.style.display === 'none';
|
|
1216
|
+
const isDisabled = item.hasAttribute('disabled');
|
|
1217
|
+
return !isHidden && !isDisabled;
|
|
1218
|
+
});
|
|
1219
|
+
return visibleItems
|
|
1220
|
+
.map(item => item.getAttribute('value') || '')
|
|
1221
|
+
.filter(value => value !== '');
|
|
1222
|
+
}
|
|
1223
|
+
/**
|
|
1224
|
+
* Determines if the toggle all button should be shown in options mode.
|
|
1225
|
+
* @returns {boolean} True if there are visible items and no "No results found" message
|
|
1226
|
+
*/
|
|
1227
|
+
shouldShowToggleAllOptionsButton() {
|
|
1228
|
+
if (!this.options)
|
|
1229
|
+
return false; // Only for options mode
|
|
1230
|
+
return this.enableSelectAll && this.hasFilterResults;
|
|
1231
|
+
}
|
|
1232
|
+
/**
|
|
1233
|
+
* Gets the checkbox state for the select all checkbox in options mode.
|
|
1234
|
+
* @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
|
|
1235
|
+
*/
|
|
1236
|
+
getSelectAllCheckboxStateOptions() {
|
|
1237
|
+
if (!this.options)
|
|
1238
|
+
return 'unchecked';
|
|
1239
|
+
// Get visible and enabled option values from DOM
|
|
1240
|
+
const visibleOptionValues = this.getVisibleEnabledOptionItems();
|
|
1241
|
+
if (visibleOptionValues.length === 0)
|
|
1242
|
+
return 'unchecked';
|
|
1243
|
+
const selectedVisibleOptions = visibleOptionValues.filter(value => this.value.includes(value));
|
|
1244
|
+
if (selectedVisibleOptions.length === 0)
|
|
1245
|
+
return 'unchecked';
|
|
1246
|
+
if (selectedVisibleOptions.length === visibleOptionValues.length)
|
|
1247
|
+
return 'checked';
|
|
1248
|
+
return 'indeterminate';
|
|
1249
|
+
}
|
|
1250
|
+
/**
|
|
1251
|
+
* Gets the checkbox state for the select all checkbox in slots mode.
|
|
1252
|
+
* @returns {'checked' | 'unchecked' | 'indeterminate'} The checkbox state
|
|
1253
|
+
*/
|
|
1254
|
+
getSelectAllCheckboxStateSlots() {
|
|
1255
|
+
if (this.options)
|
|
1256
|
+
return 'unchecked';
|
|
1257
|
+
// Get all visible and enabled items
|
|
1258
|
+
const items = this.getVisibleEnabledSlotItems();
|
|
1259
|
+
if (items.length === 0)
|
|
1260
|
+
return 'unchecked';
|
|
1261
|
+
const selectedItems = items.filter(item => {
|
|
1262
|
+
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
1263
|
+
return itemValue !== '' && this.value.includes(itemValue);
|
|
1264
|
+
});
|
|
1265
|
+
if (selectedItems.length === 0)
|
|
1266
|
+
return 'unchecked';
|
|
1267
|
+
if (selectedItems.length === items.length)
|
|
1268
|
+
return 'checked';
|
|
1269
|
+
return 'indeterminate';
|
|
1270
|
+
}
|
|
1271
|
+
/**
|
|
1272
|
+
* Determines if the toggle all button should be shown in slots mode.
|
|
1273
|
+
* @returns {boolean} True if there are visible items and no "No results found" message
|
|
1274
|
+
*/
|
|
1275
|
+
shouldShowToggleAllSlotButton() {
|
|
1276
|
+
if (this.options)
|
|
1277
|
+
return false; // Only for slots mode
|
|
1278
|
+
return this.enableSelectAll && this.hasFilterResults;
|
|
1279
|
+
}
|
|
1280
|
+
/**
|
|
1281
|
+
* Initializes the value array from checked slotted nv-fielddropdownitemcheck elements (slots mode only).
|
|
1282
|
+
*/
|
|
1283
|
+
initializeValueFromSlots() {
|
|
1284
|
+
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1285
|
+
// Values from checked slot children
|
|
1286
|
+
const checkedValues = items
|
|
1287
|
+
.filter(item => item.hasAttribute('checked'))
|
|
1288
|
+
.map(item => item.getAttribute('value') || item.getAttribute('label') || '');
|
|
1289
|
+
// Combine with current this.value (set by code), ensuring uniqueness
|
|
1290
|
+
this.value = Array.from(new Set([...(this.value || []), ...checkedValues]));
|
|
1291
|
+
console.info('[initializeValueFromSlots] checkedValues:', checkedValues, 'combined value:', this.value);
|
|
1292
|
+
}
|
|
943
1293
|
/**
|
|
944
1294
|
* Renders description and error description sections
|
|
945
1295
|
* @returns {any} The JSX for descriptions
|