@nova-design-system/nova-webcomponents 3.0.0-beta.27 → 3.0.0-beta.29
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/LICENSE.MD +61 -108
- package/dist/blazor-docs.json +2102 -485
- package/dist/cjs/{app-globals-d8cbb987.js → app-globals-69764290.js} +2 -2
- package/dist/cjs/{app-globals-d8cbb987.js.map → app-globals-69764290.js.map} +1 -1
- package/dist/cjs/{index-c50face0.js → index-72b8a9ad.js} +886 -479
- package/dist/cjs/index-72b8a9ad.js.map +1 -0
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/native.cjs.js +4 -4
- package/dist/cjs/native.cjs.js.map +1 -1
- package/dist/cjs/nv-alert.cjs.entry.js +22 -9
- package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-avatar.cjs.entry.js +8 -11
- package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-badge.cjs.entry.js +40 -14
- package/dist/cjs/nv-badge.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-base.cjs.entry.js +1 -1
- package/dist/cjs/nv-button.cjs.entry.js +40 -8
- package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-col.cjs.entry.js +1 -2
- package/dist/cjs/nv-col.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-datagrid.cjs.entry.js +3252 -0
- package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-datagridbody.cjs.entry.js +24 -0
- package/dist/cjs/nv-datagridbody.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-datagridcolumn.cjs.entry.js +25 -0
- package/dist/cjs/nv-datagridcolumn.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-datagriddatacell.cjs.entry.js +25 -0
- package/dist/cjs/nv-datagriddatacell.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-datagridhead.cjs.entry.js +24 -0
- package/dist/cjs/nv-datagridhead.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-datagridrow.cjs.entry.js +24 -0
- package/dist/cjs/nv-datagridrow.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +44 -13
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +61 -22
- package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +12 -6
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldnumber.cjs.entry.js +47 -21
- package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +65 -24
- package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldradio.cjs.entry.js +29 -11
- package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldselect.cjs.entry.js +64 -23
- package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtext.cjs.entry.js +55 -25
- package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js +61 -23
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtoggle.cjs.entry.js +27 -10
- package/dist/cjs/nv-fieldtoggle.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-icon.cjs.entry.js +5 -10
- package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-iconbutton.cjs.entry.js +43 -10
- package/dist/cjs/nv-iconbutton.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-loader.cjs.entry.js +9 -3
- package/dist/cjs/nv-loader.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-menu.cjs.entry.js +21 -2
- package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-menuitem.cjs.entry.js +8 -4
- package/dist/cjs/nv-menuitem.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-popover.cjs.entry.js +49 -13
- package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-row.cjs.entry.js +2 -2
- package/dist/cjs/nv-row.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-stack.cjs.entry.js +8 -6
- package/dist/cjs/nv-stack.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-table.cjs.entry.js +155 -0
- package/dist/cjs/nv-table.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-tablebody.cjs.entry.js +24 -0
- package/dist/cjs/nv-tablebody.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-tablecolumn.cjs.entry.js +41 -0
- package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-tabledatacell.cjs.entry.js +43 -0
- package/dist/cjs/nv-tabledatacell.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-tablehead.cjs.entry.js +24 -0
- package/dist/cjs/nv-tablehead.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-tablerow.cjs.entry.js +24 -0
- package/dist/cjs/nv-tablerow.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-tooltip.cjs.entry.js +12 -3
- package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
- package/dist/collection/collection-manifest.json +13 -1
- package/dist/collection/components/nv-alert/nv-alert.js +37 -8
- package/dist/collection/components/nv-alert/nv-alert.js.map +1 -1
- package/dist/collection/components/nv-avatar/nv-avatar.js +31 -10
- package/dist/collection/components/nv-avatar/nv-avatar.js.map +1 -1
- package/dist/collection/components/nv-badge/nv-badge.css +70 -0
- package/dist/collection/components/nv-badge/nv-badge.docs.js +1 -1
- package/dist/collection/components/nv-badge/nv-badge.docs.js.map +1 -1
- package/dist/collection/components/nv-badge/nv-badge.js +57 -13
- package/dist/collection/components/nv-badge/nv-badge.js.map +1 -1
- package/dist/collection/components/nv-button/nv-button.js +53 -7
- package/dist/collection/components/nv-button/nv-button.js.map +1 -1
- package/dist/collection/components/nv-col/nv-col.js +2 -3
- package/dist/collection/components/nv-col/nv-col.js.map +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.css +5 -0
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +225 -0
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -0
- package/dist/collection/components/nv-datagrid/nv-datagrid.js +479 -0
- package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -0
- package/dist/collection/components/nv-datagridbody/nv-datagridbody.css +0 -0
- package/dist/collection/components/nv-datagridbody/nv-datagridbody.docs.js +8 -0
- package/dist/collection/components/nv-datagridbody/nv-datagridbody.docs.js.map +1 -0
- package/dist/collection/components/nv-datagridbody/nv-datagridbody.js +23 -0
- package/dist/collection/components/nv-datagridbody/nv-datagridbody.js.map +1 -0
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.css +0 -0
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.docs.js +6 -0
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.docs.js.map +1 -0
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +66 -0
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +1 -0
- package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.css +0 -0
- package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.docs.js +6 -0
- package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.docs.js.map +1 -0
- package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js +50 -0
- package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js.map +1 -0
- package/dist/collection/components/nv-datagridhead/nv-datagridhead.css +0 -0
- package/dist/collection/components/nv-datagridhead/nv-datagridhead.docs.js +8 -0
- package/dist/collection/components/nv-datagridhead/nv-datagridhead.docs.js.map +1 -0
- package/dist/collection/components/nv-datagridhead/nv-datagridhead.js +23 -0
- package/dist/collection/components/nv-datagridhead/nv-datagridhead.js.map +1 -0
- package/dist/collection/components/nv-datagridrow/nv-datagridrow.css +0 -0
- package/dist/collection/components/nv-datagridrow/nv-datagridrow.docs.js +8 -0
- package/dist/collection/components/nv-datagridrow/nv-datagridrow.docs.js.map +1 -0
- package/dist/collection/components/nv-datagridrow/nv-datagridrow.js +23 -0
- package/dist/collection/components/nv-datagridrow/nv-datagridrow.js.map +1 -0
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +77 -12
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +90 -21
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
- package/dist/collection/components/nv-fielddropdownitem/DropdownItemSelectedEventDetail.js.map +1 -1
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +19 -5
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +80 -20
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +102 -23
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +52 -10
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +93 -22
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +96 -24
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +101 -25
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
- package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js +46 -9
- package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js.map +1 -1
- package/dist/collection/components/nv-icon/nv-icon.js +20 -9
- package/dist/collection/components/nv-icon/nv-icon.js.map +1 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +58 -9
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +1 -1
- package/dist/collection/components/nv-loader/nv-loader.js +12 -2
- package/dist/collection/components/nv-loader/nv-loader.js.map +1 -1
- package/dist/collection/components/nv-menu/nv-menu.js +28 -1
- package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.js +15 -3
- package/dist/collection/components/nv-menuitem/nv-menuitem.js.map +1 -1
- package/dist/collection/components/nv-popover/nv-popover.js +71 -13
- 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-row/nv-row.js.map +1 -1
- package/dist/collection/components/nv-stack/nv-stack.js +17 -5
- package/dist/collection/components/nv-stack/nv-stack.js.map +1 -1
- package/dist/collection/components/nv-table/nv-table.css +5 -0
- package/dist/collection/components/nv-table/nv-table.docs.js +178 -0
- package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -0
- package/dist/collection/components/nv-table/nv-table.js +320 -0
- package/dist/collection/components/nv-table/nv-table.js.map +1 -0
- package/dist/collection/components/nv-tablebody/nv-tablebody.css +0 -0
- package/dist/collection/components/nv-tablebody/nv-tablebody.docs.js +8 -0
- package/dist/collection/components/nv-tablebody/nv-tablebody.docs.js.map +1 -0
- package/dist/collection/components/nv-tablebody/nv-tablebody.js +23 -0
- package/dist/collection/components/nv-tablebody/nv-tablebody.js.map +1 -0
- package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.css +0 -0
- package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js +6 -0
- package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.docs.js.map +1 -0
- package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +152 -0
- package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +1 -0
- package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.css +0 -0
- package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.docs.js +6 -0
- package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.docs.js.map +1 -0
- package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js +116 -0
- package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js.map +1 -0
- package/dist/collection/components/nv-tablehead/nv-tablehead.css +0 -0
- package/dist/collection/components/nv-tablehead/nv-tablehead.docs.js +8 -0
- package/dist/collection/components/nv-tablehead/nv-tablehead.docs.js.map +1 -0
- package/dist/collection/components/nv-tablehead/nv-tablehead.js +23 -0
- package/dist/collection/components/nv-tablehead/nv-tablehead.js.map +1 -0
- package/dist/collection/components/nv-tablerow/nv-tablerow.css +0 -0
- package/dist/collection/components/nv-tablerow/nv-tablerow.docs.js +8 -0
- package/dist/collection/components/nv-tablerow/nv-tablerow.docs.js.map +1 -0
- package/dist/collection/components/nv-tablerow/nv-tablerow.js +23 -0
- package/dist/collection/components/nv-tablerow/nv-tablerow.js.map +1 -0
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +17 -2
- package/dist/collection/components/nv-tooltip/nv-tooltip.js.map +1 -1
- package/dist/collection/dev/dev-components.js +1 -1
- package/dist/collection/dev/dev-components.js.map +1 -1
- package/dist/collection/interfaces/Column.js +2 -0
- package/dist/collection/interfaces/Column.js.map +1 -0
- package/dist/components/index.js +3 -3
- package/dist/components/nv-alert.js +23 -10
- package/dist/components/nv-alert.js.map +1 -1
- package/dist/components/nv-avatar.js +9 -12
- package/dist/components/nv-avatar.js.map +1 -1
- package/dist/components/nv-badge.js +41 -15
- package/dist/components/nv-badge.js.map +1 -1
- package/dist/components/nv-base.js +1 -1
- package/dist/components/nv-button.js +41 -9
- package/dist/components/nv-button.js.map +1 -1
- package/dist/components/nv-col.js +1 -2
- package/dist/components/nv-col.js.map +1 -1
- package/dist/components/nv-datagrid.d.ts +11 -0
- package/dist/components/nv-datagrid.js +3285 -0
- package/dist/components/nv-datagrid.js.map +1 -0
- package/dist/components/nv-datagridbody.d.ts +11 -0
- package/dist/components/nv-datagridbody.js +38 -0
- package/dist/components/nv-datagridbody.js.map +1 -0
- package/dist/components/nv-datagridcolumn.d.ts +11 -0
- package/dist/components/nv-datagridcolumn.js +42 -0
- package/dist/components/nv-datagridcolumn.js.map +1 -0
- package/dist/components/nv-datagriddatacell.d.ts +11 -0
- package/dist/components/nv-datagriddatacell.js +41 -0
- package/dist/components/nv-datagriddatacell.js.map +1 -0
- package/dist/components/nv-datagridhead.d.ts +11 -0
- package/dist/components/nv-datagridhead.js +38 -0
- package/dist/components/nv-datagridhead.js.map +1 -0
- package/dist/components/nv-datagridrow.d.ts +11 -0
- package/dist/components/nv-datagridrow.js +38 -0
- package/dist/components/nv-datagridrow.js.map +1 -0
- package/dist/components/nv-fieldcheckbox.js +44 -13
- package/dist/components/nv-fieldcheckbox.js.map +1 -1
- package/dist/components/nv-fielddropdown.js +66 -27
- package/dist/components/nv-fielddropdown.js.map +1 -1
- package/dist/components/nv-fielddropdownitem.js +1 -1
- package/dist/components/nv-fieldnumber.js +48 -22
- package/dist/components/nv-fieldnumber.js.map +1 -1
- package/dist/components/nv-fieldpassword.js +68 -27
- package/dist/components/nv-fieldpassword.js.map +1 -1
- package/dist/components/nv-fieldradio.js +29 -11
- package/dist/components/nv-fieldradio.js.map +1 -1
- package/dist/components/nv-fieldselect.js +65 -24
- package/dist/components/nv-fieldselect.js.map +1 -1
- package/dist/components/nv-fieldtext.js +56 -26
- package/dist/components/nv-fieldtext.js.map +1 -1
- package/dist/components/nv-fieldtextarea.js +62 -24
- package/dist/components/nv-fieldtextarea.js.map +1 -1
- package/dist/components/nv-fieldtoggle.js +27 -10
- package/dist/components/nv-fieldtoggle.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 +22 -3
- package/dist/components/nv-menu.js.map +1 -1
- package/dist/components/nv-menuitem.js +9 -5
- package/dist/components/nv-menuitem.js.map +1 -1
- package/dist/components/nv-popover.js +1 -1
- package/dist/components/nv-row.js +2 -2
- package/dist/components/nv-row.js.map +1 -1
- package/dist/components/nv-stack.js +8 -6
- package/dist/components/nv-stack.js.map +1 -1
- package/dist/components/nv-table.d.ts +11 -0
- package/dist/components/nv-table.js +185 -0
- package/dist/components/nv-table.js.map +1 -0
- package/dist/components/nv-tablebody.d.ts +11 -0
- package/dist/components/nv-tablebody.js +38 -0
- package/dist/components/nv-tablebody.js.map +1 -0
- package/dist/components/nv-tablecolumn.d.ts +11 -0
- package/dist/components/nv-tablecolumn.js +61 -0
- package/dist/components/nv-tablecolumn.js.map +1 -0
- package/dist/components/nv-tabledatacell.d.ts +11 -0
- package/dist/components/nv-tabledatacell.js +61 -0
- package/dist/components/nv-tabledatacell.js.map +1 -0
- package/dist/components/nv-tablehead.d.ts +11 -0
- package/dist/components/nv-tablehead.js +38 -0
- package/dist/components/nv-tablehead.js.map +1 -0
- package/dist/components/nv-tablerow.d.ts +11 -0
- package/dist/components/nv-tablerow.js +38 -0
- package/dist/components/nv-tablerow.js.map +1 -0
- package/dist/components/nv-tooltip.js +13 -4
- package/dist/components/nv-tooltip.js.map +1 -1
- package/dist/components/{p-d506ae63.js → p-0caa4741.js} +836 -491
- package/dist/components/p-0caa4741.js.map +1 -0
- package/dist/components/{p-9be1ebd4.js → p-39e93e5b.js} +6 -11
- package/dist/components/p-39e93e5b.js.map +1 -0
- package/dist/components/{p-69cc7819.js → p-3ef4ded9.js} +10 -4
- package/dist/components/p-3ef4ded9.js.map +1 -0
- package/dist/components/{p-ff97f99e.js → p-54ea8e62.js} +51 -15
- package/dist/components/p-54ea8e62.js.map +1 -0
- package/dist/components/{p-76eb28db.js → p-6c1b9782.js} +14 -8
- package/dist/components/p-6c1b9782.js.map +1 -0
- package/dist/components/{p-ae6a0d80.js → p-c08a278d.js} +207 -172
- package/dist/components/p-c08a278d.js.map +1 -0
- package/dist/components/{p-9647924f.js → p-f0d5586a.js} +46 -13
- package/dist/components/p-f0d5586a.js.map +1 -0
- package/dist/docs.d.ts +8 -0
- package/dist/docs.json +2068 -518
- package/dist/esm/{app-globals-eea8674a.js → app-globals-c5484a00.js} +2 -2
- package/dist/esm/{app-globals-eea8674a.js.map → app-globals-c5484a00.js.map} +1 -1
- package/dist/esm/{index-e7b35c14.js → index-b6f70e4a.js} +886 -479
- package/dist/esm/index-b6f70e4a.js.map +1 -0
- package/dist/esm/loader.js +4 -4
- package/dist/esm/native.js +5 -5
- package/dist/esm/native.js.map +1 -1
- package/dist/esm/nv-alert.entry.js +22 -9
- package/dist/esm/nv-alert.entry.js.map +1 -1
- package/dist/esm/nv-avatar.entry.js +8 -11
- package/dist/esm/nv-avatar.entry.js.map +1 -1
- package/dist/esm/nv-badge.entry.js +40 -14
- package/dist/esm/nv-badge.entry.js.map +1 -1
- package/dist/esm/nv-base.entry.js +1 -1
- package/dist/esm/nv-button.entry.js +40 -8
- package/dist/esm/nv-button.entry.js.map +1 -1
- package/dist/esm/nv-col.entry.js +1 -2
- package/dist/esm/nv-col.entry.js.map +1 -1
- package/dist/esm/nv-datagrid.entry.js +3248 -0
- package/dist/esm/nv-datagrid.entry.js.map +1 -0
- package/dist/esm/nv-datagridbody.entry.js +20 -0
- package/dist/esm/nv-datagridbody.entry.js.map +1 -0
- package/dist/esm/nv-datagridcolumn.entry.js +21 -0
- package/dist/esm/nv-datagridcolumn.entry.js.map +1 -0
- package/dist/esm/nv-datagriddatacell.entry.js +21 -0
- package/dist/esm/nv-datagriddatacell.entry.js.map +1 -0
- package/dist/esm/nv-datagridhead.entry.js +20 -0
- package/dist/esm/nv-datagridhead.entry.js.map +1 -0
- package/dist/esm/nv-datagridrow.entry.js +20 -0
- package/dist/esm/nv-datagridrow.entry.js.map +1 -0
- package/dist/esm/nv-fieldcheckbox.entry.js +44 -13
- package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdown.entry.js +61 -22
- package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdownitem.entry.js +12 -6
- package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
- package/dist/esm/nv-fieldnumber.entry.js +47 -21
- package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
- package/dist/esm/nv-fieldpassword.entry.js +65 -24
- package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
- package/dist/esm/nv-fieldradio.entry.js +29 -11
- package/dist/esm/nv-fieldradio.entry.js.map +1 -1
- package/dist/esm/nv-fieldselect.entry.js +64 -23
- package/dist/esm/nv-fieldselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldtext.entry.js +55 -25
- package/dist/esm/nv-fieldtext.entry.js.map +1 -1
- package/dist/esm/nv-fieldtextarea.entry.js +61 -23
- package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
- package/dist/esm/nv-fieldtoggle.entry.js +27 -10
- package/dist/esm/nv-fieldtoggle.entry.js.map +1 -1
- package/dist/esm/nv-icon.entry.js +5 -10
- package/dist/esm/nv-icon.entry.js.map +1 -1
- package/dist/esm/nv-iconbutton.entry.js +43 -10
- package/dist/esm/nv-iconbutton.entry.js.map +1 -1
- package/dist/esm/nv-loader.entry.js +9 -3
- package/dist/esm/nv-loader.entry.js.map +1 -1
- package/dist/esm/nv-menu.entry.js +21 -2
- package/dist/esm/nv-menu.entry.js.map +1 -1
- package/dist/esm/nv-menuitem.entry.js +8 -4
- package/dist/esm/nv-menuitem.entry.js.map +1 -1
- package/dist/esm/nv-popover.entry.js +49 -13
- package/dist/esm/nv-popover.entry.js.map +1 -1
- package/dist/esm/nv-row.entry.js +2 -2
- package/dist/esm/nv-row.entry.js.map +1 -1
- package/dist/esm/nv-stack.entry.js +8 -6
- package/dist/esm/nv-stack.entry.js.map +1 -1
- package/dist/esm/nv-table.entry.js +151 -0
- package/dist/esm/nv-table.entry.js.map +1 -0
- package/dist/esm/nv-tablebody.entry.js +20 -0
- package/dist/esm/nv-tablebody.entry.js.map +1 -0
- package/dist/esm/nv-tablecolumn.entry.js +37 -0
- package/dist/esm/nv-tablecolumn.entry.js.map +1 -0
- package/dist/esm/nv-tabledatacell.entry.js +39 -0
- package/dist/esm/nv-tabledatacell.entry.js.map +1 -0
- package/dist/esm/nv-tablehead.entry.js +20 -0
- package/dist/esm/nv-tablehead.entry.js.map +1 -0
- package/dist/esm/nv-tablerow.entry.js +20 -0
- package/dist/esm/nv-tablerow.entry.js.map +1 -0
- package/dist/esm/nv-tooltip.entry.js +12 -3
- package/dist/esm/nv-tooltip.entry.js.map +1 -1
- package/dist/native/native.css +1 -1
- package/dist/native/native.esm.js +1 -1
- package/dist/native/native.esm.js.map +1 -1
- package/dist/native/{p-20ea1b61.entry.js → p-01262eaf.entry.js} +2 -2
- package/dist/native/p-01262eaf.entry.js.map +1 -0
- package/dist/native/p-0bf2007c.entry.js +2 -0
- package/dist/native/p-0bf2007c.entry.js.map +1 -0
- package/dist/native/{p-69ca8c88.entry.js → p-11faaf31.entry.js} +2 -2
- package/dist/native/p-11faaf31.entry.js.map +1 -0
- package/dist/native/p-17dba26d.entry.js +2 -0
- package/dist/native/p-17dba26d.entry.js.map +1 -0
- package/dist/native/{p-bb243eaf.entry.js → p-25e410c1.entry.js} +2 -2
- package/dist/native/p-25e410c1.entry.js.map +1 -0
- package/dist/native/{p-5172aa15.entry.js → p-2a6ca749.entry.js} +2 -2
- package/dist/native/p-2a6ca749.entry.js.map +1 -0
- package/dist/native/p-327fa1a0.entry.js +2 -0
- package/dist/native/p-327fa1a0.entry.js.map +1 -0
- package/dist/native/p-3bc5875e.entry.js +2 -0
- package/dist/native/p-3bc5875e.entry.js.map +1 -0
- package/dist/native/p-47c78fe4.entry.js +2 -0
- package/dist/native/p-47c78fe4.entry.js.map +1 -0
- package/dist/native/{p-d4e0b6e1.entry.js → p-4a64f5b0.entry.js} +2 -2
- package/dist/native/p-4a64f5b0.entry.js.map +1 -0
- package/dist/native/{p-4a43953f.entry.js → p-50c31094.entry.js} +2 -2
- package/dist/native/p-50c31094.entry.js.map +1 -0
- package/dist/native/{p-a59ec107.entry.js → p-605f8b3d.entry.js} +2 -2
- package/dist/native/p-605f8b3d.entry.js.map +1 -0
- package/dist/native/p-64ae9a21.entry.js +2 -0
- package/dist/native/p-64ae9a21.entry.js.map +1 -0
- package/dist/native/{p-c16a4fbe.entry.js → p-6e8bcd5b.entry.js} +2 -2
- package/dist/native/p-6e8bcd5b.entry.js.map +1 -0
- package/dist/native/{p-89468485.entry.js → p-6eb50254.entry.js} +2 -2
- package/dist/native/p-6eb50254.entry.js.map +1 -0
- package/dist/native/p-6ef216c4.js +3 -0
- package/dist/native/p-6ef216c4.js.map +1 -0
- package/dist/native/{p-1aaee302.entry.js → p-7701e4cc.entry.js} +2 -2
- package/dist/native/p-7701e4cc.entry.js.map +1 -0
- package/dist/native/p-86947929.entry.js +2 -0
- package/dist/native/p-86947929.entry.js.map +1 -0
- package/dist/native/p-8bfdda07.entry.js +2 -0
- package/dist/native/p-8bfdda07.entry.js.map +1 -0
- package/dist/native/p-8f95f4fa.entry.js +2 -0
- package/dist/native/p-8f95f4fa.entry.js.map +1 -0
- package/dist/native/{p-23b20b80.entry.js → p-919cf3ec.entry.js} +2 -2
- package/dist/native/p-919cf3ec.entry.js.map +1 -0
- package/dist/native/p-93eea6e1.entry.js +2 -0
- package/dist/native/p-93eea6e1.entry.js.map +1 -0
- package/dist/native/p-95714583.js +2 -0
- package/dist/native/p-9f89229b.entry.js +2 -0
- package/dist/native/{p-2fca31c0.entry.js.map → p-9f89229b.entry.js.map} +1 -1
- package/dist/native/{p-8de6396f.entry.js → p-a64baca2.entry.js} +2 -2
- package/dist/native/p-a64baca2.entry.js.map +1 -0
- package/dist/native/{p-a016e4b6.entry.js → p-a89f5542.entry.js} +2 -2
- package/dist/native/p-a89f5542.entry.js.map +1 -0
- package/dist/native/p-b3ec71c9.entry.js +2 -0
- package/dist/native/p-b3ec71c9.entry.js.map +1 -0
- package/dist/native/p-bbe9a373.entry.js +2 -0
- package/dist/native/p-bbe9a373.entry.js.map +1 -0
- package/dist/native/p-c2dfee1a.entry.js +2 -0
- package/dist/native/{p-4b550f95.entry.js.map → p-c2dfee1a.entry.js.map} +1 -1
- package/dist/native/{p-71fbdb92.entry.js → p-c5e3e234.entry.js} +2 -2
- package/dist/native/p-c5e3e234.entry.js.map +1 -0
- package/dist/native/{p-4fae1b2c.entry.js → p-c5e7ecc8.entry.js} +2 -2
- package/dist/native/p-c5e7ecc8.entry.js.map +1 -0
- package/dist/native/p-c85d031d.entry.js +13 -0
- package/dist/native/p-c85d031d.entry.js.map +1 -0
- package/dist/native/{p-396b65bb.entry.js → p-cd75ee63.entry.js} +2 -2
- package/dist/native/p-cd75ee63.entry.js.map +1 -0
- package/dist/native/{p-aeaa326f.entry.js → p-d4277c50.entry.js} +2 -2
- package/dist/native/p-d4277c50.entry.js.map +1 -0
- package/dist/native/{p-25e1bc94.entry.js → p-df6c9137.entry.js} +2 -2
- package/dist/native/p-df6c9137.entry.js.map +1 -0
- package/dist/native/{p-330c929d.entry.js → p-e71fc762.entry.js} +2 -2
- package/dist/native/p-ef7f605a.entry.js +2 -0
- package/dist/native/p-ef7f605a.entry.js.map +1 -0
- package/dist/native/p-f2e31579.entry.js +2 -0
- package/dist/native/p-f2e31579.entry.js.map +1 -0
- package/dist/native/{p-000749ae.entry.js → p-fa8a8b21.entry.js} +2 -2
- package/dist/native/p-fa8a8b21.entry.js.map +1 -0
- package/dist/types/components/nv-badge/nv-badge.d.ts +1 -1
- package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +87 -0
- package/dist/types/components/nv-datagrid/nv-datagrid.docs.d.ts +4 -0
- package/dist/types/components/nv-datagridbody/nv-datagridbody.d.ts +7 -0
- package/dist/types/components/nv-datagridbody/nv-datagridbody.docs.d.ts +4 -0
- package/dist/types/components/nv-datagridcolumn/nv-datagridcolumn.d.ts +16 -0
- package/dist/types/components/nv-datagridcolumn/nv-datagridcolumn.docs.d.ts +4 -0
- package/dist/types/components/nv-datagriddatacell/nv-datagriddatacell.d.ts +14 -0
- package/dist/types/components/nv-datagriddatacell/nv-datagriddatacell.docs.d.ts +4 -0
- package/dist/types/components/nv-datagridhead/nv-datagridhead.d.ts +7 -0
- package/dist/types/components/nv-datagridhead/nv-datagridhead.docs.d.ts +4 -0
- package/dist/types/components/nv-datagridrow/nv-datagridrow.d.ts +7 -0
- package/dist/types/components/nv-datagridrow/nv-datagridrow.docs.d.ts +4 -0
- package/dist/types/components/nv-fielddropdownitem/DropdownItemSelectedEventDetail.d.ts +12 -0
- package/dist/types/components/nv-fieldtextarea/nv-fieldtextarea.d.ts +2 -2
- package/dist/types/components/nv-fieldtoggle/nv-fieldtoggle.d.ts +4 -4
- package/dist/types/components/nv-menuitem/nv-menuitem.d.ts +3 -0
- package/dist/types/components/nv-table/nv-table.d.ts +72 -0
- package/dist/types/components/nv-table/nv-table.docs.d.ts +4 -0
- package/dist/types/components/nv-tablebody/nv-tablebody.d.ts +7 -0
- package/dist/types/components/nv-tablebody/nv-tablebody.docs.d.ts +4 -0
- package/dist/types/components/nv-tablecolumn/nv-tablecolumn.d.ts +51 -0
- package/dist/types/components/nv-tablecolumn/nv-tablecolumn.docs.d.ts +4 -0
- package/dist/types/components/nv-tabledatacell/nv-tabledatacell.d.ts +30 -0
- package/dist/types/components/nv-tabledatacell/nv-tabledatacell.docs.d.ts +4 -0
- package/dist/types/components/nv-tablehead/nv-tablehead.d.ts +7 -0
- package/dist/types/components/nv-tablehead/nv-tablehead.docs.d.ts +4 -0
- package/dist/types/components/nv-tablerow/nv-tablerow.d.ts +7 -0
- package/dist/types/components/nv-tablerow/nv-tablerow.docs.d.ts +4 -0
- package/dist/types/components.d.ts +410 -10
- package/dist/types/interfaces/Column.d.ts +13 -0
- package/dist/types/nova-docs.d.ts +18 -0
- package/dist/vscode-data.json +3659 -0
- package/hydrate/index.js +5731 -1255
- package/hydrate/index.mjs +5731 -1255
- package/package.json +7 -2
- package/readme.md +5 -1
- package/dist/cjs/index-c50face0.js.map +0 -1
- package/dist/components/p-69cc7819.js.map +0 -1
- package/dist/components/p-76eb28db.js.map +0 -1
- package/dist/components/p-9647924f.js.map +0 -1
- package/dist/components/p-9be1ebd4.js.map +0 -1
- package/dist/components/p-ae6a0d80.js.map +0 -1
- package/dist/components/p-d506ae63.js.map +0 -1
- package/dist/components/p-ff97f99e.js.map +0 -1
- package/dist/esm/index-e7b35c14.js.map +0 -1
- package/dist/native/p-000749ae.entry.js.map +0 -1
- package/dist/native/p-0d335326.entry.js +0 -2
- package/dist/native/p-0d335326.entry.js.map +0 -1
- package/dist/native/p-1aaee302.entry.js.map +0 -1
- package/dist/native/p-20ea1b61.entry.js.map +0 -1
- package/dist/native/p-23b20b80.entry.js.map +0 -1
- package/dist/native/p-25e1bc94.entry.js.map +0 -1
- package/dist/native/p-2fca31c0.entry.js +0 -2
- package/dist/native/p-396b65bb.entry.js.map +0 -1
- package/dist/native/p-4a43953f.entry.js.map +0 -1
- package/dist/native/p-4b550f95.entry.js +0 -2
- package/dist/native/p-4fae1b2c.entry.js.map +0 -1
- package/dist/native/p-5172aa15.entry.js.map +0 -1
- package/dist/native/p-69ca8c88.entry.js.map +0 -1
- package/dist/native/p-71fbdb92.entry.js.map +0 -1
- package/dist/native/p-89468485.entry.js.map +0 -1
- package/dist/native/p-8de6396f.entry.js.map +0 -1
- package/dist/native/p-a016e4b6.entry.js.map +0 -1
- package/dist/native/p-a59ec107.entry.js.map +0 -1
- package/dist/native/p-aeaa326f.entry.js.map +0 -1
- package/dist/native/p-b4aea326.js +0 -3
- package/dist/native/p-b4aea326.js.map +0 -1
- package/dist/native/p-bb243eaf.entry.js.map +0 -1
- package/dist/native/p-c16a4fbe.entry.js.map +0 -1
- package/dist/native/p-d4e0b6e1.entry.js.map +0 -1
- package/dist/native/p-d5c24d8f.entry.js +0 -2
- package/dist/native/p-d5c24d8f.entry.js.map +0 -1
- package/dist/native/p-ed893068.entry.js +0 -2
- package/dist/native/p-ed893068.entry.js.map +0 -1
- package/dist/native/p-eeb6a3dc.js +0 -2
- /package/dist/native/{p-eeb6a3dc.js.map → p-95714583.js.map} +0 -0
- /package/dist/native/{p-330c929d.entry.js.map → p-e71fc762.entry.js.map} +0 -0
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { h, Host } from "@stencil/core";
|
|
3
|
+
import { createTable, getCoreRowModel, createColumnHelper, } from "@tanstack/table-core";
|
|
4
|
+
/**
|
|
5
|
+
* A flexible data grid component powered by `@tanstack/table-core`.
|
|
6
|
+
* @slot default - Use this slot to insert HTML into the data grid content.
|
|
7
|
+
* @slot head - Use this slot to insert HTML into the data grid header.
|
|
8
|
+
* @slot before - Use this slot to insert HTML before the data grid.
|
|
9
|
+
* @slot after - Use this slot to insert HTML after the data grid.
|
|
10
|
+
* @slot body - Use this slot to insert HTML into the data grid body.
|
|
11
|
+
*/
|
|
12
|
+
export class NvDatagrid {
|
|
13
|
+
constructor() {
|
|
14
|
+
/****************************************************************************/
|
|
15
|
+
//#region STATES
|
|
16
|
+
this.table = null;
|
|
17
|
+
this.parsedColumns = []; // Parsed array
|
|
18
|
+
this.parsedData = []; // Parsed array
|
|
19
|
+
this.hasSlotHead = false;
|
|
20
|
+
this.hasSlotBody = false;
|
|
21
|
+
//#endregion STATES
|
|
22
|
+
/****************************************************************************/
|
|
23
|
+
//#region PROPERTIES
|
|
24
|
+
/**
|
|
25
|
+
* The columns to display in the data grid.
|
|
26
|
+
* @example
|
|
27
|
+
* [
|
|
28
|
+
* {"header":"Name","accessor":"name"},
|
|
29
|
+
* {"header":"Age","accessor":"age"},
|
|
30
|
+
* {"header":"Email","accessor":"email"}
|
|
31
|
+
* ]
|
|
32
|
+
* @default []
|
|
33
|
+
*/
|
|
34
|
+
this.columns = [];
|
|
35
|
+
/**
|
|
36
|
+
* The data to display in the data grid.
|
|
37
|
+
* @example [{ "name": "Alice", "age": 25 }, { "name": "Bob", "age": 30 }]
|
|
38
|
+
* @default []
|
|
39
|
+
*/
|
|
40
|
+
this.data = [];
|
|
41
|
+
/**
|
|
42
|
+
* The message to display when there is no data available.
|
|
43
|
+
* @default 'No data available'
|
|
44
|
+
*/
|
|
45
|
+
this.noDataMessage = 'No data available';
|
|
46
|
+
/**
|
|
47
|
+
* The message to display when there are no columns or data available.
|
|
48
|
+
* @default 'No data or columns available to display.'
|
|
49
|
+
*/
|
|
50
|
+
this.noColumnsNoDataMessage = 'No data or columns available to display.';
|
|
51
|
+
}
|
|
52
|
+
//#endregion PROPERTIES
|
|
53
|
+
/****************************************************************************/
|
|
54
|
+
//#region WATCHERS
|
|
55
|
+
parseColumns(newValue, oldValue) {
|
|
56
|
+
this.parseColumnsArray(newValue, oldValue);
|
|
57
|
+
}
|
|
58
|
+
parseJsonColumns(newValue) {
|
|
59
|
+
try {
|
|
60
|
+
const newItems = newValue ? JSON.parse(newValue) : [];
|
|
61
|
+
this.parseColumnsArray(newItems, this.parsedColumns);
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
console.error('Invalid JSON format for columnsJson:', e.message);
|
|
65
|
+
this.parsedColumns = [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
parseData(newValue, oldValue) {
|
|
69
|
+
this.parseDataArray(newValue, oldValue);
|
|
70
|
+
}
|
|
71
|
+
parseJsonData(newValue) {
|
|
72
|
+
try {
|
|
73
|
+
const newItems = newValue ? JSON.parse(newValue) : [];
|
|
74
|
+
this.parseDataArray(newItems, this.parsedData);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
console.error('Invalid JSON format for dataJson:', e.message);
|
|
78
|
+
this.parsedData = [];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
handleParsedChange() {
|
|
82
|
+
this.initializeTable();
|
|
83
|
+
}
|
|
84
|
+
//#endregion WATCHERS
|
|
85
|
+
/****************************************************************************/
|
|
86
|
+
//#region METHODS
|
|
87
|
+
initializeTable() {
|
|
88
|
+
// Clear the previous table instance (if any)
|
|
89
|
+
this.table = null;
|
|
90
|
+
// Set default options for the table
|
|
91
|
+
const tableOptions = {
|
|
92
|
+
columns: [],
|
|
93
|
+
data: [],
|
|
94
|
+
getCoreRowModel: getCoreRowModel(),
|
|
95
|
+
debugAll: true,
|
|
96
|
+
onStateChange: state => console.log('Table state changed:', state),
|
|
97
|
+
renderFallbackValue: 'No rows to display',
|
|
98
|
+
state: {
|
|
99
|
+
sorting: [], // Default: no active sorting
|
|
100
|
+
columnVisibility: {}, // Default: all columns visible
|
|
101
|
+
columnFilters: [], // Default: no column filters
|
|
102
|
+
columnPinning: {}, // Default: no column pinning
|
|
103
|
+
columnSizing: {}, // Default: no column sizing
|
|
104
|
+
columnOrder: [], // Default: as defined in the `columns`
|
|
105
|
+
pagination: null, // Default: no pagination
|
|
106
|
+
grouping: [], // Default: no active grouping
|
|
107
|
+
expanded: {}, // Default: no expanded rows
|
|
108
|
+
rowPinning: {}, // Default: no row pinning
|
|
109
|
+
rowSelection: {}, // Default: no row selection
|
|
110
|
+
globalFilter: null, // Default: no global filter
|
|
111
|
+
columnSizingInfo: {
|
|
112
|
+
columnSizingStart: null,
|
|
113
|
+
deltaOffset: null,
|
|
114
|
+
deltaPercentage: null,
|
|
115
|
+
isResizingColumn: false,
|
|
116
|
+
startOffset: null,
|
|
117
|
+
startSize: null,
|
|
118
|
+
}, // Default: no column sizing info
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
// Validate and generate column definitions
|
|
122
|
+
const validColumns = this.parsedColumns.filter(column => (column === null || column === void 0 ? void 0 : column.accessor) && (column === null || column === void 0 ? void 0 : column.header));
|
|
123
|
+
// Helper function to generate column definitions
|
|
124
|
+
const generateColumns = () => {
|
|
125
|
+
const columnHelper = createColumnHelper();
|
|
126
|
+
if (validColumns.length > 0) {
|
|
127
|
+
// Use defined columns
|
|
128
|
+
return validColumns.map(column => columnHelper.accessor(column.accessor, {
|
|
129
|
+
header: column.header,
|
|
130
|
+
cell: info => info.getValue(),
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
else if (tableOptions.data && tableOptions.data.length > 0) {
|
|
134
|
+
// Generate columns from data keys
|
|
135
|
+
const sampleRow = tableOptions.data[0];
|
|
136
|
+
return Object.keys(sampleRow).map(key => columnHelper.accessor(key, {
|
|
137
|
+
header: key.charAt(0).toUpperCase() + key.slice(1), // Capitalize key for header
|
|
138
|
+
cell: info => info.getValue(),
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// No columns and no data
|
|
143
|
+
return [];
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
const setTableData = () => {
|
|
147
|
+
if (this.parsedData &&
|
|
148
|
+
Array.isArray(this.parsedData) &&
|
|
149
|
+
this.parsedData.length > 0) {
|
|
150
|
+
return [...this.parsedData];
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
// Update tableOptions based on parsed data and columns
|
|
157
|
+
const hasColumns = validColumns && Array.isArray(validColumns) && validColumns.length > 0;
|
|
158
|
+
const hasData = (this.parsedData &&
|
|
159
|
+
Array.isArray(this.parsedData) &&
|
|
160
|
+
this.parsedData.length > 0) ||
|
|
161
|
+
this.hasSlotBody;
|
|
162
|
+
if (!hasColumns && !hasData) {
|
|
163
|
+
// No columns and no data
|
|
164
|
+
}
|
|
165
|
+
else if (hasColumns && !hasData) {
|
|
166
|
+
tableOptions.columns = generateColumns();
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
// Both columns and data are available
|
|
170
|
+
// No columns and data is available
|
|
171
|
+
tableOptions.data = setTableData();
|
|
172
|
+
tableOptions.columns = generateColumns();
|
|
173
|
+
}
|
|
174
|
+
// Initialize the table
|
|
175
|
+
this.table = createTable(tableOptions);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Parses the columns array.
|
|
179
|
+
* @param {Column[]} newValue - The new value of the columns array.
|
|
180
|
+
* @param {Column[]} oldValue - The old value of the columns array.
|
|
181
|
+
*/
|
|
182
|
+
parseColumnsArray(newValue, oldValue) {
|
|
183
|
+
if (JSON.stringify(newValue) === JSON.stringify(oldValue))
|
|
184
|
+
return; // Deep comparison
|
|
185
|
+
this.parsedColumns = Array.isArray(newValue) ? newValue : [];
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Parses the data array.
|
|
189
|
+
* @param {any[]} newValue - The new value of the data array.
|
|
190
|
+
* @param {any[]} oldValue - The old value of the data array.
|
|
191
|
+
*/
|
|
192
|
+
parseDataArray(newValue, oldValue) {
|
|
193
|
+
if (JSON.stringify(newValue) === JSON.stringify(oldValue))
|
|
194
|
+
return; // Deep comparison
|
|
195
|
+
this.parsedData = Array.isArray(newValue) ? newValue : [];
|
|
196
|
+
}
|
|
197
|
+
//#endregion METHODS
|
|
198
|
+
/****************************************************************************/
|
|
199
|
+
//#region LIFECYCLE
|
|
200
|
+
componentWillLoad() {
|
|
201
|
+
this.hasSlotHead = !!this.el.querySelector('[slot="head"]');
|
|
202
|
+
if (this.hasSlotHead) {
|
|
203
|
+
const headSlot = this.el.querySelector('[slot="head"]');
|
|
204
|
+
const headSlotRows = this.hasSlotHead
|
|
205
|
+
? Array.from(headSlot.querySelectorAll('nv-datagridrow'))
|
|
206
|
+
: [];
|
|
207
|
+
const mappedRows = headSlotRows.map(row => {
|
|
208
|
+
const cells = Array.from(row.querySelectorAll('nv-datagridcolumn'));
|
|
209
|
+
return cells.map(cell => ({
|
|
210
|
+
header: cell.getAttribute('header') || '',
|
|
211
|
+
accessor: cell.getAttribute('accessor') || '',
|
|
212
|
+
}));
|
|
213
|
+
});
|
|
214
|
+
// Flatten the nested arrays into a single array of columns
|
|
215
|
+
const flatMappedColumns = mappedRows.flat();
|
|
216
|
+
this.parsedColumns = flatMappedColumns;
|
|
217
|
+
}
|
|
218
|
+
this.hasSlotBody = !!this.el.querySelector('[slot="body"]');
|
|
219
|
+
if (this.hasSlotBody) {
|
|
220
|
+
const bodySlot = this.el.querySelector('[slot="body"]');
|
|
221
|
+
const bodySlotRows = this.hasSlotBody
|
|
222
|
+
? Array.from(bodySlot.querySelectorAll('nv-datagridrow'))
|
|
223
|
+
: [];
|
|
224
|
+
const mappedRows = bodySlotRows.map(row => {
|
|
225
|
+
const cells = Array.from(row.querySelectorAll('nv-datagriddatacell'));
|
|
226
|
+
return cells.map(cell => {
|
|
227
|
+
return {
|
|
228
|
+
accessor: cell.accessor,
|
|
229
|
+
value: cell.innerHTML,
|
|
230
|
+
};
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
// Flatten the nested arrays into a single array of data
|
|
234
|
+
const flatMappedData = mappedRows.map(row => row.reduce((acc, cell) => {
|
|
235
|
+
acc[cell.accessor] = cell.value;
|
|
236
|
+
return acc;
|
|
237
|
+
}, {}));
|
|
238
|
+
this.parsedData = flatMappedData;
|
|
239
|
+
}
|
|
240
|
+
if (this.columnsJson) {
|
|
241
|
+
this.parseJsonColumns(this.columnsJson);
|
|
242
|
+
}
|
|
243
|
+
else if (this.columns && this.columns.length > 0) {
|
|
244
|
+
this.parseColumns(this.columns, this.parsedColumns);
|
|
245
|
+
}
|
|
246
|
+
if (this.dataJson) {
|
|
247
|
+
this.parseJsonData(this.dataJson);
|
|
248
|
+
}
|
|
249
|
+
else if (this.data && this.data.length > 0) {
|
|
250
|
+
this.parseData(this.data, this.parsedData);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
componentDidLoad() {
|
|
254
|
+
this.initializeTable();
|
|
255
|
+
}
|
|
256
|
+
//#endregion LIFECYCLE
|
|
257
|
+
/****************************************************************************/
|
|
258
|
+
//#region RENDER
|
|
259
|
+
render() {
|
|
260
|
+
var _a, _b, _c;
|
|
261
|
+
const headerGroups = !this.table ||
|
|
262
|
+
this.table === undefined ||
|
|
263
|
+
(this.parsedColumns.length === 0 && !this.hasSlotHead)
|
|
264
|
+
? []
|
|
265
|
+
: (_a = this.table) === null || _a === void 0 ? void 0 : _a.getHeaderGroups();
|
|
266
|
+
const rows = !this.table ||
|
|
267
|
+
this.table === undefined ||
|
|
268
|
+
(this.parsedData.length === 0 && !this.hasSlotBody)
|
|
269
|
+
? []
|
|
270
|
+
: (_c = (_b = this.table) === null || _b === void 0 ? void 0 : _b.getRowModel()) === null || _c === void 0 ? void 0 : _c.rows;
|
|
271
|
+
return (h(Host, { key: '7f3244baba5487f57ba32b6f5e68cbb5794efce9' }, h("div", { key: '35cbeed33a37393ee16dbd06a43fd75e8affb0d6', class: "hidden" }, h("slot", { key: '03458f585639fb906e74c3124f74c38fb2d9d96f' }), h("slot", { key: 'e4862ff4ba814bd34c1d39081be83d11e3884b4a', name: "head" }), h("slot", { key: 'd0d77e8d159590531760052d842b4e461c6e0652', name: "body" })), h("slot", { key: '57150feaf6ac865d838e31edeae0af6d92a9dedb', name: "before" }), this.parsedColumns.length === 0 &&
|
|
272
|
+
this.parsedData.length === 0 &&
|
|
273
|
+
!this.hasSlotHead &&
|
|
274
|
+
!this.hasSlotBody ? (h("p", null, this.noColumnsNoDataMessage)) : (h("table", null, this.parsedColumns.length > 0 && headerGroups.length > 0 && (h("thead", null, this.parsedColumns.length > 0 && headerGroups
|
|
275
|
+
? headerGroups === null || headerGroups === void 0 ? void 0 : headerGroups.map(headerGroup => (h("tr", { key: headerGroup.id }, headerGroup.headers.map(header => (h("th", { key: header.id }, header.isPlaceholder
|
|
276
|
+
? null
|
|
277
|
+
: header.column.columnDef.header))))))
|
|
278
|
+
: null)), h("tbody", null, !rows || rows.length === 0 ? (h("tr", null, h("td", { colSpan: this.parsedColumns.length || 12 }, this.noDataMessage))) : (rows.map(row => {
|
|
279
|
+
const rowId = row.id;
|
|
280
|
+
const visibleCells = row === null || row === void 0 ? void 0 : row.getVisibleCells();
|
|
281
|
+
const cells = visibleCells === null || visibleCells === void 0 ? void 0 : visibleCells.map(cell => {
|
|
282
|
+
const cellValue = cell.getValue();
|
|
283
|
+
return `<td key="${cell.id}" data-row-id="${rowId}">${cellValue}</td>`;
|
|
284
|
+
}).join('');
|
|
285
|
+
return h("tr", { key: rowId, innerHTML: cells });
|
|
286
|
+
}))))), h("slot", { key: '35b4438cfaa83c045d49da21aeb4dc13356242ad', name: "after" })));
|
|
287
|
+
}
|
|
288
|
+
static get is() { return "nv-datagrid"; }
|
|
289
|
+
static get originalStyleUrls() {
|
|
290
|
+
return {
|
|
291
|
+
"$": ["./nv-datagrid.scss"]
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
static get styleUrls() {
|
|
295
|
+
return {
|
|
296
|
+
"$": ["nv-datagrid.css"]
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
static get properties() {
|
|
300
|
+
return {
|
|
301
|
+
"columns": {
|
|
302
|
+
"type": "unknown",
|
|
303
|
+
"mutable": false,
|
|
304
|
+
"complexType": {
|
|
305
|
+
"original": "Column[]",
|
|
306
|
+
"resolved": "Column[]",
|
|
307
|
+
"references": {
|
|
308
|
+
"Column": {
|
|
309
|
+
"location": "import",
|
|
310
|
+
"path": "../../interfaces/Column",
|
|
311
|
+
"id": "src/interfaces/Column.tsx::Column"
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
"required": false,
|
|
316
|
+
"optional": false,
|
|
317
|
+
"docs": {
|
|
318
|
+
"tags": [{
|
|
319
|
+
"name": "example",
|
|
320
|
+
"text": "[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n]"
|
|
321
|
+
}, {
|
|
322
|
+
"name": "default",
|
|
323
|
+
"text": "[]"
|
|
324
|
+
}],
|
|
325
|
+
"text": "The columns to display in the data grid."
|
|
326
|
+
},
|
|
327
|
+
"getter": false,
|
|
328
|
+
"setter": false,
|
|
329
|
+
"defaultValue": "[]"
|
|
330
|
+
},
|
|
331
|
+
"columnsJson": {
|
|
332
|
+
"type": "string",
|
|
333
|
+
"mutable": false,
|
|
334
|
+
"complexType": {
|
|
335
|
+
"original": "string",
|
|
336
|
+
"resolved": "string",
|
|
337
|
+
"references": {}
|
|
338
|
+
},
|
|
339
|
+
"required": false,
|
|
340
|
+
"optional": true,
|
|
341
|
+
"docs": {
|
|
342
|
+
"tags": [{
|
|
343
|
+
"name": "example",
|
|
344
|
+
"text": "`[{\"header\":\"Name\",\"accessor\":\"name\"},{\"header\":\"Age\",\"accessor\":\"age\"},{\"header\":\"Email\",\"accessor\":\"email\"}]`"
|
|
345
|
+
}],
|
|
346
|
+
"text": "The columns to display in the data grid.\nIt can be passed directly as an array of objects or as a JSON string\n(e.g., `[{\"header\":\"Name\",\"accessor\":\"name\"},{\"header\":\"Age\",\"accessor\":\"age\"},{\"header\":\"Email\",\"accessor\":\"email\"}]`).\nIf both `columns` and `columnsJson` are provided, `columns` takes precedence."
|
|
347
|
+
},
|
|
348
|
+
"getter": false,
|
|
349
|
+
"setter": false,
|
|
350
|
+
"attribute": "columns-json",
|
|
351
|
+
"reflect": true
|
|
352
|
+
},
|
|
353
|
+
"data": {
|
|
354
|
+
"type": "unknown",
|
|
355
|
+
"mutable": false,
|
|
356
|
+
"complexType": {
|
|
357
|
+
"original": "any[]",
|
|
358
|
+
"resolved": "any[]",
|
|
359
|
+
"references": {}
|
|
360
|
+
},
|
|
361
|
+
"required": false,
|
|
362
|
+
"optional": false,
|
|
363
|
+
"docs": {
|
|
364
|
+
"tags": [{
|
|
365
|
+
"name": "example",
|
|
366
|
+
"text": "[{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]"
|
|
367
|
+
}, {
|
|
368
|
+
"name": "default",
|
|
369
|
+
"text": "[]"
|
|
370
|
+
}],
|
|
371
|
+
"text": "The data to display in the data grid."
|
|
372
|
+
},
|
|
373
|
+
"getter": false,
|
|
374
|
+
"setter": false,
|
|
375
|
+
"defaultValue": "[]"
|
|
376
|
+
},
|
|
377
|
+
"dataJson": {
|
|
378
|
+
"type": "string",
|
|
379
|
+
"mutable": false,
|
|
380
|
+
"complexType": {
|
|
381
|
+
"original": "string",
|
|
382
|
+
"resolved": "string",
|
|
383
|
+
"references": {}
|
|
384
|
+
},
|
|
385
|
+
"required": false,
|
|
386
|
+
"optional": true,
|
|
387
|
+
"docs": {
|
|
388
|
+
"tags": [{
|
|
389
|
+
"name": "example",
|
|
390
|
+
"text": "`[{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]`"
|
|
391
|
+
}],
|
|
392
|
+
"text": "The data to display in the data grid.\nIt can be passed directly as an array of objects or as a JSON string\n(e.g., `[{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]`).\nIf both `data` and `dataJson` are provided, `data` takes precedence."
|
|
393
|
+
},
|
|
394
|
+
"getter": false,
|
|
395
|
+
"setter": false,
|
|
396
|
+
"attribute": "data-json",
|
|
397
|
+
"reflect": true
|
|
398
|
+
},
|
|
399
|
+
"noDataMessage": {
|
|
400
|
+
"type": "string",
|
|
401
|
+
"mutable": false,
|
|
402
|
+
"complexType": {
|
|
403
|
+
"original": "string",
|
|
404
|
+
"resolved": "string",
|
|
405
|
+
"references": {}
|
|
406
|
+
},
|
|
407
|
+
"required": false,
|
|
408
|
+
"optional": false,
|
|
409
|
+
"docs": {
|
|
410
|
+
"tags": [{
|
|
411
|
+
"name": "default",
|
|
412
|
+
"text": "'No data available'"
|
|
413
|
+
}],
|
|
414
|
+
"text": "The message to display when there is no data available."
|
|
415
|
+
},
|
|
416
|
+
"getter": false,
|
|
417
|
+
"setter": false,
|
|
418
|
+
"attribute": "no-data-message",
|
|
419
|
+
"reflect": false,
|
|
420
|
+
"defaultValue": "'No data available'"
|
|
421
|
+
},
|
|
422
|
+
"noColumnsNoDataMessage": {
|
|
423
|
+
"type": "string",
|
|
424
|
+
"mutable": false,
|
|
425
|
+
"complexType": {
|
|
426
|
+
"original": "string",
|
|
427
|
+
"resolved": "string",
|
|
428
|
+
"references": {}
|
|
429
|
+
},
|
|
430
|
+
"required": false,
|
|
431
|
+
"optional": false,
|
|
432
|
+
"docs": {
|
|
433
|
+
"tags": [{
|
|
434
|
+
"name": "default",
|
|
435
|
+
"text": "'No data or columns available to display.'"
|
|
436
|
+
}],
|
|
437
|
+
"text": "The message to display when there are no columns or data available."
|
|
438
|
+
},
|
|
439
|
+
"getter": false,
|
|
440
|
+
"setter": false,
|
|
441
|
+
"attribute": "no-columns-no-data-message",
|
|
442
|
+
"reflect": false,
|
|
443
|
+
"defaultValue": "'No data or columns available to display.'"
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
static get states() {
|
|
448
|
+
return {
|
|
449
|
+
"table": {},
|
|
450
|
+
"parsedColumns": {},
|
|
451
|
+
"parsedData": {},
|
|
452
|
+
"hasSlotHead": {},
|
|
453
|
+
"hasSlotBody": {}
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
static get elementRef() { return "el"; }
|
|
457
|
+
static get watchers() {
|
|
458
|
+
return [{
|
|
459
|
+
"propName": "columns",
|
|
460
|
+
"methodName": "parseColumns"
|
|
461
|
+
}, {
|
|
462
|
+
"propName": "columnsJson",
|
|
463
|
+
"methodName": "parseJsonColumns"
|
|
464
|
+
}, {
|
|
465
|
+
"propName": "data",
|
|
466
|
+
"methodName": "parseData"
|
|
467
|
+
}, {
|
|
468
|
+
"propName": "dataJson",
|
|
469
|
+
"methodName": "parseJsonData"
|
|
470
|
+
}, {
|
|
471
|
+
"propName": "parsedColumns",
|
|
472
|
+
"methodName": "handleParsedChange"
|
|
473
|
+
}, {
|
|
474
|
+
"propName": "parsedData",
|
|
475
|
+
"methodName": "handleParsedChange"
|
|
476
|
+
}];
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
//# sourceMappingURL=nv-datagrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nv-datagrid.js","sourceRoot":"","sources":["../../../src/components/nv-datagrid/nv-datagrid.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Prop, h, State, Host, Watch, Element } from '@stencil/core';\nimport {\n createTable,\n Table,\n TableOptionsResolved,\n getCoreRowModel,\n createColumnHelper,\n} from '@tanstack/table-core';\nimport { Column } from '../../interfaces/Column';\n\n/**\n * A flexible data grid component powered by `@tanstack/table-core`.\n * @slot default - Use this slot to insert HTML into the data grid content.\n * @slot head - Use this slot to insert HTML into the data grid header.\n * @slot before - Use this slot to insert HTML before the data grid.\n * @slot after - Use this slot to insert HTML after the data grid.\n * @slot body - Use this slot to insert HTML into the data grid body.\n */\n@Component({\n tag: 'nv-datagrid',\n styleUrl: './nv-datagrid.scss',\n shadow: false,\n})\nexport class NvDatagrid {\n @Element() el: HTMLNvDatagridElement;\n\n /****************************************************************************/\n //#region STATES\n\n @State()\n private table: Table<any> | null = null;\n\n @State()\n parsedColumns: Column[] = []; // Parsed array\n\n @State()\n parsedData: any[] = []; // Parsed array\n\n @State()\n hasSlotHead: boolean = false;\n\n @State()\n hasSlotBody: boolean = false;\n\n //#endregion STATES\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * The columns to display in the data grid.\n * @example\n * [\n * {\"header\":\"Name\",\"accessor\":\"name\"},\n * {\"header\":\"Age\",\"accessor\":\"age\"},\n * {\"header\":\"Email\",\"accessor\":\"email\"}\n * ]\n * @default []\n */\n @Prop()\n readonly columns: Column[] = [];\n\n /**\n * The columns to display in the data grid.\n * It can be passed directly as an array of objects or as a JSON string\n * (e.g., `[{\"header\":\"Name\",\"accessor\":\"name\"},{\"header\":\"Age\",\"accessor\":\"age\"},{\"header\":\"Email\",\"accessor\":\"email\"}]`).\n * If both `columns` and `columnsJson` are provided, `columns` takes precedence.\n * @example `[{\"header\":\"Name\",\"accessor\":\"name\"},{\"header\":\"Age\",\"accessor\":\"age\"},{\"header\":\"Email\",\"accessor\":\"email\"}]`\n */\n @Prop({ reflect: true })\n readonly columnsJson?: string;\n\n /**\n * The data to display in the data grid.\n * @example [{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]\n * @default []\n */\n @Prop()\n readonly data: any[] = [];\n\n /**\n * The data to display in the data grid.\n * It can be passed directly as an array of objects or as a JSON string\n * (e.g., `[{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]`).\n * If both `data` and `dataJson` are provided, `data` takes precedence.\n * @example `[{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]`\n */\n @Prop({ reflect: true })\n readonly dataJson?: string;\n\n /**\n * The message to display when there is no data available.\n * @default 'No data available'\n */\n @Prop()\n readonly noDataMessage: string = 'No data available';\n\n /**\n * The message to display when there are no columns or data available.\n * @default 'No data or columns available to display.'\n */\n @Prop()\n readonly noColumnsNoDataMessage: string =\n 'No data or columns available to display.';\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('columns')\n parseColumns(newValue: Column[], oldValue: Column[]) {\n this.parseColumnsArray(newValue, oldValue);\n }\n\n @Watch('columnsJson')\n parseJsonColumns(newValue: string | undefined) {\n try {\n const newItems = newValue ? JSON.parse(newValue) : [];\n\n this.parseColumnsArray(newItems, this.parsedColumns);\n } catch (e) {\n console.error('Invalid JSON format for columnsJson:', e.message);\n this.parsedColumns = [];\n }\n }\n\n @Watch('data')\n parseData(newValue: any[], oldValue: any[]) {\n this.parseDataArray(newValue, oldValue);\n }\n\n @Watch('dataJson')\n parseJsonData(newValue: string | undefined) {\n try {\n const newItems = newValue ? JSON.parse(newValue) : [];\n\n this.parseDataArray(newItems, this.parsedData);\n } catch (e) {\n console.error('Invalid JSON format for dataJson:', e.message);\n this.parsedData = [];\n }\n }\n\n @Watch('parsedColumns')\n @Watch('parsedData')\n handleParsedChange() {\n this.initializeTable();\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private initializeTable(): void {\n // Clear the previous table instance (if any)\n this.table = null;\n\n // Set default options for the table\n const tableOptions: TableOptionsResolved<any> = {\n columns: [],\n data: [],\n getCoreRowModel: getCoreRowModel(),\n debugAll: true,\n onStateChange: state => console.log('Table state changed:', state),\n renderFallbackValue: 'No rows to display',\n state: {\n sorting: [], // Default: no active sorting\n columnVisibility: {}, // Default: all columns visible\n columnFilters: [], // Default: no column filters\n columnPinning: {}, // Default: no column pinning\n columnSizing: {}, // Default: no column sizing\n columnOrder: [], // Default: as defined in the `columns`\n pagination: null, // Default: no pagination\n grouping: [], // Default: no active grouping\n expanded: {}, // Default: no expanded rows\n rowPinning: {}, // Default: no row pinning\n rowSelection: {}, // Default: no row selection\n globalFilter: null, // Default: no global filter\n columnSizingInfo: {\n columnSizingStart: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n }, // Default: no column sizing info\n },\n };\n\n // Validate and generate column definitions\n const validColumns = this.parsedColumns.filter(\n column => column?.accessor && column?.header,\n );\n\n // Helper function to generate column definitions\n const generateColumns = (): any[] => {\n const columnHelper = createColumnHelper<any>();\n\n if (validColumns.length > 0) {\n // Use defined columns\n return validColumns.map(column =>\n columnHelper.accessor(column.accessor, {\n header: column.header,\n cell: info => info.getValue(),\n }),\n );\n } else if (tableOptions.data && tableOptions.data.length > 0) {\n // Generate columns from data keys\n const sampleRow = tableOptions.data[0];\n return Object.keys(sampleRow).map(key =>\n columnHelper.accessor(key, {\n header: key.charAt(0).toUpperCase() + key.slice(1), // Capitalize key for header\n cell: info => info.getValue(),\n }),\n );\n } else {\n // No columns and no data\n return [];\n }\n };\n\n const setTableData = (): any[] => {\n if (\n this.parsedData &&\n Array.isArray(this.parsedData) &&\n this.parsedData.length > 0\n ) {\n return [...this.parsedData];\n } else {\n return [];\n }\n };\n\n // Update tableOptions based on parsed data and columns\n const hasColumns =\n validColumns && Array.isArray(validColumns) && validColumns.length > 0;\n const hasData =\n (this.parsedData &&\n Array.isArray(this.parsedData) &&\n this.parsedData.length > 0) ||\n this.hasSlotBody;\n\n if (!hasColumns && !hasData) {\n // No columns and no data\n } else if (hasColumns && !hasData) {\n tableOptions.columns = generateColumns();\n } else {\n // Both columns and data are available\n // No columns and data is available\n tableOptions.data = setTableData();\n tableOptions.columns = generateColumns();\n }\n\n // Initialize the table\n this.table = createTable(tableOptions);\n }\n\n /**\n * Parses the columns array.\n * @param {Column[]} newValue - The new value of the columns array.\n * @param {Column[]} oldValue - The old value of the columns array.\n */\n private parseColumnsArray(newValue: Column[], oldValue: Column[]) {\n if (JSON.stringify(newValue) === JSON.stringify(oldValue)) return; // Deep comparison\n this.parsedColumns = Array.isArray(newValue) ? newValue : [];\n }\n\n /**\n * Parses the data array.\n * @param {any[]} newValue - The new value of the data array.\n * @param {any[]} oldValue - The old value of the data array.\n */\n private parseDataArray(newValue: any[], oldValue: any[]) {\n if (JSON.stringify(newValue) === JSON.stringify(oldValue)) return; // Deep comparison\n this.parsedData = Array.isArray(newValue) ? newValue : [];\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.hasSlotHead = !!this.el.querySelector('[slot=\"head\"]');\n\n if (this.hasSlotHead) {\n const headSlot = this.el.querySelector('[slot=\"head\"]');\n const headSlotRows = this.hasSlotHead\n ? Array.from(headSlot.querySelectorAll('nv-datagridrow'))\n : [];\n\n const mappedRows = headSlotRows.map(row => {\n const cells = Array.from(row.querySelectorAll('nv-datagridcolumn'));\n\n return cells.map(cell => ({\n header: cell.getAttribute('header') || '',\n accessor: cell.getAttribute('accessor') || '',\n }));\n });\n\n // Flatten the nested arrays into a single array of columns\n const flatMappedColumns = mappedRows.flat();\n\n this.parsedColumns = flatMappedColumns;\n }\n\n this.hasSlotBody = !!this.el.querySelector('[slot=\"body\"]');\n\n if (this.hasSlotBody) {\n const bodySlot = this.el.querySelector('[slot=\"body\"]');\n const bodySlotRows = this.hasSlotBody\n ? Array.from(bodySlot.querySelectorAll('nv-datagridrow'))\n : [];\n\n const mappedRows = bodySlotRows.map(row => {\n const cells = Array.from(row.querySelectorAll('nv-datagriddatacell'));\n\n return cells.map(cell => {\n return {\n accessor: cell.accessor,\n value: cell.innerHTML,\n };\n });\n });\n\n // Flatten the nested arrays into a single array of data\n const flatMappedData = mappedRows.map(row =>\n row.reduce((acc, cell) => {\n acc[cell.accessor] = cell.value;\n return acc;\n }, {}),\n );\n\n this.parsedData = flatMappedData;\n }\n\n if (this.columnsJson) {\n this.parseJsonColumns(this.columnsJson);\n } else if (this.columns && this.columns.length > 0) {\n this.parseColumns(this.columns, this.parsedColumns);\n }\n\n if (this.dataJson) {\n this.parseJsonData(this.dataJson);\n } else if (this.data && this.data.length > 0) {\n this.parseData(this.data, this.parsedData);\n }\n }\n\n componentDidLoad() {\n this.initializeTable();\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n const headerGroups =\n !this.table ||\n this.table === undefined ||\n (this.parsedColumns.length === 0 && !this.hasSlotHead)\n ? []\n : this.table?.getHeaderGroups();\n\n const rows =\n !this.table ||\n this.table === undefined ||\n (this.parsedData.length === 0 && !this.hasSlotBody)\n ? []\n : this.table?.getRowModel()?.rows;\n\n return (\n <Host>\n <div class=\"hidden\">\n <slot></slot>\n <slot name=\"head\"></slot>\n <slot name=\"body\"></slot>\n </div>\n\n <slot name=\"before\"></slot>\n\n {this.parsedColumns.length === 0 &&\n this.parsedData.length === 0 &&\n !this.hasSlotHead &&\n !this.hasSlotBody ? (\n <p>{this.noColumnsNoDataMessage}</p>\n ) : (\n <table>\n {this.parsedColumns.length > 0 && headerGroups.length > 0 && (\n <thead>\n {this.parsedColumns.length > 0 && headerGroups\n ? headerGroups?.map(headerGroup => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(header => (\n <th key={header.id}>\n {header.isPlaceholder\n ? null\n : header.column.columnDef.header}\n </th>\n ))}\n </tr>\n ))\n : null}\n </thead>\n )}\n <tbody>\n {!rows || rows.length === 0 ? (\n <tr>\n <td colSpan={this.parsedColumns.length || 12}>\n {this.noDataMessage}\n </td>\n </tr>\n ) : (\n rows.map(row => {\n const rowId = row.id;\n const visibleCells = row?.getVisibleCells();\n\n const cells = visibleCells\n ?.map(cell => {\n const cellValue = cell.getValue();\n return `<td key=\"${cell.id}\" data-row-id=\"${rowId}\">${cellValue}</td>`;\n })\n .join('');\n\n return <tr key={rowId} innerHTML={cells}></tr>;\n })\n )}\n </tbody>\n </table>\n )}\n\n <slot name=\"after\"></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const NvDatagridbodyDocs = {
|
|
2
|
+
component: 'nv-datagridbody',
|
|
3
|
+
subcomponents: ['nv-datagridrow', 'nv-datagriddatacell'],
|
|
4
|
+
composedComponents: ['nv-datagridrow', 'nv-datagriddatacell'],
|
|
5
|
+
skip: true,
|
|
6
|
+
};
|
|
7
|
+
export default NvDatagridbodyDocs;
|
|
8
|
+
//# sourceMappingURL=nv-datagridbody.docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nv-datagridbody.docs.js","sourceRoot":"","sources":["../../../src/components/nv-datagridbody/nv-datagridbody.docs.tsx"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GAAwC;IAC9D,SAAS,EAAE,iBAAiB;IAC5B,aAAa,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IACxD,kBAAkB,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IAC7D,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvDatagridbodyDocs: NovaDocs<Components.NvDatagridbody> = {\n component: 'nv-datagridbody',\n subcomponents: ['nv-datagridrow', 'nv-datagriddatacell'],\n composedComponents: ['nv-datagridrow', 'nv-datagriddatacell'],\n skip: true,\n};\n\nexport default NvDatagridbodyDocs;\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Host, h } from "@stencil/core";
|
|
2
|
+
/**
|
|
3
|
+
* @slot default - Use this slot to insert HTML into the data grid body.
|
|
4
|
+
*/
|
|
5
|
+
export class NvDatagridbody {
|
|
6
|
+
/****************************************************************************/
|
|
7
|
+
//#region RENDER
|
|
8
|
+
render() {
|
|
9
|
+
return (h(Host, { key: 'c24bf0e6d18d00b39b6e0382b0268ee24e6e7567' }, h("tbody", { key: '1fae4b6126134317bd2dc7d4819ed861e8915761' }, h("slot", { key: 'a6a537e6ed6c8b831da5294c1bce7010038b6291' }))));
|
|
10
|
+
}
|
|
11
|
+
static get is() { return "nv-datagridbody"; }
|
|
12
|
+
static get originalStyleUrls() {
|
|
13
|
+
return {
|
|
14
|
+
"$": ["nv-datagridbody.scss"]
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
static get styleUrls() {
|
|
18
|
+
return {
|
|
19
|
+
"$": ["nv-datagridbody.css"]
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=nv-datagridbody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nv-datagridbody.js","sourceRoot":"","sources":["../../../src/components/nv-datagridbody/nv-datagridbody.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AAMH,MAAM,OAAO,cAAc;IACzB,8EAA8E;IAC9E,gBAAgB;IAEhB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH;gBACE,8DAAa,CACP,CACH,CACR,CAAC;IACJ,CAAC;;;;;;;;CAIF","sourcesContent":["import { Component, Host, h } from '@stencil/core';\n\n/**\n * @slot default - Use this slot to insert HTML into the data grid body.\n */\n@Component({\n tag: 'nv-datagridbody',\n styleUrl: 'nv-datagridbody.scss',\n shadow: false,\n})\nexport class NvDatagridbody {\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n <tbody>\n <slot></slot>\n </tbody>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nv-datagridcolumn.docs.js","sourceRoot":"","sources":["../../../src/components/nv-datagridcolumn/nv-datagridcolumn.docs.tsx"],"names":[],"mappings":"AAGA,MAAM,oBAAoB,GAA0C;IAClE,SAAS,EAAE,mBAAmB;IAC9B,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,eAAe,oBAAoB,CAAC","sourcesContent":["import type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvDatagridcolumnDocs: NovaDocs<Components.NvDatagridcolumn> = {\n component: 'nv-datagridcolumn',\n skip: true,\n};\n\nexport default NvDatagridcolumnDocs;\n"]}
|