@nova-design-system/nova-webcomponents 3.18.0 → 3.19.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.cjs.js +13 -0
- 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-badge_2.cjs.entry.js +1 -1
- package/dist/cjs/nv-fielddate.cjs.entry.js +10 -6
- package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +11 -7
- package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +193 -209
- package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +7 -4
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +4 -0
- 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 +3 -3
- 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 +4 -3
- 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-menu.cjs.entry.js +2 -2
- 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 +1 -1
- package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
- package/dist/cjs/nv-popover.cjs.entry.js +2 -2
- 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-split.cjs.entry.js +1 -1
- package/dist/cjs/nv-stack.cjs.entry.js +1 -1
- package/dist/cjs/nv-table.cjs.entry.js +1 -1
- package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
- package/dist/cjs/nv-togglebutton.cjs.entry.js +1 -1
- package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +1 -1
- package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +10 -6
- package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +10 -6
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +2 -0
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +31 -13
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +310 -245
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +29 -6
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +4 -0
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
- 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.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 +4 -3
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
- package/dist/collection/components/nv-icon/nv-icon.js +1 -1
- package/dist/collection/components/nv-icon/nv-icons.js +13 -0
- package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
- 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 +3 -3
- package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
- package/dist/collection/components/nv-notification/nv-notification.js +1 -1
- package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js +1 -1
- package/dist/collection/components/nv-popover/nv-popover.js +2 -2
- package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
- package/dist/collection/components/nv-row/nv-row.js +1 -1
- package/dist/collection/components/nv-split/nv-split.js +1 -1
- package/dist/collection/components/nv-stack/nv-stack.js +1 -1
- package/dist/collection/components/nv-table/nv-table.js +1 -1
- 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.js +1 -1
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
- package/dist/components/index.js +13 -0
- 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 +1 -1
- package/dist/components/nv-avatar.js +1 -1
- package/dist/components/nv-badge.js +1 -1
- package/dist/components/nv-breadcrumb.js +2 -2
- package/dist/components/nv-button.js +1 -1
- package/dist/components/nv-datagrid.js +2 -2
- package/dist/components/nv-dialog.js +4 -4
- package/dist/components/nv-dialogfooter.js +1 -1
- package/dist/components/nv-fielddate.js +14 -10
- package/dist/components/nv-fielddate.js.map +1 -1
- package/dist/components/nv-fielddaterange.js +15 -11
- package/dist/components/nv-fielddaterange.js.map +1 -1
- package/dist/components/nv-fielddropdown.js +207 -220
- 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 +10 -6
- 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 +3 -3
- 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 +8 -7
- 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 +5 -5
- package/dist/components/nv-menu.js.map +1 -1
- package/dist/components/nv-menuitem.js +1 -1
- package/dist/components/nv-notification.js +2 -2
- 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-split.js +1 -1
- package/dist/components/nv-stack.js +1 -1
- package/dist/components/nv-table.js +1 -1
- package/dist/components/nv-toggle.js +2 -2
- package/dist/components/nv-togglebutton.js +1 -1
- package/dist/components/nv-togglebuttongroup.js +1 -1
- package/dist/components/nv-tooltip.js +1 -1
- package/dist/components/{p-015330b8.js → p-18f50d91.js} +2 -2
- package/dist/components/{p-015330b8.js.map → p-18f50d91.js.map} +1 -1
- package/dist/components/{p-c981bb48.js → p-222136c2.js} +2 -2
- package/dist/components/{p-c981bb48.js.map → p-222136c2.js.map} +1 -1
- package/dist/components/{p-fca4d85b.js → p-2ac6f42d.js} +3 -3
- package/dist/components/{p-fca4d85b.js.map → p-2ac6f42d.js.map} +1 -1
- package/dist/components/{p-fabbaf47.js → p-334e19d3.js} +4 -4
- package/dist/components/{p-fabbaf47.js.map → p-334e19d3.js.map} +1 -1
- package/dist/components/{p-5e315239.js → p-45a3cf85.js} +11 -7
- package/dist/components/p-45a3cf85.js.map +1 -0
- package/dist/components/{p-ebfecbaa.js → p-4799b6c3.js} +3 -3
- package/dist/components/p-4799b6c3.js.map +1 -0
- package/dist/components/{p-4cd6f629.js → p-49205084.js} +5 -5
- package/dist/components/{p-4cd6f629.js.map → p-49205084.js.map} +1 -1
- package/dist/components/{p-6ca3d847.js → p-5a5db065.js} +4 -4
- package/dist/components/{p-6ca3d847.js.map → p-5a5db065.js.map} +1 -1
- package/dist/components/{p-1bd396b1.js → p-60083982.js} +4 -4
- package/dist/components/{p-1bd396b1.js.map → p-60083982.js.map} +1 -1
- package/dist/components/{p-ea45f1ab.js → p-81d915ef.js} +3 -3
- package/dist/components/{p-ea45f1ab.js.map → p-81d915ef.js.map} +1 -1
- package/dist/components/p-946a047c.js +88 -0
- package/dist/components/p-946a047c.js.map +1 -0
- package/dist/components/{p-715e5235.js → p-a6c29711.js} +2 -2
- package/dist/components/{p-715e5235.js.map → p-a6c29711.js.map} +1 -1
- package/dist/components/{p-d1b02966.js → p-e0eb748c.js} +7 -7
- package/dist/components/{p-d1b02966.js.map → p-e0eb748c.js.map} +1 -1
- package/dist/components/{p-2574f8c2.js → p-e1b2eba2.js} +2 -2
- package/dist/components/{p-2574f8c2.js.map → p-e1b2eba2.js.map} +1 -1
- package/dist/esm/index.js +13 -0
- 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-badge_2.entry.js +1 -1
- package/dist/esm/nv-fielddate.entry.js +10 -6
- package/dist/esm/nv-fielddate.entry.js.map +1 -1
- package/dist/esm/nv-fielddaterange.entry.js +11 -7
- package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdown.entry.js +193 -209
- package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdownitem.entry.js +7 -4
- package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
- package/dist/esm/nv-fieldmultiselect.entry.js +4 -0
- 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 +3 -3
- 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 +4 -3
- 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-menu.entry.js +2 -2
- 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 +1 -1
- package/dist/esm/nv-notificationcontainer.entry.js +1 -1
- package/dist/esm/nv-popover.entry.js +2 -2
- package/dist/esm/nv-popover.entry.js.map +1 -1
- package/dist/esm/nv-row.entry.js +1 -1
- package/dist/esm/nv-split.entry.js +1 -1
- package/dist/esm/nv-stack.entry.js +1 -1
- package/dist/esm/nv-table.entry.js +1 -1
- package/dist/esm/nv-toggle.entry.js +2 -2
- package/dist/esm/nv-togglebutton.entry.js +1 -1
- package/dist/esm/nv-togglebuttongroup.entry.js +1 -1
- 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.esm.js +1 -1
- package/dist/native/native.esm.js.map +1 -1
- package/dist/native/{p-acada158.entry.js → p-0177409b.entry.js} +2 -2
- package/dist/native/{p-14d2f70a.entry.js → p-075d231e.entry.js} +2 -2
- package/dist/native/{p-d878e90a.entry.js → p-144d0f8a.entry.js} +2 -2
- package/dist/native/p-144d0f8a.entry.js.map +1 -0
- package/dist/native/{p-b4c15f25.entry.js → p-17666092.entry.js} +2 -2
- package/dist/native/{p-107e80c6.entry.js → p-218135b1.entry.js} +2 -2
- package/dist/native/p-218135b1.entry.js.map +1 -0
- package/dist/native/p-2a7f80f4.entry.js +2 -0
- package/dist/native/p-2a7f80f4.entry.js.map +1 -0
- package/dist/native/{p-e5b7ce4e.entry.js → p-445221dc.entry.js} +2 -2
- package/dist/native/{p-4e6fb719.entry.js → p-44a78545.entry.js} +2 -2
- package/dist/native/p-57420a2f.entry.js +2 -0
- package/dist/native/{p-5c678bc7.entry.js → p-587d94f3.entry.js} +2 -2
- package/dist/native/{p-95184ea2.entry.js → p-6a418ec4.entry.js} +2 -2
- package/dist/native/{p-5039ceb8.entry.js → p-859bf9ad.entry.js} +2 -2
- package/dist/native/{p-5039ceb8.entry.js.map → p-859bf9ad.entry.js.map} +1 -1
- package/dist/native/{p-ae43eee2.entry.js → p-9950e075.entry.js} +2 -2
- package/dist/native/{p-ad029453.entry.js → p-9c432751.entry.js} +2 -2
- package/dist/native/{p-8c053954.entry.js → p-a026654f.entry.js} +2 -2
- package/dist/native/p-a026654f.entry.js.map +1 -0
- package/dist/native/{p-417fba7d.entry.js → p-a2f58133.entry.js} +2 -2
- package/dist/native/{p-3464b86a.entry.js → p-b02c896a.entry.js} +2 -2
- package/dist/native/{p-9613087c.entry.js → p-b4382c94.entry.js} +2 -2
- package/dist/native/{p-835abdb9.entry.js → p-b626ef47.entry.js} +2 -2
- package/dist/native/{p-23ee0384.entry.js → p-c0de4bb0.entry.js} +2 -2
- package/dist/native/{p-5f98d4cd.entry.js → p-c9fea0df.entry.js} +2 -2
- package/dist/native/{p-5f98d4cd.entry.js.map → p-c9fea0df.entry.js.map} +1 -1
- package/dist/native/{p-ca39f78d.entry.js → p-d62869ff.entry.js} +2 -2
- package/dist/native/p-d63689da.entry.js +2 -0
- package/dist/native/p-d63689da.entry.js.map +1 -0
- package/dist/native/p-d8f3cf92.entry.js +2 -0
- package/dist/native/p-d8f3cf92.entry.js.map +1 -0
- package/dist/native/{p-539666dd.entry.js → p-dfb6b65e.entry.js} +2 -2
- package/dist/native/{p-230af58a.entry.js → p-e6f24210.entry.js} +2 -2
- package/dist/native/p-e6f24210.entry.js.map +1 -0
- package/dist/native/{p-da2060a5.entry.js → p-eb74feb7.entry.js} +2 -2
- package/dist/native/{p-6d427897.entry.js → p-fa3e588e.entry.js} +2 -2
- package/dist/native/{p-112d096c.entry.js → p-fffbd3c1.entry.js} +2 -2
- package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +54 -35
- package/dist/types/components/nv-fielddropdownitem/nv-fielddropdownitem.d.ts +7 -0
- package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
- package/dist/types/components.d.ts +59 -13
- package/dist/vscode-data.json +50 -3
- package/hydrate/index.js +283 -279
- package/hydrate/index.mjs +283 -279
- package/package.json +1 -1
- package/dist/components/p-5e315239.js.map +0 -1
- package/dist/components/p-ebfecbaa.js.map +0 -1
- package/dist/components/p-ed43bcec.js +0 -88
- package/dist/components/p-ed43bcec.js.map +0 -1
- package/dist/native/p-00d1e5e1.entry.js +0 -2
- package/dist/native/p-00d1e5e1.entry.js.map +0 -1
- package/dist/native/p-107e80c6.entry.js.map +0 -1
- package/dist/native/p-230af58a.entry.js.map +0 -1
- package/dist/native/p-5e70f9ce.entry.js +0 -2
- package/dist/native/p-8c053954.entry.js.map +0 -1
- package/dist/native/p-b72b5e88.entry.js +0 -2
- package/dist/native/p-b72b5e88.entry.js.map +0 -1
- package/dist/native/p-d7f444fb.entry.js +0 -2
- package/dist/native/p-d7f444fb.entry.js.map +0 -1
- package/dist/native/p-d878e90a.entry.js.map +0 -1
- /package/dist/native/{p-acada158.entry.js.map → p-0177409b.entry.js.map} +0 -0
- /package/dist/native/{p-14d2f70a.entry.js.map → p-075d231e.entry.js.map} +0 -0
- /package/dist/native/{p-b4c15f25.entry.js.map → p-17666092.entry.js.map} +0 -0
- /package/dist/native/{p-e5b7ce4e.entry.js.map → p-445221dc.entry.js.map} +0 -0
- /package/dist/native/{p-4e6fb719.entry.js.map → p-44a78545.entry.js.map} +0 -0
- /package/dist/native/{p-5e70f9ce.entry.js.map → p-57420a2f.entry.js.map} +0 -0
- /package/dist/native/{p-5c678bc7.entry.js.map → p-587d94f3.entry.js.map} +0 -0
- /package/dist/native/{p-95184ea2.entry.js.map → p-6a418ec4.entry.js.map} +0 -0
- /package/dist/native/{p-ae43eee2.entry.js.map → p-9950e075.entry.js.map} +0 -0
- /package/dist/native/{p-ad029453.entry.js.map → p-9c432751.entry.js.map} +0 -0
- /package/dist/native/{p-417fba7d.entry.js.map → p-a2f58133.entry.js.map} +0 -0
- /package/dist/native/{p-3464b86a.entry.js.map → p-b02c896a.entry.js.map} +0 -0
- /package/dist/native/{p-9613087c.entry.js.map → p-b4382c94.entry.js.map} +0 -0
- /package/dist/native/{p-835abdb9.entry.js.map → p-b626ef47.entry.js.map} +0 -0
- /package/dist/native/{p-23ee0384.entry.js.map → p-c0de4bb0.entry.js.map} +0 -0
- /package/dist/native/{p-ca39f78d.entry.js.map → p-d62869ff.entry.js.map} +0 -0
- /package/dist/native/{p-539666dd.entry.js.map → p-dfb6b65e.entry.js.map} +0 -0
- /package/dist/native/{p-da2060a5.entry.js.map → p-eb74feb7.entry.js.map} +0 -0
- /package/dist/native/{p-6d427897.entry.js.map → p-fa3e588e.entry.js.map} +0 -0
- /package/dist/native/{p-112d096c.entry.js.map → p-fffbd3c1.entry.js.map} +0 -0
|
@@ -54,10 +54,6 @@ export class NvFielddropdown {
|
|
|
54
54
|
* Defines the maximum height of the multiselect list when open.
|
|
55
55
|
*/
|
|
56
56
|
this.maxHeight = '';
|
|
57
|
-
/**
|
|
58
|
-
* State of the dropdown popover.
|
|
59
|
-
*/
|
|
60
|
-
this.open = false;
|
|
61
57
|
/**
|
|
62
58
|
* The text to display when no items match the filter.
|
|
63
59
|
*/
|
|
@@ -67,7 +63,21 @@ export class NvFielddropdown {
|
|
|
67
63
|
*/
|
|
68
64
|
this.filterable = false;
|
|
69
65
|
/**
|
|
70
|
-
*
|
|
66
|
+
* When an item is selected by the user, the dropdown will continue to stay
|
|
67
|
+
* open.
|
|
68
|
+
*/
|
|
69
|
+
this.openOnSelect = false;
|
|
70
|
+
/**
|
|
71
|
+
* Determines if the component’s filtering behavior is managed externally.
|
|
72
|
+
* When set to true and filterable is enabled, the component won’t
|
|
73
|
+
* automatically filter items. Instead, you must implement your own filtering
|
|
74
|
+
* logic (e.g., server-side search or custom matching) using the
|
|
75
|
+
* filterTextChanged event.
|
|
76
|
+
*/
|
|
77
|
+
this.controlledFilter = false;
|
|
78
|
+
/**
|
|
79
|
+
* Delay in milliseconds before the search is triggered when typing in the
|
|
80
|
+
* filter input.
|
|
71
81
|
* @default 300
|
|
72
82
|
*/
|
|
73
83
|
this.debounceDelay = 300;
|
|
@@ -89,132 +99,75 @@ export class NvFielddropdown {
|
|
|
89
99
|
*/
|
|
90
100
|
this.filterText = '';
|
|
91
101
|
this.selectedValues = new Set();
|
|
92
|
-
this.
|
|
93
|
-
|
|
102
|
+
this.open = false;
|
|
103
|
+
/**
|
|
104
|
+
* Closes the popover when a click is detected outside the component.
|
|
105
|
+
* @param {MouseEvent} event - The click event.
|
|
106
|
+
*/
|
|
107
|
+
this.handleClickOutside = (event) => {
|
|
108
|
+
var _a;
|
|
109
|
+
if (!(event.target instanceof Node))
|
|
94
110
|
return;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (target.tagName === 'P' || target.tagName === 'SPAN') {
|
|
98
|
-
this.open = true;
|
|
99
|
-
// Simulate focus to trigger "focus-within" style
|
|
100
|
-
const inputContainer = this.el.querySelector('.input-container');
|
|
101
|
-
if (inputContainer) {
|
|
102
|
-
inputContainer.classList.add('focus-within');
|
|
103
|
-
// Remove the "focus-within" class after a delay or when the popover is closed
|
|
104
|
-
const removeFocusWithin = () => {
|
|
105
|
-
inputContainer.classList.remove('focus-within');
|
|
106
|
-
};
|
|
107
|
-
// Or remove the class when the popover is closed
|
|
108
|
-
this.popoverElement.addEventListener('hide', removeFocusWithin);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
+
if (!((_a = this.el) === null || _a === void 0 ? void 0 : _a.contains(event.target)))
|
|
112
|
+
this.open = false;
|
|
111
113
|
};
|
|
112
|
-
this.
|
|
113
|
-
if (!this.filterable)
|
|
114
|
-
return;
|
|
115
|
-
if (this.disabled || this.readonly) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const input = event.target;
|
|
114
|
+
this.handleFilterInput = () => {
|
|
119
115
|
this.open = true;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
// Set a new timer for filtering
|
|
116
|
+
this.filterText = this.inputElement.value;
|
|
117
|
+
this.filterTextChanged.emit(this.inputElement.value);
|
|
118
|
+
clearTimeout(this.debounceTimer);
|
|
125
119
|
this.debounceTimer = window.setTimeout(() => {
|
|
126
|
-
this.filterText = input.value.toLowerCase();
|
|
127
120
|
this.filterItems();
|
|
128
121
|
}, this.debounceDelay);
|
|
129
122
|
};
|
|
130
|
-
this.handleInputFocus = () => {
|
|
131
|
-
if (this.disabled || this.readonly)
|
|
132
|
-
return;
|
|
133
|
-
this.open = true;
|
|
134
|
-
};
|
|
135
|
-
this.togglePopover = () => {
|
|
136
|
-
if (this.disabled || this.readonly)
|
|
137
|
-
return;
|
|
138
|
-
this.open = !this.open;
|
|
139
|
-
};
|
|
140
123
|
this.getSelectedLabel = () => {
|
|
141
|
-
var _a, _b, _c, _d, _e, _f;
|
|
124
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
142
125
|
if (!this.value)
|
|
143
126
|
return '';
|
|
144
|
-
if ((
|
|
127
|
+
if ((_a = this.filterText) === null || _a === void 0 ? void 0 : _a.length)
|
|
128
|
+
return this.filterText;
|
|
129
|
+
if (((_b = this.options) === null || _b === void 0 ? void 0 : _b.length) > 1) {
|
|
145
130
|
const matchingItem = this.options.find(option => option.value === this.value);
|
|
146
|
-
return (
|
|
131
|
+
return (_d = (_c = matchingItem === null || matchingItem === void 0 ? void 0 : matchingItem.label) !== null && _c !== void 0 ? _c : matchingItem === null || matchingItem === void 0 ? void 0 : matchingItem.value) !== null && _d !== void 0 ? _d : this.value;
|
|
147
132
|
}
|
|
148
133
|
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
|
|
149
134
|
const matchingItem = items.find(item => item.value === this.value);
|
|
150
135
|
const selectedLabel = matchingItem
|
|
151
|
-
? (
|
|
136
|
+
? (_g = (_e = matchingItem.label) !== null && _e !== void 0 ? _e : (_f = matchingItem.textContent) === null || _f === void 0 ? void 0 : _f.trim()) !== null && _g !== void 0 ? _g : matchingItem.value
|
|
152
137
|
: '';
|
|
153
138
|
return selectedLabel;
|
|
154
139
|
};
|
|
155
|
-
this.clearFilter = () => {
|
|
156
|
-
if (!this.filterable)
|
|
157
|
-
return;
|
|
158
|
-
this.filterText = '';
|
|
159
|
-
this.inputElement.value = this.getSelectedLabel();
|
|
160
|
-
this.inputElement.focus();
|
|
161
|
-
this.filterItems();
|
|
162
|
-
};
|
|
163
|
-
this.handleBlurInput = (event) => {
|
|
164
|
-
var _a;
|
|
165
|
-
const relatedTarget = event.relatedTarget;
|
|
166
|
-
if (!this.el.contains(relatedTarget) &&
|
|
167
|
-
!((_a = this.popoverElement) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget))) {
|
|
168
|
-
this.open = false;
|
|
169
|
-
if (this.filterable) {
|
|
170
|
-
this.clearFilter(); // Resets input to selected label, clears filterText
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
140
|
}
|
|
175
141
|
//#endregion EVENTS
|
|
176
142
|
/****************************************************************************/
|
|
177
143
|
//#region WATCHERS
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
this.value = (_a = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.value) !== null && _a !== void 0 ? _a : '';
|
|
185
|
-
this.updateSelectedItem(this.value);
|
|
144
|
+
handleOpenChange(newOpen) {
|
|
145
|
+
if (newOpen === false) {
|
|
146
|
+
clearTimeout(this.debounceTimer);
|
|
147
|
+
setTimeout(() => {
|
|
148
|
+
this.clearFilter();
|
|
149
|
+
}, 100);
|
|
186
150
|
}
|
|
187
151
|
}
|
|
188
|
-
|
|
189
|
-
this.
|
|
152
|
+
handleValueChange() {
|
|
153
|
+
this.updateSelectedItem();
|
|
154
|
+
if (!this.open || !this.filterText)
|
|
155
|
+
this.setFilterInputToSelectedValue();
|
|
190
156
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
if (newOpen && this.filterable) {
|
|
194
|
-
this.filterItems(); // Ensure items are filtered if filterText exists
|
|
195
|
-
}
|
|
196
|
-
else if (!newOpen) {
|
|
197
|
-
this.clearFilter(); // Clear on external close
|
|
198
|
-
}
|
|
157
|
+
handleOptionsChange() {
|
|
158
|
+
this.updateSelectedItem();
|
|
199
159
|
}
|
|
200
160
|
//#endregion WATCHERS
|
|
201
161
|
/****************************************************************************/
|
|
202
162
|
//#region LISTENERS
|
|
203
|
-
handleOpenChanged(event) {
|
|
204
|
-
// Stop propagation to prevent the event from affecting parent components like dialogs
|
|
205
|
-
event.stopPropagation();
|
|
206
|
-
// Update `open` based on the popover state
|
|
207
|
-
if (event.target === this.popoverElement) {
|
|
208
|
-
this.open = event.detail;
|
|
209
|
-
}
|
|
210
|
-
if (!event.detail && this.filterable) {
|
|
211
|
-
this.clearFilter();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
163
|
handleDropdownItemSelected(event) {
|
|
215
164
|
if (this.disabled || this.readonly)
|
|
216
165
|
return;
|
|
217
|
-
|
|
166
|
+
if (!this.openOnSelect)
|
|
167
|
+
this.open = false;
|
|
168
|
+
if (event.detail.detached)
|
|
169
|
+
return;
|
|
170
|
+
const items = this.getAllItems();
|
|
218
171
|
items.forEach(item => {
|
|
219
172
|
if (item !== event.target) {
|
|
220
173
|
item.removeAttribute('selected');
|
|
@@ -223,102 +176,147 @@ export class NvFielddropdown {
|
|
|
223
176
|
item.setAttribute('selected', 'true');
|
|
224
177
|
}
|
|
225
178
|
});
|
|
226
|
-
this.clearFilter();
|
|
227
179
|
this.value = event.detail.value;
|
|
228
|
-
this.
|
|
180
|
+
this.setFilterInputToSelectedValue();
|
|
181
|
+
this.valueChanged.emit(event.detail.value);
|
|
229
182
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
if (this.inputElement) {
|
|
235
|
-
this.filterText = '';
|
|
236
|
-
this.inputElement.value = this.getSelectedLabel();
|
|
237
|
-
setTimeout(() => {
|
|
238
|
-
this.filterItems();
|
|
239
|
-
}, 200);
|
|
240
|
-
}
|
|
183
|
+
handleFocus(event) {
|
|
184
|
+
if (event.relatedTarget instanceof HTMLElement &&
|
|
185
|
+
event.relatedTarget.tagName.includes('NV-FIELDDROPDOWNITEM')) {
|
|
186
|
+
return;
|
|
241
187
|
}
|
|
188
|
+
if (event.target != this.toggleElement)
|
|
189
|
+
this.open = true;
|
|
190
|
+
}
|
|
191
|
+
handleFocusOut(event) {
|
|
192
|
+
if (!(event.relatedTarget instanceof Node))
|
|
193
|
+
return;
|
|
194
|
+
if (this.el.contains(event.relatedTarget))
|
|
195
|
+
return;
|
|
196
|
+
this.open = false;
|
|
242
197
|
}
|
|
243
198
|
handleKeyDown(event) {
|
|
244
|
-
if (
|
|
199
|
+
if (event.key === 'Escape') {
|
|
200
|
+
this.focusField();
|
|
201
|
+
this.open = false;
|
|
245
202
|
return;
|
|
246
|
-
|
|
247
|
-
|
|
203
|
+
}
|
|
204
|
+
if (event.key === ' ') {
|
|
205
|
+
if (event.target == this.selectElement) {
|
|
206
|
+
event.preventDefault(); // Prevent scrolling down
|
|
248
207
|
this.open = true;
|
|
249
|
-
event.preventDefault();
|
|
250
|
-
return;
|
|
251
208
|
}
|
|
252
209
|
return;
|
|
253
210
|
}
|
|
254
|
-
const items =
|
|
255
|
-
|
|
211
|
+
const items = this.getNavigableItems();
|
|
212
|
+
const highlightedItem = this.getHighlightedItemIndex(items);
|
|
256
213
|
if (event.key === 'ArrowDown') {
|
|
257
|
-
event.preventDefault();
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
else if (event.key === 'ArrowUp') {
|
|
262
|
-
event.preventDefault();
|
|
263
|
-
currentIndex = (currentIndex - 1 + items.length) % items.length;
|
|
264
|
-
this.updateHighlightedItem(items, currentIndex);
|
|
214
|
+
event.preventDefault(); // Prevent scrolling down
|
|
215
|
+
this.open = true;
|
|
216
|
+
const nextIndex = highlightedItem + 1;
|
|
217
|
+
this.updateHighlightedItem(items, nextIndex >= items.length ? 0 : nextIndex);
|
|
265
218
|
}
|
|
266
|
-
|
|
267
|
-
event.preventDefault();
|
|
268
|
-
this.open =
|
|
219
|
+
if (event.key === 'ArrowUp') {
|
|
220
|
+
event.preventDefault(); // Prevent scrolling up
|
|
221
|
+
this.open = true;
|
|
222
|
+
const nextIndex = highlightedItem - 1;
|
|
223
|
+
this.updateHighlightedItem(items, nextIndex < 0 ? items.length - 1 : nextIndex);
|
|
269
224
|
}
|
|
270
225
|
}
|
|
226
|
+
handleDocumentClick(event) {
|
|
227
|
+
this.handleClickOutside(event);
|
|
228
|
+
}
|
|
271
229
|
//#endregion LISTENERS
|
|
272
230
|
/****************************************************************************/
|
|
273
|
-
//#region
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
if (this.
|
|
280
|
-
this.
|
|
231
|
+
//#region METHODS
|
|
232
|
+
/** Clears the filter text */
|
|
233
|
+
async clearFilter() {
|
|
234
|
+
var _a;
|
|
235
|
+
if (!this.filterable)
|
|
236
|
+
return;
|
|
237
|
+
if ((_a = this.filterText) === null || _a === void 0 ? void 0 : _a.length) {
|
|
238
|
+
this.filterText = '';
|
|
239
|
+
this.filterTextChanged.emit(this.filterText);
|
|
281
240
|
}
|
|
241
|
+
this.filterItems();
|
|
242
|
+
// Wait for wrapper lifecycle to finish
|
|
243
|
+
setTimeout(() => {
|
|
244
|
+
this.setFilterInputToSelectedValue();
|
|
245
|
+
}, 0);
|
|
282
246
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
247
|
+
/**
|
|
248
|
+
* Toggles the dropdown popover open state
|
|
249
|
+
* @param {boolean} open - The open state to set, if null, toggles the state
|
|
250
|
+
*/
|
|
251
|
+
async toggleDropdown(open) {
|
|
252
|
+
if (open !== undefined) {
|
|
253
|
+
setTimeout(() => {
|
|
254
|
+
this.open = open;
|
|
255
|
+
}, 0);
|
|
286
256
|
}
|
|
287
|
-
|
|
288
|
-
|
|
257
|
+
else {
|
|
258
|
+
setTimeout(() => {
|
|
259
|
+
this.open = !this.open;
|
|
260
|
+
}, 0);
|
|
289
261
|
}
|
|
290
262
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
263
|
+
syncToggleDropdown() {
|
|
264
|
+
this.open = !this.open;
|
|
265
|
+
}
|
|
266
|
+
setFilterInputToSelectedValue() {
|
|
267
|
+
if (!this.filterable)
|
|
268
|
+
return;
|
|
269
|
+
if (!this.value)
|
|
270
|
+
return (this.inputElement.value = '');
|
|
271
|
+
this.inputElement.value = this.getSelectedLabel();
|
|
272
|
+
}
|
|
273
|
+
// Will exclude detached items and data-empty
|
|
274
|
+
getFilterableItems() {
|
|
275
|
+
return Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([data-empty]):not([detached])'));
|
|
276
|
+
}
|
|
277
|
+
getNavigableItems() {
|
|
278
|
+
return Array.from(this.el.querySelectorAll('nv-fielddropdownitem:not([disabled]):not([hidden])'));
|
|
279
|
+
}
|
|
280
|
+
getAllItems() {
|
|
281
|
+
return Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
|
|
282
|
+
}
|
|
283
|
+
getHighlightedItemIndex(items) {
|
|
284
|
+
return items.findIndex(item => item.classList.contains('highlighted'));
|
|
285
|
+
}
|
|
286
|
+
updateHighlightedItem(items, index) {
|
|
287
|
+
items.forEach((item, i) => {
|
|
288
|
+
item.classList.remove('highlighted');
|
|
289
|
+
if (i === index) {
|
|
290
|
+
item.classList.add('highlighted');
|
|
291
|
+
item.focus();
|
|
292
|
+
item.scrollIntoView({ block: 'nearest' });
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
focusField() {
|
|
297
|
+
const focusableItem = this.el.querySelector('[data-scope="focusable"]');
|
|
298
|
+
focusableItem === null || focusableItem === void 0 ? void 0 : focusableItem.focus();
|
|
300
299
|
}
|
|
301
300
|
/**
|
|
302
301
|
* Filter dropdown items based on the text entered by the user.
|
|
303
302
|
* If no items are found, display a message indicating no results.
|
|
304
303
|
*/
|
|
305
304
|
filterItems() {
|
|
306
|
-
var _a;
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
const existingEmptyItem = this.el.querySelector('nv-fielddropdownitem[data-empty]');
|
|
310
|
-
if (existingEmptyItem) {
|
|
311
|
-
existingEmptyItem.remove();
|
|
312
|
-
}
|
|
305
|
+
var _a, _b;
|
|
306
|
+
if (this.controlledFilter)
|
|
307
|
+
return;
|
|
313
308
|
let hasVisibleItems = false;
|
|
314
|
-
|
|
309
|
+
const items = this.getFilterableItems();
|
|
310
|
+
// Remove the "no results found" item if it exists
|
|
311
|
+
(_a = this.el
|
|
312
|
+
.querySelector('nv-fielddropdownitem[data-empty]')) === null || _a === void 0 ? void 0 : _a.remove();
|
|
315
313
|
items.forEach(item => {
|
|
316
314
|
var _a, _b;
|
|
317
|
-
const
|
|
318
|
-
const
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
315
|
+
const filterText = this.filterText.toLowerCase();
|
|
316
|
+
const textContent = ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
|
|
317
|
+
const value = ((_b = item.value) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || '';
|
|
318
|
+
// Either in the value or in the textual content
|
|
319
|
+
const shouldShow = value.includes(filterText) || textContent.includes(filterText);
|
|
322
320
|
if (shouldShow)
|
|
323
321
|
item.removeAttribute('hidden');
|
|
324
322
|
else
|
|
@@ -333,56 +331,40 @@ export class NvFielddropdown {
|
|
|
333
331
|
emptyItem.setAttribute('data-empty', 'true');
|
|
334
332
|
emptyItem.setAttribute('disabled', 'true');
|
|
335
333
|
emptyItem.textContent = this.emptyResult;
|
|
336
|
-
(
|
|
334
|
+
(_b = this.el.querySelector('div[slot="content"] ul')) === null || _b === void 0 ? void 0 : _b.prepend(emptyItem);
|
|
337
335
|
}
|
|
338
336
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
337
|
+
async updateSelectedItem() {
|
|
338
|
+
const items = this.getAllItems();
|
|
339
|
+
if (this.value) {
|
|
340
|
+
items.forEach(item => {
|
|
341
|
+
if (item.value === this.value) {
|
|
342
|
+
item.selected = true;
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
item.selected = false;
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
}
|
|
345
349
|
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
item.classList.remove('highlighted');
|
|
355
|
-
}
|
|
356
|
-
});
|
|
350
|
+
//#endregion METHODS
|
|
351
|
+
/****************************************************************************/
|
|
352
|
+
//#region LIFECYCLE
|
|
353
|
+
componentDidLoad() {
|
|
354
|
+
this.updateSelectedItem();
|
|
355
|
+
this.setFilterInputToSelectedValue();
|
|
357
356
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
return;
|
|
361
|
-
const items = Array.from(this.el.querySelectorAll('nv-fielddropdownitem'));
|
|
362
|
-
const matchingItem = items.find(item => {
|
|
363
|
-
var _a;
|
|
364
|
-
const itemLabel = item.getAttribute('label');
|
|
365
|
-
const itemValue = item.getAttribute('value');
|
|
366
|
-
const itemText = (_a = item.textContent) === null || _a === void 0 ? void 0 : _a.trim();
|
|
367
|
-
return itemLabel === value || itemValue === value || itemText === value;
|
|
368
|
-
});
|
|
369
|
-
items.forEach(item => {
|
|
370
|
-
if (item === matchingItem) {
|
|
371
|
-
item.setAttribute('selected', '');
|
|
372
|
-
}
|
|
373
|
-
else {
|
|
374
|
-
item.removeAttribute('selected');
|
|
375
|
-
}
|
|
376
|
-
});
|
|
357
|
+
disconnectedCallback() {
|
|
358
|
+
clearTimeout(this.debounceTimer);
|
|
377
359
|
}
|
|
378
|
-
//#endregion
|
|
360
|
+
//#endregion LIFECYCLE
|
|
379
361
|
/****************************************************************************/
|
|
380
362
|
//#region RENDER
|
|
381
363
|
render() {
|
|
382
364
|
var _a;
|
|
383
|
-
return (h(Host, { key: '
|
|
384
|
-
this.el.querySelector('[slot="description"]')) && (h("div", { key: '
|
|
385
|
-
this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '
|
|
365
|
+
return (h(Host, { key: '428dd85337710d430ac04cf8cbc9021a93307bfe', role: "combobox", "aria-expanded": this.open.toString(), "aria-haspopup": "listbox", "aria-label": this.label }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'a527c33d31152a90f8641e27fbaf91cf73eb06b6', htmlFor: this.inputId, onClick: this.syncToggleDropdown.bind(this) }, h("slot", { key: 'e4cf96c38db69080228666e4b924367a0c3a9d72', name: "label" }, this.label))), h("nv-popover", { key: '41723f7ec67e4e5680381e217eba45a1d73b47fc', triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { key: 'd4af00d5171b09923c36df9fd44853e1399e584f', class: "input-wrapper", slot: "trigger" }, h("slot", { key: 'bb6e53746c70fcc8172acd9a7ef8cbf72ae70698', name: "before-input" }), h("div", { key: 'ef3dc9ac5d0d895384653a17f8e61f616a7cbba9', class: "input-container" }, h("slot", { key: '7621b8cb7222330e73a426282877df2e0040714c', name: "leading-input" }), this.filterable || this.disabled || this.readonly ? (h("input", { "data-scope": "focusable", id: this.inputId, type: "search", ref: e => (this.inputElement = e), autofocus: this.autofocus, autocomplete: this.autocomplete, placeholder: this.placeholder, name: this.name, required: this.required, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleFilterInput })) : (h("p", { "data-scope": "focusable", id: this.inputId, ref: el => (this.selectElement = el), class: "non-filterable-text", tabIndex: this.disabled ? -1 : 0 }, this.getSelectedLabel() || this.value || this.placeholder)), this.filterable && this.filterText && (h("nv-iconbutton", { key: '3de283e59d0c7811b39e30d98fdd7e400a1b3d49', name: "x", size: "md", emphasis: "lower", class: "clear-button", onClick: this.clearFilter.bind(this), "aria-label": "Clear input" })), this.error && (h("nv-icon", { key: '6f826edb19430ce535dc8742dfbd77b05d673f4d', name: "alert-circle", class: "validation", size: "md" })), h("nv-iconbutton", { key: '611f8df410c38faeb9fec9a43ac1f7013ce9b32b', "data-scope": "toggle-dropdown", ref: el => (this.toggleElement = el), name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide dropdown' : 'Show dropdown', onClick: this.syncToggleDropdown.bind(this), tabIndex: this.disabled ? -1 : 0 })), h("slot", { key: '18d16b6c1d3c1ab910f8a45a339ae750e2277542', name: "after-input" })), h("div", { key: '53624675adac2c6c9345b64e634cbbad4f009a82', slot: "content", style: this.maxHeight ? { maxHeight: this.maxHeight } : {} }, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 0 && (h("ul", { key: '3dfd5e914176bab898fd7872eb4ea0206d12b80a' }, this.options.map(option => (h("nv-fielddropdownitem", { label: option.label, value: option.value, disabled: option.disabled, selected: option.value === this.value }))))), h("slot", { key: 'e1c9151e125d0fe6f129b879b0adf1ae91b94bc4', name: "content" }))), (this.description ||
|
|
366
|
+
this.el.querySelector('[slot="description"]')) && (h("div", { key: '13247930760480ec767ce75c61385036126cd2f3', class: "description" }, h("slot", { key: '09c3f2fa0a1be5bcbe69b757a68a8327fef29ec1', name: "description" }, this.description))), (this.errorDescription ||
|
|
367
|
+
this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '9b43e41b6b38242b21c750d2d442c78e0930b9bc', hidden: !this.error, class: "error-description" }, h("slot", { key: '44f7756522adbc54b8d85a211dace24a37073fc6', name: "error-description" }, this.errorDescription)))));
|
|
386
368
|
}
|
|
387
369
|
static get is() { return "nv-fielddropdown"; }
|
|
388
370
|
static get formAssociated() { return true; }
|
|
@@ -664,9 +646,29 @@ export class NvFielddropdown {
|
|
|
664
646
|
"reflect": true,
|
|
665
647
|
"defaultValue": "''"
|
|
666
648
|
},
|
|
667
|
-
"
|
|
649
|
+
"emptyResult": {
|
|
650
|
+
"type": "string",
|
|
651
|
+
"mutable": false,
|
|
652
|
+
"complexType": {
|
|
653
|
+
"original": "string",
|
|
654
|
+
"resolved": "string",
|
|
655
|
+
"references": {}
|
|
656
|
+
},
|
|
657
|
+
"required": false,
|
|
658
|
+
"optional": false,
|
|
659
|
+
"docs": {
|
|
660
|
+
"tags": [],
|
|
661
|
+
"text": "The text to display when no items match the filter."
|
|
662
|
+
},
|
|
663
|
+
"getter": false,
|
|
664
|
+
"setter": false,
|
|
665
|
+
"attribute": "empty-result",
|
|
666
|
+
"reflect": true,
|
|
667
|
+
"defaultValue": "'No results found'"
|
|
668
|
+
},
|
|
669
|
+
"filterable": {
|
|
668
670
|
"type": "boolean",
|
|
669
|
-
"mutable":
|
|
671
|
+
"mutable": false,
|
|
670
672
|
"complexType": {
|
|
671
673
|
"original": "boolean",
|
|
672
674
|
"resolved": "boolean",
|
|
@@ -676,35 +678,35 @@ export class NvFielddropdown {
|
|
|
676
678
|
"optional": false,
|
|
677
679
|
"docs": {
|
|
678
680
|
"tags": [],
|
|
679
|
-
"text": "
|
|
681
|
+
"text": "Enables or disables the filtering feature for the dropdown items."
|
|
680
682
|
},
|
|
681
683
|
"getter": false,
|
|
682
684
|
"setter": false,
|
|
683
|
-
"attribute": "
|
|
685
|
+
"attribute": "filterable",
|
|
684
686
|
"reflect": true,
|
|
685
687
|
"defaultValue": "false"
|
|
686
688
|
},
|
|
687
|
-
"
|
|
688
|
-
"type": "
|
|
689
|
+
"openOnSelect": {
|
|
690
|
+
"type": "boolean",
|
|
689
691
|
"mutable": false,
|
|
690
692
|
"complexType": {
|
|
691
|
-
"original": "
|
|
692
|
-
"resolved": "
|
|
693
|
+
"original": "boolean",
|
|
694
|
+
"resolved": "boolean",
|
|
693
695
|
"references": {}
|
|
694
696
|
},
|
|
695
697
|
"required": false,
|
|
696
698
|
"optional": false,
|
|
697
699
|
"docs": {
|
|
698
700
|
"tags": [],
|
|
699
|
-
"text": "
|
|
701
|
+
"text": "When an item is selected by the user, the dropdown will continue to stay\nopen."
|
|
700
702
|
},
|
|
701
703
|
"getter": false,
|
|
702
704
|
"setter": false,
|
|
703
|
-
"attribute": "
|
|
705
|
+
"attribute": "open-on-select",
|
|
704
706
|
"reflect": true,
|
|
705
|
-
"defaultValue": "
|
|
707
|
+
"defaultValue": "false"
|
|
706
708
|
},
|
|
707
|
-
"
|
|
709
|
+
"controlledFilter": {
|
|
708
710
|
"type": "boolean",
|
|
709
711
|
"mutable": false,
|
|
710
712
|
"complexType": {
|
|
@@ -716,11 +718,11 @@ export class NvFielddropdown {
|
|
|
716
718
|
"optional": false,
|
|
717
719
|
"docs": {
|
|
718
720
|
"tags": [],
|
|
719
|
-
"text": "
|
|
721
|
+
"text": "Determines if the component\u2019s filtering behavior is managed externally.\nWhen set to true and filterable is enabled, the component won\u2019t\nautomatically filter items. Instead, you must implement your own filtering\nlogic (e.g., server-side search or custom matching) using the\nfilterTextChanged event."
|
|
720
722
|
},
|
|
721
723
|
"getter": false,
|
|
722
724
|
"setter": false,
|
|
723
|
-
"attribute": "
|
|
725
|
+
"attribute": "controlled-filter",
|
|
724
726
|
"reflect": true,
|
|
725
727
|
"defaultValue": "false"
|
|
726
728
|
},
|
|
@@ -728,8 +730,8 @@ export class NvFielddropdown {
|
|
|
728
730
|
"type": "unknown",
|
|
729
731
|
"mutable": false,
|
|
730
732
|
"complexType": {
|
|
731
|
-
"original": "{\n /** Label to display for the option */\n label: string;\n /** Value associated with the option */\n value: string;\n /** Whether this option is disabled */\n disabled?: boolean;\n
|
|
732
|
-
"resolved": "{ label: string; value: string; disabled?: boolean;
|
|
733
|
+
"original": "{\n /** Label to display for the option */\n label: string;\n /** Value associated with the option */\n value: string;\n /** Whether this option is disabled */\n disabled?: boolean;\n }[]",
|
|
734
|
+
"resolved": "{ label: string; value: string; disabled?: boolean; }[]",
|
|
733
735
|
"references": {}
|
|
734
736
|
},
|
|
735
737
|
"required": false,
|
|
@@ -759,7 +761,7 @@ export class NvFielddropdown {
|
|
|
759
761
|
"name": "default",
|
|
760
762
|
"text": "300"
|
|
761
763
|
}],
|
|
762
|
-
"text": "Delay in milliseconds before the search is triggered when typing in the
|
|
764
|
+
"text": "Delay in milliseconds before the search is triggered when typing in the\nfilter input."
|
|
763
765
|
},
|
|
764
766
|
"getter": false,
|
|
765
767
|
"setter": false,
|
|
@@ -812,7 +814,8 @@ export class NvFielddropdown {
|
|
|
812
814
|
static get states() {
|
|
813
815
|
return {
|
|
814
816
|
"filterText": {},
|
|
815
|
-
"selectedValues": {}
|
|
817
|
+
"selectedValues": {},
|
|
818
|
+
"open": {}
|
|
816
819
|
};
|
|
817
820
|
}
|
|
818
821
|
static get events() {
|
|
@@ -834,6 +837,41 @@ export class NvFielddropdown {
|
|
|
834
837
|
"resolved": "string",
|
|
835
838
|
"references": {}
|
|
836
839
|
}
|
|
840
|
+
}, {
|
|
841
|
+
"method": "filterTextChanged",
|
|
842
|
+
"name": "filterTextChanged",
|
|
843
|
+
"bubbles": true,
|
|
844
|
+
"cancelable": true,
|
|
845
|
+
"composed": true,
|
|
846
|
+
"docs": {
|
|
847
|
+
"tags": [],
|
|
848
|
+
"text": "Event emitted when the filter input value changes."
|
|
849
|
+
},
|
|
850
|
+
"complexType": {
|
|
851
|
+
"original": "string",
|
|
852
|
+
"resolved": "string",
|
|
853
|
+
"references": {}
|
|
854
|
+
}
|
|
855
|
+
}, {
|
|
856
|
+
"method": "openChanged",
|
|
857
|
+
"name": "openChanged",
|
|
858
|
+
"bubbles": true,
|
|
859
|
+
"cancelable": true,
|
|
860
|
+
"composed": true,
|
|
861
|
+
"docs": {
|
|
862
|
+
"tags": [],
|
|
863
|
+
"text": "Event emitted when the dropdown opened or closed."
|
|
864
|
+
},
|
|
865
|
+
"complexType": {
|
|
866
|
+
"original": "HTMLNvPopoverElementEventMap['openChanged']",
|
|
867
|
+
"resolved": "boolean",
|
|
868
|
+
"references": {
|
|
869
|
+
"HTMLNvPopoverElementEventMap": {
|
|
870
|
+
"location": "global",
|
|
871
|
+
"id": "global::HTMLNvPopoverElementEventMap"
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
}
|
|
837
875
|
}, {
|
|
838
876
|
"method": "dropdownItemSelected",
|
|
839
877
|
"name": "dropdownItemSelected",
|
|
@@ -846,7 +884,7 @@ export class NvFielddropdown {
|
|
|
846
884
|
},
|
|
847
885
|
"complexType": {
|
|
848
886
|
"original": "HTMLNvFielddropdownitemElementEventMap['dropdownItemSelected']",
|
|
849
|
-
"resolved": "{ label?: string; value: string; }",
|
|
887
|
+
"resolved": "{ label?: string; value: string; detached?: boolean; }",
|
|
850
888
|
"references": {
|
|
851
889
|
"HTMLNvFielddropdownitemElementEventMap": {
|
|
852
890
|
"location": "global",
|
|
@@ -858,9 +896,9 @@ export class NvFielddropdown {
|
|
|
858
896
|
}
|
|
859
897
|
static get methods() {
|
|
860
898
|
return {
|
|
861
|
-
"
|
|
899
|
+
"clearFilter": {
|
|
862
900
|
"complexType": {
|
|
863
|
-
"signature": "() => Promise<
|
|
901
|
+
"signature": "() => Promise<void>",
|
|
864
902
|
"parameters": [],
|
|
865
903
|
"references": {
|
|
866
904
|
"Promise": {
|
|
@@ -868,13 +906,34 @@ export class NvFielddropdown {
|
|
|
868
906
|
"id": "global::Promise"
|
|
869
907
|
}
|
|
870
908
|
},
|
|
871
|
-
"return": "Promise<
|
|
909
|
+
"return": "Promise<void>"
|
|
910
|
+
},
|
|
911
|
+
"docs": {
|
|
912
|
+
"text": "Clears the filter text",
|
|
913
|
+
"tags": []
|
|
914
|
+
}
|
|
915
|
+
},
|
|
916
|
+
"toggleDropdown": {
|
|
917
|
+
"complexType": {
|
|
918
|
+
"signature": "(open?: boolean) => Promise<void>",
|
|
919
|
+
"parameters": [{
|
|
920
|
+
"name": "open",
|
|
921
|
+
"type": "boolean",
|
|
922
|
+
"docs": "- The open state to set, if null, toggles the state"
|
|
923
|
+
}],
|
|
924
|
+
"references": {
|
|
925
|
+
"Promise": {
|
|
926
|
+
"location": "global",
|
|
927
|
+
"id": "global::Promise"
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
"return": "Promise<void>"
|
|
872
931
|
},
|
|
873
932
|
"docs": {
|
|
874
|
-
"text": "
|
|
933
|
+
"text": "Toggles the dropdown popover open state",
|
|
875
934
|
"tags": [{
|
|
876
|
-
"name": "
|
|
877
|
-
"text": "The
|
|
935
|
+
"name": "param",
|
|
936
|
+
"text": "open - The open state to set, if null, toggles the state"
|
|
878
937
|
}]
|
|
879
938
|
}
|
|
880
939
|
}
|
|
@@ -883,41 +942,47 @@ export class NvFielddropdown {
|
|
|
883
942
|
static get elementRef() { return "el"; }
|
|
884
943
|
static get watchers() {
|
|
885
944
|
return [{
|
|
886
|
-
"propName": "
|
|
887
|
-
"methodName": "
|
|
945
|
+
"propName": "open",
|
|
946
|
+
"methodName": "handleOpenChange"
|
|
888
947
|
}, {
|
|
889
948
|
"propName": "value",
|
|
890
|
-
"methodName": "
|
|
949
|
+
"methodName": "handleValueChange"
|
|
891
950
|
}, {
|
|
892
|
-
"propName": "
|
|
893
|
-
"methodName": "
|
|
951
|
+
"propName": "options",
|
|
952
|
+
"methodName": "handleOptionsChange"
|
|
894
953
|
}];
|
|
895
954
|
}
|
|
896
955
|
static get listeners() {
|
|
897
956
|
return [{
|
|
898
|
-
"name": "openChanged",
|
|
899
|
-
"method": "handleOpenChanged",
|
|
900
|
-
"target": undefined,
|
|
901
|
-
"capture": false,
|
|
902
|
-
"passive": false
|
|
903
|
-
}, {
|
|
904
957
|
"name": "dropdownItemSelected",
|
|
905
958
|
"method": "handleDropdownItemSelected",
|
|
906
959
|
"target": undefined,
|
|
907
960
|
"capture": false,
|
|
908
961
|
"passive": false
|
|
909
962
|
}, {
|
|
910
|
-
"name": "
|
|
911
|
-
"method": "
|
|
963
|
+
"name": "focus",
|
|
964
|
+
"method": "handleFocus",
|
|
912
965
|
"target": undefined,
|
|
913
966
|
"capture": true,
|
|
914
|
-
"passive":
|
|
967
|
+
"passive": true
|
|
968
|
+
}, {
|
|
969
|
+
"name": "focusout",
|
|
970
|
+
"method": "handleFocusOut",
|
|
971
|
+
"target": undefined,
|
|
972
|
+
"capture": true,
|
|
973
|
+
"passive": true
|
|
915
974
|
}, {
|
|
916
975
|
"name": "keydown",
|
|
917
976
|
"method": "handleKeyDown",
|
|
918
977
|
"target": undefined,
|
|
919
978
|
"capture": false,
|
|
920
979
|
"passive": false
|
|
980
|
+
}, {
|
|
981
|
+
"name": "click",
|
|
982
|
+
"method": "handleDocumentClick",
|
|
983
|
+
"target": "document",
|
|
984
|
+
"capture": false,
|
|
985
|
+
"passive": false
|
|
921
986
|
}];
|
|
922
987
|
}
|
|
923
988
|
}
|