@nova-design-system/nova-webcomponents 3.15.0 → 3.16.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/{index-c56424e5.js → index-93d3b2f8.js} +5 -6
- package/dist/cjs/index-93d3b2f8.js.map +1 -0
- package/dist/cjs/index.cjs.js +6 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/native.cjs.js +2 -2
- package/dist/cjs/nv-accordion-item.cjs.entry.js +2 -2
- package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-accordion.cjs.entry.js +6 -6
- package/dist/cjs/nv-accordion.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 +2 -2
- package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
- package/dist/cjs/nv-breadcrumb.cjs.entry.js +2 -2
- package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-breadcrumbs.cjs.entry.js +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 +1 -1
- package/dist/cjs/nv-calendar.cjs.entry.js +1 -1
- package/dist/cjs/nv-col.cjs.entry.js +1 -1
- package/dist/cjs/nv-datagrid.cjs.entry.js +177 -10
- 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 +32 -29
- package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
- package/dist/cjs/nv-dialogfooter_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddate.cjs.entry.js +51 -26
- package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +68 -42
- package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +33 -7
- package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +187 -156
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldnumber.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldradio.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldselect.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldslider.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtext.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtime.cjs.entry.js +25 -12
- package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-icon.cjs.entry.js +2 -2
- package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-menu.cjs.entry.js +24 -9
- package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-notification.cjs.entry.js +2 -2
- package/dist/cjs/nv-notification.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
- package/dist/cjs/nv-popover.cjs.entry.js +67 -61
- package/dist/cjs/nv-popover.cjs.entry.js.map +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 +216 -310
- package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-toggle.cjs.entry.js +4 -4
- package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-togglebutton.cjs.entry.js +2 -2
- package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +2 -2
- package/dist/cjs/nv-togglebuttongroup.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-tooltip.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +0 -1
- package/dist/collection/components/nv-accordion/nv-accordion.js +12 -9
- package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
- package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
- package/dist/collection/components/nv-accordion-item/styles/nv-accordion-item.css +1 -1
- package/dist/collection/components/nv-alert/nv-alert.css +1 -1
- package/dist/collection/components/nv-avatar/nv-avatar.css +1 -1
- package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +1 -1
- package/dist/collection/components/nv-button/styles/nv-button.css +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.css +2 -2
- package/dist/collection/components/nv-dialog/nv-dialog.css +2 -2
- package/dist/collection/components/nv-dialog/nv-dialog.docs.js +13 -0
- package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
- package/dist/collection/components/nv-dialog/nv-dialog.js +30 -27
- package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
- package/dist/collection/components/nv-dialogheader/nv-dialogheader.css +4 -4
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +3 -3
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +49 -24
- package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
- package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +8 -8
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +66 -43
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +8 -8
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +26 -4
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +32 -4
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +9 -9
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +186 -153
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +9 -9
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +8 -8
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +8 -8
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.css +3 -3
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +12 -12
- package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +7 -7
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +8 -8
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +9 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.css +8 -8
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +22 -0
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +24 -9
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +8 -8
- package/dist/collection/components/nv-icon/nv-icons.js +6 -1
- package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +2 -2
- package/dist/collection/components/nv-menu/nv-menu.docs.js +7 -0
- package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
- package/dist/collection/components/nv-menu/nv-menu.js +26 -8
- package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
- package/dist/collection/components/nv-notification/styles/nv-notification.css +2 -2
- package/dist/collection/components/nv-popover/nv-popover.docs.js +11 -0
- package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
- package/dist/collection/components/nv-popover/nv-popover.js +66 -60
- package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
- package/dist/collection/components/nv-table/nv-table.docs.js +16 -155
- package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
- package/dist/collection/components/nv-table/nv-table.js +68 -496
- package/dist/collection/components/nv-table/nv-table.js.map +1 -1
- package/dist/collection/components/nv-table/nv-table.utils.js +175 -0
- package/dist/collection/components/nv-table/nv-table.utils.js.map +1 -0
- package/dist/collection/components/nv-table/styles/nv-table.css +84 -0
- package/dist/collection/components/nv-table/test/nv-table.utils.test.js +604 -0
- package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +1 -0
- package/dist/collection/components/nv-toggle/nv-toggle.css +3 -3
- package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +1 -0
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -1
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -3
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -1
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
- package/dist/components/index.js +7 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/nv-accordion-item.js +1 -1
- package/dist/components/nv-accordion.js +10 -10
- package/dist/components/nv-accordion.js.map +1 -1
- package/dist/components/nv-alert.js +3 -3
- package/dist/components/nv-alert.js.map +1 -1
- package/dist/components/nv-avatar.js +3 -3
- package/dist/components/nv-avatar.js.map +1 -1
- package/dist/components/nv-badge.js +1 -1
- package/dist/components/nv-breadcrumb.js +4 -4
- package/dist/components/nv-breadcrumb.js.map +1 -1
- package/dist/components/nv-breadcrumbs.js +1 -1
- package/dist/components/nv-button.js +1 -1
- package/dist/components/nv-buttongroup.js +1 -1
- package/dist/components/nv-calendar.js +1 -1
- package/dist/components/nv-col.js +1 -1
- package/dist/components/nv-datagrid.js +174 -7
- package/dist/components/nv-datagrid.js.map +1 -1
- package/dist/components/nv-datagridcolumn.js +1 -1
- package/dist/components/nv-dialog.js +37 -34
- package/dist/components/nv-dialog.js.map +1 -1
- 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 +57 -32
- package/dist/components/nv-fielddate.js.map +1 -1
- package/dist/components/nv-fielddaterange.js +74 -48
- package/dist/components/nv-fielddaterange.js.map +1 -1
- package/dist/components/nv-fielddropdown.js +40 -13
- package/dist/components/nv-fielddropdown.js.map +1 -1
- package/dist/components/nv-fielddropdownitem.js +1 -1
- package/dist/components/nv-fielddropdownitemcheck.js +1 -1
- package/dist/components/nv-fieldmultiselect.js +196 -164
- package/dist/components/nv-fieldmultiselect.js.map +1 -1
- package/dist/components/nv-fieldnumber.js +1 -1
- package/dist/components/nv-fieldpassword.js +5 -5
- package/dist/components/nv-fieldpassword.js.map +1 -1
- package/dist/components/nv-fieldradio.js +2 -2
- package/dist/components/nv-fieldradio.js.map +1 -1
- package/dist/components/nv-fieldselect.js +5 -5
- package/dist/components/nv-fieldselect.js.map +1 -1
- package/dist/components/nv-fieldslider.js +6 -6
- package/dist/components/nv-fieldslider.js.map +1 -1
- package/dist/components/nv-fieldtext.js +1 -1
- package/dist/components/nv-fieldtextarea.js +2 -2
- package/dist/components/nv-fieldtextarea.js.map +1 -1
- package/dist/components/nv-fieldtime.js +31 -17
- package/dist/components/nv-fieldtime.js.map +1 -1
- 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 +30 -13
- package/dist/components/nv-menu.js.map +1 -1
- package/dist/components/nv-menuitem.js +1 -1
- package/dist/components/nv-notification.js +3 -3
- package/dist/components/nv-notification.js.map +1 -1
- package/dist/components/nv-notificationcontainer.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 +216 -328
- package/dist/components/nv-table.js.map +1 -1
- package/dist/components/nv-toggle.js +4 -4
- package/dist/components/nv-toggle.js.map +1 -1
- package/dist/components/nv-togglebutton.js +2 -2
- package/dist/components/nv-togglebuttongroup.js +2 -2
- package/dist/components/nv-togglebuttongroup.js.map +1 -1
- package/dist/components/nv-tooltip.js +1 -1
- package/dist/components/{p-00cbf2a1.js → p-0d5ed1d7.js} +3 -3
- package/dist/components/p-0d5ed1d7.js.map +1 -0
- package/dist/components/{p-54161bad.js → p-0e6f41c7.js} +2 -2
- package/dist/components/{p-54161bad.js.map → p-0e6f41c7.js.map} +1 -1
- package/dist/components/{p-0c42fafb.js → p-0fd23531.js} +6 -6
- package/dist/components/{p-0c42fafb.js.map → p-0fd23531.js.map} +1 -1
- package/dist/components/{p-a823b8e9.js → p-1639703f.js} +2 -2
- package/dist/components/{p-a823b8e9.js.map → p-1639703f.js.map} +1 -1
- package/dist/components/{p-e5c62ea8.js → p-2cc83e0c.js} +3 -3
- package/dist/components/{p-e5c62ea8.js.map → p-2cc83e0c.js.map} +1 -1
- package/dist/components/p-2d64749f.js +191 -0
- package/dist/components/{p-95857e4f.js.map → p-2d64749f.js.map} +1 -1
- package/dist/components/{p-3763c9c4.js → p-31478080.js} +3 -3
- package/dist/components/{p-3763c9c4.js.map → p-31478080.js.map} +1 -1
- package/dist/components/{p-178fa27e.js → p-378e3127.js} +6 -6
- package/dist/components/{p-178fa27e.js.map → p-378e3127.js.map} +1 -1
- package/dist/components/{p-51876ca1.js → p-429e01f3.js} +3 -3
- package/dist/components/p-429e01f3.js.map +1 -0
- package/dist/components/p-47d499b4.js +88 -0
- package/dist/components/p-47d499b4.js.map +1 -0
- package/dist/components/{p-aff3ed68.js → p-5829b9f7.js} +5 -2
- package/dist/components/p-5829b9f7.js.map +1 -0
- package/dist/components/{p-ee8944f3.js → p-63595ea1.js} +68 -62
- package/dist/components/p-63595ea1.js.map +1 -0
- package/dist/components/{p-4fc01a78.js → p-7112612c.js} +5 -5
- package/dist/components/p-7112612c.js.map +1 -0
- package/dist/components/{p-7426b20f.js → p-715e5235.js} +3 -3
- package/dist/components/{p-7426b20f.js.map → p-715e5235.js.map} +1 -1
- package/dist/components/{p-1af3591a.js → p-9707528d.js} +4 -4
- package/dist/components/{p-1af3591a.js.map → p-9707528d.js.map} +1 -1
- package/dist/components/{p-fda58a76.js → p-98429fd7.js} +2 -2
- package/dist/components/{p-fda58a76.js.map → p-98429fd7.js.map} +1 -1
- package/dist/components/{p-31e262bd.js → p-a1ef5e37.js} +5 -5
- package/dist/components/{p-31e262bd.js.map → p-a1ef5e37.js.map} +1 -1
- package/dist/components/{p-75200cc0.js → p-df5d76a5.js} +3 -3
- package/dist/components/{p-75200cc0.js.map → p-df5d76a5.js.map} +1 -1
- package/dist/components/{p-51459a44.js → p-f2bac2aa.js} +4 -4
- package/dist/components/{p-51459a44.js.map → p-f2bac2aa.js.map} +1 -1
- package/dist/esm/{index-a1936cd0.js → index-dc2723f3.js} +5 -6
- package/dist/esm/index-dc2723f3.js.map +1 -0
- package/dist/esm/index.js +6 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/native.js +3 -3
- package/dist/esm/nv-accordion-item.entry.js +2 -2
- package/dist/esm/nv-accordion-item.entry.js.map +1 -1
- package/dist/esm/nv-accordion.entry.js +6 -6
- package/dist/esm/nv-accordion.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 +2 -2
- package/dist/esm/nv-avatar.entry.js.map +1 -1
- package/dist/esm/nv-badge_2.entry.js +1 -1
- package/dist/esm/nv-breadcrumb.entry.js +2 -2
- package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
- package/dist/esm/nv-breadcrumbs.entry.js +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 +1 -1
- package/dist/esm/nv-calendar.entry.js +1 -1
- package/dist/esm/nv-col.entry.js +1 -1
- package/dist/esm/nv-datagrid.entry.js +172 -5
- 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 +32 -29
- package/dist/esm/nv-dialog.entry.js.map +1 -1
- package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
- package/dist/esm/nv-dialogfooter_2.entry.js.map +1 -1
- package/dist/esm/nv-fieldcheckbox.entry.js +2 -2
- package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
- package/dist/esm/nv-fielddate.entry.js +51 -26
- package/dist/esm/nv-fielddate.entry.js.map +1 -1
- package/dist/esm/nv-fielddaterange.entry.js +68 -42
- package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdown.entry.js +33 -7
- package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
- package/dist/esm/nv-fieldmultiselect.entry.js +187 -156
- package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldnumber.entry.js +2 -2
- package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
- package/dist/esm/nv-fieldpassword.entry.js +2 -2
- package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
- package/dist/esm/nv-fieldradio.entry.js +2 -2
- package/dist/esm/nv-fieldradio.entry.js.map +1 -1
- package/dist/esm/nv-fieldselect.entry.js +2 -2
- package/dist/esm/nv-fieldselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldslider.entry.js +2 -2
- package/dist/esm/nv-fieldslider.entry.js.map +1 -1
- package/dist/esm/nv-fieldtext.entry.js +2 -2
- package/dist/esm/nv-fieldtext.entry.js.map +1 -1
- package/dist/esm/nv-fieldtextarea.entry.js +2 -2
- package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
- package/dist/esm/nv-fieldtime.entry.js +25 -12
- package/dist/esm/nv-fieldtime.entry.js.map +1 -1
- package/dist/esm/nv-icon.entry.js +2 -2
- package/dist/esm/nv-icon.entry.js.map +1 -1
- package/dist/esm/nv-iconbutton_2.entry.js +2 -2
- package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
- package/dist/esm/nv-menu.entry.js +24 -9
- package/dist/esm/nv-menu.entry.js.map +1 -1
- package/dist/esm/nv-menuitem.entry.js +1 -1
- package/dist/esm/nv-notification.entry.js +2 -2
- package/dist/esm/nv-notification.entry.js.map +1 -1
- package/dist/esm/nv-notificationcontainer.entry.js +1 -1
- package/dist/esm/nv-popover.entry.js +67 -61
- package/dist/esm/nv-popover.entry.js.map +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 +216 -310
- package/dist/esm/nv-table.entry.js.map +1 -1
- package/dist/esm/nv-toggle.entry.js +4 -4
- package/dist/esm/nv-toggle.entry.js.map +1 -1
- package/dist/esm/nv-togglebutton.entry.js +2 -2
- package/dist/esm/nv-togglebuttongroup.entry.js +2 -2
- package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -1
- package/dist/esm/nv-tooltip.entry.js +2 -2
- 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-d882f417.entry.js → p-075d231e.entry.js} +2 -2
- package/dist/native/p-075d231e.entry.js.map +1 -0
- package/dist/native/p-107e80c6.entry.js +2 -0
- package/dist/native/p-107e80c6.entry.js.map +1 -0
- package/dist/native/{p-5c697133.entry.js → p-112d096c.entry.js} +2 -2
- package/dist/native/p-217de553.entry.js +2 -0
- package/dist/native/p-217de553.entry.js.map +1 -0
- package/dist/native/{p-85f8f11a.entry.js → p-230af58a.entry.js} +2 -2
- package/dist/native/p-23ee0384.entry.js +2 -0
- package/dist/native/{p-29f68e07.entry.js.map → p-23ee0384.entry.js.map} +1 -1
- package/dist/native/p-26513cbd.entry.js +2 -0
- package/dist/native/p-26513cbd.entry.js.map +1 -0
- package/dist/native/p-278613a3.entry.js +2 -0
- package/dist/native/{p-6cb6679b.entry.js.map → p-278613a3.entry.js.map} +1 -1
- package/dist/native/p-2dfd786f.entry.js +2 -0
- package/dist/native/{p-29df974e.entry.js.map → p-2dfd786f.entry.js.map} +1 -1
- package/dist/native/{p-d0a33e64.js → p-3060df80.js} +3 -3
- package/dist/native/p-3060df80.js.map +1 -0
- package/dist/native/p-445221dc.entry.js +2 -0
- package/dist/native/p-445221dc.entry.js.map +1 -0
- package/dist/native/{p-08322093.entry.js → p-44a78545.entry.js} +2 -2
- package/dist/native/p-4dc7483d.entry.js +2 -0
- package/dist/native/{p-c7b7ffaf.entry.js.map → p-4dc7483d.entry.js.map} +1 -1
- package/dist/native/p-4eaf417d.entry.js +13 -0
- package/dist/native/p-4eaf417d.entry.js.map +1 -0
- package/dist/native/p-5039ceb8.entry.js +2 -0
- package/dist/native/p-5039ceb8.entry.js.map +1 -0
- package/dist/native/{p-19090193.entry.js → p-647a0765.entry.js} +2 -2
- package/dist/native/p-68dc02be.entry.js +2 -0
- package/dist/native/p-68dc02be.entry.js.map +1 -0
- package/dist/native/p-6d427897.entry.js +2 -0
- package/dist/native/{p-92931ab8.entry.js.map → p-6d427897.entry.js.map} +1 -1
- package/dist/native/{p-1504e28b.entry.js → p-701b48a4.entry.js} +2 -2
- package/dist/native/p-7c9bf981.entry.js +2 -0
- package/dist/native/p-835abdb9.entry.js +2 -0
- package/dist/native/{p-f5120223.entry.js.map → p-835abdb9.entry.js.map} +1 -1
- package/dist/native/{p-464bb197.entry.js → p-83765537.entry.js} +2 -2
- package/dist/native/p-88f9fca5.entry.js +2 -0
- package/dist/native/p-88f9fca5.entry.js.map +1 -0
- package/dist/native/{p-d2c9247b.entry.js → p-8e423742.entry.js} +3 -3
- package/dist/native/{p-d2c9247b.entry.js.map → p-8e423742.entry.js.map} +1 -1
- package/dist/native/p-95184ea2.entry.js +2 -0
- package/dist/native/p-95184ea2.entry.js.map +1 -0
- package/dist/native/p-9613087c.entry.js +2 -0
- package/dist/native/{p-2781637d.entry.js.map → p-9613087c.entry.js.map} +1 -1
- package/dist/native/{p-94dc9c41.entry.js → p-9d7e099f.entry.js} +2 -2
- package/dist/native/p-a2f58133.entry.js +2 -0
- package/dist/native/p-a2f58133.entry.js.map +1 -0
- package/dist/native/{p-1235c007.entry.js → p-acabac31.entry.js} +2 -2
- package/dist/native/p-acada158.entry.js +2 -0
- package/dist/native/p-acada158.entry.js.map +1 -0
- package/dist/native/{p-e2c99ce2.entry.js → p-b02c896a.entry.js} +2 -2
- package/dist/native/p-b06f0e61.entry.js +2 -0
- package/dist/native/p-b06f0e61.entry.js.map +1 -0
- package/dist/native/p-b4c15f25.entry.js +2 -0
- package/dist/native/p-b4c15f25.entry.js.map +1 -0
- package/dist/native/{p-74b129e9.entry.js → p-bcf41cd0.entry.js} +2 -2
- package/dist/native/p-ce97ce24.entry.js +2 -0
- package/dist/native/p-ce97ce24.entry.js.map +1 -0
- package/dist/native/p-d0db5e72.entry.js +2 -0
- package/dist/native/p-d0db5e72.entry.js.map +1 -0
- package/dist/native/p-d45ee8e5.entry.js +2 -0
- package/dist/native/{p-6d13a851.entry.js.map → p-d45ee8e5.entry.js.map} +1 -1
- package/dist/native/p-d7f444fb.entry.js +2 -0
- package/dist/native/p-d7f444fb.entry.js.map +1 -0
- package/dist/native/p-d878e90a.entry.js +2 -0
- package/dist/native/p-d878e90a.entry.js.map +1 -0
- package/dist/native/p-ddc41f1f.entry.js +2 -0
- package/dist/native/p-ddc41f1f.entry.js.map +1 -0
- package/dist/native/{p-c66565f8.entry.js → p-dfb6b65e.entry.js} +2 -2
- package/dist/native/p-f30e0be6.entry.js +2 -0
- package/dist/native/p-f30e0be6.entry.js.map +1 -0
- package/dist/native/p-f3c73492.entry.js +2 -0
- package/dist/native/{p-b32d0a5a.entry.js.map → p-f3c73492.entry.js.map} +1 -1
- package/dist/native/{p-9c5d6827.entry.js → p-fa78d8eb.entry.js} +2 -2
- package/dist/types/components/nv-accordion/nv-accordion.d.ts +2 -4
- package/dist/types/components/nv-dialog/nv-dialog.d.ts +9 -8
- package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +6 -3
- package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +5 -4
- package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +3 -1
- package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +12 -11
- package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +1 -0
- package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
- package/dist/types/components/nv-menu/nv-menu.d.ts +4 -1
- package/dist/types/components/nv-popover/nv-popover.d.ts +10 -8
- package/dist/types/components/nv-table/nv-table.d.ts +6 -87
- package/dist/types/components/nv-table/nv-table.utils.d.ts +129 -0
- package/dist/types/components/nv-table/test/nv-table.utils.test.d.ts +1 -0
- package/dist/types/components/nv-togglebuttongroup/nv-togglebuttongroup.d.ts +0 -2
- package/dist/types/components.d.ts +3 -208
- package/dist/vscode-data.json +18 -41
- package/hydrate/index.js +800 -783
- package/hydrate/index.mjs +800 -783
- package/package.json +6 -10
- package/dist/cjs/dom.utils-4d43f69a.js +0 -170
- package/dist/cjs/dom.utils-4d43f69a.js.map +0 -1
- package/dist/cjs/index-c56424e5.js.map +0 -1
- package/dist/cjs/nv-tablecolumn.cjs.entry.js +0 -21
- package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +0 -1
- package/dist/collection/components/nv-table/nv-table.css +0 -35
- package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js +0 -6
- package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js.map +0 -1
- package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +0 -52
- package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +0 -1
- package/dist/components/nv-tablecolumn.d.ts +0 -11
- package/dist/components/nv-tablecolumn.js +0 -38
- package/dist/components/nv-tablecolumn.js.map +0 -1
- package/dist/components/p-00cbf2a1.js.map +0 -1
- package/dist/components/p-4fc01a78.js.map +0 -1
- package/dist/components/p-51876ca1.js.map +0 -1
- package/dist/components/p-5d14ba3f.js +0 -88
- package/dist/components/p-5d14ba3f.js.map +0 -1
- package/dist/components/p-95857e4f.js +0 -191
- package/dist/components/p-aff3ed68.js.map +0 -1
- package/dist/components/p-cb34aa4f.js +0 -167
- package/dist/components/p-cb34aa4f.js.map +0 -1
- package/dist/components/p-ee8944f3.js.map +0 -1
- package/dist/esm/dom.utils-ac71e0ef.js +0 -167
- package/dist/esm/dom.utils-ac71e0ef.js.map +0 -1
- package/dist/esm/index-a1936cd0.js.map +0 -1
- package/dist/esm/nv-tablecolumn.entry.js +0 -17
- package/dist/esm/nv-tablecolumn.entry.js.map +0 -1
- package/dist/native/p-0a99c6fb.entry.js +0 -2
- package/dist/native/p-0a99c6fb.entry.js.map +0 -1
- package/dist/native/p-1ad1bff9.entry.js +0 -2
- package/dist/native/p-1ad1bff9.entry.js.map +0 -1
- package/dist/native/p-1c83f540.entry.js +0 -2
- package/dist/native/p-1c83f540.entry.js.map +0 -1
- package/dist/native/p-224b1a01.entry.js +0 -2
- package/dist/native/p-224b1a01.entry.js.map +0 -1
- package/dist/native/p-234cfa2e.entry.js +0 -2
- package/dist/native/p-2781637d.entry.js +0 -2
- package/dist/native/p-29df974e.entry.js +0 -2
- package/dist/native/p-29f68e07.entry.js +0 -2
- package/dist/native/p-45506c37.entry.js +0 -2
- package/dist/native/p-45506c37.entry.js.map +0 -1
- package/dist/native/p-48774d0c.entry.js +0 -13
- package/dist/native/p-48774d0c.entry.js.map +0 -1
- package/dist/native/p-4ec61dec.entry.js +0 -2
- package/dist/native/p-4ec61dec.entry.js.map +0 -1
- package/dist/native/p-5f0776cb.entry.js +0 -2
- package/dist/native/p-5f0776cb.entry.js.map +0 -1
- package/dist/native/p-6c7a9a21.entry.js +0 -2
- package/dist/native/p-6c7a9a21.entry.js.map +0 -1
- package/dist/native/p-6cb6679b.entry.js +0 -2
- package/dist/native/p-6d13a851.entry.js +0 -2
- package/dist/native/p-87784622.entry.js +0 -2
- package/dist/native/p-87784622.entry.js.map +0 -1
- package/dist/native/p-92931ab8.entry.js +0 -2
- package/dist/native/p-9a46baa9.entry.js +0 -2
- package/dist/native/p-9a46baa9.entry.js.map +0 -1
- package/dist/native/p-a34beedf.entry.js +0 -2
- package/dist/native/p-a34beedf.entry.js.map +0 -1
- package/dist/native/p-a69dbcef.entry.js +0 -2
- package/dist/native/p-a69dbcef.entry.js.map +0 -1
- package/dist/native/p-b32d0a5a.entry.js +0 -2
- package/dist/native/p-bc01787b.entry.js +0 -2
- package/dist/native/p-bc01787b.entry.js.map +0 -1
- package/dist/native/p-c7b7ffaf.entry.js +0 -2
- package/dist/native/p-cb34aa4f.js +0 -2
- package/dist/native/p-cb34aa4f.js.map +0 -1
- package/dist/native/p-cea942b9.entry.js +0 -2
- package/dist/native/p-cea942b9.entry.js.map +0 -1
- package/dist/native/p-d0a33e64.js.map +0 -1
- package/dist/native/p-d0ef1bbb.entry.js +0 -2
- package/dist/native/p-d0ef1bbb.entry.js.map +0 -1
- package/dist/native/p-d882f417.entry.js.map +0 -1
- package/dist/native/p-dd023fd6.entry.js +0 -2
- package/dist/native/p-dd023fd6.entry.js.map +0 -1
- package/dist/native/p-e765a624.entry.js +0 -2
- package/dist/native/p-e765a624.entry.js.map +0 -1
- package/dist/native/p-f0cbfb3d.entry.js +0 -2
- package/dist/native/p-f0cbfb3d.entry.js.map +0 -1
- package/dist/native/p-f5120223.entry.js +0 -2
- package/dist/native/p-fa177c39.entry.js +0 -2
- package/dist/native/p-fa177c39.entry.js.map +0 -1
- package/dist/types/components/nv-tablecolumn/nv-tablecolumn.d.ts +0 -13
- package/dist/types/components/nv-tablecolumn/nv-tablecolumn.docs.d.ts +0 -4
- /package/dist/native/{p-5c697133.entry.js.map → p-112d096c.entry.js.map} +0 -0
- /package/dist/native/{p-85f8f11a.entry.js.map → p-230af58a.entry.js.map} +0 -0
- /package/dist/native/{p-08322093.entry.js.map → p-44a78545.entry.js.map} +0 -0
- /package/dist/native/{p-19090193.entry.js.map → p-647a0765.entry.js.map} +0 -0
- /package/dist/native/{p-1504e28b.entry.js.map → p-701b48a4.entry.js.map} +0 -0
- /package/dist/native/{p-234cfa2e.entry.js.map → p-7c9bf981.entry.js.map} +0 -0
- /package/dist/native/{p-464bb197.entry.js.map → p-83765537.entry.js.map} +0 -0
- /package/dist/native/{p-94dc9c41.entry.js.map → p-9d7e099f.entry.js.map} +0 -0
- /package/dist/native/{p-1235c007.entry.js.map → p-acabac31.entry.js.map} +0 -0
- /package/dist/native/{p-e2c99ce2.entry.js.map → p-b02c896a.entry.js.map} +0 -0
- /package/dist/native/{p-74b129e9.entry.js.map → p-bcf41cd0.entry.js.map} +0 -0
- /package/dist/native/{p-c66565f8.entry.js.map → p-dfb6b65e.entry.js.map} +0 -0
- /package/dist/native/{p-9c5d6827.entry.js.map → p-fa78d8eb.entry.js.map} +0 -0
|
@@ -12,6 +12,8 @@ import { v4 as uuidv4 } from "uuid";
|
|
|
12
12
|
export class NvFieldmultiselect {
|
|
13
13
|
constructor() {
|
|
14
14
|
this.isBulkOperation = false;
|
|
15
|
+
// Add the flag to the class
|
|
16
|
+
this.preventBlurClose = false;
|
|
15
17
|
/**
|
|
16
18
|
* Sets the ID for the input element and the for attribute of the associated
|
|
17
19
|
* label. If no ID is provided, a random one will be automatically generated
|
|
@@ -117,11 +119,6 @@ export class NvFieldmultiselect {
|
|
|
117
119
|
* Controls the visibility of the select all section.
|
|
118
120
|
*/
|
|
119
121
|
this.isSelectAllSectionVisible = true;
|
|
120
|
-
// Add the flag to the class
|
|
121
|
-
this.preventBlurClose = false;
|
|
122
|
-
this.handleMouseDownPreventBlur = () => {
|
|
123
|
-
this.preventBlurClose = true;
|
|
124
|
-
};
|
|
125
122
|
/**
|
|
126
123
|
* Handle badge close for options mode.
|
|
127
124
|
*/
|
|
@@ -165,17 +162,16 @@ export class NvFieldmultiselect {
|
|
|
165
162
|
if (this.isHandlingEscape) {
|
|
166
163
|
return;
|
|
167
164
|
}
|
|
168
|
-
//
|
|
169
|
-
if (this.filterable) {
|
|
170
|
-
this.resetFilter();
|
|
171
|
-
}
|
|
165
|
+
// Filter reset is handled in handleOpenChanged; no need to repeat
|
|
172
166
|
};
|
|
173
167
|
/**
|
|
174
168
|
* Clear the filter text
|
|
175
169
|
*/
|
|
176
170
|
this.clearFilterText = () => {
|
|
177
|
-
this.filterText
|
|
178
|
-
|
|
171
|
+
if (this.filterText !== '') {
|
|
172
|
+
this.filterText = '';
|
|
173
|
+
this.filterTextChanged.emit('');
|
|
174
|
+
}
|
|
179
175
|
this.resetFilter();
|
|
180
176
|
this.hasFilterResults = true;
|
|
181
177
|
};
|
|
@@ -189,11 +185,9 @@ export class NvFieldmultiselect {
|
|
|
189
185
|
return; // Don't close the popover
|
|
190
186
|
}
|
|
191
187
|
if (!this.el.contains(document.activeElement)) {
|
|
192
|
-
// Close the popover
|
|
193
|
-
this.open = false;
|
|
194
|
-
// Clear filter text when focus is lost
|
|
188
|
+
this.open = false; // Close the popover on blur
|
|
195
189
|
if (this.filterable) {
|
|
196
|
-
this.clearFilterText();
|
|
190
|
+
this.clearFilterText(); // Clear filter text on blur
|
|
197
191
|
}
|
|
198
192
|
}
|
|
199
193
|
}, 150);
|
|
@@ -306,17 +300,14 @@ export class NvFieldmultiselect {
|
|
|
306
300
|
*/
|
|
307
301
|
this.handleInputBlurSlots = () => {
|
|
308
302
|
setTimeout(() => {
|
|
309
|
-
// Honor preventBlurClose to avoid closing when interacting inside the popover
|
|
310
303
|
if (this.preventBlurClose) {
|
|
311
304
|
this.preventBlurClose = false;
|
|
312
305
|
return; // Don't close the popover
|
|
313
306
|
}
|
|
314
307
|
if (!this.el.contains(document.activeElement)) {
|
|
315
|
-
// Close the popover
|
|
316
|
-
this.open = false;
|
|
317
|
-
// Clear filter text when focus is lost
|
|
308
|
+
this.open = false; // Close the popover on blur
|
|
318
309
|
if (this.filterable) {
|
|
319
|
-
this.clearFilterText();
|
|
310
|
+
this.clearFilterText(); // Clear filter text on blur
|
|
320
311
|
}
|
|
321
312
|
}
|
|
322
313
|
}, 150);
|
|
@@ -443,6 +434,9 @@ export class NvFieldmultiselect {
|
|
|
443
434
|
const shouldSelectAll = currentState === 'unchecked' || currentState === 'indeterminate';
|
|
444
435
|
this.toggleSelectAllSlots(shouldSelectAll);
|
|
445
436
|
};
|
|
437
|
+
this.handleMouseDownPreventBlur = () => {
|
|
438
|
+
this.preventBlurClose = true;
|
|
439
|
+
};
|
|
446
440
|
//#endregion METHODS
|
|
447
441
|
/****************************************************************************/
|
|
448
442
|
//#region RENDER
|
|
@@ -451,7 +445,8 @@ export class NvFieldmultiselect {
|
|
|
451
445
|
* @returns {any} The JSX for options mode
|
|
452
446
|
*/
|
|
453
447
|
this.renderOptionsMode = () => {
|
|
454
|
-
|
|
448
|
+
var _a, _b, _c, _d;
|
|
449
|
+
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" }), (((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) || 0) > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: (((_b = this.value) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0, label: `${((_c = this.value) === null || _c === void 0 ? void 0 : _c.length) || 0} ${this.badgeLabel}`, "aria-label": `Clear all ${((_d = this.value) === null || _d === void 0 ? void 0 : _d.length) || 0} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseOptions })), this.filterable || this.disabled || this.readonly ? (h("input", { type: "text", id: this.inputId, ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.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: {
|
|
455
450
|
position: 'absolute',
|
|
456
451
|
opacity: '0',
|
|
457
452
|
width: '0',
|
|
@@ -460,14 +455,15 @@ export class NvFieldmultiselect {
|
|
|
460
455
|
}, tabIndex: -1, "aria-hidden": "true", autoComplete: this.autocomplete, name: this.name, onFocus: this.handleInputFocusOptions }), h("p", { id: this.inputId, class: "non-filterable-text", onClick: this.handleInputContainerClickOptions, tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleInputFocusOptions, "aria-label": this.label, "aria-controls": `${this.inputId}-listbox`, "data-scope": "focusable", role: "button" }, h("span", null, this.placeholder)))), this.error && (h("nv-icon", { name: "alert-circle", class: "validation", size: "md" })), this.filterable && this.filterText.length > 0 && (h("nv-iconbutton", { "data-scope": "clear-filter", name: "x", size: "md", emphasis: "lower", "aria-label": "Clear filter text", tabindex: "-1", title: "Clear filter text", onMouseDown: this.handleMouseDownPreventBlur, onClick: this.clearFilterText })), h("nv-iconbutton", { "data-scope": "toggle-dropdown", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', title: this.open ? 'Hide dropdown' : 'Show dropdown', onMouseDown: this.handleMouseDownPreventBlur, onClick: this.togglePopoverOptions })), h("slot", { name: "after-input" })), h("div", { id: `${this.inputId}-listbox`, slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {}, onMouseDown: this.handleMouseDownPreventBlur }, this.shouldShowToggleAllOptionsButton() && (h("div", { class: "select-all-container" }, h("div", { class: "select-all-header" }, this.isSelectAllSectionVisible && (h("nv-fieldcheckbox", { checked: this.getSelectAllCheckboxStateOptions() === 'checked', indeterminate: this.getSelectAllCheckboxStateOptions() ===
|
|
461
456
|
'indeterminate', label: this.getSelectAllCheckboxStateOptions() === 'unchecked'
|
|
462
457
|
? this.selectAllLabel
|
|
463
|
-
: this.deselectAllLabel, onMouseDown: this.handleMouseDownPreventBlur, onClick: this.handleSelectAllCheckboxOptionsClick }))))), h("ul", { role: "listbox", "aria-multiselectable": "true" }, this.options.map(option => (h("nv-fielddropdownitemcheck", { role: "option", label: option.label, description: option.description, value: option.value, checked: this.value.includes(option.value), disabled: option.disabled })))))), this.renderDescriptions()));
|
|
458
|
+
: this.deselectAllLabel, onMouseDown: this.handleMouseDownPreventBlur, onClick: this.handleSelectAllCheckboxOptionsClick }))))), h("ul", { role: "listbox", "aria-multiselectable": "true" }, this.options.map(option => (h("nv-fielddropdownitemcheck", { role: "option", label: option.label, description: option.description, value: option.value, checked: (this.value || []).includes(option.value), disabled: option.disabled })))))), this.renderDescriptions()));
|
|
464
459
|
};
|
|
465
460
|
/**
|
|
466
461
|
* Renders the component in slots mode
|
|
467
462
|
* @returns {any} The JSX for slots mode
|
|
468
463
|
*/
|
|
469
464
|
this.renderSlotsMode = () => {
|
|
470
|
-
|
|
465
|
+
var _a, _b, _c, _d;
|
|
466
|
+
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" }), (((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) || 0) > 0 && (h("nv-badge", { slot: "leading-input", "prevent-auto-close": true, color: "10", dismissible: (((_b = this.value) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0, label: `${((_c = this.value) === null || _c === void 0 ? void 0 : _c.length) || 0} ${this.badgeLabel}`, "aria-label": `Clear all ${((_d = this.value) === null || _d === void 0 ? void 0 : _d.length) || 0} ${this.badgeLabel} items`, onCloseClicked: this.handleBadgeCloseSlots })), this.filterable || this.disabled || this.readonly ? (h("input", { id: this.inputId, ref: e => (this.inputElement = e), autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, value: this.filterText, required: this.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: {
|
|
471
467
|
position: 'absolute',
|
|
472
468
|
opacity: '0',
|
|
473
469
|
width: '0',
|
|
@@ -487,7 +483,7 @@ export class NvFieldmultiselect {
|
|
|
487
483
|
return;
|
|
488
484
|
// If the parent has set a value prop, use it. Otherwise, derive from checked options.
|
|
489
485
|
// (Assume: if value is undefined, it's not set by parent; if it's an array, it's set.)
|
|
490
|
-
if (this.value
|
|
486
|
+
if (!this.value || this.value.length === 0) {
|
|
491
487
|
this.value = newValue
|
|
492
488
|
.filter(option => option.checked)
|
|
493
489
|
.map(option => option.value);
|
|
@@ -495,7 +491,7 @@ export class NvFieldmultiselect {
|
|
|
495
491
|
else {
|
|
496
492
|
// If value is set, ensure checked states in options match value
|
|
497
493
|
newValue.forEach(option => {
|
|
498
|
-
option.checked = this.value.includes(option.value);
|
|
494
|
+
option.checked = (this.value || []).includes(option.value);
|
|
499
495
|
});
|
|
500
496
|
}
|
|
501
497
|
this.reorderOptionsContent();
|
|
@@ -512,10 +508,24 @@ export class NvFieldmultiselect {
|
|
|
512
508
|
// Also, update options checked state if options exist
|
|
513
509
|
if (this.options) {
|
|
514
510
|
this.options.forEach(option => {
|
|
515
|
-
option.checked = this.value.includes(option.value);
|
|
511
|
+
option.checked = (this.value || []).includes(option.value);
|
|
516
512
|
});
|
|
517
513
|
}
|
|
518
514
|
}
|
|
515
|
+
handleOpenChange(newOpen) {
|
|
516
|
+
// React to external changes, e.g., reorder or filter
|
|
517
|
+
if (newOpen) {
|
|
518
|
+
if (this.options) {
|
|
519
|
+
this.reorderOptionsContent();
|
|
520
|
+
}
|
|
521
|
+
else {
|
|
522
|
+
this.reorderSlotContent();
|
|
523
|
+
}
|
|
524
|
+
if (this.filterText) {
|
|
525
|
+
this.filterItems();
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
519
529
|
//#endregion WATCHERS
|
|
520
530
|
/****************************************************************************/
|
|
521
531
|
//#region LISTENERS
|
|
@@ -526,23 +536,33 @@ export class NvFieldmultiselect {
|
|
|
526
536
|
handleOpenChanged(event) {
|
|
527
537
|
// Stop propagation to prevent the event from affecting parent components like dialogs
|
|
528
538
|
event.stopPropagation();
|
|
529
|
-
//
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
this.
|
|
539
|
+
// Only update if the event comes from our popover
|
|
540
|
+
if (event.target === this.popoverElement) {
|
|
541
|
+
// Only update if open state differs to avoid redundant actions
|
|
542
|
+
if (this.open !== event.detail) {
|
|
543
|
+
this.open = event.detail;
|
|
544
|
+
if (this.open) {
|
|
545
|
+
// Filter items only if there is filter text
|
|
546
|
+
if (this.filterText) {
|
|
547
|
+
this.filterItems();
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
else {
|
|
551
|
+
// Clear filter text on close if filterable
|
|
552
|
+
if (this.filterable) {
|
|
553
|
+
this.clearFilterText();
|
|
554
|
+
}
|
|
555
|
+
this.handlePopoverClose();
|
|
556
|
+
}
|
|
557
|
+
// Reorder content as needed
|
|
558
|
+
if (this.options) {
|
|
559
|
+
this.reorderOptionsContent();
|
|
560
|
+
}
|
|
561
|
+
else {
|
|
562
|
+
this.reorderSlotContent();
|
|
563
|
+
}
|
|
535
564
|
}
|
|
536
565
|
}
|
|
537
|
-
else {
|
|
538
|
-
this.handlePopoverClose();
|
|
539
|
-
}
|
|
540
|
-
if (this.options) {
|
|
541
|
-
this.reorderOptionsContent();
|
|
542
|
-
}
|
|
543
|
-
else {
|
|
544
|
-
this.reorderSlotContent();
|
|
545
|
-
}
|
|
546
566
|
}
|
|
547
567
|
/**
|
|
548
568
|
* Listen for the `itemChecked` event emitted by child items.
|
|
@@ -555,7 +575,7 @@ export class NvFieldmultiselect {
|
|
|
555
575
|
}
|
|
556
576
|
const { value, checked } = event.detail;
|
|
557
577
|
if (value !== undefined && value !== null) {
|
|
558
|
-
const newValue = [...this.value];
|
|
578
|
+
const newValue = [...(this.value || [])];
|
|
559
579
|
const valueIndex = newValue.indexOf(value);
|
|
560
580
|
let hasChanged = false;
|
|
561
581
|
if (checked && valueIndex === -1) {
|
|
@@ -592,6 +612,86 @@ export class NvFieldmultiselect {
|
|
|
592
612
|
});
|
|
593
613
|
}
|
|
594
614
|
}
|
|
615
|
+
/**
|
|
616
|
+
* Handle keyboard events & arrow key navigation.
|
|
617
|
+
* If the multiselect is not open, opens it and focuses on the first item if the list is not filterable.
|
|
618
|
+
* If the multiselect is open, handles arrow key navigation and closes it if the focus is outside the component.
|
|
619
|
+
* @param {KeyboardEvent} event - The keyboard event.
|
|
620
|
+
*/
|
|
621
|
+
async handleKeyDown(event) {
|
|
622
|
+
if (!this.open) {
|
|
623
|
+
if (event.key === 'ArrowDown') {
|
|
624
|
+
this.open = true;
|
|
625
|
+
// Focus on the first item if the list is not filterable
|
|
626
|
+
if (!this.filterable) {
|
|
627
|
+
requestAnimationFrame(() => {
|
|
628
|
+
this.focusFirstItem();
|
|
629
|
+
});
|
|
630
|
+
}
|
|
631
|
+
event.preventDefault();
|
|
632
|
+
return;
|
|
633
|
+
}
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
636
|
+
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck:not([style*="display: none"])'));
|
|
637
|
+
if (items.length === 0) {
|
|
638
|
+
console.warn('No visible items found to navigate');
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
|
|
642
|
+
if (event.key === 'ArrowDown') {
|
|
643
|
+
event.preventDefault();
|
|
644
|
+
currentIndex =
|
|
645
|
+
currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;
|
|
646
|
+
this.updateHighlightedItem(items, currentIndex);
|
|
647
|
+
}
|
|
648
|
+
else if (event.key === 'ArrowUp') {
|
|
649
|
+
event.preventDefault();
|
|
650
|
+
currentIndex =
|
|
651
|
+
currentIndex === -1
|
|
652
|
+
? items.length - 1
|
|
653
|
+
: (currentIndex - 1 + items.length) % items.length;
|
|
654
|
+
this.updateHighlightedItem(items, currentIndex);
|
|
655
|
+
}
|
|
656
|
+
else if (event.key === 'Enter' && currentIndex >= 0) {
|
|
657
|
+
event.preventDefault();
|
|
658
|
+
const selectedItem = items[currentIndex];
|
|
659
|
+
// Toggle the checked state
|
|
660
|
+
const isCurrentlyChecked = selectedItem.hasAttribute('checked');
|
|
661
|
+
selectedItem.checked = !isCurrentlyChecked;
|
|
662
|
+
// Trigger a click event to ensure proper event handling
|
|
663
|
+
selectedItem.dispatchEvent(new MouseEvent('click', {
|
|
664
|
+
view: window,
|
|
665
|
+
bubbles: true,
|
|
666
|
+
cancelable: true,
|
|
667
|
+
}));
|
|
668
|
+
}
|
|
669
|
+
else if (event.key === 'Escape') {
|
|
670
|
+
event.preventDefault();
|
|
671
|
+
event.stopPropagation(); // Prevent the event from propagating to the popover
|
|
672
|
+
// Do the reorder and wait a bit before closing
|
|
673
|
+
const handleEscape = async () => {
|
|
674
|
+
this.isHandlingEscape = true; // Disable the hide listener
|
|
675
|
+
if (this.options) {
|
|
676
|
+
this.reorderOptionsContent();
|
|
677
|
+
}
|
|
678
|
+
else {
|
|
679
|
+
this.reorderSlotContent();
|
|
680
|
+
}
|
|
681
|
+
// Wait for the reorder to be applied
|
|
682
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
683
|
+
// Reactivate the hide listener after a short delay
|
|
684
|
+
setTimeout(() => {
|
|
685
|
+
this.isHandlingEscape = false;
|
|
686
|
+
this.open = false;
|
|
687
|
+
}, 150);
|
|
688
|
+
if (this.inputElement) {
|
|
689
|
+
this.inputElement.blur();
|
|
690
|
+
}
|
|
691
|
+
};
|
|
692
|
+
await handleEscape();
|
|
693
|
+
}
|
|
694
|
+
}
|
|
595
695
|
//#endregion LISTENERS
|
|
596
696
|
/****************************************************************************/
|
|
597
697
|
//#region LIFECYCLE
|
|
@@ -688,8 +788,8 @@ export class NvFieldmultiselect {
|
|
|
688
788
|
if (emptyMessage)
|
|
689
789
|
emptyMessage.remove();
|
|
690
790
|
// Reorder with divider if needed
|
|
691
|
-
const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
692
|
-
const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
791
|
+
const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
792
|
+
const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
693
793
|
if (selectedItems.length > 0) {
|
|
694
794
|
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
695
795
|
}
|
|
@@ -774,8 +874,8 @@ export class NvFieldmultiselect {
|
|
|
774
874
|
return;
|
|
775
875
|
}
|
|
776
876
|
// Separate checked vs unchecked
|
|
777
|
-
const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
778
|
-
const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
877
|
+
const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
878
|
+
const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
779
879
|
// Reinsert CHECKED items FIRST
|
|
780
880
|
// appendChild() moves the element without recreating it
|
|
781
881
|
// this is not trigger a re-rendering of the component in the platforms
|
|
@@ -801,8 +901,8 @@ export class NvFieldmultiselect {
|
|
|
801
901
|
if (!ul)
|
|
802
902
|
return;
|
|
803
903
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck')).filter(item => item.style.display !== 'none');
|
|
804
|
-
const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
805
|
-
const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
904
|
+
const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
905
|
+
const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
806
906
|
// Reorder the elements
|
|
807
907
|
selectedItems.forEach(item => ul.appendChild(item));
|
|
808
908
|
unselectedItems.forEach(item => ul.appendChild(item));
|
|
@@ -838,8 +938,8 @@ export class NvFieldmultiselect {
|
|
|
838
938
|
}
|
|
839
939
|
// Reorder with divider
|
|
840
940
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
841
|
-
const selectedItems = items.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
842
|
-
const unselectedItems = items.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
941
|
+
const selectedItems = items.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
942
|
+
const unselectedItems = items.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
843
943
|
this.manageDivider(ul, selectedItems, unselectedItems);
|
|
844
944
|
return;
|
|
845
945
|
}
|
|
@@ -860,8 +960,8 @@ export class NvFieldmultiselect {
|
|
|
860
960
|
});
|
|
861
961
|
// Manage the divider with the visible items
|
|
862
962
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
863
|
-
const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
864
|
-
const visibleUnselected = visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
963
|
+
const visibleSelected = visibleItems.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
964
|
+
const visibleUnselected = visibleItems.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
865
965
|
this.manageDivider(ul, visibleSelected, visibleUnselected);
|
|
866
966
|
}
|
|
867
967
|
else {
|
|
@@ -901,31 +1001,39 @@ export class NvFieldmultiselect {
|
|
|
901
1001
|
const items = Array.from(ul.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
902
1002
|
// Reset items if the filter text is empty
|
|
903
1003
|
if (!this.filterText.trim()) {
|
|
904
|
-
// Remove the empty message if it exists
|
|
905
1004
|
this.removeEmptyMessageOption(ul);
|
|
906
|
-
items.forEach(item =>
|
|
907
|
-
|
|
908
|
-
|
|
1005
|
+
items.forEach(item => {
|
|
1006
|
+
item.style.display = '';
|
|
1007
|
+
item.removeAttribute('aria-hidden'); // Ensure accessibility
|
|
1008
|
+
});
|
|
1009
|
+
this.reorderOptionsContent();
|
|
1010
|
+
this.hasFilterResults = true;
|
|
909
1011
|
return;
|
|
910
1012
|
}
|
|
911
1013
|
// Filter the items
|
|
912
1014
|
items.forEach(item => {
|
|
913
|
-
const
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
1015
|
+
const option = this.options.find(opt => opt.value === item.getAttribute('value'));
|
|
1016
|
+
if (option && !option.isDivider) {
|
|
1017
|
+
const matchesFilter = this.normalizeText(option.label).includes(normalizedFilter) ||
|
|
1018
|
+
this.normalizeText(option.value).includes(normalizedFilter);
|
|
1019
|
+
item.style.display = matchesFilter ? '' : 'none';
|
|
1020
|
+
item.setAttribute('aria-hidden', matchesFilter ? 'false' : 'true'); // Update accessibility
|
|
1021
|
+
if (matchesFilter)
|
|
1022
|
+
hasVisibleItems = true;
|
|
1023
|
+
}
|
|
1024
|
+
else {
|
|
1025
|
+
item.style.display = 'none'; // Hide dividers during filtering
|
|
1026
|
+
item.setAttribute('aria-hidden', 'true');
|
|
1027
|
+
}
|
|
920
1028
|
});
|
|
921
1029
|
// Update the filter results state
|
|
922
1030
|
this.hasFilterResults = hasVisibleItems;
|
|
923
1031
|
// Manage the divider with the visible items
|
|
924
1032
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
925
|
-
const visibleSelected = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
926
|
-
const visibleUnselected = visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || ''));
|
|
1033
|
+
const visibleSelected = visibleItems.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
1034
|
+
const visibleUnselected = visibleItems.filter(item => !(this.value || []).includes(item.getAttribute('value') || ''));
|
|
927
1035
|
this.manageDivider(ul, visibleSelected, visibleUnselected);
|
|
928
|
-
// Add or remove the empty message
|
|
1036
|
+
// Add or remove the empty message
|
|
929
1037
|
if (!hasVisibleItems) {
|
|
930
1038
|
this.addEmptyMessageOption(ul);
|
|
931
1039
|
}
|
|
@@ -974,8 +1082,8 @@ export class NvFieldmultiselect {
|
|
|
974
1082
|
this.hasFilterResults = hasVisibleItems;
|
|
975
1083
|
// Get visible items after filtering
|
|
976
1084
|
const visibleItems = items.filter(item => item.style.display !== 'none');
|
|
977
|
-
const visibleSelectedItems = visibleItems.filter(item => this.value.includes(item.getAttribute('value') || ''));
|
|
978
|
-
this.manageDivider(ul, visibleSelectedItems, visibleItems.filter(item => !this.value.includes(item.getAttribute('value') || '')));
|
|
1085
|
+
const visibleSelectedItems = visibleItems.filter(item => (this.value || []).includes(item.getAttribute('value') || ''));
|
|
1086
|
+
this.manageDivider(ul, visibleSelectedItems, visibleItems.filter(item => !(this.value || []).includes(item.getAttribute('value') || '')));
|
|
979
1087
|
// Add empty message if no items match the filter
|
|
980
1088
|
if (!hasVisibleItems) {
|
|
981
1089
|
const emptyMessage = document.createElement('li');
|
|
@@ -1016,86 +1124,6 @@ export class NvFieldmultiselect {
|
|
|
1016
1124
|
}
|
|
1017
1125
|
this.open = false;
|
|
1018
1126
|
}
|
|
1019
|
-
/**
|
|
1020
|
-
* Handle keyboard events & arrow key navigation.
|
|
1021
|
-
* If the multiselect is not open, opens it and focuses on the first item if the list is not filterable.
|
|
1022
|
-
* If the multiselect is open, handles arrow key navigation and closes it if the focus is outside the component.
|
|
1023
|
-
* @param {KeyboardEvent} event - The keyboard event.
|
|
1024
|
-
*/
|
|
1025
|
-
async handleKeyDown(event) {
|
|
1026
|
-
if (!this.open) {
|
|
1027
|
-
if (event.key === 'ArrowDown') {
|
|
1028
|
-
this.open = true;
|
|
1029
|
-
// Focus on the first item if the list is not filterable
|
|
1030
|
-
if (!this.filterable) {
|
|
1031
|
-
requestAnimationFrame(() => {
|
|
1032
|
-
this.focusFirstItem();
|
|
1033
|
-
});
|
|
1034
|
-
}
|
|
1035
|
-
event.preventDefault();
|
|
1036
|
-
return;
|
|
1037
|
-
}
|
|
1038
|
-
return;
|
|
1039
|
-
}
|
|
1040
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck:not([style*="display: none"])'));
|
|
1041
|
-
if (items.length === 0) {
|
|
1042
|
-
console.warn('No visible items found to navigate');
|
|
1043
|
-
return;
|
|
1044
|
-
}
|
|
1045
|
-
let currentIndex = items.findIndex(item => item.classList.contains('highlighted'));
|
|
1046
|
-
if (event.key === 'ArrowDown') {
|
|
1047
|
-
event.preventDefault();
|
|
1048
|
-
currentIndex =
|
|
1049
|
-
currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;
|
|
1050
|
-
this.updateHighlightedItem(items, currentIndex);
|
|
1051
|
-
}
|
|
1052
|
-
else if (event.key === 'ArrowUp') {
|
|
1053
|
-
event.preventDefault();
|
|
1054
|
-
currentIndex =
|
|
1055
|
-
currentIndex === -1
|
|
1056
|
-
? items.length - 1
|
|
1057
|
-
: (currentIndex - 1 + items.length) % items.length;
|
|
1058
|
-
this.updateHighlightedItem(items, currentIndex);
|
|
1059
|
-
}
|
|
1060
|
-
else if (event.key === 'Enter' && currentIndex >= 0) {
|
|
1061
|
-
event.preventDefault();
|
|
1062
|
-
const selectedItem = items[currentIndex];
|
|
1063
|
-
// Toggle the checked state
|
|
1064
|
-
const isCurrentlyChecked = selectedItem.hasAttribute('checked');
|
|
1065
|
-
selectedItem.checked = !isCurrentlyChecked;
|
|
1066
|
-
// Trigger a click event to ensure proper event handling
|
|
1067
|
-
selectedItem.dispatchEvent(new MouseEvent('click', {
|
|
1068
|
-
view: window,
|
|
1069
|
-
bubbles: true,
|
|
1070
|
-
cancelable: true,
|
|
1071
|
-
}));
|
|
1072
|
-
}
|
|
1073
|
-
else if (event.key === 'Escape') {
|
|
1074
|
-
event.preventDefault();
|
|
1075
|
-
event.stopPropagation(); // Prevent the event from propagating to the popover
|
|
1076
|
-
// Do the reorder and wait a bit before closing
|
|
1077
|
-
const handleEscape = async () => {
|
|
1078
|
-
this.isHandlingEscape = true; // Disable the hide listener
|
|
1079
|
-
if (this.options) {
|
|
1080
|
-
this.reorderOptionsContent();
|
|
1081
|
-
}
|
|
1082
|
-
else {
|
|
1083
|
-
this.reorderSlotContent();
|
|
1084
|
-
}
|
|
1085
|
-
// Wait for the reorder to be applied
|
|
1086
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
1087
|
-
// Reactivate the hide listener after a short delay
|
|
1088
|
-
setTimeout(() => {
|
|
1089
|
-
this.isHandlingEscape = false;
|
|
1090
|
-
this.open = false;
|
|
1091
|
-
}, 150);
|
|
1092
|
-
if (this.inputElement) {
|
|
1093
|
-
this.inputElement.blur();
|
|
1094
|
-
}
|
|
1095
|
-
};
|
|
1096
|
-
await handleEscape();
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
1127
|
/**
|
|
1100
1128
|
* Updates the highlighted item in the dropdown list.
|
|
1101
1129
|
*
|
|
@@ -1185,7 +1213,7 @@ export class NvFieldmultiselect {
|
|
|
1185
1213
|
items.forEach(item => {
|
|
1186
1214
|
// Get the effective value: use explicit value if present, otherwise use label
|
|
1187
1215
|
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
1188
|
-
const shouldBeChecked = this.value.includes(itemValue);
|
|
1216
|
+
const shouldBeChecked = (this.value || []).includes(itemValue);
|
|
1189
1217
|
// Only update if the checked state differs to avoid triggering unnecessary events
|
|
1190
1218
|
if (item.checked !== shouldBeChecked) {
|
|
1191
1219
|
// Set attribute and property, but avoid triggering itemChecked during bulk
|
|
@@ -1225,8 +1253,10 @@ export class NvFieldmultiselect {
|
|
|
1225
1253
|
getVisibleEnabledOptionItems() {
|
|
1226
1254
|
const allItems = Array.from(this.el.querySelectorAll('nv-fielddropdownitemcheck'));
|
|
1227
1255
|
const visibleItems = allItems.filter(item => {
|
|
1228
|
-
const isHidden = item.style.display === 'none'
|
|
1229
|
-
|
|
1256
|
+
const isHidden = item.style.display === 'none' ||
|
|
1257
|
+
item.getAttribute('aria-hidden') === 'true';
|
|
1258
|
+
const isDisabled = item.hasAttribute('disabled') ||
|
|
1259
|
+
item.getAttribute('disabled') === 'true';
|
|
1230
1260
|
return !isHidden && !isDisabled;
|
|
1231
1261
|
});
|
|
1232
1262
|
return visibleItems
|
|
@@ -1253,7 +1283,7 @@ export class NvFieldmultiselect {
|
|
|
1253
1283
|
const visibleOptionValues = this.getVisibleEnabledOptionItems();
|
|
1254
1284
|
if (visibleOptionValues.length === 0)
|
|
1255
1285
|
return 'unchecked';
|
|
1256
|
-
const selectedVisibleOptions = visibleOptionValues.filter(value => this.value.includes(value));
|
|
1286
|
+
const selectedVisibleOptions = visibleOptionValues.filter(value => (this.value || []).includes(value));
|
|
1257
1287
|
if (selectedVisibleOptions.length === 0)
|
|
1258
1288
|
return 'unchecked';
|
|
1259
1289
|
if (selectedVisibleOptions.length === visibleOptionValues.length)
|
|
@@ -1273,7 +1303,7 @@ export class NvFieldmultiselect {
|
|
|
1273
1303
|
return 'unchecked';
|
|
1274
1304
|
const selectedItems = items.filter(item => {
|
|
1275
1305
|
const itemValue = item.getAttribute('value') || item.getAttribute('label') || '';
|
|
1276
|
-
return itemValue !== '' && this.value.includes(itemValue);
|
|
1306
|
+
return itemValue !== '' && (this.value || []).includes(itemValue);
|
|
1277
1307
|
});
|
|
1278
1308
|
if (selectedItems.length === 0)
|
|
1279
1309
|
return 'unchecked';
|
|
@@ -2021,6 +2051,9 @@ export class NvFieldmultiselect {
|
|
|
2021
2051
|
}, {
|
|
2022
2052
|
"propName": "value",
|
|
2023
2053
|
"methodName": "watchValueHandler"
|
|
2054
|
+
}, {
|
|
2055
|
+
"propName": "open",
|
|
2056
|
+
"methodName": "handleOpenChange"
|
|
2024
2057
|
}];
|
|
2025
2058
|
}
|
|
2026
2059
|
static get listeners() {
|