@nova-design-system/nova-webcomponents 3.23.0 → 3.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -1
- package/dist/cjs/events.utils-BE6R5q9C.js +33 -0
- package/dist/cjs/events.utils-BE6R5q9C.js.map +1 -0
- package/dist/cjs/{grow.animation-BrWzyoUA.js → grow.animation-ynu_HmA_.js} +2 -30
- package/dist/cjs/grow.animation-ynu_HmA_.js.map +1 -0
- package/dist/cjs/{i18n.utils-BizoXo6c.js → i18n.utils-ku0bScip.js} +16 -20
- package/dist/cjs/{i18n.utils-BizoXo6c.js.map → i18n.utils-ku0bScip.js.map} +1 -1
- package/dist/cjs/index-B1na8x6M.js +12 -4
- package/dist/cjs/index.cjs.js +5 -2
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/index.esm-CG1TVKfu.js +540 -0
- package/dist/cjs/index.esm-CG1TVKfu.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/native.cjs.js +1 -1
- package/dist/cjs/nv-accordion.cjs.entry.js +2 -7
- package/dist/cjs/nv-accordion.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-alert.cjs.entry.js +1 -2
- package/dist/cjs/nv-alert.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
- package/dist/cjs/nv-button.cjs.entry.js +3 -5
- package/dist/cjs/nv-button.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-calendar.cjs.entry.js +14 -24
- package/dist/cjs/nv-calendar.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-datagrid.cjs.entry.js +67 -72
- package/dist/cjs/nv-datagrid.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-dialog.cjs.entry.js +6 -538
- package/dist/cjs/nv-dialog.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-drawer.cjs.entry.js +443 -0
- package/dist/cjs/nv-drawer.entry.cjs.js.map +1 -0
- package/dist/cjs/nv-drawerfooter.nv-drawerheader.entry.cjs.js.map +1 -0
- package/dist/cjs/nv-drawerfooter_2.cjs.entry.js +144 -0
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +6 -6
- package/dist/cjs/nv-fieldcheckbox.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fielddate.cjs.entry.js +12 -15
- package/dist/cjs/nv-fielddate.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +12 -13
- package/dist/cjs/nv-fielddaterange.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +24 -33
- package/dist/cjs/nv-fielddropdown.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +2 -3
- package/dist/cjs/nv-fielddropdownitem.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +19 -27
- package/dist/cjs/nv-fieldmultiselect.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldnumber.cjs.entry.js +6 -6
- package/dist/cjs/nv-fieldnumber.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +6 -6
- package/dist/cjs/nv-fieldpassword.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldradio.cjs.entry.js +4 -4
- package/dist/cjs/nv-fieldradio.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldselect.cjs.entry.js +8 -8
- package/dist/cjs/nv-fieldselect.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldslider.cjs.entry.js +5 -5
- package/dist/cjs/nv-fieldslider.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldtext.cjs.entry.js +6 -6
- package/dist/cjs/nv-fieldtext.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js +6 -7
- package/dist/cjs/nv-fieldtextarea.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldtime.cjs.entry.js +27 -35
- package/dist/cjs/nv-fieldtime.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-icon.cjs.entry.js +2 -2
- package/dist/cjs/nv-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-iconbutton.nv-loader.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js +5 -6
- package/dist/cjs/nv-menu.cjs.entry.js +3 -4
- package/dist/cjs/nv-menu.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-notification-bullet.cjs.entry.js +1 -2
- package/dist/cjs/nv-notification-bullet.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-notification.cjs.entry.js +6 -9
- package/dist/cjs/nv-notification.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
- package/dist/cjs/nv-popover.cjs.entry.js +12 -12
- package/dist/cjs/nv-popover.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-row.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebar.cjs.entry.js +3 -3
- package/dist/cjs/nv-sidebar.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-sidebarcontent.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebardivider.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebarfooter.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebargroup.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebarheader.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebarlogo.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebarnavitem.cjs.entry.js +4 -5
- package/dist/cjs/nv-sidebarnavitem.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-sidebarnavsubitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-split.cjs.entry.js +43 -41
- package/dist/cjs/nv-split.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-stack.cjs.entry.js +1 -1
- package/dist/cjs/nv-table.cjs.entry.js +6 -8
- package/dist/cjs/nv-table.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-tableheader.cjs.entry.js +2 -2
- package/dist/cjs/nv-tableheader.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
- package/dist/cjs/nv-togglebutton.cjs.entry.js +2 -2
- package/dist/cjs/nv-togglebutton.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +3 -4
- package/dist/cjs/nv-togglebuttongroup.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +3 -0
- package/dist/collection/components/nv-accordion/nv-accordion.docs.js +66 -40
- package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +1 -1
- package/dist/collection/components/nv-accordion/nv-accordion.js +2 -7
- package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
- package/dist/collection/components/nv-alert/nv-alert.docs.js +18 -1
- package/dist/collection/components/nv-alert/nv-alert.docs.js.map +1 -1
- package/dist/collection/components/nv-alert/nv-alert.js +1 -2
- package/dist/collection/components/nv-alert/nv-alert.js.map +1 -1
- package/dist/collection/components/nv-avatar/nv-avatar.docs.js +56 -0
- package/dist/collection/components/nv-avatar/nv-avatar.docs.js.map +1 -1
- package/dist/collection/components/nv-badge/nv-badge.docs.js +64 -15
- package/dist/collection/components/nv-badge/nv-badge.docs.js.map +1 -1
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js +10 -1
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js.map +1 -1
- package/dist/collection/components/nv-button/nv-button.docs.js +38 -4
- package/dist/collection/components/nv-button/nv-button.docs.js.map +1 -1
- package/dist/collection/components/nv-button/nv-button.js +3 -5
- package/dist/collection/components/nv-button/nv-button.js.map +1 -1
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js +22 -0
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js.map +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.docs.js +269 -14
- package/dist/collection/components/nv-calendar/nv-calendar.docs.js.map +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.js +13 -22
- package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
- package/dist/collection/components/nv-calendar/partials/week-numbers.js +1 -2
- package/dist/collection/components/nv-calendar/partials/week-numbers.js.map +1 -1
- package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +11 -11
- package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js.map +1 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js +2 -2
- package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js.map +1 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js +6 -5
- package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js.map +1 -1
- package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js +10 -1
- package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js.map +1 -1
- package/dist/collection/components/nv-col/nv-col.docs.js +8 -0
- package/dist/collection/components/nv-col/nv-col.docs.js.map +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +290 -286
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.js +67 -72
- package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
- package/dist/collection/components/nv-dialog/nv-dialog.docs.js +64 -13
- package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
- package/dist/collection/components/nv-drawer/nv-drawer.css +114 -0
- package/dist/collection/components/nv-drawer/nv-drawer.docs.js +145 -0
- package/dist/collection/components/nv-drawer/nv-drawer.docs.js.map +1 -0
- package/dist/collection/components/nv-drawer/nv-drawer.js +719 -0
- package/dist/collection/components/nv-drawer/nv-drawer.js.map +1 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.css +8 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.docs.js +6 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.docs.js.map +1 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.js +325 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.js.map +1 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.css +32 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.docs.js +6 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.docs.js.map +1 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.js +92 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.js.map +1 -0
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js +186 -136
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +6 -6
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js +300 -109
- package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js.map +1 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +11 -14
- package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
- package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +1 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js +406 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +11 -12
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +1 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +210 -118
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +22 -31
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +1 -1
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +2 -3
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +462 -322
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +17 -25
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +70 -7
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +5 -5
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +79 -6
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +5 -5
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js +58 -6
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +4 -4
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js +138 -30
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +7 -7
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
- package/dist/collection/components/nv-fieldselect/styles/nv-fieldselect.css +1 -1
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js +138 -30
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
- package/dist/collection/components/nv-fieldslider/partials/field-input.js +1 -1
- package/dist/collection/components/nv-fieldslider/partials/field-input.js.map +1 -1
- package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +92 -16
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +5 -5
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js +64 -3
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +6 -7
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +41 -22
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +25 -33
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +1 -1
- package/dist/collection/components/nv-fieldtime/utils/format-utils.js +1 -1
- package/dist/collection/components/nv-fieldtime/utils/format-utils.js.map +1 -1
- package/dist/collection/components/nv-icon/nv-icon.docs.js +46 -0
- package/dist/collection/components/nv-icon/nv-icon.docs.js.map +1 -1
- package/dist/collection/components/nv-icon/nv-icon.js +1 -1
- package/dist/collection/components/nv-icon/nv-icons.js +2 -0
- package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +4 -4
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.docs.js +18 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.docs.js.map +1 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +3 -4
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +1 -1
- package/dist/collection/components/nv-loader/nv-loader.docs.js +8 -4
- package/dist/collection/components/nv-loader/nv-loader.docs.js.map +1 -1
- package/dist/collection/components/nv-loader/nv-loader.js +1 -1
- package/dist/collection/components/nv-menu/nv-menu.docs.js +17 -5
- package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
- package/dist/collection/components/nv-menu/nv-menu.js +3 -4
- package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
- package/dist/collection/components/nv-notification/nv-notification.docs.js +34 -3
- package/dist/collection/components/nv-notification/nv-notification.docs.js.map +1 -1
- package/dist/collection/components/nv-notification/nv-notification.js +6 -9
- package/dist/collection/components/nv-notification/nv-notification.js.map +1 -1
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js +60 -0
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js.map +1 -1
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js +1 -2
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js.map +1 -1
- package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js +1 -1
- package/dist/collection/components/nv-popover/nv-popover.docs.js +35 -10
- package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
- package/dist/collection/components/nv-popover/nv-popover.js +2 -3
- package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
- package/dist/collection/components/nv-row/nv-row.docs.js +7 -0
- package/dist/collection/components/nv-row/nv-row.docs.js.map +1 -1
- package/dist/collection/components/nv-row/nv-row.js +1 -1
- package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js +39 -0
- package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js.map +1 -1
- package/dist/collection/components/nv-sidebar/nv-sidebar.js +3 -3
- package/dist/collection/components/nv-sidebar/nv-sidebar.js.map +1 -1
- package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.js +1 -1
- package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.js +1 -1
- package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.js +1 -1
- package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.js +1 -1
- package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.js +1 -1
- package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.js +1 -1
- package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js +5 -6
- package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js.map +1 -1
- package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.js +1 -1
- package/dist/collection/components/nv-split/nv-split.docs.js +38 -2
- package/dist/collection/components/nv-split/nv-split.docs.js.map +1 -1
- package/dist/collection/components/nv-split/nv-split.js +44 -42
- package/dist/collection/components/nv-split/nv-split.js.map +1 -1
- package/dist/collection/components/nv-split/styles/nv-split.css +2 -0
- package/dist/collection/components/nv-stack/nv-stack.docs.js +13 -0
- 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-table/nv-table.docs.js +12 -0
- package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
- package/dist/collection/components/nv-table/nv-table.js +1 -1
- package/dist/collection/components/nv-table/nv-table.utils.js +5 -7
- package/dist/collection/components/nv-table/nv-table.utils.js.map +1 -1
- package/dist/collection/components/nv-table/test/nv-table.utils.test.js +4 -5
- package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +1 -1
- package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js +29 -1
- package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js.map +1 -1
- package/dist/collection/components/nv-tableheader/nv-tableheader.js +2 -2
- package/dist/collection/components/nv-tableheader/nv-tableheader.js.map +1 -1
- package/dist/collection/components/nv-toggle/nv-toggle.docs.js +31 -0
- package/dist/collection/components/nv-toggle/nv-toggle.docs.js.map +1 -1
- package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
- package/dist/collection/components/nv-togglebutton/styles/nv-togglebutton.css +16 -12
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +20 -7
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -1
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +2 -3
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -1
- package/dist/collection/components/nv-togglebuttongroup/styles/nv-togglebuttongroup.css +4 -12
- package/dist/collection/components/nv-tooltip/nv-tooltip.docs.js +33 -6
- package/dist/collection/components/nv-tooltip/nv-tooltip.docs.js.map +1 -1
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
- package/dist/collection/templates/navigation.docs.js +1 -1
- package/dist/collection/templates/navigation.docs.js.map +1 -1
- package/dist/collection/utils/i18n.utils.js +1 -2
- package/dist/collection/utils/i18n.utils.js.map +1 -1
- package/dist/collection/utils/search-engine/strategies/fuzzy.js +2 -2
- package/dist/collection/utils/search-engine/strategies/fuzzy.js.map +1 -1
- package/dist/collection/utils/search-engine/strategies/smart.js +2 -2
- package/dist/collection/utils/search-engine/strategies/smart.js.map +1 -1
- package/dist/collection/utils/search-engine/strategies/strict.js +2 -2
- package/dist/collection/utils/search-engine/strategies/strict.js.map +1 -1
- package/dist/collection/utils/search-engine/worker/worker-client.js +7 -10
- package/dist/collection/utils/search-engine/worker/worker-client.js.map +1 -1
- package/dist/components/index.js +4 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/nv-accordion-item.js +1 -1
- package/dist/components/nv-accordion.js +6 -11
- package/dist/components/nv-accordion.js.map +1 -1
- package/dist/components/nv-alert.js +2 -3
- package/dist/components/nv-alert.js.map +1 -1
- package/dist/components/nv-avatar.js +1 -1
- package/dist/components/nv-badge.js +1 -1
- package/dist/components/nv-breadcrumb.js +2 -2
- package/dist/components/nv-button.js +1 -1
- package/dist/components/nv-calendar.js +1 -1
- package/dist/components/nv-datagrid.js +69 -74
- package/dist/components/nv-datagrid.js.map +1 -1
- package/dist/components/nv-dialog.js +7 -539
- package/dist/components/nv-dialog.js.map +1 -1
- package/dist/components/nv-dialogfooter.js +1 -1
- package/dist/components/nv-drawer.d.ts +11 -0
- package/dist/components/nv-drawer.js +507 -0
- package/dist/components/nv-drawer.js.map +1 -0
- package/dist/components/nv-drawerfooter.d.ts +11 -0
- package/dist/components/nv-drawerfooter.js +9 -0
- package/dist/components/nv-drawerfooter.js.map +1 -0
- package/dist/components/nv-drawerheader.d.ts +11 -0
- package/dist/components/nv-drawerheader.js +9 -0
- package/dist/components/nv-drawerheader.js.map +1 -0
- package/dist/components/nv-fieldcheckbox.js +1 -1
- package/dist/components/nv-fielddate.js +18 -21
- package/dist/components/nv-fielddate.js.map +1 -1
- package/dist/components/nv-fielddaterange.js +18 -19
- package/dist/components/nv-fielddaterange.js.map +1 -1
- package/dist/components/nv-fielddropdown.js +29 -38
- 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 +26 -34
- package/dist/components/nv-fieldmultiselect.js.map +1 -1
- package/dist/components/nv-fieldnumber.js +1 -1
- package/dist/components/nv-fieldpassword.js +9 -9
- package/dist/components/nv-fieldpassword.js.map +1 -1
- package/dist/components/nv-fieldradio.js +4 -4
- package/dist/components/nv-fieldradio.js.map +1 -1
- package/dist/components/nv-fieldselect.js +11 -11
- package/dist/components/nv-fieldselect.js.map +1 -1
- package/dist/components/nv-fieldslider.js +9 -9
- package/dist/components/nv-fieldslider.js.map +1 -1
- package/dist/components/nv-fieldtext.js +1 -1
- package/dist/components/nv-fieldtextarea.js +6 -7
- package/dist/components/nv-fieldtextarea.js.map +1 -1
- package/dist/components/nv-fieldtime.js +31 -39
- package/dist/components/nv-fieldtime.js.map +1 -1
- package/dist/components/nv-icon.js +1 -1
- package/dist/components/nv-iconbutton.js +1 -1
- package/dist/components/nv-loader.js +1 -1
- package/dist/components/nv-menu.js +6 -7
- package/dist/components/nv-menu.js.map +1 -1
- package/dist/components/nv-menuitem.js +1 -1
- package/dist/components/nv-notification-bullet.js +1 -1
- package/dist/components/nv-notification.js +7 -10
- package/dist/components/nv-notification.js.map +1 -1
- package/dist/components/nv-notificationcontainer.js +1 -1
- package/dist/components/nv-popover.js +1 -1
- package/dist/components/nv-row.js +1 -1
- package/dist/components/nv-sidebar.js +4 -4
- package/dist/components/nv-sidebar.js.map +1 -1
- package/dist/components/nv-sidebarcontent.js +1 -1
- package/dist/components/nv-sidebardivider.js +1 -1
- package/dist/components/nv-sidebarfooter.js +1 -1
- package/dist/components/nv-sidebargroup.js +1 -1
- package/dist/components/nv-sidebarheader.js +1 -1
- package/dist/components/nv-sidebarlogo.js +1 -1
- package/dist/components/nv-sidebarnavitem.js +6 -7
- package/dist/components/nv-sidebarnavitem.js.map +1 -1
- package/dist/components/nv-sidebarnavsubitem.js +1 -1
- package/dist/components/nv-split.js +43 -41
- package/dist/components/nv-split.js.map +1 -1
- package/dist/components/nv-stack.js +1 -1
- package/dist/components/nv-table.js +6 -8
- package/dist/components/nv-table.js.map +1 -1
- package/dist/components/nv-tableheader.js +5 -5
- package/dist/components/nv-tableheader.js.map +1 -1
- package/dist/components/nv-toggle.js +2 -2
- package/dist/components/nv-togglebutton.js +2 -2
- package/dist/components/nv-togglebutton.js.map +1 -1
- package/dist/components/nv-togglebuttongroup.js +3 -4
- package/dist/components/nv-togglebuttongroup.js.map +1 -1
- package/dist/components/nv-tooltip.js +1 -1
- package/dist/components/{p-D1i2OAGe.js → p-B45HbBWe.js} +6 -8
- package/dist/components/p-B45HbBWe.js.map +1 -0
- package/dist/components/p-B6GgGra-.js +29 -0
- package/dist/components/p-B6GgGra-.js.map +1 -0
- package/dist/components/{p-Dk8ekxr_.js → p-B7VlEQVW.js} +16 -26
- package/dist/components/p-B7VlEQVW.js.map +1 -0
- package/dist/components/{p-B-3kAnun.js → p-B9i3m6rk.js} +6 -6
- package/dist/components/p-B9i3m6rk.js.map +1 -0
- package/dist/components/{p-BQo7AMPX.js → p-BILd3Ta-.js} +9 -9
- package/dist/components/p-BILd3Ta-.js.map +1 -0
- package/dist/components/{p-Dc_0pr83.js → p-BISctfud.js} +8 -8
- package/dist/components/p-BISctfud.js.map +1 -0
- package/dist/components/{p-CIyQBhTX.js → p-BVOv1zgq.js} +4 -4
- package/dist/components/{p-CIyQBhTX.js.map → p-BVOv1zgq.js.map} +1 -1
- package/dist/components/{p-B6EYOx_n.js → p-Bg_l3jn1.js} +3 -3
- package/dist/components/{p-B6EYOx_n.js.map → p-Bg_l3jn1.js.map} +1 -1
- package/dist/components/{p-CBvZjfqs.js → p-C2QAWGhf.js} +4 -4
- package/dist/components/{p-CBvZjfqs.js.map → p-C2QAWGhf.js.map} +1 -1
- package/dist/components/{p-DzUXTCUy.js → p-COnt5ux_.js} +3 -3
- package/dist/components/{p-DzUXTCUy.js.map → p-COnt5ux_.js.map} +1 -1
- package/dist/components/{p-KUIQrV3D.js → p-Cc7XnqPp.js} +5 -5
- package/dist/components/{p-KUIQrV3D.js.map → p-Cc7XnqPp.js.map} +1 -1
- package/dist/components/{p-CmwaW0q4.js → p-D02w_Ru6.js} +3 -28
- package/dist/components/p-D02w_Ru6.js.map +1 -0
- package/dist/components/p-D3eWMME9.js +538 -0
- package/dist/components/p-D3eWMME9.js.map +1 -0
- package/dist/components/{p--iYGZN4R.js → p-D6APFL6N.js} +11 -11
- package/dist/components/p-D6APFL6N.js.map +1 -0
- package/dist/components/{p-DstpaOhw.js → p-DZJHk4fr.js} +3 -3
- package/dist/components/{p-DstpaOhw.js.map → p-DZJHk4fr.js.map} +1 -1
- package/dist/components/{p-Da9WgE5U.js → p-DiUP3TzF.js} +5 -5
- package/dist/components/{p-Da9WgE5U.js.map → p-DiUP3TzF.js.map} +1 -1
- package/dist/components/{p-DWG6az-u.js → p-DpDooigg.js} +5 -6
- package/dist/components/p-DpDooigg.js.map +1 -0
- package/dist/components/{p-BKfPh2in.js → p-Dr-67WvG.js} +4 -4
- package/dist/components/{p-BKfPh2in.js.map → p-Dr-67WvG.js.map} +1 -1
- package/dist/components/{p-DaiLIZ8f.js → p-DvapDVBj.js} +8 -9
- package/dist/components/p-DvapDVBj.js.map +1 -0
- package/dist/components/{p-DOZbXX2L.js → p-IlwlcG9l.js} +16 -20
- package/dist/components/p-IlwlcG9l.js.map +1 -0
- package/dist/components/p-W6vOfMC9.js +63 -0
- package/dist/components/p-W6vOfMC9.js.map +1 -0
- package/dist/components/{p-CBOuqJTb.js → p-nfYynlVq.js} +4 -4
- package/dist/components/{p-CBOuqJTb.js.map → p-nfYynlVq.js.map} +1 -1
- package/dist/components/{p-CBF8V1L7.js → p-tyaJ-nGV.js} +3 -4
- package/dist/components/p-tyaJ-nGV.js.map +1 -0
- package/dist/components/p-u-maNLLs.js +145 -0
- package/dist/components/p-u-maNLLs.js.map +1 -0
- package/dist/esm/app-globals-DQuL1Twl.js.map +1 -1
- package/dist/esm/events.utils-B6GgGra-.js +29 -0
- package/dist/esm/events.utils-B6GgGra-.js.map +1 -0
- package/dist/esm/{grow.animation-CvHGHBL4.js → grow.animation-D7ep_aVl.js} +3 -28
- package/dist/esm/grow.animation-D7ep_aVl.js.map +1 -0
- package/dist/esm/{i18n.utils-DOZbXX2L.js → i18n.utils-IlwlcG9l.js} +16 -20
- package/dist/esm/{i18n.utils-DOZbXX2L.js.map → i18n.utils-IlwlcG9l.js.map} +1 -1
- package/dist/esm/index-CasQushP.js +12 -4
- package/dist/esm/index.esm-D3eWMME9.js +538 -0
- package/dist/esm/index.esm-D3eWMME9.js.map +1 -0
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/native.js +1 -1
- package/dist/esm/nv-accordion.entry.js +2 -7
- package/dist/esm/nv-accordion.entry.js.map +1 -1
- package/dist/esm/nv-alert.entry.js +1 -2
- package/dist/esm/nv-alert.entry.js.map +1 -1
- package/dist/esm/nv-badge_2.entry.js +1 -1
- package/dist/esm/nv-button.entry.js +3 -5
- package/dist/esm/nv-button.entry.js.map +1 -1
- package/dist/esm/nv-calendar.entry.js +14 -24
- package/dist/esm/nv-calendar.entry.js.map +1 -1
- package/dist/esm/nv-datagrid.entry.js +67 -72
- package/dist/esm/nv-datagrid.entry.js.map +1 -1
- package/dist/esm/nv-dialog.entry.js +3 -535
- package/dist/esm/nv-dialog.entry.js.map +1 -1
- package/dist/esm/nv-drawer.entry.js +441 -0
- package/dist/esm/nv-drawer.entry.js.map +1 -0
- package/dist/esm/nv-drawerfooter.nv-drawerheader.entry.js.map +1 -0
- package/dist/esm/nv-drawerfooter_2.entry.js +141 -0
- package/dist/esm/nv-fieldcheckbox.entry.js +6 -6
- package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
- package/dist/esm/nv-fielddate.entry.js +12 -15
- package/dist/esm/nv-fielddate.entry.js.map +1 -1
- package/dist/esm/nv-fielddaterange.entry.js +12 -13
- package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdown.entry.js +24 -33
- package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdownitem.entry.js +2 -3
- package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
- package/dist/esm/nv-fieldmultiselect.entry.js +19 -27
- package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldnumber.entry.js +6 -6
- package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
- package/dist/esm/nv-fieldpassword.entry.js +6 -6
- package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
- package/dist/esm/nv-fieldradio.entry.js +4 -4
- package/dist/esm/nv-fieldradio.entry.js.map +1 -1
- package/dist/esm/nv-fieldselect.entry.js +8 -8
- package/dist/esm/nv-fieldselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldslider.entry.js +5 -5
- package/dist/esm/nv-fieldslider.entry.js.map +1 -1
- package/dist/esm/nv-fieldtext.entry.js +6 -6
- package/dist/esm/nv-fieldtext.entry.js.map +1 -1
- package/dist/esm/nv-fieldtextarea.entry.js +6 -7
- package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
- package/dist/esm/nv-fieldtime.entry.js +27 -35
- package/dist/esm/nv-fieldtime.entry.js.map +1 -1
- package/dist/esm/nv-icon.entry.js +2 -2
- package/dist/esm/nv-icon.entry.js.map +1 -1
- package/dist/esm/nv-iconbutton.nv-loader.entry.js.map +1 -1
- package/dist/esm/nv-iconbutton_2.entry.js +5 -6
- package/dist/esm/nv-menu.entry.js +3 -4
- package/dist/esm/nv-menu.entry.js.map +1 -1
- package/dist/esm/nv-menuitem.entry.js +1 -1
- package/dist/esm/nv-notification-bullet.entry.js +1 -2
- package/dist/esm/nv-notification-bullet.entry.js.map +1 -1
- package/dist/esm/nv-notification.entry.js +6 -9
- package/dist/esm/nv-notification.entry.js.map +1 -1
- package/dist/esm/nv-notificationcontainer.entry.js +1 -1
- package/dist/esm/nv-popover.entry.js +4 -4
- package/dist/esm/nv-popover.entry.js.map +1 -1
- package/dist/esm/nv-row.entry.js +1 -1
- package/dist/esm/nv-sidebar.entry.js +3 -3
- package/dist/esm/nv-sidebar.entry.js.map +1 -1
- package/dist/esm/nv-sidebarcontent.entry.js +1 -1
- package/dist/esm/nv-sidebardivider.entry.js +1 -1
- package/dist/esm/nv-sidebarfooter.entry.js +1 -1
- package/dist/esm/nv-sidebargroup.entry.js +1 -1
- package/dist/esm/nv-sidebarheader.entry.js +1 -1
- package/dist/esm/nv-sidebarlogo.entry.js +1 -1
- package/dist/esm/nv-sidebarnavitem.entry.js +4 -5
- package/dist/esm/nv-sidebarnavitem.entry.js.map +1 -1
- package/dist/esm/nv-sidebarnavsubitem.entry.js +1 -1
- package/dist/esm/nv-split.entry.js +43 -41
- package/dist/esm/nv-split.entry.js.map +1 -1
- package/dist/esm/nv-stack.entry.js +1 -1
- package/dist/esm/nv-table.entry.js +6 -8
- package/dist/esm/nv-table.entry.js.map +1 -1
- package/dist/esm/nv-tableheader.entry.js +2 -2
- package/dist/esm/nv-tableheader.entry.js.map +1 -1
- package/dist/esm/nv-toggle.entry.js +2 -2
- package/dist/esm/nv-togglebutton.entry.js +2 -2
- package/dist/esm/nv-togglebutton.entry.js.map +1 -1
- package/dist/esm/nv-togglebuttongroup.entry.js +3 -4
- package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -1
- package/dist/esm/nv-tooltip.entry.js +1 -1
- package/dist/lib/generators/angular-output.js +9 -7
- package/dist/lib/generators/angular-output.js.map +1 -1
- package/dist/lib/generators/docs-blazor.js +32 -14
- package/dist/lib/generators/docs-blazor.js.map +1 -1
- package/dist/lib/generators/vue-output.js +10 -11
- package/dist/lib/generators/vue-output.js.map +1 -1
- package/dist/lib/utils/componentBinding.js +9 -10
- package/dist/lib/utils/componentBinding.js.map +1 -1
- package/dist/lib/utils/parseToCSharpTypes.js +3 -16
- package/dist/lib/utils/parseToCSharpTypes.js.map +1 -1
- package/dist/lib/utils/spread.js +3 -4
- package/dist/lib/utils/spread.js.map +1 -1
- package/dist/native/index.esm.js +1 -1
- package/dist/native/index.esm.js.map +1 -1
- package/dist/native/native.css +1 -1
- package/dist/native/native.esm.js +1 -1
- package/dist/native/nv-accordion.entry.esm.js.map +1 -1
- package/dist/native/nv-alert.entry.esm.js.map +1 -1
- package/dist/native/nv-button.entry.esm.js.map +1 -1
- package/dist/native/nv-calendar.entry.esm.js.map +1 -1
- package/dist/native/nv-datagrid.entry.esm.js.map +1 -1
- package/dist/native/nv-dialog.entry.esm.js.map +1 -1
- package/dist/native/nv-drawer.entry.esm.js.map +1 -0
- package/dist/native/nv-drawerfooter.nv-drawerheader.entry.esm.js.map +1 -0
- package/dist/native/nv-fieldcheckbox.entry.esm.js.map +1 -1
- package/dist/native/nv-fielddate.entry.esm.js.map +1 -1
- package/dist/native/nv-fielddaterange.entry.esm.js.map +1 -1
- package/dist/native/nv-fielddropdown.entry.esm.js.map +1 -1
- package/dist/native/nv-fielddropdownitem.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldmultiselect.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldnumber.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldpassword.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldradio.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldselect.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldslider.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldtext.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldtextarea.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldtime.entry.esm.js.map +1 -1
- package/dist/native/nv-icon.entry.esm.js.map +1 -1
- package/dist/native/nv-iconbutton.nv-loader.entry.esm.js.map +1 -1
- package/dist/native/nv-menu.entry.esm.js.map +1 -1
- package/dist/native/nv-notification-bullet.entry.esm.js.map +1 -1
- package/dist/native/nv-notification.entry.esm.js.map +1 -1
- package/dist/native/nv-popover.entry.esm.js.map +1 -1
- package/dist/native/nv-sidebar.entry.esm.js.map +1 -1
- package/dist/native/nv-sidebarnavitem.entry.esm.js.map +1 -1
- package/dist/native/nv-split.entry.esm.js.map +1 -1
- package/dist/native/nv-table.entry.esm.js.map +1 -1
- package/dist/native/nv-tableheader.entry.esm.js.map +1 -1
- package/dist/native/nv-togglebutton.entry.esm.js.map +1 -1
- package/dist/native/nv-togglebuttongroup.entry.esm.js.map +1 -1
- package/dist/native/{p-b21e38a3.entry.js → p-04a2fe7f.entry.js} +2 -2
- package/dist/native/p-08204da4.entry.js +2 -0
- package/dist/native/{p-bd6ae5f3.entry.js.map → p-08204da4.entry.js.map} +1 -1
- package/dist/native/{p-e0adb05d.entry.js → p-0e07b91b.entry.js} +2 -2
- package/dist/native/p-0e07b91b.entry.js.map +1 -0
- package/dist/native/p-136dfb3e.entry.js +2 -0
- package/dist/native/p-136dfb3e.entry.js.map +1 -0
- package/dist/native/p-1f2dd37f.entry.js +2 -0
- package/dist/native/p-1f2dd37f.entry.js.map +1 -0
- package/dist/native/p-255a0482.entry.js +2 -0
- package/dist/native/p-255a0482.entry.js.map +1 -0
- package/dist/native/{p-f73e9752.entry.js → p-3305a7e6.entry.js} +2 -2
- package/dist/native/p-3305a7e6.entry.js.map +1 -0
- package/dist/native/p-36b0a6f0.entry.js +2 -0
- package/dist/native/p-36b0a6f0.entry.js.map +1 -0
- package/dist/native/p-434bc910.entry.js +2 -0
- package/dist/native/p-434bc910.entry.js.map +1 -0
- package/dist/native/{p-ea98ba7a.entry.js → p-436029a5.entry.js} +2 -2
- package/dist/native/p-460fdf02.entry.js +2 -0
- package/dist/native/p-460fdf02.entry.js.map +1 -0
- package/dist/native/p-477e02cf.entry.js +2 -0
- package/dist/native/p-477e02cf.entry.js.map +1 -0
- package/dist/native/{p-28afb852.entry.js → p-4efb582b.entry.js} +2 -2
- package/dist/native/p-4efb582b.entry.js.map +1 -0
- package/dist/native/p-4f1dfa32.entry.js +2 -0
- package/dist/native/p-4f1dfa32.entry.js.map +1 -0
- package/dist/native/p-51b7de55.entry.js +13 -0
- package/dist/native/p-51b7de55.entry.js.map +1 -0
- package/dist/native/{p-37c6d559.entry.js → p-5dd120dc.entry.js} +2 -2
- package/dist/native/p-5dd120dc.entry.js.map +1 -0
- package/dist/native/{p-5acf105e.entry.js → p-67181258.entry.js} +2 -2
- package/dist/native/p-6a81884b.entry.js +2 -0
- package/dist/native/p-6a81884b.entry.js.map +1 -0
- package/dist/native/p-6aa483de.entry.js +2 -0
- package/dist/native/{p-b1a917c7.entry.js → p-6fc79712.entry.js} +2 -2
- package/dist/native/{p-ee04ea09.entry.js → p-729589cb.entry.js} +2 -2
- package/dist/native/p-729589cb.entry.js.map +1 -0
- package/dist/native/p-78bf7650.entry.js +2 -0
- package/dist/native/p-7e6e9ea2.entry.js +2 -0
- package/dist/native/p-8f1cd9e2.entry.js +2 -0
- package/dist/native/p-8f1cd9e2.entry.js.map +1 -0
- package/dist/native/{p-4cf47e1a.entry.js → p-910cd685.entry.js} +2 -2
- package/dist/native/p-91eaf02e.entry.js +2 -0
- package/dist/native/p-91eaf02e.entry.js.map +1 -0
- package/dist/native/p-93e35975.entry.js +2 -0
- package/dist/native/p-93e35975.entry.js.map +1 -0
- package/dist/native/{p-9d8257dc.entry.js → p-96c45604.entry.js} +2 -2
- package/dist/native/{p-6f456ae4.entry.js → p-9b6ad782.entry.js} +2 -2
- package/dist/native/{p-6f456ae4.entry.js.map → p-9b6ad782.entry.js.map} +1 -1
- package/dist/native/{p-fd872d54.entry.js → p-9f32c3ea.entry.js} +2 -2
- package/dist/native/p-B6GgGra-.js +2 -0
- package/dist/native/p-B6GgGra-.js.map +1 -0
- package/dist/native/p-Blc6XEY7.js +2 -0
- package/dist/native/p-Blc6XEY7.js.map +1 -0
- package/dist/native/p-D3eWMME9.js +6 -0
- package/dist/native/p-D3eWMME9.js.map +1 -0
- package/dist/native/p-DQuL1Twl.js.map +1 -1
- package/dist/native/p-IlwlcG9l.js +2 -0
- package/dist/native/{p-DOZbXX2L.js.map → p-IlwlcG9l.js.map} +1 -1
- package/dist/native/{p-b0935c49.entry.js → p-a6fea322.entry.js} +2 -2
- package/dist/native/p-ae279ae9.entry.js +2 -0
- package/dist/native/p-ae279ae9.entry.js.map +1 -0
- package/dist/native/p-ba1286aa.entry.js +2 -0
- package/dist/native/p-ba1286aa.entry.js.map +1 -0
- package/dist/native/p-bb52a5a9.entry.js +2 -0
- package/dist/native/p-bb52a5a9.entry.js.map +1 -0
- package/dist/native/p-bc90247e.entry.js +2 -0
- package/dist/native/p-bc90247e.entry.js.map +1 -0
- package/dist/native/{p-0493fb6d.entry.js → p-c2a73a5a.entry.js} +2 -2
- package/dist/native/p-c4c11549.entry.js +2 -0
- package/dist/native/{p-3c54e422.entry.js → p-c5ecdc49.entry.js} +2 -2
- package/dist/native/p-c5ecdc49.entry.js.map +1 -0
- package/dist/native/{p-527e9b56.entry.js → p-cb1b9edb.entry.js} +2 -2
- package/dist/native/p-cb1b9edb.entry.js.map +1 -0
- package/dist/native/p-cdaf54b0.entry.js +2 -0
- package/dist/native/p-cdaf54b0.entry.js.map +1 -0
- package/dist/native/{p-e7dc36d9.entry.js → p-ceb8fe8a.entry.js} +2 -2
- package/dist/native/p-daf7541b.entry.js +2 -0
- package/dist/native/p-daf7541b.entry.js.map +1 -0
- package/dist/native/{p-da893df2.entry.js → p-ded4be77.entry.js} +2 -2
- package/dist/native/p-ded4be77.entry.js.map +1 -0
- package/dist/native/p-e1fc5f8c.entry.js +2 -0
- package/dist/native/p-e1fc5f8c.entry.js.map +1 -0
- package/dist/native/{p-d4f95c86.entry.js → p-e6c69f7d.entry.js} +2 -2
- package/dist/native/p-e6c69f7d.entry.js.map +1 -0
- package/dist/native/p-e83603f1.entry.js +2 -0
- package/dist/native/p-e83603f1.entry.js.map +1 -0
- package/dist/native/p-ec217581.entry.js +2 -0
- package/dist/native/p-ec217581.entry.js.map +1 -0
- package/dist/native/p-ee694832.entry.js +2 -0
- package/dist/native/p-ee694832.entry.js.map +1 -0
- package/dist/native/{p-b1ef2f25.entry.js → p-f7e0146e.entry.js} +2 -2
- package/dist/native/p-f7e0146e.entry.js.map +1 -0
- package/dist/types/components/nv-drawer/nv-drawer.d.ts +161 -0
- package/dist/types/components/nv-drawer/nv-drawer.docs.d.ts +4 -0
- package/dist/types/components/nv-drawerfooter/nv-drawerfooter.d.ts +76 -0
- package/dist/types/components/nv-drawerfooter/nv-drawerfooter.docs.d.ts +4 -0
- package/dist/types/components/nv-drawerheader/nv-drawerheader.d.ts +20 -0
- package/dist/types/components/nv-drawerheader/nv-drawerheader.docs.d.ts +4 -0
- package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
- package/dist/types/components/nv-split/nv-split.d.ts +4 -4
- package/dist/types/components.d.ts +292 -5
- package/dist/vscode-data.json +153 -1
- package/hydrate/index.js +969 -408
- package/hydrate/index.mjs +969 -408
- package/package.json +13 -1
- package/dist/cjs/grow.animation-BrWzyoUA.js.map +0 -1
- package/dist/components/p--iYGZN4R.js.map +0 -1
- package/dist/components/p-B-3kAnun.js.map +0 -1
- package/dist/components/p-BQo7AMPX.js.map +0 -1
- package/dist/components/p-CBF8V1L7.js.map +0 -1
- package/dist/components/p-CmwaW0q4.js.map +0 -1
- package/dist/components/p-D1i2OAGe.js.map +0 -1
- package/dist/components/p-DOZbXX2L.js.map +0 -1
- package/dist/components/p-DWG6az-u.js.map +0 -1
- package/dist/components/p-DaiLIZ8f.js.map +0 -1
- package/dist/components/p-Dc_0pr83.js.map +0 -1
- package/dist/components/p-Dk8ekxr_.js.map +0 -1
- package/dist/esm/grow.animation-CvHGHBL4.js.map +0 -1
- package/dist/native/p-02df60a5.entry.js +0 -2
- package/dist/native/p-02df60a5.entry.js.map +0 -1
- package/dist/native/p-0b8d6777.entry.js +0 -13
- package/dist/native/p-0b8d6777.entry.js.map +0 -1
- package/dist/native/p-0e7e693f.entry.js +0 -2
- package/dist/native/p-0e7e693f.entry.js.map +0 -1
- package/dist/native/p-0fe60a9d.entry.js +0 -2
- package/dist/native/p-0fe60a9d.entry.js.map +0 -1
- package/dist/native/p-14b0bf14.entry.js +0 -2
- package/dist/native/p-14b0bf14.entry.js.map +0 -1
- package/dist/native/p-28afb852.entry.js.map +0 -1
- package/dist/native/p-2cf77850.entry.js +0 -2
- package/dist/native/p-2cf77850.entry.js.map +0 -1
- package/dist/native/p-31a12d8a.entry.js +0 -2
- package/dist/native/p-31a12d8a.entry.js.map +0 -1
- package/dist/native/p-37c6d559.entry.js.map +0 -1
- package/dist/native/p-3c54e422.entry.js.map +0 -1
- package/dist/native/p-3c9b22ff.entry.js +0 -2
- package/dist/native/p-3c9b22ff.entry.js.map +0 -1
- package/dist/native/p-4a71f223.entry.js +0 -2
- package/dist/native/p-4a71f223.entry.js.map +0 -1
- package/dist/native/p-527e9b56.entry.js.map +0 -1
- package/dist/native/p-5bce524d.entry.js +0 -2
- package/dist/native/p-5bce524d.entry.js.map +0 -1
- package/dist/native/p-63bc0a05.entry.js +0 -2
- package/dist/native/p-63bc0a05.entry.js.map +0 -1
- package/dist/native/p-63bf86de.entry.js +0 -2
- package/dist/native/p-6a3c1413.entry.js +0 -2
- package/dist/native/p-7e274db7.entry.js +0 -7
- package/dist/native/p-7e274db7.entry.js.map +0 -1
- package/dist/native/p-86b2b071.entry.js +0 -2
- package/dist/native/p-86b2b071.entry.js.map +0 -1
- package/dist/native/p-8b278fce.entry.js +0 -2
- package/dist/native/p-8b278fce.entry.js.map +0 -1
- package/dist/native/p-9c543ab2.entry.js +0 -2
- package/dist/native/p-9c543ab2.entry.js.map +0 -1
- package/dist/native/p-DOZbXX2L.js +0 -2
- package/dist/native/p-DS5GOtQ3.js +0 -2
- package/dist/native/p-DS5GOtQ3.js.map +0 -1
- package/dist/native/p-a2aa6872.entry.js +0 -2
- package/dist/native/p-b1ef2f25.entry.js.map +0 -1
- package/dist/native/p-b2ed6d34.entry.js +0 -2
- package/dist/native/p-b2ed6d34.entry.js.map +0 -1
- package/dist/native/p-bd6ae5f3.entry.js +0 -2
- package/dist/native/p-c98b9ce4.entry.js +0 -2
- package/dist/native/p-c98b9ce4.entry.js.map +0 -1
- package/dist/native/p-cc305619.entry.js +0 -2
- package/dist/native/p-cc305619.entry.js.map +0 -1
- package/dist/native/p-d1cfdc3e.entry.js +0 -2
- package/dist/native/p-d1cfdc3e.entry.js.map +0 -1
- package/dist/native/p-d3b1bd81.entry.js +0 -2
- package/dist/native/p-d424b9aa.entry.js +0 -2
- package/dist/native/p-d424b9aa.entry.js.map +0 -1
- package/dist/native/p-d4f95c86.entry.js.map +0 -1
- package/dist/native/p-da893df2.entry.js.map +0 -1
- package/dist/native/p-e0adb05d.entry.js.map +0 -1
- package/dist/native/p-e6a37207.entry.js +0 -2
- package/dist/native/p-e6a37207.entry.js.map +0 -1
- package/dist/native/p-ee04ea09.entry.js.map +0 -1
- package/dist/native/p-f73e9752.entry.js.map +0 -1
- /package/dist/native/{p-b21e38a3.entry.js.map → p-04a2fe7f.entry.js.map} +0 -0
- /package/dist/native/{p-ea98ba7a.entry.js.map → p-436029a5.entry.js.map} +0 -0
- /package/dist/native/{p-5acf105e.entry.js.map → p-67181258.entry.js.map} +0 -0
- /package/dist/native/{p-63bf86de.entry.js.map → p-6aa483de.entry.js.map} +0 -0
- /package/dist/native/{p-b1a917c7.entry.js.map → p-6fc79712.entry.js.map} +0 -0
- /package/dist/native/{p-d3b1bd81.entry.js.map → p-78bf7650.entry.js.map} +0 -0
- /package/dist/native/{p-a2aa6872.entry.js.map → p-7e6e9ea2.entry.js.map} +0 -0
- /package/dist/native/{p-4cf47e1a.entry.js.map → p-910cd685.entry.js.map} +0 -0
- /package/dist/native/{p-9d8257dc.entry.js.map → p-96c45604.entry.js.map} +0 -0
- /package/dist/native/{p-fd872d54.entry.js.map → p-9f32c3ea.entry.js.map} +0 -0
- /package/dist/native/{p-b0935c49.entry.js.map → p-a6fea322.entry.js.map} +0 -0
- /package/dist/native/{p-0493fb6d.entry.js.map → p-c2a73a5a.entry.js.map} +0 -0
- /package/dist/native/{p-6a3c1413.entry.js.map → p-c4c11549.entry.js.map} +0 -0
- /package/dist/native/{p-e7dc36d9.entry.js.map → p-ceb8fe8a.entry.js.map} +0 -0
|
@@ -4,26 +4,31 @@ const NvTableDocs = {
|
|
|
4
4
|
subcomponents: ['nv-tableheader'],
|
|
5
5
|
composedComponents: ['nv-tableheader'],
|
|
6
6
|
stories: [
|
|
7
|
+
// Default
|
|
7
8
|
{
|
|
8
9
|
name: 'Default',
|
|
9
10
|
description: 'The NvTable behaves just like a native HTML table element, but is enhanced with Nova styles and additional functionality. Use standard table elements (thead, tbody, tfoot, tr, th, td) as children.',
|
|
10
11
|
template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", null, "Name"), h("th", null, "Age"), h("th", null, "Email"))), h("tbody", null, h("tr", null, h("td", null, "Alice Johnson"), h("td", null, "25"), h("td", null, "alice.johnson@example.com")), h("tr", null, h("td", null, "Bob Smith"), h("td", null, "30"), h("td", null, "bob.smith@example.com")), h("tr", null, h("td", null, "Charlie Brown"), h("td", null, "35"), h("td", null, "charlie.brown@example.com")))))),
|
|
11
12
|
},
|
|
13
|
+
// TableWithTableheader
|
|
12
14
|
{
|
|
13
15
|
name: 'TableWithTableheader',
|
|
14
16
|
description: 'Use the nv-tableheader component to add a header with additional features row to the table.',
|
|
15
17
|
template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", null, h("nv-tableheader", { sortable: true }, "Name")), h("th", null, h("nv-tableheader", { sortable: true }, "Age")))), h("tbody", null, h("tr", null, h("td", null, "Alice Johnson"), h("td", null, "25")), h("tr", null, h("td", null, "Bob Smith"), h("td", null, "30")), h("tr", null, h("td", null, "Charlie Brown"), h("td", null, "35")))))),
|
|
16
18
|
},
|
|
19
|
+
// ColumnResizingWidthClasses
|
|
17
20
|
{
|
|
18
21
|
name: 'ColumnResizingWidthClasses',
|
|
19
22
|
description: 'Columns can be resized by default. Use width classes (like w-10) to set initial column widths. Use data-no-resize attribute to prevent specific columns from being resized. Columns without fixed widths will grow to fill available space.',
|
|
20
23
|
template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", { "data-class": "w-10" }, "Name"), h("th", { "data-class": "w-10" }, "Age"), h("th", { "data-no-resize": true }, "Email (grows to fill space)"), h("th", { "data-class": "w-10", "data-no-resize": true }, "Actions"))), h("tbody", null, h("tr", null, h("td", null, "Alice Johnson"), h("td", null, "25"), h("td", null, "alice.johnson@company.example.com"), h("td", null, "Edit")), h("tr", null, h("td", null, "Bob Smith"), h("td", null, "30"), h("td", null, "bob.smith@company.example.com"), h("td", null, "Edit")), h("tr", null, h("td", null, "Charlie Brown"), h("td", null, "35"), h("td", null, "charlie.brown@company.example.com"), h("td", null, "Edit")))))),
|
|
21
24
|
},
|
|
25
|
+
// RowSelection
|
|
22
26
|
{
|
|
23
27
|
name: 'RowSelection',
|
|
24
28
|
description: 'Use the data-selected attribute on table rows to apply selection styling and indicate the currently selected row.',
|
|
25
29
|
template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", null, "Name"), h("th", null, "Department"), h("th", null, "Status"))), h("tbody", null, h("tr", null, h("td", null, "Alice Johnson"), h("td", null, "Engineering"), h("td", null, "Active")), h("tr", { "data-selected": true }, h("td", null, "Bob Smith"), h("td", null, "Design"), h("td", null, "Active")), h("tr", null, h("td", null, "Charlie Brown"), h("td", null, "Product"), h("td", null, "Inactive")))))),
|
|
26
30
|
},
|
|
31
|
+
// StickyHeader
|
|
27
32
|
{
|
|
28
33
|
name: 'StickyHeader',
|
|
29
34
|
description: 'Use data-sticky-top on thead elements to make the header stick to the top during vertical scrolling. This is useful for long tables where you want to keep column headers visible.',
|
|
@@ -31,11 +36,18 @@ const NvTableDocs = {
|
|
|
31
36
|
.fill(0)
|
|
32
37
|
.map((_, index) => (h("tr", { key: index }, h("td", null, "Employee ", index + 1), h("td", null, "Developer"), h("td", null, "Engineering"))))))))),
|
|
33
38
|
},
|
|
39
|
+
// StickyColumnsHorizontalScroll
|
|
34
40
|
{
|
|
35
41
|
name: 'StickyColumnsHorizontalScroll',
|
|
36
42
|
description: 'Use data-sticky-left and data-sticky-right on th/td elements to make columns stick during horizontal scrolling. Apply the same attribute to both header and data cells. Requires an overflow-x-auto container.',
|
|
37
43
|
template: (h("div", { "data-class": "overflow-x-auto" }, h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", { "data-sticky-left": true }, "Name"), h("th", null, "Position"), h("th", null, "Department"), h("th", null, "Email"), h("th", null, "Phone"), h("th", null, "Address"), h("th", null, "Start Date"), h("th", null, "Salary"), h("th", null, "Manager"), h("th", null, "Skills"), h("th", null, "Notes"), h("th", null, "Website"), h("th", { "data-sticky-right": true }, "Actions"))), h("tbody", null, h("tr", null, h("td", { "data-sticky-left": true }, "John Doe"), h("td", null, "Senior Developer"), h("td", null, "Engineering"), h("td", null, "john.doe@company.com"), h("td", null, "+1-555-0123"), h("td", null, "123 Main St, NY 10001"), h("td", null, "2022-03-10"), h("td", null, "$95,000"), h("td", null, "Sarah Wilson"), h("td", null, "React, TypeScript, Node.js"), h("td", null, "Team lead with React expertise"), h("td", null, "johndoe.dev"), h("td", { "data-sticky-right": true }, "Edit | Delete")), h("tr", null, h("td", { "data-sticky-left": true }, "Jane Smith"), h("td", null, "UX Designer"), h("td", null, "Design"), h("td", null, "jane.smith@company.com"), h("td", null, "+1-555-0456"), h("td", null, "456 Oak Ave, LA 90210"), h("td", null, "2021-09-15"), h("td", null, "$87,000"), h("td", null, "Tom Anderson"), h("td", null, "Figma, Adobe CC, User Research"), h("td", null, "Creative designer with 8 years experience"), h("td", null, "janesmith.design"), h("td", { "data-sticky-right": true }, "Edit | Delete")), h("tr", null, h("td", { "data-sticky-left": true }, "Mike Johnson"), h("td", null, "Product Manager"), h("td", null, "Product"), h("td", null, "mike.johnson@company.com"), h("td", null, "+1-555-0789"), h("td", null, "789 Pine St, Chicago 60601"), h("td", null, "2020-01-08"), h("td", null, "$110,000"), h("td", null, "Lisa Chen"), h("td", null, "Agile, Scrum, Product Strategy"), h("td", null, "Experienced project manager and strategist"), h("td", null, "mikejohnson.biz"), h("td", { "data-sticky-right": true }, "Edit | Delete"))))))),
|
|
38
44
|
},
|
|
45
|
+
// SlotDefault
|
|
46
|
+
{
|
|
47
|
+
name: 'SlotDefault',
|
|
48
|
+
description: 'Default slot for table content. Use standard HTML table elements (table, thead, tbody, tfoot, tr, th, td) as children.',
|
|
49
|
+
template: (h("nv-table", { "data-storybook-args": true }, h("table", null, h("thead", null, h("tr", null, h("th", null, "Column 1"), h("th", null, "Column 2"))), h("tbody", null, h("tr", null, h("td", null, "Data 1"), h("td", null, "Data 2")))))),
|
|
50
|
+
},
|
|
39
51
|
],
|
|
40
52
|
};
|
|
41
53
|
export default NvTableDocs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nv-table.docs.js","sourceRoot":"","sources":["../../../../src/components/nv-table/nv-table.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvTableDocs: NovaDocs<Components.NvTable> = {\n component: 'nv-table',\n subcomponents: ['nv-tableheader'],\n composedComponents: ['nv-tableheader'],\n stories: [\n {\n name: 'Default',\n description:\n 'The NvTable behaves just like a native HTML table element, but is enhanced with Nova styles and additional functionality. Use standard table elements (thead, tbody, tfoot, tr, th, td) as children.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Name</th>\n <th>Age</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n <td>alice.johnson@example.com</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n <td>bob.smith@example.com</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n <td>charlie.brown@example.com</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n {\n name: 'TableWithTableheader',\n description:\n 'Use the nv-tableheader component to add a header with additional features row to the table.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>\n <nv-tableheader sortable>Name</nv-tableheader>\n </th>\n <th>\n <nv-tableheader sortable>Age</nv-tableheader>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n {\n name: 'ColumnResizingWidthClasses',\n description:\n 'Columns can be resized by default. Use width classes (like w-10) to set initial column widths. Use data-no-resize attribute to prevent specific columns from being resized. Columns without fixed widths will grow to fill available space.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th data-class=\"w-10\">Name</th>\n <th data-class=\"w-10\">Age</th>\n <th data-no-resize>Email (grows to fill space)</th>\n <th data-class=\"w-10\" data-no-resize>\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n <td>alice.johnson@company.example.com</td>\n <td>Edit</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n <td>bob.smith@company.example.com</td>\n <td>Edit</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n <td>charlie.brown@company.example.com</td>\n <td>Edit</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n {\n name: 'RowSelection',\n description:\n 'Use the data-selected attribute on table rows to apply selection styling and indicate the currently selected row.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Name</th>\n <th>Department</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>Engineering</td>\n <td>Active</td>\n </tr>\n <tr data-selected>\n <td>Bob Smith</td>\n <td>Design</td>\n <td>Active</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>Product</td>\n <td>Inactive</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n {\n name: 'StickyHeader',\n description:\n 'Use data-sticky-top on thead elements to make the header stick to the top during vertical scrolling. This is useful for long tables where you want to keep column headers visible.',\n template: (\n <div data-class=\"h-40 overflow-y-auto\">\n <nv-table data-storybook-args>\n <table>\n <thead data-sticky-top>\n <tr>\n <th>Name</th>\n <th>Position</th>\n <th>Department</th>\n </tr>\n </thead>\n <tbody>\n {Array(10)\n .fill(0)\n .map((_, index) => (\n <tr key={index}>\n <td>Employee {index + 1}</td>\n <td>Developer</td>\n <td>Engineering</td>\n </tr>\n ))}\n </tbody>\n </table>\n </nv-table>\n </div>\n ),\n },\n {\n name: 'StickyColumnsHorizontalScroll',\n description:\n 'Use data-sticky-left and data-sticky-right on th/td elements to make columns stick during horizontal scrolling. Apply the same attribute to both header and data cells. Requires an overflow-x-auto container.',\n template: (\n <div data-class=\"overflow-x-auto\">\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th data-sticky-left>Name</th>\n <th>Position</th>\n <th>Department</th>\n <th>Email</th>\n <th>Phone</th>\n <th>Address</th>\n <th>Start Date</th>\n <th>Salary</th>\n <th>Manager</th>\n <th>Skills</th>\n <th>Notes</th>\n <th>Website</th>\n <th data-sticky-right>Actions</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td data-sticky-left>John Doe</td>\n <td>Senior Developer</td>\n <td>Engineering</td>\n <td>john.doe@company.com</td>\n <td>+1-555-0123</td>\n <td>123 Main St, NY 10001</td>\n <td>2022-03-10</td>\n <td>$95,000</td>\n <td>Sarah Wilson</td>\n <td>React, TypeScript, Node.js</td>\n <td>Team lead with React expertise</td>\n <td>johndoe.dev</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n <tr>\n <td data-sticky-left>Jane Smith</td>\n <td>UX Designer</td>\n <td>Design</td>\n <td>jane.smith@company.com</td>\n <td>+1-555-0456</td>\n <td>456 Oak Ave, LA 90210</td>\n <td>2021-09-15</td>\n <td>$87,000</td>\n <td>Tom Anderson</td>\n <td>Figma, Adobe CC, User Research</td>\n <td>Creative designer with 8 years experience</td>\n <td>janesmith.design</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n <tr>\n <td data-sticky-left>Mike Johnson</td>\n <td>Product Manager</td>\n <td>Product</td>\n <td>mike.johnson@company.com</td>\n <td>+1-555-0789</td>\n <td>789 Pine St, Chicago 60601</td>\n <td>2020-01-08</td>\n <td>$110,000</td>\n <td>Lisa Chen</td>\n <td>Agile, Scrum, Product Strategy</td>\n <td>Experienced project manager and strategist</td>\n <td>mikejohnson.biz</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n </div>\n ),\n },\n ],\n};\n\nexport default NvTableDocs;\n"]}
|
|
1
|
+
{"version":3,"file":"nv-table.docs.js","sourceRoot":"","sources":["../../../../src/components/nv-table/nv-table.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvTableDocs: NovaDocs<Components.NvTable> = {\n component: 'nv-table',\n subcomponents: ['nv-tableheader'],\n composedComponents: ['nv-tableheader'],\n stories: [\n // Default\n {\n name: 'Default',\n description:\n 'The NvTable behaves just like a native HTML table element, but is enhanced with Nova styles and additional functionality. Use standard table elements (thead, tbody, tfoot, tr, th, td) as children.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Name</th>\n <th>Age</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n <td>alice.johnson@example.com</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n <td>bob.smith@example.com</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n <td>charlie.brown@example.com</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n // TableWithTableheader\n {\n name: 'TableWithTableheader',\n description:\n 'Use the nv-tableheader component to add a header with additional features row to the table.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>\n <nv-tableheader sortable>Name</nv-tableheader>\n </th>\n <th>\n <nv-tableheader sortable>Age</nv-tableheader>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n // ColumnResizingWidthClasses\n {\n name: 'ColumnResizingWidthClasses',\n description:\n 'Columns can be resized by default. Use width classes (like w-10) to set initial column widths. Use data-no-resize attribute to prevent specific columns from being resized. Columns without fixed widths will grow to fill available space.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th data-class=\"w-10\">Name</th>\n <th data-class=\"w-10\">Age</th>\n <th data-no-resize>Email (grows to fill space)</th>\n <th data-class=\"w-10\" data-no-resize>\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>25</td>\n <td>alice.johnson@company.example.com</td>\n <td>Edit</td>\n </tr>\n <tr>\n <td>Bob Smith</td>\n <td>30</td>\n <td>bob.smith@company.example.com</td>\n <td>Edit</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>35</td>\n <td>charlie.brown@company.example.com</td>\n <td>Edit</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n // RowSelection\n {\n name: 'RowSelection',\n description:\n 'Use the data-selected attribute on table rows to apply selection styling and indicate the currently selected row.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Name</th>\n <th>Department</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Alice Johnson</td>\n <td>Engineering</td>\n <td>Active</td>\n </tr>\n <tr data-selected>\n <td>Bob Smith</td>\n <td>Design</td>\n <td>Active</td>\n </tr>\n <tr>\n <td>Charlie Brown</td>\n <td>Product</td>\n <td>Inactive</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n // StickyHeader\n {\n name: 'StickyHeader',\n description:\n 'Use data-sticky-top on thead elements to make the header stick to the top during vertical scrolling. This is useful for long tables where you want to keep column headers visible.',\n template: (\n <div data-class=\"h-40 overflow-y-auto\">\n <nv-table data-storybook-args>\n <table>\n <thead data-sticky-top>\n <tr>\n <th>Name</th>\n <th>Position</th>\n <th>Department</th>\n </tr>\n </thead>\n <tbody>\n {Array(10)\n .fill(0)\n .map((_, index) => (\n <tr key={index}>\n <td>Employee {index + 1}</td>\n <td>Developer</td>\n <td>Engineering</td>\n </tr>\n ))}\n </tbody>\n </table>\n </nv-table>\n </div>\n ),\n },\n // StickyColumnsHorizontalScroll\n {\n name: 'StickyColumnsHorizontalScroll',\n description:\n 'Use data-sticky-left and data-sticky-right on th/td elements to make columns stick during horizontal scrolling. Apply the same attribute to both header and data cells. Requires an overflow-x-auto container.',\n template: (\n <div data-class=\"overflow-x-auto\">\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th data-sticky-left>Name</th>\n <th>Position</th>\n <th>Department</th>\n <th>Email</th>\n <th>Phone</th>\n <th>Address</th>\n <th>Start Date</th>\n <th>Salary</th>\n <th>Manager</th>\n <th>Skills</th>\n <th>Notes</th>\n <th>Website</th>\n <th data-sticky-right>Actions</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td data-sticky-left>John Doe</td>\n <td>Senior Developer</td>\n <td>Engineering</td>\n <td>john.doe@company.com</td>\n <td>+1-555-0123</td>\n <td>123 Main St, NY 10001</td>\n <td>2022-03-10</td>\n <td>$95,000</td>\n <td>Sarah Wilson</td>\n <td>React, TypeScript, Node.js</td>\n <td>Team lead with React expertise</td>\n <td>johndoe.dev</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n <tr>\n <td data-sticky-left>Jane Smith</td>\n <td>UX Designer</td>\n <td>Design</td>\n <td>jane.smith@company.com</td>\n <td>+1-555-0456</td>\n <td>456 Oak Ave, LA 90210</td>\n <td>2021-09-15</td>\n <td>$87,000</td>\n <td>Tom Anderson</td>\n <td>Figma, Adobe CC, User Research</td>\n <td>Creative designer with 8 years experience</td>\n <td>janesmith.design</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n <tr>\n <td data-sticky-left>Mike Johnson</td>\n <td>Product Manager</td>\n <td>Product</td>\n <td>mike.johnson@company.com</td>\n <td>+1-555-0789</td>\n <td>789 Pine St, Chicago 60601</td>\n <td>2020-01-08</td>\n <td>$110,000</td>\n <td>Lisa Chen</td>\n <td>Agile, Scrum, Product Strategy</td>\n <td>Experienced project manager and strategist</td>\n <td>mikejohnson.biz</td>\n <td data-sticky-right>Edit | Delete</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n </div>\n ),\n },\n // SlotDefault\n {\n name: 'SlotDefault',\n description:\n 'Default slot for table content. Use standard HTML table elements (table, thead, tbody, tfoot, tr, th, td) as children.',\n template: (\n <nv-table data-storybook-args>\n <table>\n <thead>\n <tr>\n <th>Column 1</th>\n <th>Column 2</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Data 1</td>\n <td>Data 2</td>\n </tr>\n </tbody>\n </table>\n </nv-table>\n ),\n },\n ],\n};\n\nexport default NvTableDocs;\n"]}
|
|
@@ -59,7 +59,7 @@ export class NvTable {
|
|
|
59
59
|
/****************************************************************************/
|
|
60
60
|
//#region RENDER
|
|
61
61
|
render() {
|
|
62
|
-
return (h(Host, { key: '
|
|
62
|
+
return (h(Host, { key: '6d13efcd059cca60b2f6bc092b75b65e36738913' }, h("slot", { key: '33c715acec9e561586c9059f20e77b403307c134' })));
|
|
63
63
|
}
|
|
64
64
|
static get is() { return "nv-table"; }
|
|
65
65
|
static get originalStyleUrls() {
|
|
@@ -61,7 +61,7 @@ export function calculateNewWidth(startWidth, delta, minWidth = TABLE_CONSTANTS.
|
|
|
61
61
|
* @returns {element is HTMLTableCellElement} Type guard for table cell elements
|
|
62
62
|
*/
|
|
63
63
|
export function isValidTableCell(element) {
|
|
64
|
-
return
|
|
64
|
+
return element?.tagName === 'TH' || element?.tagName === 'TD';
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
67
|
* Finds the closest table cell element from an event target
|
|
@@ -81,12 +81,11 @@ export function getClosestTableCell(target) {
|
|
|
81
81
|
* @returns {boolean} True if capture was successfully set
|
|
82
82
|
*/
|
|
83
83
|
export function setPointerCapture(cell, pointerId) {
|
|
84
|
-
var _a;
|
|
85
84
|
try {
|
|
86
|
-
|
|
85
|
+
cell.setPointerCapture?.(pointerId);
|
|
87
86
|
return true;
|
|
88
87
|
}
|
|
89
|
-
catch
|
|
88
|
+
catch {
|
|
90
89
|
return false;
|
|
91
90
|
}
|
|
92
91
|
}
|
|
@@ -97,12 +96,11 @@ export function setPointerCapture(cell, pointerId) {
|
|
|
97
96
|
* @returns {boolean} True if release was successful
|
|
98
97
|
*/
|
|
99
98
|
export function releasePointerCapture(cell, pointerId) {
|
|
100
|
-
var _a;
|
|
101
99
|
try {
|
|
102
|
-
|
|
100
|
+
cell.releasePointerCapture?.(pointerId);
|
|
103
101
|
return true;
|
|
104
102
|
}
|
|
105
|
-
catch
|
|
103
|
+
catch {
|
|
106
104
|
return false;
|
|
107
105
|
}
|
|
108
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nv-table.utils.js","sourceRoot":"","sources":["../../../../src/components/nv-table/nv-table.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,uDAAuD;IACvD,QAAQ,EAAE,EAAE;IACZ,yDAAyD;IACzD,cAAc,EAAE,EAAE;IAClB,qCAAqC;IACrC,KAAK,EAAE,EAAE;CACD,CAAC,CAAC;AAEZ;;;GAGG;AACH,MAAM,UAAU,+BAA+B;IAC7C,qEAAqE;IACrE,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAC,OAAO;QAC5C,CAAC,CAAC,eAAe,CAAC,cAAc;QAChC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAmB,EACnB,IAA0B;IAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC1C,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,SAAiB,EACjB,WAAmB;IAEnB,OAAO,OAAO,IAAI,SAAS,GAAG,WAAW,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,KAAa,EACb,WAAmB,eAAe,CAAC,KAAK;IAExC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAA2B;IAE3B,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,MAAK,IAAI,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,MAAK,IAAI,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA0B;IAE1B,IAAI,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAgC,CAAC;IACrE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA0B,EAC1B,SAAiB;;IAEjB,IAAI,CAAC;QACH,MAAA,IAAI,CAAC,iBAAiB,qDAAG,SAAS,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAA0B,EAC1B,SAAiB;;IAEjB,IAAI,CAAC;QACH,MAAA,IAAI,CAAC,qBAAqB,qDAAG,SAAS,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAA0B;IACrD,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAA0B,EAAE,KAAa;IACpE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,MAAc;IAEd,OAAO,QAAQ,GAAG,MAAM,CAAC;AAC3B,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA0B,EAC1B,KAAmB;IAEnB,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAyB,EACzB,KAAmB;IAEnB,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAkB,EAClB,KAAmB,EACnB,WAAmB,eAAe,CAAC,KAAK;IAExC,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtE,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC","sourcesContent":["/**\n * Table utility functions and constants for nv-table component\n *\n * This module contains pure utility functions for table column resizing logic,\n * pointer event handling calculations, and related helper functions.\n */\n\n/**\n * Constants for table column resizing behavior\n */\nexport const TABLE_CONSTANTS = Object.freeze({\n /** Handle width for fine pointers (mouse) in pixels */\n HANDLE_W: 12,\n /** Handle width for coarse pointers (touch) in pixels */\n HANDLE_W_TOUCH: 24,\n /** Minimum column width in pixels */\n MIN_W: 40,\n} as const);\n\n/**\n * Determines the appropriate handle width based on the current pointer type\n * @returns {number} Handle width in pixels (10px for fine pointers, 24px for coarse/touch)\n */\nexport function getHandleWidthForCurrentPointer(): number {\n // Match the CSS media query: wider handle on coarse pointers (touch)\n return matchMedia('(pointer: coarse)').matches\n ? TABLE_CONSTANTS.HANDLE_W_TOUCH\n : TABLE_CONSTANTS.HANDLE_W;\n}\n\n/**\n * Calculates the pointer's horizontal offset within a table cell\n * @param {PointerEvent} event - The pointer event\n * @param {HTMLTableCellElement} cell - The table cell element\n * @returns {number} The horizontal offset from the left edge of the cell\n */\nexport function getPointerOffsetInCell(\n event: PointerEvent,\n cell: HTMLTableCellElement,\n): number {\n const rect = cell.getBoundingClientRect();\n return event.clientX - rect.left;\n}\n\n/**\n * Determines if the pointer is within the resize handle area of a table cell\n * @param {number} offsetX - Horizontal offset within the cell\n * @param {number} cellWidth - Total width of the cell\n * @param {number} handleWidth - Width of the resize handle area\n * @returns {boolean} True if the pointer is in the resize handle area\n */\nexport function isInResizeHandle(\n offsetX: number,\n cellWidth: number,\n handleWidth: number,\n): boolean {\n return offsetX >= cellWidth - handleWidth;\n}\n\n/**\n * Calculates the new column width based on resize delta and constraints\n * @param {number} startWidth - Original width of the column\n * @param {number} delta - Change in pixels from the start position\n * @param {number} minWidth - Minimum allowed width for the column\n * @returns {number} The calculated new width, constrained by minimum\n */\nexport function calculateNewWidth(\n startWidth: number,\n delta: number,\n minWidth: number = TABLE_CONSTANTS.MIN_W,\n): number {\n return Math.max(minWidth, startWidth + delta);\n}\n\n/**\n * Validates that a table cell element is suitable for resizing\n * @param {HTMLElement | null} element - The element to check\n * @returns {element is HTMLTableCellElement} Type guard for table cell elements\n */\nexport function isValidTableCell(\n element: HTMLElement | null,\n): element is HTMLTableCellElement {\n return element?.tagName === 'TH' || element?.tagName === 'TD';\n}\n\n/**\n * Finds the closest table cell element from an event target\n * @param {EventTarget | null} target - The event target\n * @returns {HTMLTableCellElement | null} The closest table cell or null\n */\nexport function getClosestTableCell(\n target: EventTarget | null,\n): HTMLTableCellElement | null {\n if (!(target instanceof HTMLElement)) return null;\n\n const cell = target.closest('th, td') as HTMLTableCellElement | null;\n return isValidTableCell(cell) ? cell : null;\n}\n\n/**\n * Sets up pointer capture for consistent drag behavior across browsers\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} pointerId - The pointer ID from the pointer event\n * @returns {boolean} True if capture was successfully set\n */\nexport function setPointerCapture(\n cell: HTMLTableCellElement,\n pointerId: number,\n): boolean {\n try {\n cell.setPointerCapture?.(pointerId);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Releases pointer capture\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} pointerId - The pointer ID from the pointer event\n * @returns {boolean} True if release was successful\n */\nexport function releasePointerCapture(\n cell: HTMLTableCellElement,\n pointerId: number,\n): boolean {\n try {\n cell.releasePointerCapture?.(pointerId);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Prevents text selection during drag operations\n * @param {boolean} prevent - Whether to prevent selection\n */\nexport function setUserSelectPrevention(prevent: boolean): void {\n document.body.style.userSelect = prevent ? 'none' : '';\n}\n\n/**\n * Gets the current width of a table cell element\n * @param {HTMLTableCellElement} cell - The table cell element\n * @returns {number} The current width in pixels\n */\nexport function getCellWidth(cell: HTMLTableCellElement): number {\n return cell.offsetWidth;\n}\n\n/**\n * Applies a width to a table cell element\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} width - The width to apply in pixels\n */\nexport function setCellWidth(cell: HTMLTableCellElement, width: number): void {\n cell.style.width = `${width}px`;\n}\n\n/**\n * Calculates the delta (change) in horizontal position between two pointer events\n * @param {number} currentX - Current clientX position\n * @param {number} startX - Starting clientX position\n * @returns {number} The horizontal delta\n */\nexport function calculatePointerDelta(\n currentX: number,\n startX: number,\n): number {\n return currentX - startX;\n}\n\n/**\n * Interface for resize operation state\n */\nexport interface ResizeState {\n /** The table cell being resized */\n resizingCell: HTMLTableCellElement;\n /** The pointer ID for this resize operation */\n pointerId: number;\n /** Starting X coordinate */\n startX: number;\n /** Starting width of the cell */\n startWidth: number;\n}\n\n/**\n * Creates a new resize state object\n * @param {HTMLTableCellElement} cell - The cell being resized\n * @param {PointerEvent} event - The initiating pointer event\n * @returns {ResizeState} A new resize state object\n */\nexport function createResizeState(\n cell: HTMLTableCellElement,\n event: PointerEvent,\n): ResizeState {\n return {\n resizingCell: cell,\n pointerId: event.pointerId,\n startX: event.clientX,\n startWidth: getCellWidth(cell),\n };\n}\n\n/**\n * Validates that a resize state is active and matches the given pointer event\n * @param {ResizeState | null} state - The current resize state\n * @param {PointerEvent} event - The pointer event to validate against\n * @returns {boolean} True if the state is valid for this event\n */\nexport function isValidResizeState(\n state: ResizeState | null,\n event: PointerEvent,\n): boolean {\n return state !== null && state.pointerId === event.pointerId;\n}\n\n/**\n * Updates the width of a cell during a resize operation\n * @param {ResizeState} state - The current resize state\n * @param {PointerEvent} event - The current pointer event\n * @param {number} minWidth - Minimum width constraint\n */\nexport function updateCellWidthFromResize(\n state: ResizeState,\n event: PointerEvent,\n minWidth: number = TABLE_CONSTANTS.MIN_W,\n): void {\n const delta = calculatePointerDelta(event.clientX, state.startX);\n const newWidth = calculateNewWidth(state.startWidth, delta, minWidth);\n setCellWidth(state.resizingCell, newWidth);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nv-table.utils.js","sourceRoot":"","sources":["../../../../src/components/nv-table/nv-table.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Table utility functions and constants for nv-table component\n *\n * This module contains pure utility functions for table column resizing logic,\n * pointer event handling calculations, and related helper functions.\n */\n\n/**\n * Constants for table column resizing behavior\n */\nexport const TABLE_CONSTANTS = Object.freeze({\n /** Handle width for fine pointers (mouse) in pixels */\n HANDLE_W: 12,\n /** Handle width for coarse pointers (touch) in pixels */\n HANDLE_W_TOUCH: 24,\n /** Minimum column width in pixels */\n MIN_W: 40,\n} as const);\n\n/**\n * Determines the appropriate handle width based on the current pointer type\n * @returns {number} Handle width in pixels (10px for fine pointers, 24px for coarse/touch)\n */\nexport function getHandleWidthForCurrentPointer(): number {\n // Match the CSS media query: wider handle on coarse pointers (touch)\n return matchMedia('(pointer: coarse)').matches\n ? TABLE_CONSTANTS.HANDLE_W_TOUCH\n : TABLE_CONSTANTS.HANDLE_W;\n}\n\n/**\n * Calculates the pointer's horizontal offset within a table cell\n * @param {PointerEvent} event - The pointer event\n * @param {HTMLTableCellElement} cell - The table cell element\n * @returns {number} The horizontal offset from the left edge of the cell\n */\nexport function getPointerOffsetInCell(\n event: PointerEvent,\n cell: HTMLTableCellElement,\n): number {\n const rect = cell.getBoundingClientRect();\n return event.clientX - rect.left;\n}\n\n/**\n * Determines if the pointer is within the resize handle area of a table cell\n * @param {number} offsetX - Horizontal offset within the cell\n * @param {number} cellWidth - Total width of the cell\n * @param {number} handleWidth - Width of the resize handle area\n * @returns {boolean} True if the pointer is in the resize handle area\n */\nexport function isInResizeHandle(\n offsetX: number,\n cellWidth: number,\n handleWidth: number,\n): boolean {\n return offsetX >= cellWidth - handleWidth;\n}\n\n/**\n * Calculates the new column width based on resize delta and constraints\n * @param {number} startWidth - Original width of the column\n * @param {number} delta - Change in pixels from the start position\n * @param {number} minWidth - Minimum allowed width for the column\n * @returns {number} The calculated new width, constrained by minimum\n */\nexport function calculateNewWidth(\n startWidth: number,\n delta: number,\n minWidth: number = TABLE_CONSTANTS.MIN_W,\n): number {\n return Math.max(minWidth, startWidth + delta);\n}\n\n/**\n * Validates that a table cell element is suitable for resizing\n * @param {HTMLElement | null} element - The element to check\n * @returns {element is HTMLTableCellElement} Type guard for table cell elements\n */\nexport function isValidTableCell(\n element: HTMLElement | null,\n): element is HTMLTableCellElement {\n return element?.tagName === 'TH' || element?.tagName === 'TD';\n}\n\n/**\n * Finds the closest table cell element from an event target\n * @param {EventTarget | null} target - The event target\n * @returns {HTMLTableCellElement | null} The closest table cell or null\n */\nexport function getClosestTableCell(\n target: EventTarget | null,\n): HTMLTableCellElement | null {\n if (!(target instanceof HTMLElement)) return null;\n\n const cell = target.closest('th, td') as HTMLTableCellElement | null;\n return isValidTableCell(cell) ? cell : null;\n}\n\n/**\n * Sets up pointer capture for consistent drag behavior across browsers\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} pointerId - The pointer ID from the pointer event\n * @returns {boolean} True if capture was successfully set\n */\nexport function setPointerCapture(\n cell: HTMLTableCellElement,\n pointerId: number,\n): boolean {\n try {\n cell.setPointerCapture?.(pointerId);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Releases pointer capture\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} pointerId - The pointer ID from the pointer event\n * @returns {boolean} True if release was successful\n */\nexport function releasePointerCapture(\n cell: HTMLTableCellElement,\n pointerId: number,\n): boolean {\n try {\n cell.releasePointerCapture?.(pointerId);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Prevents text selection during drag operations\n * @param {boolean} prevent - Whether to prevent selection\n */\nexport function setUserSelectPrevention(prevent: boolean): void {\n document.body.style.userSelect = prevent ? 'none' : '';\n}\n\n/**\n * Gets the current width of a table cell element\n * @param {HTMLTableCellElement} cell - The table cell element\n * @returns {number} The current width in pixels\n */\nexport function getCellWidth(cell: HTMLTableCellElement): number {\n return cell.offsetWidth;\n}\n\n/**\n * Applies a width to a table cell element\n * @param {HTMLTableCellElement} cell - The table cell element\n * @param {number} width - The width to apply in pixels\n */\nexport function setCellWidth(cell: HTMLTableCellElement, width: number): void {\n cell.style.width = `${width}px`;\n}\n\n/**\n * Calculates the delta (change) in horizontal position between two pointer events\n * @param {number} currentX - Current clientX position\n * @param {number} startX - Starting clientX position\n * @returns {number} The horizontal delta\n */\nexport function calculatePointerDelta(\n currentX: number,\n startX: number,\n): number {\n return currentX - startX;\n}\n\n/**\n * Interface for resize operation state\n */\nexport interface ResizeState {\n /** The table cell being resized */\n resizingCell: HTMLTableCellElement;\n /** The pointer ID for this resize operation */\n pointerId: number;\n /** Starting X coordinate */\n startX: number;\n /** Starting width of the cell */\n startWidth: number;\n}\n\n/**\n * Creates a new resize state object\n * @param {HTMLTableCellElement} cell - The cell being resized\n * @param {PointerEvent} event - The initiating pointer event\n * @returns {ResizeState} A new resize state object\n */\nexport function createResizeState(\n cell: HTMLTableCellElement,\n event: PointerEvent,\n): ResizeState {\n return {\n resizingCell: cell,\n pointerId: event.pointerId,\n startX: event.clientX,\n startWidth: getCellWidth(cell),\n };\n}\n\n/**\n * Validates that a resize state is active and matches the given pointer event\n * @param {ResizeState | null} state - The current resize state\n * @param {PointerEvent} event - The pointer event to validate against\n * @returns {boolean} True if the state is valid for this event\n */\nexport function isValidResizeState(\n state: ResizeState | null,\n event: PointerEvent,\n): boolean {\n return state !== null && state.pointerId === event.pointerId;\n}\n\n/**\n * Updates the width of a cell during a resize operation\n * @param {ResizeState} state - The current resize state\n * @param {PointerEvent} event - The current pointer event\n * @param {number} minWidth - Minimum width constraint\n */\nexport function updateCellWidthFromResize(\n state: ResizeState,\n event: PointerEvent,\n minWidth: number = TABLE_CONSTANTS.MIN_W,\n): void {\n const delta = calculatePointerDelta(event.clientX, state.startX);\n const newWidth = calculateNewWidth(state.startWidth, delta, minWidth);\n setCellWidth(state.resizingCell, newWidth);\n}\n"]}
|
|
@@ -80,7 +80,7 @@ describe('nv-table.utils - Comprehensive Tests', () => {
|
|
|
80
80
|
try {
|
|
81
81
|
TABLE_CONSTANTS.HANDLE_W = 20;
|
|
82
82
|
}
|
|
83
|
-
catch
|
|
83
|
+
catch {
|
|
84
84
|
// Ignored - assignment may or may not throw depending on strict mode
|
|
85
85
|
}
|
|
86
86
|
expect(TABLE_CONSTANTS.HANDLE_W).toBe(originalValue);
|
|
@@ -422,7 +422,7 @@ describe('nv-table.utils - Comprehensive Tests', () => {
|
|
|
422
422
|
expect(result).toBe(false);
|
|
423
423
|
});
|
|
424
424
|
it('should handle edge case pointer IDs', () => {
|
|
425
|
-
const zeroIdState =
|
|
425
|
+
const zeroIdState = { ...mockState, pointerId: 0 };
|
|
426
426
|
const event = { pointerId: 0 };
|
|
427
427
|
const result = isValidResizeState(zeroIdState, event);
|
|
428
428
|
expect(result).toBe(true);
|
|
@@ -571,15 +571,14 @@ describe('nv-table.utils - Comprehensive Tests', () => {
|
|
|
571
571
|
});
|
|
572
572
|
describe('Performance and Memory', () => {
|
|
573
573
|
it('should not create unnecessary objects in hot paths', () => {
|
|
574
|
-
|
|
575
|
-
const startMemory = ((_a = performance.memory) === null || _a === void 0 ? void 0 : _a.usedJSHeapSize) || 0;
|
|
574
|
+
const startMemory = performance.memory?.usedJSHeapSize || 0;
|
|
576
575
|
// Run calculations that should not allocate much memory
|
|
577
576
|
for (let i = 0; i < 1000; i++) {
|
|
578
577
|
calculateNewWidth(100 + i, (i % 20) - 10);
|
|
579
578
|
calculatePointerDelta(i + 50, i);
|
|
580
579
|
isInResizeHandle(i % 100, 100, 10);
|
|
581
580
|
}
|
|
582
|
-
const endMemory =
|
|
581
|
+
const endMemory = performance.memory?.usedJSHeapSize || 0;
|
|
583
582
|
const memoryIncrease = endMemory - startMemory;
|
|
584
583
|
// This is a loose check - mainly ensuring we don't have massive memory leaks
|
|
585
584
|
expect(memoryIncrease).toBeLessThan(1000000); // Less than 1MB increase
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nv-table.utils.test.js","sourceRoot":"","sources":["../../../../../src/components/nv-table/test/nv-table.utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';\nimport {\n TABLE_CONSTANTS,\n getHandleWidthForCurrentPointer,\n getPointerOffsetInCell,\n isInResizeHandle,\n calculateNewWidth,\n isValidTableCell,\n getClosestTableCell,\n setPointerCapture,\n releasePointerCapture,\n setUserSelectPrevention,\n getCellWidth,\n setCellWidth,\n calculatePointerDelta,\n createResizeState,\n isValidResizeState,\n updateCellWidthFromResize,\n} from '../nv-table.utils';\n\n// Mock browser globals\nconst mockMatchMedia = vi.fn();\nconst mockDocumentBody = {\n style: { userSelect: '' },\n};\n\nvi.stubGlobal('matchMedia', mockMatchMedia);\nvi.stubGlobal('document', { body: mockDocumentBody });\nvi.stubGlobal('HTMLElement', class MockHTMLElement {});\n\n/**\n * Comprehensive tests for nv-table utilities\n *\n * These tests validate all utility functions:\n * - Constants and configuration values\n * - Pointer event calculations and handling\n * - Column resize logic and constraints\n * - DOM element validation and manipulation\n * - Resize state management\n * - Edge cases and error conditions\n */\n\ndescribe('nv-table.utils - Comprehensive Tests', () => {\n // Mock DOM elements and browser APIs\n let mockCell: HTMLTableCellElement;\n let mockPointerEvent: PointerEvent;\n\n beforeEach(() => {\n // Reset mocks\n vi.clearAllMocks();\n\n // Setup matchMedia mock for each test\n mockMatchMedia.mockImplementation(query => ({\n matches: query.includes('coarse') ? false : true,\n media: query,\n }));\n\n // Reset document body style\n mockDocumentBody.style.userSelect = '';\n\n // Mock HTMLTableCellElement with mutable offsetWidth\n const mockCellProps = {\n tagName: 'TH',\n offsetWidth: 100,\n style: { width: '' },\n getBoundingClientRect: vi.fn().mockReturnValue({\n left: 10,\n top: 10,\n width: 100,\n height: 30,\n }),\n closest: vi.fn().mockReturnValue(null),\n setPointerCapture: vi.fn(),\n releasePointerCapture: vi.fn(),\n };\n\n // Make offsetWidth mutable for testing\n Object.defineProperty(mockCellProps, 'offsetWidth', {\n writable: true,\n value: 100,\n });\n\n mockCell = mockCellProps as unknown as HTMLTableCellElement;\n\n // Mock PointerEvent\n mockPointerEvent = {\n pointerId: 1,\n clientX: 50,\n clientY: 20,\n target: mockCell,\n } as unknown as PointerEvent;\n });\n\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n describe('TABLE_CONSTANTS', () => {\n it('should have correct constant values', () => {\n expect(TABLE_CONSTANTS.HANDLE_W).toBe(12);\n expect(TABLE_CONSTANTS.HANDLE_W_TOUCH).toBe(24);\n expect(TABLE_CONSTANTS.MIN_W).toBe(40);\n });\n\n it('should be immutable', () => {\n // Object.freeze prevents modification in strict mode\n const originalValue = TABLE_CONSTANTS.HANDLE_W;\n try {\n (TABLE_CONSTANTS as any).HANDLE_W = 20;\n } catch {\n // Ignored - assignment may or may not throw depending on strict mode\n }\n expect(TABLE_CONSTANTS.HANDLE_W).toBe(originalValue);\n });\n });\n\n describe('getHandleWidthForCurrentPointer', () => {\n it('should return fine pointer width for mouse input', () => {\n mockMatchMedia.mockReturnValue({ matches: false });\n\n const result = getHandleWidthForCurrentPointer();\n\n expect(result).toBe(TABLE_CONSTANTS.HANDLE_W);\n expect(mockMatchMedia).toHaveBeenCalledWith('(pointer: coarse)');\n });\n\n it('should return touch width for coarse pointer input', () => {\n mockMatchMedia.mockReturnValue({ matches: true });\n\n const result = getHandleWidthForCurrentPointer();\n\n expect(result).toBe(TABLE_CONSTANTS.HANDLE_W_TOUCH);\n expect(mockMatchMedia).toHaveBeenCalledWith('(pointer: coarse)');\n });\n\n it('should handle matchMedia errors gracefully', () => {\n mockMatchMedia.mockImplementation(() => {\n throw new Error('matchMedia not supported');\n });\n\n expect(() => getHandleWidthForCurrentPointer()).toThrow();\n });\n });\n\n describe('getPointerOffsetInCell', () => {\n it('should calculate correct offset within cell', () => {\n const event = { clientX: 60 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(50); // 60 - 10\n expect(mockCell.getBoundingClientRect).toHaveBeenCalled();\n });\n\n it('should handle zero offset', () => {\n const event = { clientX: 10 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(0);\n });\n\n it('should handle negative offset', () => {\n const event = { clientX: 5 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(-5);\n });\n\n it('should handle fractional coordinates', () => {\n const event = { clientX: 15.7 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10.3 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBeCloseTo(5.4, 1);\n });\n });\n\n describe('isInResizeHandle', () => {\n it('should return true when pointer is in handle area', () => {\n const result = isInResizeHandle(95, 100, 10);\n expect(result).toBe(true);\n });\n\n it('should return true when pointer is exactly at handle boundary', () => {\n const result = isInResizeHandle(90, 100, 10);\n expect(result).toBe(true);\n });\n\n it('should return false when pointer is outside handle area', () => {\n const result = isInResizeHandle(89, 100, 10);\n expect(result).toBe(false);\n });\n\n it('should handle edge cases with zero dimensions', () => {\n expect(isInResizeHandle(0, 0, 10)).toBe(true); // 0 >= 0 - 10 = -10 (true)\n expect(isInResizeHandle(0, 10, 0)).toBe(false); // 0 >= 10 - 0 = 10 (false)\n });\n\n it('should handle large handle areas', () => {\n const result = isInResizeHandle(50, 100, 60);\n expect(result).toBe(true); // 50 >= 100 - 60 = 40\n });\n\n it('should handle fractional values', () => {\n const result = isInResizeHandle(85.5, 100.2, 10.7);\n expect(result).toBe(false); // 85.5 < 100.2 - 10.7 = 89.5\n });\n });\n\n describe('calculateNewWidth', () => {\n it('should calculate width with positive delta', () => {\n const result = calculateNewWidth(100, 20);\n expect(result).toBe(120);\n });\n\n it('should calculate width with negative delta', () => {\n const result = calculateNewWidth(100, -20);\n expect(result).toBe(80);\n });\n\n it('should enforce minimum width constraint', () => {\n const result = calculateNewWidth(50, -30, 40);\n expect(result).toBe(40); // Math.max(40, 50 - 30 = 20)\n });\n\n it('should use default minimum width when not provided', () => {\n const result = calculateNewWidth(50, -30);\n expect(result).toBe(TABLE_CONSTANTS.MIN_W);\n });\n\n it('should handle zero delta', () => {\n const result = calculateNewWidth(100, 0);\n expect(result).toBe(100);\n });\n\n it('should handle fractional values', () => {\n const result = calculateNewWidth(100.5, 20.3, 30.7);\n expect(result).toBeCloseTo(120.8, 1);\n });\n\n it('should handle extreme negative delta', () => {\n const result = calculateNewWidth(100, -200, 40);\n expect(result).toBe(40);\n });\n });\n\n describe('isValidTableCell', () => {\n it('should return true for TH elements', () => {\n const th = { tagName: 'TH' } as HTMLTableCellElement;\n expect(isValidTableCell(th)).toBe(true);\n });\n\n it('should return true for TD elements', () => {\n const td = { tagName: 'TD' } as HTMLTableCellElement;\n expect(isValidTableCell(td)).toBe(true);\n });\n\n it('should return false for other elements', () => {\n const div = { tagName: 'DIV' } as HTMLElement;\n expect(isValidTableCell(div)).toBe(false);\n });\n\n it('should return false for null', () => {\n expect(isValidTableCell(null)).toBe(false);\n });\n\n it('should return false for undefined', () => {\n expect(isValidTableCell(undefined as any)).toBe(false);\n });\n\n it('should handle case sensitivity', () => {\n const th = { tagName: 'th' } as any;\n expect(isValidTableCell(th)).toBe(false); // tagName is always uppercase in real DOM\n });\n });\n\n describe('getClosestTableCell', () => {\n it('should return closest table cell element', () => {\n const mockElement = Object.create(HTMLElement.prototype);\n mockElement.closest = vi.fn().mockReturnValue(mockCell);\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBe(mockCell);\n expect(mockElement.closest).toHaveBeenCalledWith('th, td');\n });\n\n it('should return null for non-HTMLElement targets', () => {\n const result = getClosestTableCell('not an element' as any);\n expect(result).toBeNull();\n });\n\n it('should return null when closest returns null', () => {\n const mockElement = {\n closest: vi.fn().mockReturnValue(null),\n } as unknown as HTMLElement;\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBeNull();\n });\n\n it('should return null when closest returns invalid element', () => {\n const invalidElement = { tagName: 'DIV' } as HTMLElement;\n const mockElement = {\n closest: vi.fn().mockReturnValue(invalidElement),\n } as unknown as HTMLElement;\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBeNull();\n });\n\n it('should handle null target', () => {\n const result = getClosestTableCell(null);\n expect(result).toBeNull();\n });\n });\n\n describe('setPointerCapture', () => {\n it('should successfully set pointer capture', () => {\n mockCell.setPointerCapture = vi.fn();\n\n const result = setPointerCapture(mockCell, 123);\n\n expect(result).toBe(true);\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle missing setPointerCapture method', () => {\n const cellWithoutCapture = { setPointerCapture: undefined } as any;\n\n const result = setPointerCapture(cellWithoutCapture, 123);\n\n expect(result).toBe(true); // Method doesn't exist but doesn't throw\n });\n\n it('should handle setPointerCapture exceptions', () => {\n mockCell.setPointerCapture = vi.fn().mockImplementation(() => {\n throw new Error('Capture failed');\n });\n\n const result = setPointerCapture(mockCell, 123);\n\n expect(result).toBe(false);\n });\n\n it('should handle different pointer IDs', () => {\n mockCell.setPointerCapture = vi.fn();\n\n setPointerCapture(mockCell, 999);\n\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(999);\n });\n });\n\n describe('releasePointerCapture', () => {\n it('should successfully release pointer capture', () => {\n mockCell.releasePointerCapture = vi.fn();\n\n const result = releasePointerCapture(mockCell, 123);\n\n expect(result).toBe(true);\n expect(mockCell.releasePointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle missing releasePointerCapture method', () => {\n const cellWithoutRelease = { releasePointerCapture: undefined } as any;\n\n const result = releasePointerCapture(cellWithoutRelease, 123);\n\n expect(result).toBe(true);\n });\n\n it('should handle releasePointerCapture exceptions', () => {\n mockCell.releasePointerCapture = vi.fn().mockImplementation(() => {\n throw new Error('Release failed');\n });\n\n const result = releasePointerCapture(mockCell, 123);\n\n expect(result).toBe(false);\n });\n });\n\n describe('setUserSelectPrevention', () => {\n it('should prevent user selection', () => {\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n });\n\n it('should restore user selection', () => {\n document.body.style.userSelect = 'none';\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n\n it('should handle multiple calls', () => {\n setUserSelectPrevention(true);\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n });\n\n describe('getCellWidth', () => {\n it('should return cell offset width', () => {\n (mockCell as any).offsetWidth = 150;\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(150);\n });\n\n it('should handle zero width', () => {\n (mockCell as any).offsetWidth = 0;\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(0);\n });\n\n it('should handle fractional width (rounded by browser)', () => {\n (mockCell as any).offsetWidth = 100; // Browser rounds fractional offset values\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(100);\n });\n });\n\n describe('setCellWidth', () => {\n it('should set cell width in pixels', () => {\n setCellWidth(mockCell, 150);\n expect(mockCell.style.width).toBe('150px');\n });\n\n it('should handle zero width', () => {\n setCellWidth(mockCell, 0);\n expect(mockCell.style.width).toBe('0px');\n });\n\n it('should handle fractional width', () => {\n setCellWidth(mockCell, 150.5);\n expect(mockCell.style.width).toBe('150.5px');\n });\n\n it('should overwrite previous width', () => {\n mockCell.style.width = '100px';\n setCellWidth(mockCell, 200);\n expect(mockCell.style.width).toBe('200px');\n });\n });\n\n describe('calculatePointerDelta', () => {\n it('should calculate positive delta', () => {\n const result = calculatePointerDelta(150, 100);\n expect(result).toBe(50);\n });\n\n it('should calculate negative delta', () => {\n const result = calculatePointerDelta(80, 100);\n expect(result).toBe(-20);\n });\n\n it('should calculate zero delta', () => {\n const result = calculatePointerDelta(100, 100);\n expect(result).toBe(0);\n });\n\n it('should handle fractional coordinates', () => {\n const result = calculatePointerDelta(150.7, 100.3);\n expect(result).toBeCloseTo(50.4, 1);\n });\n\n it('should handle large deltas', () => {\n const result = calculatePointerDelta(1000, 100);\n expect(result).toBe(900);\n });\n });\n\n describe('createResizeState', () => {\n it('should create valid resize state', () => {\n const event = {\n pointerId: 42,\n clientX: 200,\n } as PointerEvent;\n (mockCell as any).offsetWidth = 120;\n\n const result = createResizeState(mockCell, event);\n\n expect(result).toEqual({\n resizingCell: mockCell,\n pointerId: 42,\n startX: 200,\n startWidth: 120,\n });\n });\n\n it('should handle different pointer IDs', () => {\n const event = {\n pointerId: 999,\n clientX: 300,\n } as PointerEvent;\n\n const result = createResizeState(mockCell, event);\n\n expect(result.pointerId).toBe(999);\n });\n\n it('should capture current cell width at time of creation', () => {\n (mockCell as any).offsetWidth = 75;\n const event = {\n pointerId: 1,\n clientX: 100,\n } as PointerEvent;\n\n const result = createResizeState(mockCell, event);\n\n expect(result.startWidth).toBe(75);\n });\n });\n\n describe('isValidResizeState', () => {\n const mockState = {\n resizingCell: mockCell,\n pointerId: 42,\n startX: 100,\n startWidth: 120,\n };\n\n it('should return true for matching pointer event', () => {\n const event = { pointerId: 42 } as PointerEvent;\n\n const result = isValidResizeState(mockState, event);\n\n expect(result).toBe(true);\n });\n\n it('should return false for non-matching pointer ID', () => {\n const event = { pointerId: 43 } as PointerEvent;\n\n const result = isValidResizeState(mockState, event);\n\n expect(result).toBe(false);\n });\n\n it('should return false for null state', () => {\n const event = { pointerId: 42 } as PointerEvent;\n\n const result = isValidResizeState(null, event);\n\n expect(result).toBe(false);\n });\n\n it('should handle edge case pointer IDs', () => {\n const zeroIdState = { ...mockState, pointerId: 0 };\n const event = { pointerId: 0 } as PointerEvent;\n\n const result = isValidResizeState(zeroIdState, event);\n\n expect(result).toBe(true);\n });\n });\n\n describe('updateCellWidthFromResize', () => {\n it('should update cell width during resize', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 120,\n };\n const event = { clientX: 130 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe('150px'); // 120 + (130 - 100) = 150\n });\n\n it('should enforce minimum width constraint', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 60,\n };\n const event = { clientX: 50 } as PointerEvent;\n\n updateCellWidthFromResize(state, event, 40);\n\n expect(mockCell.style.width).toBe('40px'); // Constrained to minimum\n });\n\n it('should use default minimum width', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 50,\n };\n const event = { clientX: 40 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe(`${TABLE_CONSTANTS.MIN_W}px`);\n });\n\n it('should handle negative deltas', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 120,\n };\n const event = { clientX: 80 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe('100px'); // 120 + (80 - 100) = 100\n });\n });\n\n describe('Integration Scenarios', () => {\n it('should handle complete resize workflow', () => {\n // Setup initial state\n const initialEvent = {\n pointerId: 1,\n clientX: 100,\n target: mockCell,\n } as unknown as PointerEvent;\n\n // Create resize state\n const state = createResizeState(mockCell, initialEvent);\n expect(isValidResizeState(state, initialEvent)).toBe(true);\n\n // Simulate pointer move\n const moveEvent = { pointerId: 1, clientX: 130 } as PointerEvent;\n expect(isValidResizeState(state, moveEvent)).toBe(true);\n updateCellWidthFromResize(state, moveEvent);\n\n // Verify width was updated\n expect(mockCell.style.width).toContain('px');\n });\n\n it('should handle pointer capture workflow', () => {\n mockCell.setPointerCapture = vi.fn();\n mockCell.releasePointerCapture = vi.fn();\n\n // Set capture\n const setCaptureResult = setPointerCapture(mockCell, 123);\n expect(setCaptureResult).toBe(true);\n\n // Release capture\n const releaseCaptureResult = releasePointerCapture(mockCell, 123);\n expect(releaseCaptureResult).toBe(true);\n\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(123);\n expect(mockCell.releasePointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle user selection prevention workflow', () => {\n // Start resize - prevent selection\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n\n // End resize - restore selection\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n\n it('should validate resize handle detection', () => {\n const event = { clientX: 95 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 0 });\n (mockCell as any).offsetWidth = 100;\n\n const offsetX = getPointerOffsetInCell(event, mockCell);\n const cellWidth = getCellWidth(mockCell);\n const handleWidth = getHandleWidthForCurrentPointer();\n const inHandle = isInResizeHandle(offsetX, cellWidth, handleWidth);\n\n expect(offsetX).toBe(95);\n expect(cellWidth).toBe(100);\n expect(inHandle).toBe(true); // 95 >= 100 - handleWidth\n });\n });\n\n describe('Edge Cases and Error Handling', () => {\n it('should handle extreme coordinate values', () => {\n const extremeEvent = { clientX: Number.MAX_SAFE_INTEGER } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 0 });\n\n const offset = getPointerOffsetInCell(extremeEvent, mockCell);\n expect(typeof offset).toBe('number');\n expect(isFinite(offset)).toBe(true);\n });\n\n it('should handle zero-sized cells', () => {\n (mockCell as any).offsetWidth = 0;\n const state = createResizeState(mockCell, mockPointerEvent);\n\n expect(state.startWidth).toBe(0);\n\n const moveEvent = { pointerId: 1, clientX: 50 } as PointerEvent;\n updateCellWidthFromResize(state, moveEvent);\n\n expect(mockCell.style.width).toBe(`${TABLE_CONSTANTS.MIN_W}px`);\n });\n\n it('should handle rapid pointer ID changes', () => {\n const state1 = createResizeState(mockCell, {\n pointerId: 1,\n clientX: 100,\n } as PointerEvent);\n const state2 = createResizeState(mockCell, {\n pointerId: 2,\n clientX: 100,\n } as PointerEvent);\n\n const event1 = { pointerId: 1 } as PointerEvent;\n const event2 = { pointerId: 2 } as PointerEvent;\n\n expect(isValidResizeState(state1, event1)).toBe(true);\n expect(isValidResizeState(state1, event2)).toBe(false);\n expect(isValidResizeState(state2, event1)).toBe(false);\n expect(isValidResizeState(state2, event2)).toBe(true);\n });\n\n it('should handle missing DOM methods gracefully', () => {\n const incompleteCell = {\n tagName: 'TH',\n offsetWidth: 100,\n style: { width: '' },\n getBoundingClientRect: undefined,\n } as unknown as HTMLTableCellElement;\n\n expect(() => {\n getPointerOffsetInCell(mockPointerEvent, incompleteCell);\n }).toThrow();\n });\n });\n\n describe('Performance and Memory', () => {\n it('should not create unnecessary objects in hot paths', () => {\n const startMemory = (performance as any).memory?.usedJSHeapSize || 0;\n\n // Run calculations that should not allocate much memory\n for (let i = 0; i < 1000; i++) {\n calculateNewWidth(100 + i, (i % 20) - 10);\n calculatePointerDelta(i + 50, i);\n isInResizeHandle(i % 100, 100, 10);\n }\n\n const endMemory = (performance as any).memory?.usedJSHeapSize || 0;\n const memoryIncrease = endMemory - startMemory;\n\n // This is a loose check - mainly ensuring we don't have massive memory leaks\n expect(memoryIncrease).toBeLessThan(1000000); // Less than 1MB increase\n });\n\n it('should handle high-frequency resize updates', () => {\n const state = createResizeState(mockCell, mockPointerEvent);\n const startTime = performance.now();\n\n // Simulate high-frequency updates\n for (let i = 0; i < 100; i++) {\n const event = { pointerId: 1, clientX: 100 + i } as PointerEvent;\n if (isValidResizeState(state, event)) {\n updateCellWidthFromResize(state, event);\n }\n }\n\n const endTime = performance.now();\n const duration = endTime - startTime;\n\n // Should complete quickly\n expect(duration).toBeLessThan(100); // Less than 100ms for 100 updates\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"nv-table.utils.test.js","sourceRoot":"","sources":["../../../../../src/components/nv-table/test/nv-table.utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';\nimport {\n TABLE_CONSTANTS,\n getHandleWidthForCurrentPointer,\n getPointerOffsetInCell,\n isInResizeHandle,\n calculateNewWidth,\n isValidTableCell,\n getClosestTableCell,\n setPointerCapture,\n releasePointerCapture,\n setUserSelectPrevention,\n getCellWidth,\n setCellWidth,\n calculatePointerDelta,\n createResizeState,\n isValidResizeState,\n updateCellWidthFromResize,\n} from '../nv-table.utils';\n\n// Mock browser globals\nconst mockMatchMedia = vi.fn();\nconst mockDocumentBody = {\n style: { userSelect: '' },\n};\n\nvi.stubGlobal('matchMedia', mockMatchMedia);\nvi.stubGlobal('document', { body: mockDocumentBody });\nvi.stubGlobal('HTMLElement', class MockHTMLElement {});\n\n/**\n * Comprehensive tests for nv-table utilities\n *\n * These tests validate all utility functions:\n * - Constants and configuration values\n * - Pointer event calculations and handling\n * - Column resize logic and constraints\n * - DOM element validation and manipulation\n * - Resize state management\n * - Edge cases and error conditions\n */\n\ndescribe('nv-table.utils - Comprehensive Tests', () => {\n // Mock DOM elements and browser APIs\n let mockCell: HTMLTableCellElement;\n let mockPointerEvent: PointerEvent;\n\n beforeEach(() => {\n // Reset mocks\n vi.clearAllMocks();\n\n // Setup matchMedia mock for each test\n mockMatchMedia.mockImplementation(query => ({\n matches: query.includes('coarse') ? false : true,\n media: query,\n }));\n\n // Reset document body style\n mockDocumentBody.style.userSelect = '';\n\n // Mock HTMLTableCellElement with mutable offsetWidth\n const mockCellProps = {\n tagName: 'TH',\n offsetWidth: 100,\n style: { width: '' },\n getBoundingClientRect: vi.fn().mockReturnValue({\n left: 10,\n top: 10,\n width: 100,\n height: 30,\n }),\n closest: vi.fn().mockReturnValue(null),\n setPointerCapture: vi.fn(),\n releasePointerCapture: vi.fn(),\n };\n\n // Make offsetWidth mutable for testing\n Object.defineProperty(mockCellProps, 'offsetWidth', {\n writable: true,\n value: 100,\n });\n\n mockCell = mockCellProps as unknown as HTMLTableCellElement;\n\n // Mock PointerEvent\n mockPointerEvent = {\n pointerId: 1,\n clientX: 50,\n clientY: 20,\n target: mockCell,\n } as unknown as PointerEvent;\n });\n\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n describe('TABLE_CONSTANTS', () => {\n it('should have correct constant values', () => {\n expect(TABLE_CONSTANTS.HANDLE_W).toBe(12);\n expect(TABLE_CONSTANTS.HANDLE_W_TOUCH).toBe(24);\n expect(TABLE_CONSTANTS.MIN_W).toBe(40);\n });\n\n it('should be immutable', () => {\n // Object.freeze prevents modification in strict mode\n const originalValue = TABLE_CONSTANTS.HANDLE_W;\n try {\n (TABLE_CONSTANTS as any).HANDLE_W = 20;\n } catch {\n // Ignored - assignment may or may not throw depending on strict mode\n }\n expect(TABLE_CONSTANTS.HANDLE_W).toBe(originalValue);\n });\n });\n\n describe('getHandleWidthForCurrentPointer', () => {\n it('should return fine pointer width for mouse input', () => {\n mockMatchMedia.mockReturnValue({ matches: false });\n\n const result = getHandleWidthForCurrentPointer();\n\n expect(result).toBe(TABLE_CONSTANTS.HANDLE_W);\n expect(mockMatchMedia).toHaveBeenCalledWith('(pointer: coarse)');\n });\n\n it('should return touch width for coarse pointer input', () => {\n mockMatchMedia.mockReturnValue({ matches: true });\n\n const result = getHandleWidthForCurrentPointer();\n\n expect(result).toBe(TABLE_CONSTANTS.HANDLE_W_TOUCH);\n expect(mockMatchMedia).toHaveBeenCalledWith('(pointer: coarse)');\n });\n\n it('should handle matchMedia errors gracefully', () => {\n mockMatchMedia.mockImplementation(() => {\n throw new Error('matchMedia not supported');\n });\n\n expect(() => getHandleWidthForCurrentPointer()).toThrow();\n });\n });\n\n describe('getPointerOffsetInCell', () => {\n it('should calculate correct offset within cell', () => {\n const event = { clientX: 60 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(50); // 60 - 10\n expect(mockCell.getBoundingClientRect).toHaveBeenCalled();\n });\n\n it('should handle zero offset', () => {\n const event = { clientX: 10 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(0);\n });\n\n it('should handle negative offset', () => {\n const event = { clientX: 5 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBe(-5);\n });\n\n it('should handle fractional coordinates', () => {\n const event = { clientX: 15.7 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 10.3 });\n\n const result = getPointerOffsetInCell(event, mockCell);\n\n expect(result).toBeCloseTo(5.4, 1);\n });\n });\n\n describe('isInResizeHandle', () => {\n it('should return true when pointer is in handle area', () => {\n const result = isInResizeHandle(95, 100, 10);\n expect(result).toBe(true);\n });\n\n it('should return true when pointer is exactly at handle boundary', () => {\n const result = isInResizeHandle(90, 100, 10);\n expect(result).toBe(true);\n });\n\n it('should return false when pointer is outside handle area', () => {\n const result = isInResizeHandle(89, 100, 10);\n expect(result).toBe(false);\n });\n\n it('should handle edge cases with zero dimensions', () => {\n expect(isInResizeHandle(0, 0, 10)).toBe(true); // 0 >= 0 - 10 = -10 (true)\n expect(isInResizeHandle(0, 10, 0)).toBe(false); // 0 >= 10 - 0 = 10 (false)\n });\n\n it('should handle large handle areas', () => {\n const result = isInResizeHandle(50, 100, 60);\n expect(result).toBe(true); // 50 >= 100 - 60 = 40\n });\n\n it('should handle fractional values', () => {\n const result = isInResizeHandle(85.5, 100.2, 10.7);\n expect(result).toBe(false); // 85.5 < 100.2 - 10.7 = 89.5\n });\n });\n\n describe('calculateNewWidth', () => {\n it('should calculate width with positive delta', () => {\n const result = calculateNewWidth(100, 20);\n expect(result).toBe(120);\n });\n\n it('should calculate width with negative delta', () => {\n const result = calculateNewWidth(100, -20);\n expect(result).toBe(80);\n });\n\n it('should enforce minimum width constraint', () => {\n const result = calculateNewWidth(50, -30, 40);\n expect(result).toBe(40); // Math.max(40, 50 - 30 = 20)\n });\n\n it('should use default minimum width when not provided', () => {\n const result = calculateNewWidth(50, -30);\n expect(result).toBe(TABLE_CONSTANTS.MIN_W);\n });\n\n it('should handle zero delta', () => {\n const result = calculateNewWidth(100, 0);\n expect(result).toBe(100);\n });\n\n it('should handle fractional values', () => {\n const result = calculateNewWidth(100.5, 20.3, 30.7);\n expect(result).toBeCloseTo(120.8, 1);\n });\n\n it('should handle extreme negative delta', () => {\n const result = calculateNewWidth(100, -200, 40);\n expect(result).toBe(40);\n });\n });\n\n describe('isValidTableCell', () => {\n it('should return true for TH elements', () => {\n const th = { tagName: 'TH' } as HTMLTableCellElement;\n expect(isValidTableCell(th)).toBe(true);\n });\n\n it('should return true for TD elements', () => {\n const td = { tagName: 'TD' } as HTMLTableCellElement;\n expect(isValidTableCell(td)).toBe(true);\n });\n\n it('should return false for other elements', () => {\n const div = { tagName: 'DIV' } as HTMLElement;\n expect(isValidTableCell(div)).toBe(false);\n });\n\n it('should return false for null', () => {\n expect(isValidTableCell(null)).toBe(false);\n });\n\n it('should return false for undefined', () => {\n expect(isValidTableCell(undefined as any)).toBe(false);\n });\n\n it('should handle case sensitivity', () => {\n const th = { tagName: 'th' } as any;\n expect(isValidTableCell(th)).toBe(false); // tagName is always uppercase in real DOM\n });\n });\n\n describe('getClosestTableCell', () => {\n it('should return closest table cell element', () => {\n const mockElement = Object.create(HTMLElement.prototype);\n mockElement.closest = vi.fn().mockReturnValue(mockCell);\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBe(mockCell);\n expect(mockElement.closest).toHaveBeenCalledWith('th, td');\n });\n\n it('should return null for non-HTMLElement targets', () => {\n const result = getClosestTableCell('not an element' as any);\n expect(result).toBeNull();\n });\n\n it('should return null when closest returns null', () => {\n const mockElement = {\n closest: vi.fn().mockReturnValue(null),\n } as unknown as HTMLElement;\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBeNull();\n });\n\n it('should return null when closest returns invalid element', () => {\n const invalidElement = { tagName: 'DIV' } as HTMLElement;\n const mockElement = {\n closest: vi.fn().mockReturnValue(invalidElement),\n } as unknown as HTMLElement;\n\n const result = getClosestTableCell(mockElement);\n\n expect(result).toBeNull();\n });\n\n it('should handle null target', () => {\n const result = getClosestTableCell(null);\n expect(result).toBeNull();\n });\n });\n\n describe('setPointerCapture', () => {\n it('should successfully set pointer capture', () => {\n mockCell.setPointerCapture = vi.fn();\n\n const result = setPointerCapture(mockCell, 123);\n\n expect(result).toBe(true);\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle missing setPointerCapture method', () => {\n const cellWithoutCapture = { setPointerCapture: undefined } as any;\n\n const result = setPointerCapture(cellWithoutCapture, 123);\n\n expect(result).toBe(true); // Method doesn't exist but doesn't throw\n });\n\n it('should handle setPointerCapture exceptions', () => {\n mockCell.setPointerCapture = vi.fn().mockImplementation(() => {\n throw new Error('Capture failed');\n });\n\n const result = setPointerCapture(mockCell, 123);\n\n expect(result).toBe(false);\n });\n\n it('should handle different pointer IDs', () => {\n mockCell.setPointerCapture = vi.fn();\n\n setPointerCapture(mockCell, 999);\n\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(999);\n });\n });\n\n describe('releasePointerCapture', () => {\n it('should successfully release pointer capture', () => {\n mockCell.releasePointerCapture = vi.fn();\n\n const result = releasePointerCapture(mockCell, 123);\n\n expect(result).toBe(true);\n expect(mockCell.releasePointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle missing releasePointerCapture method', () => {\n const cellWithoutRelease = { releasePointerCapture: undefined } as any;\n\n const result = releasePointerCapture(cellWithoutRelease, 123);\n\n expect(result).toBe(true);\n });\n\n it('should handle releasePointerCapture exceptions', () => {\n mockCell.releasePointerCapture = vi.fn().mockImplementation(() => {\n throw new Error('Release failed');\n });\n\n const result = releasePointerCapture(mockCell, 123);\n\n expect(result).toBe(false);\n });\n });\n\n describe('setUserSelectPrevention', () => {\n it('should prevent user selection', () => {\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n });\n\n it('should restore user selection', () => {\n document.body.style.userSelect = 'none';\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n\n it('should handle multiple calls', () => {\n setUserSelectPrevention(true);\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n });\n\n describe('getCellWidth', () => {\n it('should return cell offset width', () => {\n (mockCell as any).offsetWidth = 150;\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(150);\n });\n\n it('should handle zero width', () => {\n (mockCell as any).offsetWidth = 0;\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(0);\n });\n\n it('should handle fractional width (rounded by browser)', () => {\n (mockCell as any).offsetWidth = 100; // Browser rounds fractional offset values\n\n const result = getCellWidth(mockCell);\n\n expect(result).toBe(100);\n });\n });\n\n describe('setCellWidth', () => {\n it('should set cell width in pixels', () => {\n setCellWidth(mockCell, 150);\n expect(mockCell.style.width).toBe('150px');\n });\n\n it('should handle zero width', () => {\n setCellWidth(mockCell, 0);\n expect(mockCell.style.width).toBe('0px');\n });\n\n it('should handle fractional width', () => {\n setCellWidth(mockCell, 150.5);\n expect(mockCell.style.width).toBe('150.5px');\n });\n\n it('should overwrite previous width', () => {\n mockCell.style.width = '100px';\n setCellWidth(mockCell, 200);\n expect(mockCell.style.width).toBe('200px');\n });\n });\n\n describe('calculatePointerDelta', () => {\n it('should calculate positive delta', () => {\n const result = calculatePointerDelta(150, 100);\n expect(result).toBe(50);\n });\n\n it('should calculate negative delta', () => {\n const result = calculatePointerDelta(80, 100);\n expect(result).toBe(-20);\n });\n\n it('should calculate zero delta', () => {\n const result = calculatePointerDelta(100, 100);\n expect(result).toBe(0);\n });\n\n it('should handle fractional coordinates', () => {\n const result = calculatePointerDelta(150.7, 100.3);\n expect(result).toBeCloseTo(50.4, 1);\n });\n\n it('should handle large deltas', () => {\n const result = calculatePointerDelta(1000, 100);\n expect(result).toBe(900);\n });\n });\n\n describe('createResizeState', () => {\n it('should create valid resize state', () => {\n const event = {\n pointerId: 42,\n clientX: 200,\n } as PointerEvent;\n (mockCell as any).offsetWidth = 120;\n\n const result = createResizeState(mockCell, event);\n\n expect(result).toEqual({\n resizingCell: mockCell,\n pointerId: 42,\n startX: 200,\n startWidth: 120,\n });\n });\n\n it('should handle different pointer IDs', () => {\n const event = {\n pointerId: 999,\n clientX: 300,\n } as PointerEvent;\n\n const result = createResizeState(mockCell, event);\n\n expect(result.pointerId).toBe(999);\n });\n\n it('should capture current cell width at time of creation', () => {\n (mockCell as any).offsetWidth = 75;\n const event = {\n pointerId: 1,\n clientX: 100,\n } as PointerEvent;\n\n const result = createResizeState(mockCell, event);\n\n expect(result.startWidth).toBe(75);\n });\n });\n\n describe('isValidResizeState', () => {\n const mockState = {\n resizingCell: mockCell,\n pointerId: 42,\n startX: 100,\n startWidth: 120,\n };\n\n it('should return true for matching pointer event', () => {\n const event = { pointerId: 42 } as PointerEvent;\n\n const result = isValidResizeState(mockState, event);\n\n expect(result).toBe(true);\n });\n\n it('should return false for non-matching pointer ID', () => {\n const event = { pointerId: 43 } as PointerEvent;\n\n const result = isValidResizeState(mockState, event);\n\n expect(result).toBe(false);\n });\n\n it('should return false for null state', () => {\n const event = { pointerId: 42 } as PointerEvent;\n\n const result = isValidResizeState(null, event);\n\n expect(result).toBe(false);\n });\n\n it('should handle edge case pointer IDs', () => {\n const zeroIdState = { ...mockState, pointerId: 0 };\n const event = { pointerId: 0 } as PointerEvent;\n\n const result = isValidResizeState(zeroIdState, event);\n\n expect(result).toBe(true);\n });\n });\n\n describe('updateCellWidthFromResize', () => {\n it('should update cell width during resize', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 120,\n };\n const event = { clientX: 130 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe('150px'); // 120 + (130 - 100) = 150\n });\n\n it('should enforce minimum width constraint', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 60,\n };\n const event = { clientX: 50 } as PointerEvent;\n\n updateCellWidthFromResize(state, event, 40);\n\n expect(mockCell.style.width).toBe('40px'); // Constrained to minimum\n });\n\n it('should use default minimum width', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 50,\n };\n const event = { clientX: 40 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe(`${TABLE_CONSTANTS.MIN_W}px`);\n });\n\n it('should handle negative deltas', () => {\n const state = {\n resizingCell: mockCell,\n pointerId: 1,\n startX: 100,\n startWidth: 120,\n };\n const event = { clientX: 80 } as PointerEvent;\n\n updateCellWidthFromResize(state, event);\n\n expect(mockCell.style.width).toBe('100px'); // 120 + (80 - 100) = 100\n });\n });\n\n describe('Integration Scenarios', () => {\n it('should handle complete resize workflow', () => {\n // Setup initial state\n const initialEvent = {\n pointerId: 1,\n clientX: 100,\n target: mockCell,\n } as unknown as PointerEvent;\n\n // Create resize state\n const state = createResizeState(mockCell, initialEvent);\n expect(isValidResizeState(state, initialEvent)).toBe(true);\n\n // Simulate pointer move\n const moveEvent = { pointerId: 1, clientX: 130 } as PointerEvent;\n expect(isValidResizeState(state, moveEvent)).toBe(true);\n updateCellWidthFromResize(state, moveEvent);\n\n // Verify width was updated\n expect(mockCell.style.width).toContain('px');\n });\n\n it('should handle pointer capture workflow', () => {\n mockCell.setPointerCapture = vi.fn();\n mockCell.releasePointerCapture = vi.fn();\n\n // Set capture\n const setCaptureResult = setPointerCapture(mockCell, 123);\n expect(setCaptureResult).toBe(true);\n\n // Release capture\n const releaseCaptureResult = releasePointerCapture(mockCell, 123);\n expect(releaseCaptureResult).toBe(true);\n\n expect(mockCell.setPointerCapture).toHaveBeenCalledWith(123);\n expect(mockCell.releasePointerCapture).toHaveBeenCalledWith(123);\n });\n\n it('should handle user selection prevention workflow', () => {\n // Start resize - prevent selection\n setUserSelectPrevention(true);\n expect(document.body.style.userSelect).toBe('none');\n\n // End resize - restore selection\n setUserSelectPrevention(false);\n expect(document.body.style.userSelect).toBe('');\n });\n\n it('should validate resize handle detection', () => {\n const event = { clientX: 95 } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 0 });\n (mockCell as any).offsetWidth = 100;\n\n const offsetX = getPointerOffsetInCell(event, mockCell);\n const cellWidth = getCellWidth(mockCell);\n const handleWidth = getHandleWidthForCurrentPointer();\n const inHandle = isInResizeHandle(offsetX, cellWidth, handleWidth);\n\n expect(offsetX).toBe(95);\n expect(cellWidth).toBe(100);\n expect(inHandle).toBe(true); // 95 >= 100 - handleWidth\n });\n });\n\n describe('Edge Cases and Error Handling', () => {\n it('should handle extreme coordinate values', () => {\n const extremeEvent = { clientX: Number.MAX_SAFE_INTEGER } as PointerEvent;\n mockCell.getBoundingClientRect = vi.fn().mockReturnValue({ left: 0 });\n\n const offset = getPointerOffsetInCell(extremeEvent, mockCell);\n expect(typeof offset).toBe('number');\n expect(isFinite(offset)).toBe(true);\n });\n\n it('should handle zero-sized cells', () => {\n (mockCell as any).offsetWidth = 0;\n const state = createResizeState(mockCell, mockPointerEvent);\n\n expect(state.startWidth).toBe(0);\n\n const moveEvent = { pointerId: 1, clientX: 50 } as PointerEvent;\n updateCellWidthFromResize(state, moveEvent);\n\n expect(mockCell.style.width).toBe(`${TABLE_CONSTANTS.MIN_W}px`);\n });\n\n it('should handle rapid pointer ID changes', () => {\n const state1 = createResizeState(mockCell, {\n pointerId: 1,\n clientX: 100,\n } as PointerEvent);\n const state2 = createResizeState(mockCell, {\n pointerId: 2,\n clientX: 100,\n } as PointerEvent);\n\n const event1 = { pointerId: 1 } as PointerEvent;\n const event2 = { pointerId: 2 } as PointerEvent;\n\n expect(isValidResizeState(state1, event1)).toBe(true);\n expect(isValidResizeState(state1, event2)).toBe(false);\n expect(isValidResizeState(state2, event1)).toBe(false);\n expect(isValidResizeState(state2, event2)).toBe(true);\n });\n\n it('should handle missing DOM methods gracefully', () => {\n const incompleteCell = {\n tagName: 'TH',\n offsetWidth: 100,\n style: { width: '' },\n getBoundingClientRect: undefined,\n } as unknown as HTMLTableCellElement;\n\n expect(() => {\n getPointerOffsetInCell(mockPointerEvent, incompleteCell);\n }).toThrow();\n });\n });\n\n describe('Performance and Memory', () => {\n it('should not create unnecessary objects in hot paths', () => {\n const startMemory = (performance as any).memory?.usedJSHeapSize || 0;\n\n // Run calculations that should not allocate much memory\n for (let i = 0; i < 1000; i++) {\n calculateNewWidth(100 + i, (i % 20) - 10);\n calculatePointerDelta(i + 50, i);\n isInResizeHandle(i % 100, 100, 10);\n }\n\n const endMemory = (performance as any).memory?.usedJSHeapSize || 0;\n const memoryIncrease = endMemory - startMemory;\n\n // This is a loose check - mainly ensuring we don't have massive memory leaks\n expect(memoryIncrease).toBeLessThan(1000000); // Less than 1MB increase\n });\n\n it('should handle high-frequency resize updates', () => {\n const state = createResizeState(mockCell, mockPointerEvent);\n const startTime = performance.now();\n\n // Simulate high-frequency updates\n for (let i = 0; i < 100; i++) {\n const event = { pointerId: 1, clientX: 100 + i } as PointerEvent;\n if (isValidResizeState(state, event)) {\n updateCellWidthFromResize(state, event);\n }\n }\n\n const endTime = performance.now();\n const duration = endTime - startTime;\n\n // Should complete quickly\n expect(duration).toBeLessThan(100); // Less than 100ms for 100 updates\n });\n });\n});\n"]}
|
|
@@ -1,6 +1,34 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import { nameof } from "../../utils/class.utils";
|
|
1
3
|
const NvTableheaderDocs = {
|
|
2
4
|
component: 'nv-tableheader',
|
|
3
|
-
|
|
5
|
+
badge: 'beta',
|
|
6
|
+
stories: [
|
|
7
|
+
// Default
|
|
8
|
+
{
|
|
9
|
+
name: 'Default',
|
|
10
|
+
template: (h("nv-tableheader", { "data-storybook-args": true }, "Child Content")),
|
|
11
|
+
},
|
|
12
|
+
// sortable
|
|
13
|
+
{
|
|
14
|
+
name: nameof(x => x.sortable),
|
|
15
|
+
description: 'Renders the header as sortable with an icon button, allowing sorting via click or keyboard navigation.',
|
|
16
|
+
args: { sortable: true },
|
|
17
|
+
template: (h("nv-tableheader", { "data-storybook-args": true }, "Sortable Header")),
|
|
18
|
+
},
|
|
19
|
+
// sortDirection
|
|
20
|
+
{
|
|
21
|
+
name: nameof(x => x.sortDirection),
|
|
22
|
+
description: 'The current sort direction of the header: none, asc, or desc.',
|
|
23
|
+
template: (h("div", { "data-class": "flex gap-4" }, h("nv-tableheader", { "data-storybook-args": true, sortable: true, sortDirection: "none" }, "None"), h("nv-tableheader", { "data-storybook-args": true, sortable: true, sortDirection: "asc" }, "Ascending"), h("nv-tableheader", { "data-storybook-args": true, sortable: true, sortDirection: "desc" }, "Descending"))),
|
|
24
|
+
},
|
|
25
|
+
// SlotDefault
|
|
26
|
+
{
|
|
27
|
+
name: 'SlotDefault',
|
|
28
|
+
description: 'Default slot for the header content.',
|
|
29
|
+
template: (h("nv-tableheader", { "data-storybook-args": true }, "Custom Header Content")),
|
|
30
|
+
},
|
|
31
|
+
],
|
|
4
32
|
};
|
|
5
33
|
export default NvTableheaderDocs;
|
|
6
34
|
//# sourceMappingURL=nv-tableheader.docs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nv-tableheader.docs.js","sourceRoot":"","sources":["../../../../src/components/nv-tableheader/nv-tableheader.docs.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nv-tableheader.docs.js","sourceRoot":"","sources":["../../../../src/components/nv-tableheader/nv-tableheader.docs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,iBAAiB,GAAuC;IAC5D,SAAS,EAAE,gBAAgB;IAC3B,KAAK,EAAE,MAAM;IACb,OAAO,EAAE;QACP,UAAU;QACV;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CACR,qEAAkE,CACnE;SACF;QACD,WAAW;QACX;YACE,IAAI,EAAE,MAAM,CAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvD,WAAW,EACT,wGAAwG;YAC1G,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACxB,QAAQ,EAAE,CACR,uEAAoE,CACrE;SACF;QACD,gBAAgB;QAChB;YACE,IAAI,EAAE,MAAM,CAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;YAC5D,WAAW,EACT,+DAA+D;YACjE,QAAQ,EAAE,CACR,yBAAgB,YAAY;gBAC1B,mDAAoC,QAAQ,QAAC,aAAa,EAAC,MAAM,WAEhD;gBACjB,mDAAoC,QAAQ,QAAC,aAAa,EAAC,KAAK,gBAE/C;gBACjB,mDAAoC,QAAQ,QAAC,aAAa,EAAC,MAAM,iBAEhD,CACb,CACP;SACF;QACD,cAAc;QACd;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,CACR,6EAEiB,CAClB;SACF;KACF;CACF,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\nimport { nameof } from '../../utils/class.utils';\n\nconst NvTableheaderDocs: NovaDocs<Components.NvTableheader> = {\n component: 'nv-tableheader',\n badge: 'beta',\n stories: [\n // Default\n {\n name: 'Default',\n template: (\n <nv-tableheader data-storybook-args>Child Content</nv-tableheader>\n ),\n },\n // sortable\n {\n name: nameof<Components.NvTableheader>(x => x.sortable),\n description:\n 'Renders the header as sortable with an icon button, allowing sorting via click or keyboard navigation.',\n args: { sortable: true },\n template: (\n <nv-tableheader data-storybook-args>Sortable Header</nv-tableheader>\n ),\n },\n // sortDirection\n {\n name: nameof<Components.NvTableheader>(x => x.sortDirection),\n description:\n 'The current sort direction of the header: none, asc, or desc.',\n template: (\n <div data-class=\"flex gap-4\">\n <nv-tableheader data-storybook-args sortable sortDirection=\"none\">\n None\n </nv-tableheader>\n <nv-tableheader data-storybook-args sortable sortDirection=\"asc\">\n Ascending\n </nv-tableheader>\n <nv-tableheader data-storybook-args sortable sortDirection=\"desc\">\n Descending\n </nv-tableheader>\n </div>\n ),\n },\n // SlotDefault\n {\n name: 'SlotDefault',\n description: 'Default slot for the header content.',\n template: (\n <nv-tableheader data-storybook-args>\n Custom Header Content\n </nv-tableheader>\n ),\n },\n ],\n};\n\nexport default NvTableheaderDocs;\n"]}
|
|
@@ -24,7 +24,7 @@ export class NvTableheader {
|
|
|
24
24
|
cycleSortDirection(e) {
|
|
25
25
|
if (!this.sortable)
|
|
26
26
|
return;
|
|
27
|
-
e
|
|
27
|
+
e?.preventDefault();
|
|
28
28
|
const next = {
|
|
29
29
|
none: 'asc',
|
|
30
30
|
asc: 'desc',
|
|
@@ -55,7 +55,7 @@ export class NvTableheader {
|
|
|
55
55
|
/****************************************************************************/
|
|
56
56
|
//#region RENDER
|
|
57
57
|
render() {
|
|
58
|
-
return (h(Host, { key: '
|
|
58
|
+
return (h(Host, { key: 'ae56ba389e554b3b555a1f29dba6a2c434e4a0ea', role: "columnheader", "aria-sort": this.ariaSort, tabindex: this.sortable ? 0 : undefined, onKeyDown: this.handleKeyDown.bind(this), onClick: this.cycleSortDirection.bind(this) }, h("slot", { key: '55efe6331ebcbde6b9b37f7d8dec610e444dc4b1' }), this.sortable && (h("span", { key: 'ecde17447218e6d462504cb10bdc8b95266ce402', class: "sort-icon-wrap", "aria-hidden": "true" }, h("nv-iconbutton", { key: 'c6e18e4149d2805cb16d5a79ec29db85a656b42c', disableTabindex: true, name: "arrow-up", size: "xs", emphasis: this.sortDirection === 'none' ? 'lower' : 'low',
|
|
59
59
|
// prevent mousedown from selecting text
|
|
60
60
|
onMouseDown: (e) => e.preventDefault(), class: {
|
|
61
61
|
'is-none': this.sortDirection === 'none',
|