@nova-design-system/nova-webcomponents 3.0.0-beta.45 → 3.0.0-beta.47
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-9bda5507.js +0 -4
- 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 +4 -4
- package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
- package/dist/cjs/nv-button.cjs.entry.js +1 -1
- package/dist/cjs/nv-calendar.cjs.entry.js +48 -19
- package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-col.cjs.entry.js +1 -1
- package/dist/cjs/nv-datagrid.cjs.entry.js +378 -85
- package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-datagridcolumn.cjs.entry.js +5 -1
- package/dist/cjs/nv-datagridcolumn.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-dialog.cjs.entry.js +1 -1
- package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +4 -4
- package/dist/cjs/nv-fielddate.cjs.entry.js +5 -5
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +4 -4
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +15 -35
- 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 +30 -86
- 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-fieldnumber.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +9 -7
- package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
- package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
- 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 +9 -9
- package/dist/cjs/nv-icon.cjs.entry.js +1 -1
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
- package/dist/cjs/nv-menu.cjs.entry.js +18 -44
- 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-popover.cjs.entry.js +1 -1
- package/dist/cjs/nv-row.cjs.entry.js +1 -1
- package/dist/cjs/nv-stack.cjs.entry.js +1 -1
- package/dist/cjs/nv-stack.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-table.cjs.entry.js +2 -2
- package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
- package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +0 -1
- package/dist/collection/components/nv-badge/nv-badge.js +4 -3
- package/dist/collection/components/nv-badge/nv-badge.js.map +1 -1
- package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +1 -1
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
- package/dist/collection/components/nv-button/nv-button.js +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.docs.js +0 -9
- package/dist/collection/components/nv-calendar/nv-calendar.docs.js.map +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.js +48 -19
- package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
- package/dist/collection/components/nv-col/nv-col.js +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +560 -63
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.js +393 -88
- package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +27 -1
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +1 -1
- package/dist/collection/components/nv-dialog/nv-dialog.js +1 -1
- package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
- package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +4 -4
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +5 -5
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +4 -4
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +8 -8
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +24 -50
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +6 -6
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +37 -103
- 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-fieldnumber/nv-fieldnumber.js.map +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +9 -7
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
- 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-fieldselect/nv-fieldselect.js.map +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
- package/dist/collection/components/nv-icon/nv-icon.js +1 -1
- package/dist/collection/components/nv-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.docs.js +3 -3
- package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
- package/dist/collection/components/nv-menu/nv-menu.js +37 -65
- 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-popover/nv-popover.js +1 -1
- package/dist/collection/components/nv-row/nv-row.js +1 -1
- package/dist/collection/components/nv-stack/nv-stack.docs.js +7 -6
- package/dist/collection/components/nv-stack/nv-stack.docs.js.map +1 -1
- package/dist/collection/components/nv-stack/nv-stack.js +1 -1
- package/dist/collection/components/nv-stack/nv-stack.js.map +1 -1
- package/dist/collection/components/nv-table/nv-table.js +2 -2
- package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
- 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 +3 -3
- package/dist/components/nv-breadcrumbs.js +1 -1
- package/dist/components/nv-button.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 +386 -87
- package/dist/components/nv-datagrid.js.map +1 -1
- package/dist/components/nv-datagridcolumn.js +7 -2
- package/dist/components/nv-datagridcolumn.js.map +1 -1
- package/dist/components/nv-dialog.js +6 -6
- package/dist/components/nv-dialogfooter.js +1 -1
- package/dist/components/nv-dialogheader.js +1 -1
- package/dist/components/nv-fieldcheckbox.js +1 -1
- package/dist/components/nv-fielddate.js +12 -12
- package/dist/components/nv-fielddaterange.js +11 -11
- package/dist/components/nv-fielddropdown.js +22 -45
- 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 +40 -100
- package/dist/components/nv-fieldmultiselect.js.map +1 -1
- package/dist/components/nv-fieldnumber.js +6 -6
- package/dist/components/nv-fieldnumber.js.map +1 -1
- package/dist/components/nv-fieldpassword.js +12 -10
- package/dist/components/nv-fieldpassword.js.map +1 -1
- package/dist/components/nv-fieldradio.js +3 -3
- package/dist/components/nv-fieldselect.js +8 -8
- package/dist/components/nv-fieldselect.js.map +1 -1
- package/dist/components/nv-fieldtext.js +4 -4
- package/dist/components/nv-fieldtextarea.js +3 -3
- package/dist/components/nv-fieldtime.js +13 -13
- 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 +23 -52
- package/dist/components/nv-menu.js.map +1 -1
- package/dist/components/nv-menuitem.js +1 -1
- package/dist/components/nv-popover.js +1 -1
- package/dist/components/nv-row.js +1 -1
- package/dist/components/nv-stack.js +1 -1
- package/dist/components/nv-stack.js.map +1 -1
- package/dist/components/nv-table.js +2 -2
- package/dist/components/nv-toggle.js +2 -2
- package/dist/components/nv-tooltip.js +1 -1
- package/dist/components/{p-4c6d8df7.js → p-02752770.js} +2 -2
- package/dist/components/{p-4c6d8df7.js.map → p-02752770.js.map} +1 -1
- package/dist/components/{p-3a3ba5b1.js → p-150daf68.js} +2 -2
- package/dist/components/{p-3a3ba5b1.js.map → p-150daf68.js.map} +1 -1
- package/dist/components/{p-ef255589.js → p-2012b8ba.js} +3 -3
- package/dist/components/{p-ef255589.js.map → p-2012b8ba.js.map} +1 -1
- package/dist/components/{p-103756d6.js → p-2d9ba7d3.js} +3 -3
- package/dist/components/{p-103756d6.js.map → p-2d9ba7d3.js.map} +1 -1
- package/dist/components/{p-0f59f38e.js → p-373926aa.js} +5 -5
- package/dist/components/p-373926aa.js.map +1 -0
- package/dist/components/{p-8ea5e3c0.js → p-4d3ec142.js} +3 -3
- package/dist/components/{p-8ea5e3c0.js.map → p-4d3ec142.js.map} +1 -1
- package/dist/components/{p-78b00756.js → p-591730e7.js} +2 -2
- package/dist/components/{p-78b00756.js.map → p-591730e7.js.map} +1 -1
- package/dist/components/{p-b5821dbb.js → p-6c364a23.js} +5 -5
- package/dist/components/{p-b5821dbb.js.map → p-6c364a23.js.map} +1 -1
- package/dist/components/{p-aeeb5b1c.js → p-a30b55fc.js} +2 -2
- package/dist/components/{p-aeeb5b1c.js.map → p-a30b55fc.js.map} +1 -1
- package/dist/components/{p-e46c2e31.js → p-b7b78e64.js} +2 -2
- package/dist/components/{p-e46c2e31.js.map → p-b7b78e64.js.map} +1 -1
- package/dist/components/{p-3561c093.js → p-c14f6b8e.js} +3 -3
- package/dist/components/{p-3561c093.js.map → p-c14f6b8e.js.map} +1 -1
- package/dist/components/{p-3b096098.js → p-dc3faba3.js} +4 -4
- package/dist/components/{p-3b096098.js.map → p-dc3faba3.js.map} +1 -1
- package/dist/components/{p-933d4d06.js → p-e00cbb8a.js} +5 -5
- package/dist/components/{p-933d4d06.js.map → p-e00cbb8a.js.map} +1 -1
- package/dist/components/{p-78e0e7b0.js → p-f331117c.js} +53 -24
- package/dist/components/p-f331117c.js.map +1 -0
- package/dist/components/{p-863974b2.js → p-f4d86795.js} +3 -3
- package/dist/components/{p-863974b2.js.map → p-f4d86795.js.map} +1 -1
- package/dist/esm/index-1fb7a9a6.js +0 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/native.js +1 -1
- package/dist/esm/nv-badge_2.entry.js +4 -4
- package/dist/esm/nv-badge_2.entry.js.map +1 -1
- package/dist/esm/nv-breadcrumb.entry.js +1 -1
- package/dist/esm/nv-breadcrumbs.entry.js +1 -1
- package/dist/esm/nv-button.entry.js +1 -1
- package/dist/esm/nv-calendar.entry.js +48 -19
- package/dist/esm/nv-calendar.entry.js.map +1 -1
- package/dist/esm/nv-col.entry.js +1 -1
- package/dist/esm/nv-datagrid.entry.js +378 -85
- package/dist/esm/nv-datagrid.entry.js.map +1 -1
- package/dist/esm/nv-datagridcolumn.entry.js +5 -1
- package/dist/esm/nv-datagridcolumn.entry.js.map +1 -1
- package/dist/esm/nv-dialog.entry.js +1 -1
- package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
- package/dist/esm/nv-fieldcheckbox.entry.js +4 -4
- package/dist/esm/nv-fielddate.entry.js +5 -5
- package/dist/esm/nv-fielddaterange.entry.js +4 -4
- package/dist/esm/nv-fielddropdown.entry.js +15 -35
- 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 +30 -86
- package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldnumber.entry.js +3 -3
- package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
- package/dist/esm/nv-fieldpassword.entry.js +9 -7
- package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
- package/dist/esm/nv-fieldradio.entry.js +3 -3
- package/dist/esm/nv-fieldselect.entry.js +5 -5
- package/dist/esm/nv-fieldselect.entry.js.map +1 -1
- 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 +9 -9
- package/dist/esm/nv-icon.entry.js +1 -1
- package/dist/esm/nv-iconbutton_2.entry.js +2 -2
- package/dist/esm/nv-menu.entry.js +18 -44
- package/dist/esm/nv-menu.entry.js.map +1 -1
- package/dist/esm/nv-menuitem.entry.js +1 -1
- package/dist/esm/nv-popover.entry.js +1 -1
- package/dist/esm/nv-row.entry.js +1 -1
- package/dist/esm/nv-stack.entry.js +1 -1
- package/dist/esm/nv-stack.entry.js.map +1 -1
- package/dist/esm/nv-table.entry.js +2 -2
- package/dist/esm/nv-toggle.entry.js +2 -2
- package/dist/esm/nv-tooltip.entry.js +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-0245863d.entry.js +2 -0
- package/dist/native/{p-19fd6594.entry.js → p-0ee428d5.entry.js} +2 -2
- package/dist/native/p-0ee428d5.entry.js.map +1 -0
- package/dist/native/{p-c10e5113.entry.js → p-244f56ac.entry.js} +2 -2
- package/dist/native/p-2691e02d.entry.js +2 -0
- package/dist/native/{p-31184fdd.entry.js → p-37f0210e.entry.js} +2 -2
- package/dist/native/{p-31184fdd.entry.js.map → p-37f0210e.entry.js.map} +1 -1
- package/dist/native/{p-162f4840.entry.js → p-39bb95ff.entry.js} +2 -2
- package/dist/native/{p-abeda2cf.entry.js → p-4ae26462.entry.js} +2 -2
- package/dist/native/p-4d9c4618.entry.js +2 -0
- package/dist/native/p-4d9c4618.entry.js.map +1 -0
- package/dist/native/{p-314d2b34.entry.js → p-59e0bd2b.entry.js} +2 -2
- package/dist/native/{p-314d2b34.entry.js.map → p-59e0bd2b.entry.js.map} +1 -1
- package/dist/native/{p-e6904ae4.entry.js → p-5c00f092.entry.js} +2 -2
- package/dist/native/p-63e6aed3.entry.js +2 -0
- package/dist/native/p-63e6aed3.entry.js.map +1 -0
- package/dist/native/{p-40f4a6e7.entry.js → p-6b348684.entry.js} +2 -2
- package/dist/native/{p-442f04f9.entry.js → p-6ff228da.entry.js} +2 -2
- package/dist/native/{p-442f04f9.entry.js.map → p-6ff228da.entry.js.map} +1 -1
- package/dist/native/{p-603a99ed.entry.js → p-701b5557.entry.js} +2 -2
- package/dist/native/{p-2281d5ef.entry.js → p-7f5eb2ac.entry.js} +2 -2
- package/dist/native/{p-f5e0d5c5.entry.js → p-84a73e2a.entry.js} +2 -2
- package/dist/native/p-9135fdf5.entry.js +2 -0
- package/dist/native/p-9135fdf5.entry.js.map +1 -0
- package/dist/native/p-93dc2f47.entry.js +2 -0
- package/dist/native/{p-45577c7f.entry.js.map → p-93dc2f47.entry.js.map} +1 -1
- package/dist/native/{p-d9624254.entry.js → p-9a267f16.entry.js} +2 -2
- package/dist/native/p-9a267f16.entry.js.map +1 -0
- package/dist/native/{p-ecc28398.entry.js → p-9d6431c7.entry.js} +2 -2
- package/dist/native/p-9d6431c7.entry.js.map +1 -0
- package/dist/native/{p-514101d6.entry.js → p-b094296d.entry.js} +2 -2
- package/dist/native/{p-464ef88f.entry.js → p-b2ce83ad.entry.js} +2 -2
- package/dist/native/p-bad11367.entry.js +2 -0
- package/dist/native/{p-0172095c.entry.js → p-c7b201cd.entry.js} +2 -2
- package/dist/native/{p-725e0abd.entry.js → p-d7a76400.entry.js} +2 -2
- package/dist/native/p-e1a4f776.entry.js +2 -0
- package/dist/native/p-e1a4f776.entry.js.map +1 -0
- package/dist/native/p-e49bbd02.entry.js +2 -0
- package/dist/native/p-e49bbd02.entry.js.map +1 -0
- package/dist/native/{p-17bf1233.entry.js → p-e5de64d5.entry.js} +2 -2
- package/dist/native/p-eee01062.entry.js +2 -0
- package/dist/native/{p-e197d90b.entry.js.map → p-eee01062.entry.js.map} +1 -1
- package/dist/native/{p-332c5d6c.entry.js → p-f6bdc270.entry.js} +2 -2
- package/dist/native/{p-3af5bcc1.entry.js → p-f85aca27.entry.js} +2 -2
- package/dist/native/{p-7fade532.entry.js → p-fa77a591.entry.js} +2 -2
- package/dist/native/{p-f01a34c5.entry.js → p-fb5bddba.entry.js} +2 -2
- package/dist/types/components/nv-badge/nv-badge.d.ts +1 -0
- package/dist/types/components/nv-calendar/nv-calendar.d.ts +10 -7
- package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +38 -2
- package/dist/types/components/nv-datagridcolumn/nv-datagridcolumn.d.ts +4 -0
- package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +17 -23
- package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +17 -44
- package/dist/types/components/nv-fieldpassword/nv-fieldpassword.d.ts +2 -0
- package/dist/types/components/nv-menu/nv-menu.d.ts +50 -16
- package/dist/types/components.d.ts +192 -45
- package/dist/types/nova-docs.d.ts +5 -0
- package/dist/vscode-data.json +43 -51
- package/hydrate/index.js +587 -438
- package/hydrate/index.mjs +587 -438
- package/package.json +5 -3
- package/dist/cjs/nv-base.cjs.entry.js +0 -74
- package/dist/cjs/nv-base.cjs.entry.js.map +0 -1
- package/dist/collection/components/nv-base/nv-base.docs.js +0 -5
- package/dist/collection/components/nv-base/nv-base.docs.js.map +0 -1
- package/dist/collection/components/nv-base/nv-base.js +0 -68
- package/dist/collection/components/nv-base/nv-base.js.map +0 -1
- package/dist/components/nv-base.d.ts +0 -11
- package/dist/components/nv-base.js +0 -88
- package/dist/components/nv-base.js.map +0 -1
- package/dist/components/p-0f59f38e.js.map +0 -1
- package/dist/components/p-78e0e7b0.js.map +0 -1
- package/dist/esm/nv-base.entry.js +0 -70
- package/dist/esm/nv-base.entry.js.map +0 -1
- package/dist/native/p-19fd6594.entry.js.map +0 -1
- package/dist/native/p-1a46cb52.entry.js +0 -2
- package/dist/native/p-1a46cb52.entry.js.map +0 -1
- package/dist/native/p-331da074.entry.js +0 -2
- package/dist/native/p-42d020a7.entry.js +0 -2
- package/dist/native/p-42d020a7.entry.js.map +0 -1
- package/dist/native/p-4403e3af.entry.js +0 -2
- package/dist/native/p-4403e3af.entry.js.map +0 -1
- package/dist/native/p-45577c7f.entry.js +0 -2
- package/dist/native/p-46aa1136.entry.js +0 -2
- package/dist/native/p-54b6ce07.entry.js +0 -2
- package/dist/native/p-54b6ce07.entry.js.map +0 -1
- package/dist/native/p-665db087.entry.js +0 -2
- package/dist/native/p-942f8e92.entry.js +0 -2
- package/dist/native/p-942f8e92.entry.js.map +0 -1
- package/dist/native/p-d9624254.entry.js.map +0 -1
- package/dist/native/p-e197d90b.entry.js +0 -2
- package/dist/native/p-ecc28398.entry.js.map +0 -1
- package/dist/native/p-f89b7d06.entry.js +0 -2
- package/dist/native/p-f89b7d06.entry.js.map +0 -1
- package/dist/types/components/nv-base/nv-base.d.ts +0 -17
- package/dist/types/components/nv-base/nv-base.docs.d.ts +0 -5
- /package/dist/native/{p-665db087.entry.js.map → p-0245863d.entry.js.map} +0 -0
- /package/dist/native/{p-c10e5113.entry.js.map → p-244f56ac.entry.js.map} +0 -0
- /package/dist/native/{p-46aa1136.entry.js.map → p-2691e02d.entry.js.map} +0 -0
- /package/dist/native/{p-162f4840.entry.js.map → p-39bb95ff.entry.js.map} +0 -0
- /package/dist/native/{p-abeda2cf.entry.js.map → p-4ae26462.entry.js.map} +0 -0
- /package/dist/native/{p-e6904ae4.entry.js.map → p-5c00f092.entry.js.map} +0 -0
- /package/dist/native/{p-40f4a6e7.entry.js.map → p-6b348684.entry.js.map} +0 -0
- /package/dist/native/{p-603a99ed.entry.js.map → p-701b5557.entry.js.map} +0 -0
- /package/dist/native/{p-2281d5ef.entry.js.map → p-7f5eb2ac.entry.js.map} +0 -0
- /package/dist/native/{p-f5e0d5c5.entry.js.map → p-84a73e2a.entry.js.map} +0 -0
- /package/dist/native/{p-514101d6.entry.js.map → p-b094296d.entry.js.map} +0 -0
- /package/dist/native/{p-464ef88f.entry.js.map → p-b2ce83ad.entry.js.map} +0 -0
- /package/dist/native/{p-331da074.entry.js.map → p-bad11367.entry.js.map} +0 -0
- /package/dist/native/{p-0172095c.entry.js.map → p-c7b201cd.entry.js.map} +0 -0
- /package/dist/native/{p-725e0abd.entry.js.map → p-d7a76400.entry.js.map} +0 -0
- /package/dist/native/{p-17bf1233.entry.js.map → p-e5de64d5.entry.js.map} +0 -0
- /package/dist/native/{p-332c5d6c.entry.js.map → p-f6bdc270.entry.js.map} +0 -0
- /package/dist/native/{p-3af5bcc1.entry.js.map → p-f85aca27.entry.js.map} +0 -0
- /package/dist/native/{p-7fade532.entry.js.map → p-fa77a591.entry.js.map} +0 -0
- /package/dist/native/{p-f01a34c5.entry.js.map → p-fb5bddba.entry.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { h, Host, } from "@stencil/core";
|
|
3
|
-
import { createTable, getCoreRowModel, createColumnHelper, getFilteredRowModel, } from "@tanstack/table-core";
|
|
3
|
+
import { createTable, getCoreRowModel, createColumnHelper, getFilteredRowModel, getPaginationRowModel, } from "@tanstack/table-core";
|
|
4
4
|
import { deepCopyElement, excludedProps } from "../../utils/dom.utils";
|
|
5
5
|
import { debounce } from "../../utils/input.utils";
|
|
6
6
|
/**
|
|
@@ -16,12 +16,15 @@ export class NvDatagrid {
|
|
|
16
16
|
constructor() {
|
|
17
17
|
this.templateCache = new Map();
|
|
18
18
|
this.headerTemplateCache = new Map();
|
|
19
|
+
this.minPageIndex = 1;
|
|
19
20
|
/****************************************************************************/
|
|
20
21
|
//#region STATES
|
|
21
22
|
this.table = null;
|
|
22
23
|
this.parsedColumns = []; // Parsed array
|
|
23
24
|
this.parsedData = []; // Parsed array
|
|
24
|
-
this.
|
|
25
|
+
this.globalFilterSearchTerm = '';
|
|
26
|
+
this.columnData = [];
|
|
27
|
+
this.paginationState = null;
|
|
25
28
|
//#endregion STATES
|
|
26
29
|
/****************************************************************************/
|
|
27
30
|
//#region PROPERTIES
|
|
@@ -71,8 +74,24 @@ export class NvDatagrid {
|
|
|
71
74
|
* @default false
|
|
72
75
|
*/
|
|
73
76
|
this.autoGenerateColumns = false;
|
|
77
|
+
/**
|
|
78
|
+
* Whether to enable pagination for the data grid.
|
|
79
|
+
* @default false
|
|
80
|
+
*/
|
|
81
|
+
this.enablePagination = false;
|
|
82
|
+
/**
|
|
83
|
+
* The number of rows to display per page.
|
|
84
|
+
* @default 10
|
|
85
|
+
*/
|
|
86
|
+
this.pageSize = 10;
|
|
87
|
+
/**
|
|
88
|
+
* The array of page sizes to display in the pagination dropdown.
|
|
89
|
+
* @default [10, 20, 30, 40, 50]
|
|
90
|
+
*/
|
|
91
|
+
this.pageSizes = [10, 20, 30, 40, 50];
|
|
74
92
|
this.debouncedFilter = debounce((value) => {
|
|
75
|
-
|
|
93
|
+
var _a;
|
|
94
|
+
(_a = this.table) === null || _a === void 0 ? void 0 : _a.setGlobalFilter(value);
|
|
76
95
|
}, 300);
|
|
77
96
|
/**
|
|
78
97
|
* Handles global filtering on input event for the search input.
|
|
@@ -88,6 +107,23 @@ export class NvDatagrid {
|
|
|
88
107
|
this.debouncedFilter(value);
|
|
89
108
|
}
|
|
90
109
|
};
|
|
110
|
+
this.flexRender = (comp, props) => {
|
|
111
|
+
if (typeof comp === 'function') {
|
|
112
|
+
return comp(props);
|
|
113
|
+
}
|
|
114
|
+
return comp;
|
|
115
|
+
};
|
|
116
|
+
this.handlePageIndexChange = (event) => {
|
|
117
|
+
const target = event.target;
|
|
118
|
+
const page = target.value ? Number(target.value) - 1 : 0;
|
|
119
|
+
// Simply use `setPageIndex` to update the page index directly
|
|
120
|
+
this.paginationState = Object.assign(Object.assign({}, this.paginationState), { pageIndex: page }); // This triggers the paginationState watcher
|
|
121
|
+
};
|
|
122
|
+
this.handlePageSizeChange = (event) => {
|
|
123
|
+
const target = event.target;
|
|
124
|
+
// Simply use `setPageSize` to update the page size directly
|
|
125
|
+
this.paginationState = Object.assign(Object.assign({}, this.paginationState), { pageSize: Number(target.value) }); // This triggers the paginationState watcher
|
|
126
|
+
};
|
|
91
127
|
}
|
|
92
128
|
//#endregion PROPERTIES
|
|
93
129
|
/****************************************************************************/
|
|
@@ -97,6 +133,7 @@ export class NvDatagrid {
|
|
|
97
133
|
*/
|
|
98
134
|
cacheTemplates() {
|
|
99
135
|
const columns = Array.from(this.el.querySelectorAll('nv-datagridcolumn'));
|
|
136
|
+
this.columnData = [];
|
|
100
137
|
columns.forEach((col) => {
|
|
101
138
|
const key = col.accessor;
|
|
102
139
|
const cellSlot = col.querySelector('[slot="cell"]');
|
|
@@ -117,6 +154,12 @@ export class NvDatagrid {
|
|
|
117
154
|
this.headerTemplateCache.set(key, headerDiv);
|
|
118
155
|
}
|
|
119
156
|
}
|
|
157
|
+
const colData = {
|
|
158
|
+
header: col.header,
|
|
159
|
+
accessor: col.accessor,
|
|
160
|
+
repeatTemplate: col.hasAttribute('repeat-template'),
|
|
161
|
+
};
|
|
162
|
+
this.columnData.push(colData);
|
|
120
163
|
});
|
|
121
164
|
}
|
|
122
165
|
parseDataAndColumns() {
|
|
@@ -182,6 +225,7 @@ export class NvDatagrid {
|
|
|
182
225
|
this.parsedColumns = safeNewValue;
|
|
183
226
|
}
|
|
184
227
|
initializeTable() {
|
|
228
|
+
var _a, _b, _c, _d;
|
|
185
229
|
// Clear the previous table instance (if any)
|
|
186
230
|
this.table = null;
|
|
187
231
|
// Set default options for the table
|
|
@@ -215,26 +259,9 @@ export class NvDatagrid {
|
|
|
215
259
|
}, // Default: no column sizing info
|
|
216
260
|
},
|
|
217
261
|
};
|
|
218
|
-
if (this.enableGlobalFilter) {
|
|
219
|
-
tableOptions.getFilteredRowModel = getFilteredRowModel();
|
|
220
|
-
// Set the initial global filter value
|
|
221
|
-
tableOptions.state.globalFilter = this.globalFilter;
|
|
222
|
-
// Define the callback for global filter changes
|
|
223
|
-
tableOptions.onGlobalFilterChange = value => {
|
|
224
|
-
this.globalFilter = value;
|
|
225
|
-
};
|
|
226
|
-
tableOptions.globalFilterFn = (row, columnId, filterValue) => {
|
|
227
|
-
const response = row
|
|
228
|
-
.getValue(columnId)
|
|
229
|
-
.toString()
|
|
230
|
-
.toLowerCase()
|
|
231
|
-
.includes(filterValue.toLowerCase());
|
|
232
|
-
return response;
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
262
|
if (this.parsedColumns.length > 0) {
|
|
236
263
|
// Validate and generate column definitions
|
|
237
|
-
const validColumns = this.parsedColumns.filter(column =>
|
|
264
|
+
const validColumns = this.parsedColumns.filter(column => column === null || column === void 0 ? void 0 : column.accessor);
|
|
238
265
|
// Update tableOptions based on parsed data and columns
|
|
239
266
|
const hasColumns = validColumns && Array.isArray(validColumns) && validColumns.length > 0;
|
|
240
267
|
const hasData = this.parsedData &&
|
|
@@ -244,22 +271,22 @@ export class NvDatagrid {
|
|
|
244
271
|
// No columns and no data
|
|
245
272
|
}
|
|
246
273
|
else if (hasColumns && !hasData) {
|
|
274
|
+
// Has columns but no data
|
|
247
275
|
tableOptions.columns = this.generateColumns(validColumns, tableOptions);
|
|
248
276
|
}
|
|
249
277
|
else {
|
|
250
278
|
// Both columns and data are available
|
|
251
|
-
// No columns and data is available
|
|
252
279
|
tableOptions.data = this.getTableData();
|
|
253
280
|
tableOptions.columns = this.generateColumns(validColumns, tableOptions);
|
|
254
281
|
}
|
|
255
282
|
}
|
|
256
283
|
else {
|
|
257
|
-
// No columns and data is available
|
|
284
|
+
// No parsed columns and data is available
|
|
258
285
|
const hasData = this.parsedData &&
|
|
259
286
|
Array.isArray(this.parsedData) &&
|
|
260
287
|
this.parsedData.length > 0;
|
|
261
288
|
if (hasData) {
|
|
262
|
-
// No columns and data is available
|
|
289
|
+
// No parsed columns and data is available
|
|
263
290
|
const firstRow = this.parsedData[0];
|
|
264
291
|
const arrayColumnsConfig = Object.keys(firstRow).map(key => ({
|
|
265
292
|
accessor: key,
|
|
@@ -272,26 +299,116 @@ export class NvDatagrid {
|
|
|
272
299
|
tableOptions.columns = this.generateColumns(arrayColumnsConfig, tableOptions);
|
|
273
300
|
}
|
|
274
301
|
}
|
|
302
|
+
if (this.enableGlobalFilter) {
|
|
303
|
+
tableOptions.getFilteredRowModel = getFilteredRowModel();
|
|
304
|
+
const globalFilter = this.globalFilterSearchTerm;
|
|
305
|
+
// Set the initial global filter value
|
|
306
|
+
tableOptions.state.globalFilter = globalFilter;
|
|
307
|
+
// Define the callback for global filter changes
|
|
308
|
+
tableOptions.onGlobalFilterChange = updater => {
|
|
309
|
+
const newFilter = typeof updater === 'function'
|
|
310
|
+
? updater(this.globalFilterSearchTerm)
|
|
311
|
+
: updater;
|
|
312
|
+
this.globalFilterSearchTerm = newFilter; // Will automatically trigger the searchTerm watcher and update the table
|
|
313
|
+
};
|
|
314
|
+
tableOptions.globalFilterFn = this.globalFilterFn;
|
|
315
|
+
}
|
|
316
|
+
if (this.enablePagination) {
|
|
317
|
+
tableOptions.getPaginationRowModel = getPaginationRowModel();
|
|
318
|
+
const pagination = {
|
|
319
|
+
pageIndex: (_b = (_a = this.paginationState) === null || _a === void 0 ? void 0 : _a.pageIndex) !== null && _b !== void 0 ? _b : 0,
|
|
320
|
+
pageSize: (_d = (_c = this.paginationState) === null || _c === void 0 ? void 0 : _c.pageSize) !== null && _d !== void 0 ? _d : 10,
|
|
321
|
+
};
|
|
322
|
+
// Set the initial pagination value with safeguards
|
|
323
|
+
tableOptions.state.pagination = pagination;
|
|
324
|
+
tableOptions.onPaginationChange = updater => {
|
|
325
|
+
const newPagination = typeof updater === 'function'
|
|
326
|
+
? updater(this.paginationState)
|
|
327
|
+
: updater;
|
|
328
|
+
this.paginationState = newPagination;
|
|
329
|
+
};
|
|
330
|
+
}
|
|
275
331
|
// Initialize the table
|
|
276
332
|
this.table = createTable(tableOptions);
|
|
277
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* Global filter function for the table.
|
|
336
|
+
* This function checks if the specified filter value is present in any of the row's original values,
|
|
337
|
+
* including nested objects and arrays. It is used to filter the rows based on the global filter value,
|
|
338
|
+
* allowing for case-insensitive matching.
|
|
339
|
+
*
|
|
340
|
+
* @param {Row<any>} row - The row object containing the data to be filtered.
|
|
341
|
+
* @param {string} _columnId - The ID of the column being filtered (not used in this function).
|
|
342
|
+
* @param {string} filterValue - The value to filter the rows by. This value is checked against the row's data.
|
|
343
|
+
* @returns {boolean} - Returns true if the row should be included in the filtered results, false otherwise.
|
|
344
|
+
* If the filter value is empty, all rows are included.
|
|
345
|
+
*/
|
|
346
|
+
globalFilterFn(row, _columnId, filterValue) {
|
|
347
|
+
const safeFilterValue = String(filterValue).toLowerCase().trim();
|
|
348
|
+
// If no filter value, return true for all rows
|
|
349
|
+
if (!safeFilterValue)
|
|
350
|
+
return true;
|
|
351
|
+
// More robust filtering across all columns
|
|
352
|
+
const checkValue = (value) => {
|
|
353
|
+
if (typeof value === 'object' && value !== null) {
|
|
354
|
+
// If it's an array, check each item
|
|
355
|
+
if (Array.isArray(value)) {
|
|
356
|
+
return value.some(item => checkValue(item));
|
|
357
|
+
}
|
|
358
|
+
// If it's an object, check each property
|
|
359
|
+
return Object.values(value).some(val => checkValue(val));
|
|
360
|
+
}
|
|
361
|
+
return String(value).toLowerCase().includes(safeFilterValue);
|
|
362
|
+
};
|
|
363
|
+
return checkValue(row.original);
|
|
364
|
+
}
|
|
278
365
|
// Helper function to generate column definitions
|
|
279
366
|
generateColumns(validColumns, tableOptions) {
|
|
280
367
|
const columnHelper = createColumnHelper();
|
|
281
368
|
if (validColumns.length > 0) {
|
|
282
369
|
// Use defined columns
|
|
283
|
-
return validColumns.map(column =>
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
370
|
+
return validColumns.map(column => {
|
|
371
|
+
var _a, _b;
|
|
372
|
+
return columnHelper.accessor(column.accessor, {
|
|
373
|
+
header: (_b = (this.renderTemplate(this.headerTemplateCache.get(column.accessor), (_a = column.header) !== null && _a !== void 0 ? _a : column.accessor, null) ||
|
|
374
|
+
column.header)) !== null && _b !== void 0 ? _b : column.accessor,
|
|
375
|
+
cell: (info) => {
|
|
376
|
+
var _a, _b, _c;
|
|
377
|
+
const value = info.getValue();
|
|
378
|
+
const cellAccessors = column.accessor;
|
|
379
|
+
const row = info.row;
|
|
380
|
+
return ((_a = this.columnData.find(x => x.accessor === cellAccessors)) === null || _a === void 0 ? void 0 : _a.repeatTemplate) && Array.isArray(value)
|
|
381
|
+
? value.map((item) => {
|
|
382
|
+
var _a, _b;
|
|
383
|
+
return (_b = (_a = (this.renderTemplate(this.templateCache.get(cellAccessors), item, row) ||
|
|
384
|
+
item)) !== null && _a !== void 0 ? _a : value) !== null && _b !== void 0 ? _b : this.fallbackValue;
|
|
385
|
+
})
|
|
386
|
+
: (_c = (_b = (this.renderTemplate(this.templateCache.get(cellAccessors), value, row) ||
|
|
387
|
+
value)) !== null && _b !== void 0 ? _b : value) !== null && _c !== void 0 ? _c : this.fallbackValue;
|
|
388
|
+
},
|
|
389
|
+
enableGlobalFilter: this.enableGlobalFilter,
|
|
390
|
+
});
|
|
391
|
+
});
|
|
288
392
|
}
|
|
289
393
|
else if (tableOptions.data && tableOptions.data.length > 0) {
|
|
290
394
|
// Generate columns from data keys
|
|
291
395
|
const sampleRow = tableOptions.data[0];
|
|
292
396
|
return Object.keys(sampleRow).map(key => columnHelper.accessor(key, {
|
|
293
|
-
header: key.charAt(0).toUpperCase() + key.slice(1), // Capitalize key for header
|
|
294
|
-
cell: info =>
|
|
397
|
+
header: this.renderTemplate(this.headerTemplateCache.get(key), key.charAt(0).toUpperCase() + key.slice(1), null) || key.charAt(0).toUpperCase() + key.slice(1), // Capitalize key for header
|
|
398
|
+
cell: (info) => {
|
|
399
|
+
var _a, _b, _c;
|
|
400
|
+
const value = info.getValue();
|
|
401
|
+
const cellAccessors = key;
|
|
402
|
+
const row = info.row;
|
|
403
|
+
return ((_a = this.columnData.find(x => x.accessor === cellAccessors)) === null || _a === void 0 ? void 0 : _a.repeatTemplate) && Array.isArray(value)
|
|
404
|
+
? value.map((item) => {
|
|
405
|
+
var _a, _b;
|
|
406
|
+
return (_b = (_a = (this.renderTemplate(this.templateCache.get(cellAccessors), item, row) ||
|
|
407
|
+
item)) !== null && _a !== void 0 ? _a : value) !== null && _b !== void 0 ? _b : this.fallbackValue;
|
|
408
|
+
})
|
|
409
|
+
: (_c = (_b = (this.renderTemplate(this.templateCache.get(cellAccessors), value, row) ||
|
|
410
|
+
value)) !== null && _b !== void 0 ? _b : value) !== null && _c !== void 0 ? _c : this.fallbackValue;
|
|
411
|
+
},
|
|
295
412
|
enableGlobalFilter: this.enableGlobalFilter,
|
|
296
413
|
}));
|
|
297
414
|
}
|
|
@@ -320,11 +437,11 @@ export class NvDatagrid {
|
|
|
320
437
|
// Replace placeholders in text content, attributes, and properties
|
|
321
438
|
element.querySelectorAll('*').forEach(el => {
|
|
322
439
|
// Replace placeholders in text content
|
|
323
|
-
this.replacePlaceholdersTextContent(el, cellValue);
|
|
440
|
+
this.replacePlaceholdersTextContent(el, cellValue, row);
|
|
324
441
|
// Replace placeholders in attributes
|
|
325
|
-
this.replacePlaceholdersAttributes(el, cellValue);
|
|
442
|
+
this.replacePlaceholdersAttributes(el, cellValue, row);
|
|
326
443
|
// Replace placeholders in properties
|
|
327
|
-
this.replacePlaceholdersProperties(el, cellValue);
|
|
444
|
+
this.replacePlaceholdersProperties(el, cellValue, row);
|
|
328
445
|
});
|
|
329
446
|
// Handle `data-bind-event`
|
|
330
447
|
element.querySelectorAll('[data-bind-event]').forEach(el => {
|
|
@@ -400,56 +517,151 @@ export class NvDatagrid {
|
|
|
400
517
|
}
|
|
401
518
|
}
|
|
402
519
|
// Handle single-level key lookup
|
|
403
|
-
|
|
520
|
+
if (key in cellValue) {
|
|
521
|
+
return String(cellValue[key]);
|
|
522
|
+
}
|
|
523
|
+
else if (Array.isArray(cellValue)) {
|
|
524
|
+
// Handle array of objects
|
|
525
|
+
const response = cellValue.map((item) => {
|
|
526
|
+
if (typeof item !== 'object') {
|
|
527
|
+
return item.toString();
|
|
528
|
+
}
|
|
529
|
+
else if (key in item) {
|
|
530
|
+
return item[key];
|
|
531
|
+
}
|
|
532
|
+
else {
|
|
533
|
+
return item.toString();
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
return response.join(', ');
|
|
537
|
+
}
|
|
538
|
+
return this.fallbackValue;
|
|
404
539
|
}
|
|
405
540
|
// If cellValue is a primitive (string, number, boolean, etc.), return it as a string
|
|
406
541
|
return (_a = cellValue === null || cellValue === void 0 ? void 0 : cellValue.toString()) !== null && _a !== void 0 ? _a : this.fallbackValue;
|
|
407
542
|
}
|
|
408
|
-
replacePlaceholdersTextContent(element, cellValue) {
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
543
|
+
replacePlaceholdersTextContent(element, cellValue, row) {
|
|
544
|
+
if (!cellValue) {
|
|
545
|
+
// ✅ Replace placeholders in text content with the row original value
|
|
546
|
+
// but first get the original value
|
|
547
|
+
const originalValue = row.original;
|
|
548
|
+
element.childNodes.forEach(node => {
|
|
549
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
550
|
+
node.textContent = node.textContent.replace(/__([\w.]+)__/g, (_, key) => {
|
|
551
|
+
if (key in originalValue) {
|
|
552
|
+
return this.replaceKeyWithValue(key, originalValue[key]);
|
|
553
|
+
}
|
|
554
|
+
else {
|
|
555
|
+
console.warn(`Key ${key} not found in originalValue`);
|
|
556
|
+
return '';
|
|
557
|
+
}
|
|
558
|
+
});
|
|
559
|
+
}
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
else {
|
|
563
|
+
// ✅ Replace placeholders in text content
|
|
564
|
+
element.childNodes.forEach(node => {
|
|
565
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
566
|
+
node.textContent = node.textContent.replace(/__([\w.]+)__/g, (_, key) => this.replaceKeyWithValue(key, cellValue));
|
|
567
|
+
}
|
|
568
|
+
});
|
|
569
|
+
}
|
|
415
570
|
}
|
|
416
|
-
replacePlaceholdersAttributes(element, cellValue) {
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
571
|
+
replacePlaceholdersAttributes(element, cellValue, row) {
|
|
572
|
+
if (!cellValue) {
|
|
573
|
+
// ✅ Replace placeholders in attributes with the row original value
|
|
574
|
+
// but first get the original value
|
|
575
|
+
const originalValue = row.original;
|
|
576
|
+
Array.from(element.attributes).forEach(attr => {
|
|
577
|
+
if (attr.value.includes('__')) {
|
|
578
|
+
attr.value = attr.value.replace(/__([\w.]+)__/g, (_, key) => {
|
|
579
|
+
if (key in originalValue) {
|
|
580
|
+
return this.replaceKeyWithValue(key, originalValue[key]);
|
|
581
|
+
}
|
|
582
|
+
else {
|
|
583
|
+
console.warn(`Key ${key} not found in originalValue`);
|
|
584
|
+
return '';
|
|
585
|
+
}
|
|
586
|
+
});
|
|
587
|
+
}
|
|
588
|
+
});
|
|
589
|
+
}
|
|
590
|
+
else {
|
|
591
|
+
// ✅ Replace placeholders in attributes
|
|
592
|
+
Array.from(element.attributes).forEach(attr => {
|
|
593
|
+
if (attr.value.includes('__')) {
|
|
594
|
+
attr.value = attr.value.replace(/__([\w.]+)__/g, (_, key) => this.replaceKeyWithValue(key, cellValue));
|
|
595
|
+
}
|
|
596
|
+
});
|
|
597
|
+
}
|
|
423
598
|
}
|
|
424
|
-
replacePlaceholdersProperties(element, cellValue) {
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
Object.keys(
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
599
|
+
replacePlaceholdersProperties(element, cellValue, row) {
|
|
600
|
+
if (!cellValue) {
|
|
601
|
+
// ✅ Replace placeholders in properties with the row original value
|
|
602
|
+
// but first get the original value
|
|
603
|
+
const originalValue = row.original;
|
|
604
|
+
// ✅ Dynamically extract relevant properties
|
|
605
|
+
const properties = new Set();
|
|
606
|
+
// Collect only own enumerable properties
|
|
607
|
+
Object.keys(originalValue).forEach(key => properties.add(key));
|
|
608
|
+
// Collect inherited properties from prototypes (HTMLElement -> Element -> Node)
|
|
609
|
+
let proto = Object.getPrototypeOf(originalValue);
|
|
610
|
+
while (proto && proto !== HTMLElement.prototype) {
|
|
611
|
+
Object.keys(proto).forEach(key => properties.add(key));
|
|
612
|
+
proto = Object.getPrototypeOf(proto);
|
|
613
|
+
}
|
|
614
|
+
// ✅ Filter and copy only non-function properties and exclude irrelevant ones
|
|
615
|
+
properties.forEach(prop => {
|
|
616
|
+
if (typeof element[prop] !== 'function' && // Ignore methods
|
|
617
|
+
!prop.startsWith('on') && // Ignore event listeners (onclick, oninput, etc.)
|
|
618
|
+
!excludedProps.has(prop) // 🚨 Prevent text duplication and irrelevant props
|
|
619
|
+
) {
|
|
442
620
|
const propValue = element[prop];
|
|
443
|
-
// ✅ Replace placeholders only if the value is a string
|
|
444
621
|
if (typeof propValue === 'string' && propValue.includes('__')) {
|
|
445
|
-
element[prop] = propValue.replace(/__([\w.]+)__/g, (_, key) =>
|
|
622
|
+
element[prop] = propValue.replace(/__([\w.]+)__/g, (_, key) => {
|
|
623
|
+
if (key in originalValue) {
|
|
624
|
+
return this.replaceKeyWithValue(key, originalValue[key]);
|
|
625
|
+
}
|
|
626
|
+
else {
|
|
627
|
+
console.warn(`Key ${key} not found in originalValue`);
|
|
628
|
+
return '';
|
|
629
|
+
}
|
|
630
|
+
});
|
|
446
631
|
}
|
|
447
632
|
}
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
633
|
+
});
|
|
634
|
+
}
|
|
635
|
+
else {
|
|
636
|
+
// ✅ Dynamically extract relevant properties
|
|
637
|
+
const properties = new Set();
|
|
638
|
+
// Collect only own enumerable properties
|
|
639
|
+
Object.keys(element).forEach(key => properties.add(key));
|
|
640
|
+
// Collect inherited properties from prototypes (HTMLElement -> Element -> Node)
|
|
641
|
+
let proto = Object.getPrototypeOf(element);
|
|
642
|
+
while (proto && proto !== HTMLElement.prototype) {
|
|
643
|
+
Object.keys(proto).forEach(key => properties.add(key));
|
|
644
|
+
proto = Object.getPrototypeOf(proto);
|
|
451
645
|
}
|
|
452
|
-
|
|
646
|
+
// ✅ Filter and copy only non-function properties and exclude irrelevant ones
|
|
647
|
+
properties.forEach(prop => {
|
|
648
|
+
if (typeof element[prop] !== 'function' && // Ignore methods
|
|
649
|
+
!prop.startsWith('on') && // Ignore event listeners (onclick, oninput, etc.)
|
|
650
|
+
!excludedProps.has(prop) // 🚨 Prevent text duplication and irrelevant props
|
|
651
|
+
) {
|
|
652
|
+
try {
|
|
653
|
+
const propValue = element[prop];
|
|
654
|
+
// ✅ Replace placeholders only if the value is a string
|
|
655
|
+
if (typeof propValue === 'string' && propValue.includes('__')) {
|
|
656
|
+
element[prop] = propValue.replace(/__([\w.]+)__/g, (_, key) => this.replaceKeyWithValue(key, cellValue)); // ✅ TypeScript safe
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
catch (error) {
|
|
660
|
+
console.warn(`Could not assign property ${prop}:`, error.message);
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
});
|
|
664
|
+
}
|
|
453
665
|
}
|
|
454
666
|
//#endregion METHODS
|
|
455
667
|
/****************************************************************************/
|
|
@@ -483,14 +695,30 @@ export class NvDatagrid {
|
|
|
483
695
|
handleParsedChange() {
|
|
484
696
|
this.initializeTable();
|
|
485
697
|
}
|
|
486
|
-
|
|
698
|
+
handleGlobalFilterSearchTerm(newValue) {
|
|
487
699
|
if (!this.table) {
|
|
488
700
|
console.warn('Table is not initialized yet.');
|
|
489
701
|
return;
|
|
490
702
|
}
|
|
491
|
-
//
|
|
492
|
-
|
|
493
|
-
this.table.setGlobalFilter(newValue)
|
|
703
|
+
// Not working
|
|
704
|
+
/*// Set the global filter for the table
|
|
705
|
+
this.table.setGlobalFilter(newValue);*/
|
|
706
|
+
// Manually update the globalFilter state
|
|
707
|
+
this.table.options.state.globalFilter = newValue;
|
|
708
|
+
}
|
|
709
|
+
handlePaginationState(newValue, oldValue) {
|
|
710
|
+
if (!this.table) {
|
|
711
|
+
console.warn('Table is not initialized yet.');
|
|
712
|
+
return;
|
|
713
|
+
}
|
|
714
|
+
// Only update if there is a meaningful change
|
|
715
|
+
if (JSON.stringify(newValue) !== JSON.stringify(oldValue)) {
|
|
716
|
+
// Not working
|
|
717
|
+
/*// Set the pagination for the table
|
|
718
|
+
this.table.setPagination(newValue);*/
|
|
719
|
+
// Manually update the pagination state
|
|
720
|
+
this.table.options.state.pagination = newValue;
|
|
721
|
+
}
|
|
494
722
|
}
|
|
495
723
|
//#endregion WATCHERS
|
|
496
724
|
/****************************************************************************/
|
|
@@ -499,34 +727,39 @@ export class NvDatagrid {
|
|
|
499
727
|
this.cacheTemplates();
|
|
500
728
|
this.parseDataAndColumns();
|
|
501
729
|
this.initializeTable();
|
|
730
|
+
if (this.enablePagination) {
|
|
731
|
+
// Ensure a valid page size
|
|
732
|
+
const effectivePageSize = this.pageSize > 0 ? this.pageSize : 10;
|
|
733
|
+
this.paginationState = {
|
|
734
|
+
pageIndex: Math.max(0, this.minPageIndex - 1),
|
|
735
|
+
pageSize: effectivePageSize,
|
|
736
|
+
};
|
|
737
|
+
}
|
|
502
738
|
}
|
|
503
739
|
//#endregion EVENTS
|
|
504
740
|
/****************************************************************************/
|
|
505
741
|
//#region RENDER
|
|
506
742
|
render() {
|
|
507
|
-
var _a, _b, _c, _d;
|
|
743
|
+
var _a, _b, _c, _d, _e;
|
|
508
744
|
const headerGroups = !this.table || this.table === undefined || this.parsedColumns.length === 0
|
|
509
745
|
? []
|
|
510
746
|
: (_a = this.table) === null || _a === void 0 ? void 0 : _a.getHeaderGroups();
|
|
511
747
|
const rows = !this.table || this.table === undefined || this.parsedData.length === 0
|
|
512
748
|
? []
|
|
513
749
|
: (_c = (_b = this.table) === null || _b === void 0 ? void 0 : _b.getRowModel()) === null || _c === void 0 ? void 0 : _c.rows;
|
|
514
|
-
return (h(Host, { key: '
|
|
750
|
+
return (h(Host, { key: 'b3886397a5e6694611636d4da7d61ae5ccbe1903' }, h("div", { key: '8fa71d83f4cfa79cf7fb334bcf6115e4cf253c5d', class: "hidden" }, h("slot", { key: '9aad5956b5973cafc486f3a854a66ae86038ef4a' })), h("slot", { key: '7a1ca93223567faffabb3473df2176cd02654247', name: "before" }), this.enableGlobalFilter && this.table && (h("div", { key: '0020880c229d8ed9070c15182191e86b8b3fed1d', class: "search-container" }, h("input", { key: 'cefc47330a7d770c3668d1406930b9ac50992a10', type: "text", value: (_d = this.globalFilterSearchTerm) !== null && _d !== void 0 ? _d : '', onInput: this.handleGlobalFilteringOnInput, placeholder: "Search all columns...", class: "search-input", "aria-label": "Search all columns" }))), this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (h("div", { class: "no-data" }, this.noColumnsNoDataMessage)) : (h("div", null, h("table", null, this.parsedColumns.length > 0 && headerGroups.length > 0 && (h("thead", null, this.parsedColumns.length > 0 && headerGroups
|
|
515
751
|
? headerGroups === null || headerGroups === void 0 ? void 0 : headerGroups.map(headerGroup => (h("tr", { key: headerGroup.id }, headerGroup.headers.map(header => {
|
|
516
752
|
return (h("th", { key: header.id }, header.isPlaceholder
|
|
517
753
|
? null
|
|
518
|
-
: this.
|
|
754
|
+
: this.flexRender(header.column.columnDef.header, header.getContext())));
|
|
519
755
|
}))))
|
|
520
756
|
: null)), h("tbody", null, !rows || rows.length === 0 || this.parsedData.length === 0 ? (h("tr", null, h("td", { colSpan: this.parsedColumns.length || 12, class: "no-data" }, this.noDataMessage))) : (rows.map(row => {
|
|
521
757
|
const rowId = row.id;
|
|
522
758
|
const visibleCells = row === null || row === void 0 ? void 0 : row.getVisibleCells();
|
|
523
759
|
return (h("tr", { key: rowId }, visibleCells.map(cell => {
|
|
524
|
-
|
|
525
|
-
const cellValue = cell.getValue();
|
|
526
|
-
return (h("td", { key: cell.id, "data-row-id": rowId }, this.renderTemplate(this.templateCache.get(cellAccessors), cellValue, row) ||
|
|
527
|
-
(cellValue !== null && cellValue !== void 0 ? cellValue : this.fallbackValue)));
|
|
760
|
+
return (h("td", { key: cell.id, "data-row-id": rowId }, this.flexRender(cell.column.columnDef.cell, cell.getContext())));
|
|
528
761
|
})));
|
|
529
|
-
}))))), h("slot", { key: '
|
|
762
|
+
})))), this.enablePagination && (h("div", { class: "flex items-center gap-2" }, h("button", { class: "border rounded p-1", disabled: !this.table.getCanPreviousPage(), onClick: this.table.firstPage }, "<<"), h("button", { class: "border rounded p-1", disabled: !this.table.getCanPreviousPage(), onClick: this.table.previousPage }, "<"), h("button", { class: "border rounded p-1", disabled: !this.table.getCanNextPage(), onClick: this.table.nextPage }, ">"), h("button", { class: "border rounded p-1", disabled: !this.table.getCanNextPage(), onClick: this.table.lastPage }, ">>"), h("span", { class: "flex items-center gap-1" }, h("div", null, "Page"), h("strong", null, this.table.getState().pagination.pageIndex + 1, " of", ' ', this.table.getPageCount().toLocaleString())), h("span", { class: "flex items-center gap-1" }, "| Go to page:", ' ', h("input", { type: "number", min: this.minPageIndex, max: this.table.getPageCount(), value: this.table.getState().pagination.pageIndex + 1, class: "border p-1 rounded w-16", "aria-label": "Go to page", onInput: this.handlePageIndexChange })), (_e = this.pageSizes) !== null && _e !== void 0 ? _e : (h("select", { "aria-label": "Rows per page", onChange: this.handlePageSizeChange }, this.pageSizes.map(pageSize => (h("option", { value: String(pageSize), selected: this.table.getState().pagination.pageSize === pageSize }, "Show ", pageSize))))))))), h("slot", { key: '2030fdc2b38a293e749f2ffd4645987e834fee76', name: "after" })));
|
|
530
763
|
}
|
|
531
764
|
static get is() { return "nv-datagrid"; }
|
|
532
765
|
static get originalStyleUrls() {
|
|
@@ -753,6 +986,73 @@ export class NvDatagrid {
|
|
|
753
986
|
"attribute": "auto-generate-columns",
|
|
754
987
|
"reflect": true,
|
|
755
988
|
"defaultValue": "false"
|
|
989
|
+
},
|
|
990
|
+
"enablePagination": {
|
|
991
|
+
"type": "boolean",
|
|
992
|
+
"mutable": false,
|
|
993
|
+
"complexType": {
|
|
994
|
+
"original": "boolean",
|
|
995
|
+
"resolved": "boolean",
|
|
996
|
+
"references": {}
|
|
997
|
+
},
|
|
998
|
+
"required": false,
|
|
999
|
+
"optional": false,
|
|
1000
|
+
"docs": {
|
|
1001
|
+
"tags": [{
|
|
1002
|
+
"name": "default",
|
|
1003
|
+
"text": "false"
|
|
1004
|
+
}],
|
|
1005
|
+
"text": "Whether to enable pagination for the data grid."
|
|
1006
|
+
},
|
|
1007
|
+
"getter": false,
|
|
1008
|
+
"setter": false,
|
|
1009
|
+
"attribute": "enable-pagination",
|
|
1010
|
+
"reflect": true,
|
|
1011
|
+
"defaultValue": "false"
|
|
1012
|
+
},
|
|
1013
|
+
"pageSize": {
|
|
1014
|
+
"type": "number",
|
|
1015
|
+
"mutable": false,
|
|
1016
|
+
"complexType": {
|
|
1017
|
+
"original": "number",
|
|
1018
|
+
"resolved": "number",
|
|
1019
|
+
"references": {}
|
|
1020
|
+
},
|
|
1021
|
+
"required": false,
|
|
1022
|
+
"optional": false,
|
|
1023
|
+
"docs": {
|
|
1024
|
+
"tags": [{
|
|
1025
|
+
"name": "default",
|
|
1026
|
+
"text": "10"
|
|
1027
|
+
}],
|
|
1028
|
+
"text": "The number of rows to display per page."
|
|
1029
|
+
},
|
|
1030
|
+
"getter": false,
|
|
1031
|
+
"setter": false,
|
|
1032
|
+
"attribute": "page-size",
|
|
1033
|
+
"reflect": true,
|
|
1034
|
+
"defaultValue": "10"
|
|
1035
|
+
},
|
|
1036
|
+
"pageSizes": {
|
|
1037
|
+
"type": "unknown",
|
|
1038
|
+
"mutable": false,
|
|
1039
|
+
"complexType": {
|
|
1040
|
+
"original": "number[]",
|
|
1041
|
+
"resolved": "number[]",
|
|
1042
|
+
"references": {}
|
|
1043
|
+
},
|
|
1044
|
+
"required": false,
|
|
1045
|
+
"optional": false,
|
|
1046
|
+
"docs": {
|
|
1047
|
+
"tags": [{
|
|
1048
|
+
"name": "default",
|
|
1049
|
+
"text": "[10, 20, 30, 40, 50]"
|
|
1050
|
+
}],
|
|
1051
|
+
"text": "The array of page sizes to display in the pagination dropdown."
|
|
1052
|
+
},
|
|
1053
|
+
"getter": false,
|
|
1054
|
+
"setter": false,
|
|
1055
|
+
"defaultValue": "[10, 20, 30, 40, 50]"
|
|
756
1056
|
}
|
|
757
1057
|
};
|
|
758
1058
|
}
|
|
@@ -761,7 +1061,9 @@ export class NvDatagrid {
|
|
|
761
1061
|
"table": {},
|
|
762
1062
|
"parsedColumns": {},
|
|
763
1063
|
"parsedData": {},
|
|
764
|
-
"
|
|
1064
|
+
"globalFilterSearchTerm": {},
|
|
1065
|
+
"columnData": {},
|
|
1066
|
+
"paginationState": {}
|
|
765
1067
|
};
|
|
766
1068
|
}
|
|
767
1069
|
static get events() {
|
|
@@ -809,8 +1111,11 @@ export class NvDatagrid {
|
|
|
809
1111
|
"propName": "parsedData",
|
|
810
1112
|
"methodName": "handleParsedChange"
|
|
811
1113
|
}, {
|
|
812
|
-
"propName": "
|
|
813
|
-
"methodName": "
|
|
1114
|
+
"propName": "globalFilterSearchTerm",
|
|
1115
|
+
"methodName": "handleGlobalFilterSearchTerm"
|
|
1116
|
+
}, {
|
|
1117
|
+
"propName": "paginationState",
|
|
1118
|
+
"methodName": "handlePaginationState"
|
|
814
1119
|
}];
|
|
815
1120
|
}
|
|
816
1121
|
}
|