@nova-design-system/nova-webcomponents 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{index-108ddff0.js → index-c56424e5.js} +16 -184
- package/dist/cjs/index-c56424e5.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/native.cjs.js +2 -23
- package/dist/cjs/native.cjs.js.map +1 -1
- package/dist/cjs/nv-alert.cjs.entry.js +1 -1
- package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
- package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
- package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
- package/dist/cjs/nv-button.cjs.entry.js +1 -1
- package/dist/cjs/nv-calendar.cjs.entry.js +371 -138
- package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-col.cjs.entry.js +1 -1
- package/dist/cjs/nv-datagrid.cjs.entry.js +1 -1
- package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
- package/dist/cjs/nv-dialog.cjs.entry.js +1 -1
- package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +1 -1
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +1 -1
- package/dist/cjs/nv-fielddate.cjs.entry.js +45 -11
- package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +75 -44
- package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +2 -2
- package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldnumber.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldradio.cjs.entry.js +1 -1
- package/dist/cjs/nv-fieldselect.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldslider.cjs.entry.js +25 -20
- package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtext.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtime.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-icon.cjs.entry.js +1 -1
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js +1 -1
- package/dist/cjs/nv-menu.cjs.entry.js +1 -1
- package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-popover.cjs.entry.js +1 -1
- package/dist/cjs/nv-row.cjs.entry.js +1 -1
- package/dist/cjs/nv-stack.cjs.entry.js +1 -1
- package/dist/cjs/nv-table.cjs.entry.js +1 -1
- package/dist/cjs/nv-tablecolumn.cjs.entry.js +1 -1
- package/dist/cjs/nv-toggle.cjs.entry.js +1 -1
- package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.js +235 -136
- package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.utils.js +12 -3
- package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +1 -1
- package/dist/collection/components/nv-calendar/partials/calendar-actions.js +11 -0
- package/dist/collection/components/nv-calendar/partials/calendar-actions.js.map +1 -0
- package/dist/collection/components/nv-calendar/partials/calendar-grid.js +24 -0
- package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -0
- package/dist/collection/components/nv-calendar/partials/calendar-header.js +38 -0
- package/dist/collection/components/nv-calendar/partials/calendar-header.js.map +1 -0
- package/dist/collection/components/nv-calendar/partials/calendar-shortcuts.js +22 -0
- package/dist/collection/components/nv-calendar/partials/calendar-shortcuts.js.map +1 -0
- package/dist/collection/components/nv-calendar/partials/day-cell.js +31 -0
- package/dist/collection/components/nv-calendar/partials/day-cell.js.map +1 -0
- package/dist/collection/components/nv-calendar/partials/index.js +7 -0
- package/dist/collection/components/nv-calendar/partials/index.js.map +1 -0
- package/dist/collection/components/nv-calendar/partials/week-numbers.js +36 -0
- package/dist/collection/components/nv-calendar/partials/week-numbers.js.map +1 -0
- package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +692 -651
- package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js.map +1 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-actions.logic.test.js +169 -0
- package/dist/collection/components/nv-calendar/test/partials/calendar-actions.logic.test.js.map +1 -0
- package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js +262 -0
- package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js.map +1 -0
- package/dist/collection/components/nv-calendar/test/partials/calendar-header.logic.test.js +208 -0
- package/dist/collection/components/nv-calendar/test/partials/calendar-header.logic.test.js.map +1 -0
- package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js +355 -0
- package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js.map +1 -0
- package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js +250 -0
- package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js.map +1 -0
- package/dist/collection/components/nv-calendar/test/partials/week-numbers.logic.test.js +217 -0
- package/dist/collection/components/nv-calendar/test/partials/week-numbers.logic.test.js.map +1 -0
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +56 -16
- package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
- package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +44 -0
- package/dist/collection/components/nv-fielddate/test/nv-fielddate.logic.test.js +196 -0
- package/dist/collection/components/nv-fielddate/test/nv-fielddate.logic.test.js.map +1 -0
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +99 -43
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +44 -0
- package/dist/collection/components/nv-fielddaterange/test/nv-fielddaterange.logic.test.js +137 -0
- package/dist/collection/components/nv-fielddaterange/test/nv-fielddaterange.logic.test.js.map +1 -0
- package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +46 -0
- package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +46 -0
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +44 -0
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +44 -0
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +44 -0
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js +22 -22
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +30 -29
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.js.map +1 -1
- package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +91 -20
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +44 -0
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.css +38 -0
- package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +44 -0
- package/dist/components/index.js +1 -1
- package/dist/components/nv-alert.js +2 -2
- package/dist/components/nv-avatar.js +2 -2
- package/dist/components/nv-badge.js +1 -1
- package/dist/components/nv-breadcrumb.js +3 -3
- package/dist/components/nv-breadcrumbs.js +1 -1
- package/dist/components/nv-button.js +1 -1
- package/dist/components/nv-calendar.js +1 -1
- package/dist/components/nv-col.js +1 -1
- package/dist/components/nv-datagrid.js +3 -3
- package/dist/components/nv-datagridcolumn.js +1 -1
- package/dist/components/nv-dialog.js +6 -6
- package/dist/components/nv-dialogfooter.js +1 -1
- package/dist/components/nv-dialogheader.js +1 -1
- package/dist/components/nv-fieldcheckbox.js +1 -1
- package/dist/components/nv-fielddate.js +53 -25
- package/dist/components/nv-fielddate.js.map +1 -1
- package/dist/components/nv-fielddaterange.js +85 -61
- package/dist/components/nv-fielddaterange.js.map +1 -1
- package/dist/components/nv-fielddropdown.js +7 -7
- 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 +9 -9
- package/dist/components/nv-fieldmultiselect.js.map +1 -1
- package/dist/components/nv-fieldnumber.js +5 -5
- package/dist/components/nv-fieldnumber.js.map +1 -1
- package/dist/components/nv-fieldpassword.js +5 -5
- package/dist/components/nv-fieldpassword.js.map +1 -1
- package/dist/components/nv-fieldradio.js +1 -1
- package/dist/components/nv-fieldselect.js +5 -5
- package/dist/components/nv-fieldselect.js.map +1 -1
- package/dist/components/nv-fieldslider.js +27 -22
- package/dist/components/nv-fieldslider.js.map +1 -1
- package/dist/components/nv-fieldtext.js +1 -1
- package/dist/components/nv-fieldtextarea.js +2 -2
- package/dist/components/nv-fieldtextarea.js.map +1 -1
- package/dist/components/nv-fieldtime.js +6 -6
- 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 +4 -4
- package/dist/components/nv-menuitem.js +1 -1
- package/dist/components/nv-popover.js +1 -1
- package/dist/components/nv-row.js +1 -1
- package/dist/components/nv-stack.js +1 -1
- package/dist/components/nv-table.js +1 -1
- package/dist/components/nv-tablecolumn.js +1 -1
- package/dist/components/nv-toggle.js +1 -1
- package/dist/components/nv-tooltip.js +1 -1
- package/dist/components/{p-d63f1cbe.js → p-2ae214d2.js} +3 -3
- package/dist/components/{p-d63f1cbe.js.map → p-2ae214d2.js.map} +1 -1
- package/dist/components/{p-c0a91091.js → p-3e32b5a1.js} +3 -3
- package/dist/components/{p-c0a91091.js.map → p-3e32b5a1.js.map} +1 -1
- package/dist/components/{p-4656efae.js → p-5e90b9b8.js} +376 -165
- package/dist/components/p-5e90b9b8.js.map +1 -0
- package/dist/components/{p-cbe9521f.js → p-5ee4015d.js} +3 -3
- package/dist/components/{p-cbe9521f.js.map → p-5ee4015d.js.map} +1 -1
- package/dist/components/{p-33e231f4.js → p-6277f746.js} +2 -2
- package/dist/components/{p-33e231f4.js.map → p-6277f746.js.map} +1 -1
- package/dist/components/{p-f0a5e7e4.js → p-7935c1cb.js} +4 -4
- package/dist/components/{p-f0a5e7e4.js.map → p-7935c1cb.js.map} +1 -1
- package/dist/components/{p-f1859ddc.js → p-8d92f0e1.js} +3 -3
- package/dist/components/{p-f1859ddc.js.map → p-8d92f0e1.js.map} +1 -1
- package/dist/components/{p-cbdc2c8b.js → p-95a7581c.js} +5 -5
- package/dist/components/{p-cbdc2c8b.js.map → p-95a7581c.js.map} +1 -1
- package/dist/components/{p-dd2273a3.js → p-9e6e26cb.js} +2 -2
- package/dist/components/{p-dd2273a3.js.map → p-9e6e26cb.js.map} +1 -1
- package/dist/components/{p-76a30bf1.js → p-9fa0de38.js} +2 -2
- package/dist/components/{p-76a30bf1.js.map → p-9fa0de38.js.map} +1 -1
- package/dist/components/{p-679e0fa9.js → p-aff3ed68.js} +10 -175
- package/dist/components/p-aff3ed68.js.map +1 -0
- package/dist/components/{p-d19b41d2.js → p-b6d858b2.js} +2 -2
- package/dist/components/{p-d19b41d2.js.map → p-b6d858b2.js.map} +1 -1
- package/dist/components/{p-83c8873a.js → p-bb6d1e4e.js} +2 -2
- package/dist/components/{p-83c8873a.js.map → p-bb6d1e4e.js.map} +1 -1
- package/dist/components/{p-581e67cc.js → p-c07c32d2.js} +3 -3
- package/dist/components/{p-581e67cc.js.map → p-c07c32d2.js.map} +1 -1
- package/dist/components/{p-04cb3a6f.js → p-c9006520.js} +4 -4
- package/dist/components/{p-04cb3a6f.js.map → p-c9006520.js.map} +1 -1
- package/dist/components/{p-07a89754.js → p-e28c4707.js} +3 -3
- package/dist/components/{p-07a89754.js.map → p-e28c4707.js.map} +1 -1
- package/dist/components/{p-0ab80d95.js → p-eabbc885.js} +2 -2
- package/dist/components/{p-0ab80d95.js.map → p-eabbc885.js.map} +1 -1
- package/dist/esm/{constants-b97e736d.js → constants-4faa1fae.js} +2 -2
- package/dist/esm/{constants-b97e736d.js.map → constants-4faa1fae.js.map} +1 -1
- package/dist/esm/{index-8f0e5f19.js → index-a1936cd0.js} +17 -184
- package/dist/esm/index-a1936cd0.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/native.js +3 -24
- package/dist/esm/native.js.map +1 -1
- package/dist/esm/nv-alert.entry.js +2 -2
- package/dist/esm/nv-avatar.entry.js +2 -2
- package/dist/esm/nv-badge_2.entry.js +1 -1
- package/dist/esm/nv-breadcrumb.entry.js +1 -1
- package/dist/esm/nv-breadcrumbs.entry.js +1 -1
- package/dist/esm/nv-button.entry.js +2 -2
- package/dist/esm/nv-calendar.entry.js +372 -139
- package/dist/esm/nv-calendar.entry.js.map +1 -1
- package/dist/esm/nv-col.entry.js +1 -1
- package/dist/esm/nv-datagrid.entry.js +2 -2
- package/dist/esm/nv-datagridcolumn.entry.js +1 -1
- package/dist/esm/nv-dialog.entry.js +2 -2
- package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
- package/dist/esm/nv-fieldcheckbox.entry.js +1 -1
- package/dist/esm/nv-fielddate.entry.js +45 -11
- package/dist/esm/nv-fielddate.entry.js.map +1 -1
- package/dist/esm/nv-fielddaterange.entry.js +75 -44
- package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdown.entry.js +2 -2
- package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
- package/dist/esm/nv-fieldmultiselect.entry.js +2 -2
- package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldnumber.entry.js +2 -2
- package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
- package/dist/esm/nv-fieldpassword.entry.js +2 -2
- package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
- package/dist/esm/nv-fieldradio.entry.js +1 -1
- package/dist/esm/nv-fieldselect.entry.js +2 -2
- package/dist/esm/nv-fieldselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldslider.entry.js +25 -20
- package/dist/esm/nv-fieldslider.entry.js.map +1 -1
- package/dist/esm/nv-fieldtext.entry.js +2 -2
- package/dist/esm/nv-fieldtext.entry.js.map +1 -1
- package/dist/esm/nv-fieldtextarea.entry.js +2 -2
- package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
- package/dist/esm/nv-fieldtime.entry.js +3 -3
- package/dist/esm/nv-fieldtime.entry.js.map +1 -1
- package/dist/esm/nv-icon.entry.js +2 -2
- package/dist/esm/nv-iconbutton_2.entry.js +1 -1
- package/dist/esm/nv-menu.entry.js +1 -1
- package/dist/esm/nv-menuitem.entry.js +1 -1
- package/dist/esm/nv-popover.entry.js +1 -1
- package/dist/esm/nv-row.entry.js +1 -1
- package/dist/esm/nv-stack.entry.js +1 -1
- package/dist/esm/nv-table.entry.js +1 -1
- package/dist/esm/nv-tablecolumn.entry.js +1 -1
- package/dist/esm/nv-toggle.entry.js +1 -1
- package/dist/esm/nv-tooltip.entry.js +1 -1
- package/dist/native/index.esm.js +1 -1
- package/dist/native/native.css +1 -1
- package/dist/native/native.esm.js +1 -1
- package/dist/native/native.esm.js.map +1 -1
- package/dist/native/p-050d6c6c.entry.js +2 -0
- package/dist/native/{p-adc96c3a.entry.js.map → p-050d6c6c.entry.js.map} +1 -1
- package/dist/native/{p-519b4819.entry.js → p-08ca678c.entry.js} +2 -2
- package/dist/native/p-1a5d3b87.entry.js +2 -0
- package/dist/native/{p-7c676f2c.entry.js.map → p-1a5d3b87.entry.js.map} +1 -1
- package/dist/native/{p-0323daf6.entry.js → p-1c1ecd38.entry.js} +2 -2
- package/dist/native/{p-16a4cdf3.entry.js → p-1d98477d.entry.js} +2 -2
- package/dist/native/{p-19fb0fd0.entry.js → p-2006f5d4.entry.js} +2 -2
- package/dist/native/p-26cf4938.entry.js +2 -0
- package/dist/native/p-26cf4938.entry.js.map +1 -0
- package/dist/native/p-3817efb2.entry.js +2 -0
- package/dist/native/{p-fb897f7d.entry.js.map → p-3817efb2.entry.js.map} +1 -1
- package/dist/native/p-45459dbb.entry.js +2 -0
- package/dist/native/{p-5382eab2.entry.js.map → p-45459dbb.entry.js.map} +1 -1
- package/dist/native/p-45cbe6e4.entry.js +2 -0
- package/dist/native/p-46428304.entry.js +2 -0
- package/dist/native/p-46428304.entry.js.map +1 -0
- package/dist/native/{p-7092a675.entry.js → p-4f9cdf0b.entry.js} +2 -2
- package/dist/native/{p-cfe0a6c6.entry.js → p-58bb90ad.entry.js} +2 -2
- package/dist/native/p-59b07b36.entry.js +2 -0
- package/dist/native/{p-987c79d8.entry.js.map → p-59b07b36.entry.js.map} +1 -1
- package/dist/native/{p-4c0d81b0.entry.js → p-5b6c59e0.entry.js} +2 -2
- package/dist/native/p-6029e51b.entry.js +2 -0
- package/dist/native/{p-fc3bea07.entry.js.map → p-6029e51b.entry.js.map} +1 -1
- package/dist/native/{p-a2c0f1a7.entry.js → p-60c64f2b.entry.js} +2 -2
- package/dist/native/{p-3f2b6a22.entry.js → p-64a76565.entry.js} +2 -2
- package/dist/native/{p-c930adb7.entry.js → p-83288db0.entry.js} +2 -2
- package/dist/native/p-838f7842.entry.js +2 -0
- package/dist/native/{p-b0fc08e7.entry.js.map → p-838f7842.entry.js.map} +1 -1
- package/dist/native/{p-407fc32d.entry.js → p-86ab23ea.entry.js} +2 -2
- package/dist/native/p-87784622.entry.js +2 -0
- package/dist/native/p-8fb4e5c0.entry.js +2 -0
- package/dist/native/{p-5ba3fc3c.entry.js.map → p-8fb4e5c0.entry.js.map} +1 -1
- package/dist/native/{p-05d95d4d.entry.js → p-914da1e1.entry.js} +2 -2
- package/dist/native/p-abbe5d69.entry.js +2 -0
- package/dist/native/{p-7c6edd1c.entry.js.map → p-abbe5d69.entry.js.map} +1 -1
- package/dist/native/p-abc251aa.entry.js +2 -0
- package/dist/native/p-abc251aa.entry.js.map +1 -0
- package/dist/native/{p-221b8f72.entry.js → p-ad128108.entry.js} +2 -2
- package/dist/native/{p-f0ddf60b.entry.js → p-b5b9190a.entry.js} +2 -2
- package/dist/native/{p-de2c07a6.entry.js → p-b8f2c1e7.entry.js} +2 -2
- package/dist/native/{p-9fba8663.entry.js → p-d040bd61.entry.js} +2 -2
- package/dist/native/p-d0a33e64.js +3 -0
- package/dist/native/p-d0a33e64.js.map +1 -0
- package/dist/native/{p-ed488498.entry.js → p-d21b2da2.entry.js} +3 -3
- package/dist/native/{p-0ec1e2e3.entry.js → p-d53e8795.entry.js} +2 -2
- package/dist/native/p-dc7dd7f3.entry.js +2 -0
- package/dist/native/{p-21e7132f.entry.js.map → p-dc7dd7f3.entry.js.map} +1 -1
- package/dist/native/p-e2c1992e.entry.js +2 -0
- package/dist/native/{p-60b204ac.entry.js.map → p-e2c1992e.entry.js.map} +1 -1
- package/dist/native/{p-f85c08f1.js → p-e2d0a77d.js} +2 -2
- package/dist/native/p-ed6019fe.entry.js +2 -0
- package/dist/native/p-ed6019fe.entry.js.map +1 -0
- package/dist/native/p-f94d7054.entry.js +2 -0
- package/dist/native/{p-aa86af25.entry.js.map → p-f94d7054.entry.js.map} +1 -1
- package/dist/native/p-fdea17ce.entry.js +2 -0
- package/dist/native/{p-ef76178b.entry.js.map → p-fdea17ce.entry.js.map} +1 -1
- package/dist/types/components/nv-calendar/nv-calendar.d.ts +25 -45
- package/dist/types/components/nv-calendar/partials/calendar-actions.d.ts +19 -0
- package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +46 -0
- package/dist/types/components/nv-calendar/partials/calendar-header.d.ts +38 -0
- package/dist/types/components/nv-calendar/partials/calendar-shortcuts.d.ts +35 -0
- package/dist/types/components/nv-calendar/partials/day-cell.d.ts +35 -0
- package/dist/types/components/nv-calendar/partials/index.d.ts +6 -0
- package/dist/types/components/nv-calendar/partials/week-numbers.d.ts +30 -0
- package/dist/types/components/nv-calendar/test/partials/calendar-actions.logic.test.d.ts +1 -0
- package/dist/types/components/nv-calendar/test/partials/calendar-grid.logic.test.d.ts +1 -0
- package/dist/types/components/nv-calendar/test/partials/calendar-header.logic.test.d.ts +1 -0
- package/dist/types/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.d.ts +1 -0
- package/dist/types/components/nv-calendar/test/partials/day-cell.logic.test.d.ts +1 -0
- package/dist/types/components/nv-calendar/test/partials/week-numbers.logic.test.d.ts +1 -0
- package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +21 -9
- package/dist/types/components/nv-fielddate/test/nv-fielddate.logic.test.d.ts +1 -0
- package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +17 -6
- package/dist/types/components/nv-fielddaterange/test/nv-fielddaterange.logic.test.d.ts +1 -0
- package/dist/types/components/nv-fieldslider/nv-fieldslider.d.ts +5 -6
- package/dist/types/components.d.ts +37 -38
- package/dist/vscode-data.json +4 -4
- package/hydrate/index.js +530 -229
- package/hydrate/index.mjs +530 -229
- package/package.json +1 -1
- package/dist/cjs/index-108ddff0.js.map +0 -1
- package/dist/components/p-4656efae.js.map +0 -1
- package/dist/components/p-679e0fa9.js.map +0 -1
- package/dist/esm/index-8f0e5f19.js.map +0 -1
- package/dist/native/p-1e3d3374.entry.js +0 -2
- package/dist/native/p-21e7132f.entry.js +0 -2
- package/dist/native/p-2805f9f2.entry.js +0 -2
- package/dist/native/p-2805f9f2.entry.js.map +0 -1
- package/dist/native/p-5382eab2.entry.js +0 -2
- package/dist/native/p-5ba3fc3c.entry.js +0 -2
- package/dist/native/p-60b204ac.entry.js +0 -2
- package/dist/native/p-711a7778.js +0 -3
- package/dist/native/p-711a7778.js.map +0 -1
- package/dist/native/p-759c9ce4.entry.js +0 -2
- package/dist/native/p-759c9ce4.entry.js.map +0 -1
- package/dist/native/p-7c676f2c.entry.js +0 -2
- package/dist/native/p-7c6edd1c.entry.js +0 -2
- package/dist/native/p-987c79d8.entry.js +0 -2
- package/dist/native/p-aa86af25.entry.js +0 -2
- package/dist/native/p-adc96c3a.entry.js +0 -2
- package/dist/native/p-b0fc08e7.entry.js +0 -2
- package/dist/native/p-d07ab618.entry.js +0 -2
- package/dist/native/p-dac0089b.entry.js +0 -2
- package/dist/native/p-dac0089b.entry.js.map +0 -1
- package/dist/native/p-ef76178b.entry.js +0 -2
- package/dist/native/p-f39803d9.entry.js +0 -2
- package/dist/native/p-f39803d9.entry.js.map +0 -1
- package/dist/native/p-fb897f7d.entry.js +0 -2
- package/dist/native/p-fc3bea07.entry.js +0 -2
- /package/dist/native/{p-519b4819.entry.js.map → p-08ca678c.entry.js.map} +0 -0
- /package/dist/native/{p-0323daf6.entry.js.map → p-1c1ecd38.entry.js.map} +0 -0
- /package/dist/native/{p-16a4cdf3.entry.js.map → p-1d98477d.entry.js.map} +0 -0
- /package/dist/native/{p-19fb0fd0.entry.js.map → p-2006f5d4.entry.js.map} +0 -0
- /package/dist/native/{p-1e3d3374.entry.js.map → p-45cbe6e4.entry.js.map} +0 -0
- /package/dist/native/{p-7092a675.entry.js.map → p-4f9cdf0b.entry.js.map} +0 -0
- /package/dist/native/{p-cfe0a6c6.entry.js.map → p-58bb90ad.entry.js.map} +0 -0
- /package/dist/native/{p-4c0d81b0.entry.js.map → p-5b6c59e0.entry.js.map} +0 -0
- /package/dist/native/{p-a2c0f1a7.entry.js.map → p-60c64f2b.entry.js.map} +0 -0
- /package/dist/native/{p-3f2b6a22.entry.js.map → p-64a76565.entry.js.map} +0 -0
- /package/dist/native/{p-c930adb7.entry.js.map → p-83288db0.entry.js.map} +0 -0
- /package/dist/native/{p-407fc32d.entry.js.map → p-86ab23ea.entry.js.map} +0 -0
- /package/dist/native/{p-d07ab618.entry.js.map → p-87784622.entry.js.map} +0 -0
- /package/dist/native/{p-05d95d4d.entry.js.map → p-914da1e1.entry.js.map} +0 -0
- /package/dist/native/{p-221b8f72.entry.js.map → p-ad128108.entry.js.map} +0 -0
- /package/dist/native/{p-f0ddf60b.entry.js.map → p-b5b9190a.entry.js.map} +0 -0
- /package/dist/native/{p-de2c07a6.entry.js.map → p-b8f2c1e7.entry.js.map} +0 -0
- /package/dist/native/{p-9fba8663.entry.js.map → p-d040bd61.entry.js.map} +0 -0
- /package/dist/native/{p-ed488498.entry.js.map → p-d21b2da2.entry.js.map} +0 -0
- /package/dist/native/{p-0ec1e2e3.entry.js.map → p-d53e8795.entry.js.map} +0 -0
- /package/dist/native/{p-f85c08f1.js.map → p-e2d0a77d.js.map} +0 -0
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { p as proxyCustomElement, H, c as createEvent,
|
|
1
|
+
import { h, p as proxyCustomElement, H, c as createEvent, d as Host } from './p-aff3ed68.js';
|
|
2
2
|
import { C as CUSTOM_DAY_NAMES, b as CUSTOM_MONTH_NAMES, W as WEEK_ABBREVIATIONS } from './p-1f505531.js';
|
|
3
|
-
import { d as defineCustomElement$4 } from './p-cbe9521f.js';
|
|
4
|
-
import { d as defineCustomElement$3 } from './p-76a30bf1.js';
|
|
5
|
-
import { d as defineCustomElement$2 } from './p-04cb3a6f.js';
|
|
6
|
-
import { d as defineCustomElement$1 } from './p-83c8873a.js';
|
|
7
3
|
|
|
8
4
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
9
5
|
|
|
@@ -165,9 +161,18 @@ function isSameOrAfter(date, compareDate, options) {
|
|
|
165
161
|
* @returns {number} Week number
|
|
166
162
|
*/
|
|
167
163
|
function getWeekNumber(date) {
|
|
168
|
-
|
|
169
|
-
const
|
|
170
|
-
|
|
164
|
+
// Create a copy of the date to avoid modifying the original
|
|
165
|
+
const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
|
|
166
|
+
// Adjust to the same week Thursday (ISO 8601)
|
|
167
|
+
d.setUTCDate(d.getUTCDate() + 3 - ((d.getUTCDay() + 6) % 7));
|
|
168
|
+
// Calculate the first Thursday of the year
|
|
169
|
+
const week1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 4));
|
|
170
|
+
// Calculate the week number
|
|
171
|
+
return (1 +
|
|
172
|
+
Math.round(((d.getTime() - week1.getTime()) / 86400000 -
|
|
173
|
+
3 +
|
|
174
|
+
((week1.getUTCDay() + 6) % 7)) /
|
|
175
|
+
7));
|
|
171
176
|
}
|
|
172
177
|
/**
|
|
173
178
|
* Convert a date string/Date to a Date without timezone offset
|
|
@@ -241,6 +246,175 @@ function parseDate(dateInput, dateFormat) {
|
|
|
241
246
|
return parsed.toDate();
|
|
242
247
|
}
|
|
243
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Renders a single day cell in the calendar grid
|
|
251
|
+
* @param {DayCellProps} props - Component properties
|
|
252
|
+
* @returns {JSX.Element} JSX element representing a day cell
|
|
253
|
+
*/
|
|
254
|
+
const DayCell = props => {
|
|
255
|
+
const { date, dayOfMonth, isCurrentMonth, isSelected, isInRange, isStart, isEnd, isToday, isDisabled, onClick, } = props;
|
|
256
|
+
// Build CSS classes for the day cell
|
|
257
|
+
const dayClasses = [
|
|
258
|
+
'day',
|
|
259
|
+
isSelected ? 'selected' : '',
|
|
260
|
+
isStart ? 'range-start' : '',
|
|
261
|
+
isEnd ? 'range-end' : '',
|
|
262
|
+
isInRange ? 'in-range' : '',
|
|
263
|
+
isDisabled ? 'disabled' : '',
|
|
264
|
+
!isCurrentMonth ? 'outside-month' : '',
|
|
265
|
+
isToday ? 'is-today' : '',
|
|
266
|
+
]
|
|
267
|
+
.filter(Boolean)
|
|
268
|
+
.join(' ');
|
|
269
|
+
const handleClick = () => {
|
|
270
|
+
if (!isDisabled && onClick) {
|
|
271
|
+
onClick(date);
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
return (
|
|
275
|
+
// eslint-disable-next-line react/jsx-no-bind
|
|
276
|
+
h("div", { class: dayClasses, onClick: handleClick, "aria-disabled": isDisabled }, dayOfMonth));
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Renders the action buttons for the calendar (Cancel/OK)
|
|
281
|
+
* @param {CalendarActionsProps} props - Component properties
|
|
282
|
+
* @returns {JSX.Element} JSX element representing the action buttons
|
|
283
|
+
*/
|
|
284
|
+
const CalendarActions = props => {
|
|
285
|
+
const { onReset, onConfirm, useSlot = false } = props;
|
|
286
|
+
return (h("div", { class: "datepicker-actions" }, useSlot ? (h("slot", { name: "actions" },
|
|
287
|
+
h("nv-button", { emphasis: "low", size: "xs", onClick: onReset }, "Cancel"),
|
|
288
|
+
h("nv-button", { size: "xs", onClick: onConfirm }, "OK"))) : (h("div", null,
|
|
289
|
+
h("nv-button", { emphasis: "low", size: "xs", onClick: onReset }, "Cancel"),
|
|
290
|
+
h("nv-button", { size: "xs", onClick: onConfirm }, "OK")))));
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Renders the week numbers column for the calendar
|
|
295
|
+
* @param {WeekNumbersProps} props - Component properties
|
|
296
|
+
* @returns {JSX.Element} JSX element representing the week numbers
|
|
297
|
+
*/
|
|
298
|
+
const WeekNumbers = props => {
|
|
299
|
+
const { weeks, localizedWeekText, selectionType, onWeekSelect, calendarIndex, } = props;
|
|
300
|
+
/**
|
|
301
|
+
* Handles click on a week number for range selection
|
|
302
|
+
* @param {Array<WeekData>} week - Week data
|
|
303
|
+
*/
|
|
304
|
+
const handleWeekClick = (week) => {
|
|
305
|
+
if (selectionType === 'range') {
|
|
306
|
+
const dates = week.map(d => d.date);
|
|
307
|
+
onWeekSelect(dates, calendarIndex);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* Creates a click handler for a specific week
|
|
312
|
+
* @param {Array<WeekData>} week - Week data
|
|
313
|
+
* @returns {() => void} Click handler function
|
|
314
|
+
*/
|
|
315
|
+
const createWeekHandler = (week) => {
|
|
316
|
+
return () => handleWeekClick(week);
|
|
317
|
+
};
|
|
318
|
+
return (h("div", { class: "week-numbers" },
|
|
319
|
+
h("div", { class: "week-header" }, localizedWeekText),
|
|
320
|
+
weeks.map((week, weekIndex) => {
|
|
321
|
+
var _a;
|
|
322
|
+
const firstDayWithDate = ((_a = week.find(d => d.date)) === null || _a === void 0 ? void 0 : _a.date) || new Date();
|
|
323
|
+
const weekNumber = getWeekNumber(firstDayWithDate);
|
|
324
|
+
const isClickable = selectionType === 'range';
|
|
325
|
+
return (h("div", { class: `week-number ${isClickable ? 'clickable' : ''}`, onClick: createWeekHandler(week), key: `week-${weekIndex}`, role: isClickable ? 'button' : undefined, tabindex: isClickable ? 0 : undefined }, weekNumber));
|
|
326
|
+
})));
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Renders the shortcuts for quick date selection
|
|
331
|
+
* @param {CalendarShortcutsProps} props - Component properties
|
|
332
|
+
* @returns {JSX.Element | null} JSX element representing the shortcuts or null if no shortcuts
|
|
333
|
+
*/
|
|
334
|
+
const CalendarShortcuts = props => {
|
|
335
|
+
const { shortcuts, placement, onShortcutClick } = props;
|
|
336
|
+
if (!shortcuts || shortcuts.length === 0) {
|
|
337
|
+
return null;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Creates a click handler for a specific shortcut
|
|
341
|
+
* @param {ShortcutData} shortcut - The shortcut data
|
|
342
|
+
* @returns {() => void} Click handler function
|
|
343
|
+
*/
|
|
344
|
+
const createShortcutHandler = (shortcut) => {
|
|
345
|
+
return () => onShortcutClick(shortcut);
|
|
346
|
+
};
|
|
347
|
+
return (h("div", { class: `shortcuts-container shortcuts-placement-${placement}` }, shortcuts.map((shortcut, index) => (h("nv-button", { key: `shortcut-${index}`, emphasis: "lower", size: "xs", "aria-label": shortcut.label, onClick: createShortcutHandler(shortcut) }, shortcut.label)))));
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Renders the calendar header with navigation and date controls
|
|
352
|
+
* @param {CalendarHeaderProps} props - Component properties
|
|
353
|
+
* @returns {JSX.Element} JSX element representing the calendar header
|
|
354
|
+
*/
|
|
355
|
+
const CalendarHeader = props => {
|
|
356
|
+
const { currentDate, months, numberOfCalendars, calendarIndex, monthOffset, onMonthChange, onMonthSelect, onYearChange, } = props;
|
|
357
|
+
/**
|
|
358
|
+
* Creates navigation handler for month change
|
|
359
|
+
* @param {number} direction - Direction of navigation (-1 or 1)
|
|
360
|
+
* @returns {() => void} Navigation handler function
|
|
361
|
+
*/
|
|
362
|
+
const createNavigationHandler = (direction) => {
|
|
363
|
+
return () => onMonthChange(direction);
|
|
364
|
+
};
|
|
365
|
+
/**
|
|
366
|
+
* Creates month selection handler
|
|
367
|
+
* @param {number} offset - Month offset
|
|
368
|
+
* @returns {(event: Event) => void} Month selection handler function
|
|
369
|
+
*/
|
|
370
|
+
const createMonthSelectHandler = (offset) => {
|
|
371
|
+
return (event) => onMonthSelect(event, offset);
|
|
372
|
+
};
|
|
373
|
+
/**
|
|
374
|
+
* Creates year change handler
|
|
375
|
+
* @param {number} offset - Month offset
|
|
376
|
+
* @returns {(event: Event) => void} Year change handler function
|
|
377
|
+
*/
|
|
378
|
+
const createYearChangeHandler = (offset) => {
|
|
379
|
+
return (event) => onYearChange(event, offset);
|
|
380
|
+
};
|
|
381
|
+
const currentMonth = (currentDate.getUTCMonth() + monthOffset) % 12;
|
|
382
|
+
const currentYear = currentDate.getUTCFullYear() +
|
|
383
|
+
Math.floor((currentDate.getUTCMonth() + monthOffset) / 12);
|
|
384
|
+
return (h("div", { class: "header" },
|
|
385
|
+
numberOfCalendars > 1 && calendarIndex === 0 && (h("nv-iconbutton", { class: "nav-left", emphasis: "lower", name: "chevron-left", onClick: createNavigationHandler(-1) })),
|
|
386
|
+
h("div", { class: "date-controls" },
|
|
387
|
+
h("select", { class: "month-select mr-4", onChange: createMonthSelectHandler(monthOffset) }, months.map(month => (h("option", { key: month.value, value: month.value, selected: month.value === currentMonth }, month.label)))),
|
|
388
|
+
h("input", { type: "number", class: "year-input", min: "1950", max: "2100", value: currentYear, onChange: createYearChangeHandler(monthOffset) })),
|
|
389
|
+
numberOfCalendars === 1 && (h("div", { class: "nav-buttons" },
|
|
390
|
+
h("nv-iconbutton", { emphasis: "lower", name: "chevron-left", onClick: createNavigationHandler(-1) }),
|
|
391
|
+
h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: createNavigationHandler(1) }))),
|
|
392
|
+
numberOfCalendars > 1 && calendarIndex === numberOfCalendars - 1 && (h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: createNavigationHandler(1), class: "nav-right" }))));
|
|
393
|
+
};
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Renders the calendar grid with day headers and day cells
|
|
397
|
+
* @param {CalendarGridProps} props - Component properties
|
|
398
|
+
* @returns {JSX.Element} JSX element representing the calendar grid
|
|
399
|
+
*/
|
|
400
|
+
const CalendarGrid = props => {
|
|
401
|
+
const { days, dayNames, selectionType, selectedDate, startDate, endDate, isUTCMode, onDayClick, isDateInRange, isToday, } = props;
|
|
402
|
+
return (h("div", { class: "days-container" },
|
|
403
|
+
h("div", { class: "days-header" }, dayNames.map((day, index) => (h("div", { class: "day-header", key: `day-header-${index}` }, day)))),
|
|
404
|
+
h("div", { class: "days-grid" }, days.map(day => {
|
|
405
|
+
const date = day.date;
|
|
406
|
+
if (!date)
|
|
407
|
+
return null;
|
|
408
|
+
const isSelected = selectionType === 'single' &&
|
|
409
|
+
isSameDate(date, selectedDate, { isUTCMode });
|
|
410
|
+
const isInRange = isDateInRange(date);
|
|
411
|
+
const isStart = isSameDate(date, startDate, { isUTCMode });
|
|
412
|
+
const isEnd = isSameDate(date, endDate, { isUTCMode });
|
|
413
|
+
const isTodayDate = isToday(date);
|
|
414
|
+
return (h(DayCell, { date: date, dayOfMonth: day.dayOfMonth, isCurrentMonth: day.isCurrentMonth, isSelected: isSelected, isInRange: isInRange, isStart: isStart, isEnd: isEnd, isToday: isTodayDate, isDisabled: day.isDisabled, selectionType: selectionType, onClick: onDayClick }));
|
|
415
|
+
}))));
|
|
416
|
+
};
|
|
417
|
+
|
|
244
418
|
const nvCalendarCss = "nv-calendar{display:block}.datepicker-root{display:flex;justify-content:center;align-items:flex-start;width:auto}.datepicker-container{font-family:system-ui, sans-serif;display:flex;flex-direction:column;align-items:stretch;background:var(--components-calendar-background);border-radius:var(--calendar-radius);padding:var(--calendar-padding);box-shadow:0px var(--shadow-y-axis-md-1) var(--shadow-blur-md-1) var(--shadow-spread-md, 0) var(--shadow-color-opacity-0), 0px var(--shadow-y-axis-md-2) var(--shadow-blur-md-2) var(--shadow-spread-md, 0) var(--shadow-color-opacity-2);border:1px solid var(--components-calendar-border);width:auto;max-width:100%}.datepicker-container-single{max-width:300px}.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-left),.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-container-single:has(.shortcuts-placement-left),.datepicker-container-single:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-wrapper{display:flex;justify-content:center;align-items:flex-start;gap:var(--calendar-gap-x);width:auto;overflow-x:hidden}.datepicker-wrapper::-webkit-scrollbar{width:6px;height:6px}.datepicker-wrapper::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}.datepicker-wrapper::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}.datepicker-wrapper.single{justify-content:center}.calendar-container{display:flex;flex-direction:column;align-items:center;padding:var(--calendar-padding);width:auto;position:relative}.calendar-separator{width:1px;background:var(--components-calendar-border);height:auto;min-height:100%;margin:0 10px}.header{display:flex;justify-content:start;align-items:center;margin-bottom:var(--calendar-header-margin-bottom);width:100%}.header nv-iconbutton{width:var(--calendar-header-button-size);height:var(--calendar-header-button-size)}.nav-buttons{display:flex;gap:var(--spacing-0);margin-left:auto}.nav-left{order:-1}.date-controls{display:flex;gap:var(--spacing-1);align-items:center;min-height:34px;justify-content:center}.datepicker-container-single .date-controls{justify-content:flex-start}.datepicker-container:not(.datepicker-container-single) .date-controls{justify-content:start;flex-grow:1}.date-controls .month-select,.date-controls .year-input{background:transparent !important}.calendar-wrapper:nth-child(n+2) .datepicker-container{margin-left:42px}.calendar-grid{display:grid;grid-template-columns:auto 1fr;column-gap:var(--calendar-weeks-calendar-gap-x);position:relative}.calendar-grid.slide-left{animation:slideLeft 0.3s ease-out}.calendar-grid.slide-right{animation:slideRight 0.3s ease-out}.week-numbers{display:grid;grid-template-rows:var(--calendar-cell-size) repeat(6, var(--calendar-cell-size));background:var(--components-calendar-weeks-background);color:var(--components-calendar-weeks-text);border-radius:var(--calendar-weeks-radius);width:var(--calendar-weeks-size);row-gap:var(--calendar-grid-gap-y)}.week-numbers .clickable{cursor:pointer}.week-numbers .clickable:hover{background-color:var(--components-calendar-weeks-background-hover);color:var(--components-calendar-weeks-text-hover);border-radius:var(--calendar-radius)}.week-header,.week-number{display:grid;place-items:center;font-size:var(--calendar-cell-font-size)}.week-header{font-weight:700;color:var(--components-calendar-weeks-text)}.week-number{color:var(--components-calendar-cell-text)}.days-container{display:grid;grid-template-rows:auto 1fr;row-gap:var(--calendar-grid-gap-y)}.days-header{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));height:var(--calendar-cell-size)}.day-header{display:grid;place-items:center;font-size:var(--calendar-cell-font-size);color:var(--components-calendar-cell-text)}.days-grid{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));grid-template-rows:repeat(6, var(--calendar-cell-size));animation:fadeIn 0.2s ease-in;row-gap:var(--calendar-grid-gap-y);z-index:0}.day{display:grid;place-items:center;width:var(--calendar-cell-size);height:var(--calendar-cell-size);font-size:var(--calendar-cell-font-size);border-radius:var(--calendar-cell-radius);cursor:pointer;border:none;background:transparent;transition:all 0.2s ease;text-align:center;animation:scaleIn 0.2s ease-out}.day:hover:not(.disabled,.empty,.selected){background:var(--components-calendar-cell-background-hover);color:var(--components-calendar-cell-text-hover)}.day.selected,.day.selected:hover .day.is-today.selected,.day.is-today.selected:hover{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected) !important}.day.disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.day.outside-month{color:var(--components-calendar-cell-text);opacity:var(--opacity-disabled)}.day.outside-month.selected{opacity:1 !important;color:var(--components-calendar-cell-text-selected)}.day.outside-month.in-range{opacity:0.5 !important;background-color:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range)}.day.outside-month.in-range:hover{opacity:0.7 !important;background-color:var(--components-calendar-cell-background-in-range)}.day.in-range{background:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range);border-radius:0;position:relative}.day.range-start,.day.range-start:focus,.day.range-start:hover,.day.range-end,.day.range-end:focus,.day.range-end:hover{background-color:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected) !important}.day.range-start,.day.range-end,.day.range-start.is-today,.day.range-end.is-today{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected);position:relative;border-radius:var(--radius-rounded-full)}.day.range-start:hover,.day.range-end:hover,.day.range-start.is-today:hover,.day.range-end.is-today:hover{color:var(--components-calendar-cell-text-today)}.day.range-start:before,.day.range-end:before,.day.range-start.is-today:before,.day.range-end.is-today:before{content:\"\";position:absolute;bottom:0;left:0;right:0;top:0;z-index:-1;background-color:var(--components-calendar-cell-background-in-range);border-radius:var(--radius-rounded-full);width:auto;height:auto}.day.range-start:has(~.range-end):before,.day.range-start:has(+.in-range):before{border-top-right-radius:0;border-bottom-right-radius:0}.day.range-end:before{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.day.outside-month.range-start,.day.outside-month.range-end{opacity:1 !important;background:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected)}.day.is-today{font-weight:700;position:relative;color:var(--components-calendar-cell-text-today)}.day.is-today.range-start,.day.is-today.range-end{color:var(--components-calendar-cell-text-selected)}.day.is-today.range-start:hover,.day.is-today.range-end:hover{color:var(--components-calendar-cell-text-today)}.day.is-today::after{content:\"\";position:absolute;bottom:var(--spacing-1);left:50%;transform:translateX(-50%);width:var(--calendar-cell-dot-size);height:var(--calendar-cell-dot-size);background-color:currentColor;border-radius:50%}.day.is-today.selected::after{color:var(--components-calendar-cell-text-selected)}.day.is-today.selected::after::after{background-color:var(--components-calendar-cell-dot-selected)}.calendar-footer{display:flex;gap:var(--spacing-1);justify-content:flex-start;width:100%;flex-wrap:wrap}.footer-placement-left{justify-content:flex-start}.footer-placement-right{justify-content:flex-end}.footer-placement-center{justify-content:center}.datepicker-controls{display:flex;flex-direction:column;border-top:1px solid var(--components-calendar-border);padding:var(--calendar-controls-padding-top) var(--calendar-padding) var(--calendar-padding);gap:var(--calendar-grid-gap-y);margin-top:var(--calendar-controls-margin-top)}.datepicker-actions{display:flex;justify-content:flex-end;gap:var(--spacing-1);width:100%}.datepicker-actions slot-fb{display:contents !important}.calendar-footer+.datepicker-actions{margin-top:0}.shortcuts-placement-left,.shortcuts-placement-right{display:flex;flex-direction:column;gap:var(--spacing-1);margin-top:var(--spacing-4)}.shortcuts-placement-left{align-items:flex-end}.shortcuts-placement-right{align-items:flex-start}@keyframes slideLeft{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideRight{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{from{opacity:0;transform:scale(0.9)}to{opacity:1;transform:scale(1)}}";
|
|
245
419
|
const NvCalendarStyle0 = nvCalendarCss;
|
|
246
420
|
|
|
@@ -250,18 +424,28 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
250
424
|
this.__registerHost();
|
|
251
425
|
this.singleDateChange = createEvent(this, "singleDateChange", 7);
|
|
252
426
|
this.rangeDateChange = createEvent(this, "rangeDateChange", 7);
|
|
427
|
+
this.valueChanged = createEvent(this, "valueChanged", 7);
|
|
253
428
|
/****************************************************************************/
|
|
254
429
|
//#region PROPERTIES
|
|
255
430
|
/**
|
|
256
431
|
* First day of the week (0 = Sunday, 1 = Monday, etc.)
|
|
257
|
-
* @default
|
|
432
|
+
* @default 1
|
|
258
433
|
*/
|
|
259
|
-
this.firstDayOfWeek =
|
|
434
|
+
this.firstDayOfWeek = 1;
|
|
260
435
|
/**
|
|
261
436
|
* Number of calendars to display
|
|
262
437
|
* @default 1
|
|
263
438
|
*/
|
|
264
439
|
this.numberOfCalendars = 1;
|
|
440
|
+
/**
|
|
441
|
+
* Selected date value. For single mode: ISO date string. For range mode: comma-separated ISO date strings.
|
|
442
|
+
* Examples:
|
|
443
|
+
* - Single: "2025-03-15"
|
|
444
|
+
* - Range: "2025-03-15,2025-03-20"
|
|
445
|
+
* @default ""
|
|
446
|
+
*/
|
|
447
|
+
// eslint-disable-next-line @stencil-community/strict-mutable
|
|
448
|
+
this.value = '';
|
|
265
449
|
/**
|
|
266
450
|
* Locale for date formatting
|
|
267
451
|
* @default 'en-BE'
|
|
@@ -299,6 +483,75 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
299
483
|
this.endDate = null;
|
|
300
484
|
/** List of formatted months for the selector */
|
|
301
485
|
this.months = [];
|
|
486
|
+
/**
|
|
487
|
+
* Parses the unified value prop and synchronizes with internal state
|
|
488
|
+
* @param {string} value - Value to parse
|
|
489
|
+
*/
|
|
490
|
+
this.parseUnifiedValue = (value) => {
|
|
491
|
+
if (!value) {
|
|
492
|
+
// Reset all selections
|
|
493
|
+
this.selectedDate = null;
|
|
494
|
+
this.startDate = null;
|
|
495
|
+
this.endDate = null;
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
const values = value
|
|
499
|
+
.split(',')
|
|
500
|
+
.map(v => v.trim())
|
|
501
|
+
.filter(Boolean);
|
|
502
|
+
if (this.selectionType === 'single' && values.length >= 1) {
|
|
503
|
+
const parsedDate = parseDate(values[0], this.dateFormat);
|
|
504
|
+
if (parsedDate) {
|
|
505
|
+
this.selectedDate = parsedDate;
|
|
506
|
+
// Only sync with legacy prop if not using actions (immediate mode)
|
|
507
|
+
if (!this.showActions) {
|
|
508
|
+
this.singleValue = values[0];
|
|
509
|
+
}
|
|
510
|
+
// Navigate to the date if not prevented
|
|
511
|
+
const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
|
|
512
|
+
if (!preventNavigation) {
|
|
513
|
+
this.currentDate = parsedDate;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
// Handle malformed date gracefully - reset state
|
|
518
|
+
console.warn(`Invalid date format: ${values[0]}`);
|
|
519
|
+
this.selectedDate = null;
|
|
520
|
+
if (!this.showActions) {
|
|
521
|
+
this.singleValue = '';
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
else if (this.selectionType === 'range' && values.length >= 2) {
|
|
526
|
+
const startDate = parseDate(values[0], this.dateFormat);
|
|
527
|
+
const endDate = parseDate(values[1], this.dateFormat);
|
|
528
|
+
if (startDate && endDate) {
|
|
529
|
+
this.startDate = startDate;
|
|
530
|
+
this.endDate = endDate;
|
|
531
|
+
// Only sync with legacy prop if not using actions (immediate mode)
|
|
532
|
+
if (!this.showActions) {
|
|
533
|
+
this.rangeValue = {
|
|
534
|
+
start: values[0],
|
|
535
|
+
end: values[1],
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
// Navigate to start date if not prevented
|
|
539
|
+
const preventNavigation = this.el.getAttribute('data-prevent-navigation') === 'true';
|
|
540
|
+
if (!preventNavigation) {
|
|
541
|
+
this.currentDate = startDate;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
else {
|
|
545
|
+
// Handle malformed dates gracefully - reset state
|
|
546
|
+
console.warn(`Invalid date range format: ${values[0]}, ${values[1]}`);
|
|
547
|
+
this.startDate = null;
|
|
548
|
+
this.endDate = null;
|
|
549
|
+
if (!this.showActions) {
|
|
550
|
+
this.rangeValue = { start: '', end: '' };
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
};
|
|
302
555
|
/**
|
|
303
556
|
* Change the displayed month
|
|
304
557
|
* @param {number} offset - Month offset (-1 for previous, 1 for next)
|
|
@@ -346,7 +599,14 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
346
599
|
return;
|
|
347
600
|
const formattedDate = formatDate(date, { dateFormat: this.dateFormat });
|
|
348
601
|
this.selectedDate = date;
|
|
349
|
-
|
|
602
|
+
// Update the unified value prop (like nv-fieldslider)
|
|
603
|
+
this.value = formattedDate;
|
|
604
|
+
this.valueChanged.emit(formattedDate);
|
|
605
|
+
// Legacy support (deprecated) - only sync props if not using actions
|
|
606
|
+
if (!this.showActions) {
|
|
607
|
+
this.singleValue = formattedDate;
|
|
608
|
+
this.singleDateChange.emit(formattedDate);
|
|
609
|
+
}
|
|
350
610
|
};
|
|
351
611
|
/**
|
|
352
612
|
* Handles range date selection
|
|
@@ -354,18 +614,32 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
354
614
|
*/
|
|
355
615
|
this.handleRangeSelection = (date) => {
|
|
356
616
|
if (!this.startDate || (this.startDate && this.endDate)) {
|
|
617
|
+
// Start new range selection
|
|
357
618
|
this.startDate = date;
|
|
358
619
|
this.endDate = null;
|
|
359
620
|
}
|
|
360
621
|
else {
|
|
622
|
+
// Complete range selection
|
|
361
623
|
this.endDate = date;
|
|
624
|
+
// Ensure correct order
|
|
362
625
|
if (this.startDate > this.endDate) {
|
|
363
626
|
[this.startDate, this.endDate] = [this.endDate, this.startDate];
|
|
364
627
|
}
|
|
365
|
-
this.
|
|
366
|
-
|
|
367
|
-
end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
|
|
628
|
+
const startFormatted = formatDate(this.startDate, {
|
|
629
|
+
dateFormat: this.dateFormat,
|
|
368
630
|
});
|
|
631
|
+
const endFormatted = formatDate(this.endDate, {
|
|
632
|
+
dateFormat: this.dateFormat,
|
|
633
|
+
});
|
|
634
|
+
// Update the unified value prop (like nv-fieldslider)
|
|
635
|
+
this.value = `${startFormatted},${endFormatted}`;
|
|
636
|
+
this.valueChanged.emit(this.value);
|
|
637
|
+
// Legacy support (deprecated) - only sync props if not using actions
|
|
638
|
+
if (!this.showActions) {
|
|
639
|
+
const legacyRange = { start: startFormatted, end: endFormatted };
|
|
640
|
+
this.rangeDateChange.emit(legacyRange);
|
|
641
|
+
this.rangeValue = legacyRange;
|
|
642
|
+
}
|
|
369
643
|
}
|
|
370
644
|
};
|
|
371
645
|
/**
|
|
@@ -424,23 +698,35 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
424
698
|
* @returns {string[]} Array of short day names
|
|
425
699
|
*/
|
|
426
700
|
this.getDayNames = () => {
|
|
701
|
+
let days;
|
|
427
702
|
// If we have custom day names for this locale
|
|
428
703
|
if (CUSTOM_DAY_NAMES[this.locale]) {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
704
|
+
// Custom day names are expected to start with Monday (index 0 = Monday)
|
|
705
|
+
days = [...CUSTOM_DAY_NAMES[this.locale]];
|
|
706
|
+
}
|
|
707
|
+
else {
|
|
708
|
+
// Generate days using Intl.DateTimeFormat, starting from Monday
|
|
709
|
+
const formatter = new Intl.DateTimeFormat(this.locale, {
|
|
710
|
+
weekday: 'short',
|
|
711
|
+
});
|
|
712
|
+
// Generate days starting from Monday (2023-01-02 was a Monday)
|
|
713
|
+
days = [...Array(7)].map((_, i) => formatter.format(new Date(2023, 0, i + 2)).toUpperCase());
|
|
714
|
+
}
|
|
715
|
+
// Now reorganize based on firstDayOfWeek
|
|
716
|
+
// 0 = Sunday, 1 = Monday (default), 2 = Tuesday, etc.
|
|
717
|
+
if (this.firstDayOfWeek === 0) {
|
|
718
|
+
// If Sunday is first day, move Sunday (last element) to the beginning
|
|
719
|
+
return [days[6], ...days.slice(0, 6)];
|
|
720
|
+
}
|
|
721
|
+
else if (this.firstDayOfWeek === 1) {
|
|
722
|
+
// If Monday is first day, return as-is (since our array starts with Monday)
|
|
723
|
+
return days;
|
|
724
|
+
}
|
|
725
|
+
else {
|
|
726
|
+
// For other first days (Tuesday=2, Wednesday=3, etc.)
|
|
727
|
+
const offset = this.firstDayOfWeek - 1; // Convert to 0-based offset from Monday
|
|
728
|
+
return [...days.slice(offset), ...days.slice(0, offset)];
|
|
434
729
|
}
|
|
435
|
-
// Otherwise, use the default behavior
|
|
436
|
-
const formatter = new Intl.DateTimeFormat(this.locale, {
|
|
437
|
-
weekday: 'short',
|
|
438
|
-
});
|
|
439
|
-
const days = [...Array(7)].map((_, i) => formatter.format(new Date(2023, 0, i + 1)).toUpperCase());
|
|
440
|
-
// Reorganize the days based on the first day of the week
|
|
441
|
-
const firstDays = days.slice(0, this.firstDayOfWeek);
|
|
442
|
-
const remainingDays = days.slice(this.firstDayOfWeek);
|
|
443
|
-
return [...remainingDays, ...firstDays];
|
|
444
730
|
};
|
|
445
731
|
/**
|
|
446
732
|
* Generates the days of the current month
|
|
@@ -621,8 +907,15 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
621
907
|
if (shortcut.singleValue) {
|
|
622
908
|
const newDate = parseDate(shortcut.singleValue, this.dateFormat);
|
|
623
909
|
this.selectedDate = newDate;
|
|
624
|
-
|
|
625
|
-
|
|
910
|
+
const formattedDate = formatDate(newDate, {
|
|
911
|
+
dateFormat: this.dateFormat,
|
|
912
|
+
});
|
|
913
|
+
// Update the unified value prop (like nv-fieldslider)
|
|
914
|
+
this.value = formattedDate;
|
|
915
|
+
this.valueChanged.emit(formattedDate);
|
|
916
|
+
// Legacy support (deprecated) - sync props
|
|
917
|
+
this.singleValue = formattedDate;
|
|
918
|
+
this.singleDateChange.emit(formattedDate);
|
|
626
919
|
if (!this.showActions) {
|
|
627
920
|
const event = new CustomEvent('closePopover', {
|
|
628
921
|
bubbles: true,
|
|
@@ -637,14 +930,18 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
637
930
|
const end = parseDate(shortcut.rangeValue.end, this.dateFormat);
|
|
638
931
|
this.startDate = start;
|
|
639
932
|
this.endDate = end;
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
end: formatDate(end, { dateFormat: this.dateFormat }),
|
|
933
|
+
const startFormatted = formatDate(start, {
|
|
934
|
+
dateFormat: this.dateFormat,
|
|
643
935
|
});
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
936
|
+
const endFormatted = formatDate(end, { dateFormat: this.dateFormat });
|
|
937
|
+
// Update the unified value prop (like nv-fieldslider)
|
|
938
|
+
this.value = `${startFormatted},${endFormatted}`;
|
|
939
|
+
this.valueChanged.emit(this.value);
|
|
940
|
+
// Legacy support (deprecated) - sync props
|
|
941
|
+
const legacyRange = { start: startFormatted, end: endFormatted };
|
|
942
|
+
this.rangeDateChange.emit(legacyRange);
|
|
943
|
+
// eslint-disable-next-line @stencil-community/strict-mutable
|
|
944
|
+
this.rangeValue = legacyRange;
|
|
648
945
|
if (!this.showActions) {
|
|
649
946
|
const event = new CustomEvent('closePopover', {
|
|
650
947
|
bubbles: true,
|
|
@@ -662,79 +959,28 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
662
959
|
this.forceCalendarUpdate = newDate => {
|
|
663
960
|
this.currentDate = new Date(newDate);
|
|
664
961
|
};
|
|
665
|
-
/**
|
|
666
|
-
* Handles month change with an offset
|
|
667
|
-
* @param {number} direction - Direction (-1 for previous, 1 for next)
|
|
668
|
-
* @returns {Function} Change month handler
|
|
669
|
-
*/
|
|
670
|
-
this.getChangeMonthHandler = (direction) => {
|
|
671
|
-
return () => this.changeMonth(direction);
|
|
672
|
-
};
|
|
673
|
-
/**
|
|
674
|
-
* Handles month change from an event (ex: dropdown)
|
|
675
|
-
* @param {number} offset - Month offset (0 by default)
|
|
676
|
-
* @returns {Function} Change month handler
|
|
677
|
-
*/
|
|
678
|
-
this.getHandleMonthChange = (offset) => {
|
|
679
|
-
return (event) => this.handleMonthChange(event, offset);
|
|
680
|
-
};
|
|
681
|
-
/**
|
|
682
|
-
* Handles year change from an event (ex: dropdown)
|
|
683
|
-
* @param {number} offset - Year offset (0 by default)
|
|
684
|
-
* @returns {Function} Change year handler
|
|
685
|
-
*/
|
|
686
|
-
this.getHandleYearChange = (offset) => {
|
|
687
|
-
return (event) => this.handleYearChange(event, offset);
|
|
688
|
-
};
|
|
689
|
-
/**
|
|
690
|
-
* Handles day click
|
|
691
|
-
* @param {Date} date - Date to handle
|
|
692
|
-
* @param {boolean} isDisabled - Whether the date is disabled
|
|
693
|
-
* @returns {Function} Day click handler
|
|
694
|
-
*/
|
|
695
|
-
this.getDayClickHandler = (date, isDisabled) => {
|
|
696
|
-
return isDisabled ? undefined : () => this.handleDateSelection(date);
|
|
697
|
-
};
|
|
698
|
-
/**
|
|
699
|
-
* Handles shortcut selection
|
|
700
|
-
* @param {Object} shortcut - Shortcut to handle
|
|
701
|
-
* @param {string | Date} shortcut.singleValue - Selected date value
|
|
702
|
-
* @param {Object} shortcut.rangeValue - Start and end date values
|
|
703
|
-
* @param {string | Date} shortcut.rangeValue.start - Start date value
|
|
704
|
-
* @param {string | Date} shortcut.rangeValue.end - End date value
|
|
705
|
-
* @param {string} shortcut.label - Label
|
|
706
|
-
* @returns {Function} Shortcut selection handler
|
|
707
|
-
*/
|
|
708
|
-
this.getShortcutHandler = (shortcut) => {
|
|
709
|
-
return () => this.applyShortcut(shortcut);
|
|
710
|
-
};
|
|
711
|
-
/**
|
|
712
|
-
* Handles week selection
|
|
713
|
-
* @param {Date[]} dates - Dates to handle
|
|
714
|
-
* @param {number} index - Calendar index
|
|
715
|
-
* @returns {Function} Week selection handler
|
|
716
|
-
*/
|
|
717
|
-
this.getWeekSelectionHandler = (dates, index) => {
|
|
718
|
-
return () => {
|
|
719
|
-
if (this.selectionType === 'range') {
|
|
720
|
-
this.handleWeekSelection(dates, index);
|
|
721
|
-
}
|
|
722
|
-
};
|
|
723
|
-
};
|
|
724
962
|
/**
|
|
725
963
|
* Resets the current selection
|
|
726
964
|
*/
|
|
727
965
|
this.resetSelection = () => {
|
|
728
966
|
if (this.selectionType === 'single') {
|
|
729
967
|
this.selectedDate = null;
|
|
968
|
+
// eslint-disable-next-line @stencil-community/strict-mutable
|
|
730
969
|
this.singleValue = null;
|
|
970
|
+
// eslint-disable-next-line @stencil-community/strict-mutable
|
|
971
|
+
this.value = '';
|
|
731
972
|
this.singleDateChange.emit('');
|
|
973
|
+
this.valueChanged.emit('');
|
|
732
974
|
}
|
|
733
975
|
else {
|
|
734
976
|
this.startDate = null;
|
|
735
977
|
this.endDate = null;
|
|
978
|
+
// eslint-disable-next-line @stencil-community/strict-mutable
|
|
736
979
|
this.rangeValue = null;
|
|
980
|
+
// eslint-disable-next-line @stencil-community/strict-mutable
|
|
981
|
+
this.value = '';
|
|
737
982
|
this.rangeDateChange.emit({ start: '', end: '' });
|
|
983
|
+
this.valueChanged.emit('');
|
|
738
984
|
}
|
|
739
985
|
};
|
|
740
986
|
/**
|
|
@@ -746,6 +992,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
746
992
|
dateFormat: this.dateFormat,
|
|
747
993
|
});
|
|
748
994
|
this.singleDateChange.emit(dateStr);
|
|
995
|
+
// eslint-disable-next-line @stencil-community/strict-mutable
|
|
749
996
|
this.singleValue = dateStr;
|
|
750
997
|
const event = new CustomEvent('closePopover', {
|
|
751
998
|
bubbles: true,
|
|
@@ -760,6 +1007,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
760
1007
|
start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
|
|
761
1008
|
end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
|
|
762
1009
|
});
|
|
1010
|
+
// eslint-disable-next-line @stencil-community/strict-mutable
|
|
763
1011
|
this.rangeValue = {
|
|
764
1012
|
start: formatDate(this.startDate, { dateFormat: this.dateFormat }),
|
|
765
1013
|
end: formatDate(this.endDate, { dateFormat: this.dateFormat }),
|
|
@@ -782,8 +1030,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
782
1030
|
* @description Renders the header of the calendar
|
|
783
1031
|
*/
|
|
784
1032
|
this.renderHeader = (offset, index) => {
|
|
785
|
-
return (h(
|
|
786
|
-
Math.floor((this.currentDate.getUTCMonth() + offset) / 12), onChange: this.getHandleYearChange(offset) })), this.numberOfCalendars === 1 && (h("div", { class: "nav-buttons" }, h("nv-iconbutton", { emphasis: "lower", name: "chevron-left", onClick: this.getChangeMonthHandler(-1) }), h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: this.getChangeMonthHandler(1) }))), this.numberOfCalendars > 1 && index === this.numberOfCalendars - 1 && (h("nv-iconbutton", { emphasis: "lower", name: "chevron-right", onClick: this.getChangeMonthHandler(1), class: "nav-right" }))));
|
|
1033
|
+
return (h(CalendarHeader, { currentDate: this.currentDate, months: this.months, numberOfCalendars: this.numberOfCalendars, calendarIndex: index, monthOffset: offset, onMonthChange: this.changeMonth, onMonthSelect: this.handleMonthChange, onYearChange: this.handleYearChange }));
|
|
787
1034
|
};
|
|
788
1035
|
/**
|
|
789
1036
|
* Renders the week numbers
|
|
@@ -797,42 +1044,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
797
1044
|
weeks,
|
|
798
1045
|
/** Calendar index */
|
|
799
1046
|
index) => {
|
|
800
|
-
return (h(
|
|
801
|
-
var _a;
|
|
802
|
-
const dates = week.map(d => d.date);
|
|
803
|
-
return (h("div", { class: `week-number ${this.selectionType === 'range' ? 'clickable' : ''}`, onClick: this.getWeekSelectionHandler(dates, index), key: `week-${weekIndex}` }, getWeekNumber(((_a = week.find(d => d.date)) === null || _a === void 0 ? void 0 : _a.date) || new Date())));
|
|
804
|
-
})));
|
|
805
|
-
};
|
|
806
|
-
this.renderDaysGrid = (
|
|
807
|
-
/** Days to render */
|
|
808
|
-
days) => {
|
|
809
|
-
return (h("div", { class: "days-grid" }, days.map(day => {
|
|
810
|
-
const date = day.date;
|
|
811
|
-
if (!date)
|
|
812
|
-
return null;
|
|
813
|
-
const isSelected = this.selectionType === 'single' &&
|
|
814
|
-
isSameDate(date, this.selectedDate, { isUTCMode: this.isUTCMode });
|
|
815
|
-
const isInRange = this.isDateInRange(date);
|
|
816
|
-
const isStart = isSameDate(date, this.startDate, {
|
|
817
|
-
isUTCMode: this.isUTCMode,
|
|
818
|
-
});
|
|
819
|
-
const isEnd = isSameDate(date, this.endDate, {
|
|
820
|
-
isUTCMode: this.isUTCMode,
|
|
821
|
-
});
|
|
822
|
-
const isToday = this.isToday(date);
|
|
823
|
-
const isOutsideMonth = !day.isCurrentMonth;
|
|
824
|
-
const dayClasses = [
|
|
825
|
-
'day',
|
|
826
|
-
isSelected ? 'selected' : '',
|
|
827
|
-
isStart ? 'range-start' : '',
|
|
828
|
-
isEnd ? 'range-end' : '',
|
|
829
|
-
isInRange ? 'in-range' : '',
|
|
830
|
-
day.isDisabled ? 'disabled' : '',
|
|
831
|
-
isOutsideMonth ? 'outside-month' : '',
|
|
832
|
-
isToday ? 'is-today' : '',
|
|
833
|
-
];
|
|
834
|
-
return (h("div", { class: dayClasses.filter(Boolean).join(' '), onClick: this.getDayClickHandler(date, day.isDisabled), "aria-disabled": day.isDisabled, key: `day-${date.toISOString()}` }, day.dayOfMonth));
|
|
835
|
-
})));
|
|
1047
|
+
return (h(WeekNumbers, { weeks: weeks, localizedWeekText: this.getLocalizedWeekText(), selectionType: this.selectionType, onWeekSelect: this.handleWeekSelection, calendarIndex: index }));
|
|
836
1048
|
};
|
|
837
1049
|
/**
|
|
838
1050
|
* Renders the calendar
|
|
@@ -851,7 +1063,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
851
1063
|
for (let i = 0; i < days.length; i += 7) {
|
|
852
1064
|
weeks.push(days.slice(i, i + 7));
|
|
853
1065
|
}
|
|
854
|
-
return (h("div", { class: "calendar-wrapper" }, h("div", { class: "calendar-container", key: `calendar-${index}` }, this.renderHeader(offset, index), h("div", { class: "calendar-grid" }, this.showWeekNumbers && this.renderWeekNumbers(weeks, index), h(
|
|
1066
|
+
return (h("div", { class: "calendar-wrapper" }, h("div", { class: "calendar-container", key: `calendar-${index}` }, this.renderHeader(offset, index), h("div", { class: "calendar-grid" }, this.showWeekNumbers && this.renderWeekNumbers(weeks, index), h(CalendarGrid, { days: days, dayNames: this.getDayNames(), selectionType: this.selectionType, selectedDate: this.selectedDate, startDate: this.startDate, endDate: this.endDate, isUTCMode: this.isUTCMode, onDayClick: this.handleDateSelection, isDateInRange: this.isDateInRange, isToday: this.isToday }))), index < this.numberOfCalendars - 1 && (h("div", { class: "calendar-separator" }))));
|
|
855
1067
|
};
|
|
856
1068
|
/**
|
|
857
1069
|
* Renders the shortcuts
|
|
@@ -862,7 +1074,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
862
1074
|
if (!this.hasShortcuts) {
|
|
863
1075
|
return null;
|
|
864
1076
|
}
|
|
865
|
-
return (h(
|
|
1077
|
+
return (h(CalendarShortcuts, { shortcuts: this.shortcuts, placement: this.shortcutsPlacement, onShortcutClick: this.applyShortcut }));
|
|
866
1078
|
};
|
|
867
1079
|
/**
|
|
868
1080
|
* Renders the actions
|
|
@@ -871,7 +1083,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
871
1083
|
* @slot actions - Child content of the component.
|
|
872
1084
|
*/
|
|
873
1085
|
this.renderActions = () => {
|
|
874
|
-
return (h("div", { class: "datepicker-actions" }, h("slot", { name: "actions" }, h(
|
|
1086
|
+
return (h("div", { class: "datepicker-actions" }, h("slot", { name: "actions" }, h(CalendarActions, { onReset: this.resetSelection, onConfirm: this.confirmSelection, useSlot: false }))));
|
|
875
1087
|
};
|
|
876
1088
|
}
|
|
877
1089
|
//#endregion EVENTS
|
|
@@ -935,12 +1147,26 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
935
1147
|
}
|
|
936
1148
|
}
|
|
937
1149
|
}
|
|
1150
|
+
/**
|
|
1151
|
+
* Watches the changes of the unified value prop
|
|
1152
|
+
* @param {string} newValue - New value
|
|
1153
|
+
* @param {string} oldValue - Old value
|
|
1154
|
+
*/
|
|
1155
|
+
onValueChange(newValue, oldValue) {
|
|
1156
|
+
if (newValue !== oldValue) {
|
|
1157
|
+
this.parseUnifiedValue(newValue);
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
938
1160
|
//#endregion WATCHERS
|
|
939
1161
|
/****************************************************************************/
|
|
940
1162
|
//#region LIFECYCLE
|
|
941
1163
|
componentWillLoad() {
|
|
942
1164
|
this.parseDisabledDates();
|
|
943
|
-
|
|
1165
|
+
// Initialize from unified value prop if provided
|
|
1166
|
+
if (this.value) {
|
|
1167
|
+
this.parseUnifiedValue(this.value);
|
|
1168
|
+
}
|
|
1169
|
+
else if (this.selectionType === 'single' && this.singleValue) {
|
|
944
1170
|
this.selectedDate = parseDate(this.singleValue, this.dateFormat);
|
|
945
1171
|
this.currentDate = this.selectedDate;
|
|
946
1172
|
}
|
|
@@ -953,6 +1179,7 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
953
1179
|
this.currentDate = startDate;
|
|
954
1180
|
if (swapped) {
|
|
955
1181
|
// If dates were swapped, update the rangeValue property
|
|
1182
|
+
// eslint-disable-next-line @stencil-community/strict-mutable
|
|
956
1183
|
this.rangeValue = {
|
|
957
1184
|
start: formatDate(startDate, { dateFormat: this.dateFormat }),
|
|
958
1185
|
end: formatDate(endDate, { dateFormat: this.dateFormat }),
|
|
@@ -964,7 +1191,8 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
964
1191
|
console.error('Invalid rangeValue:', error);
|
|
965
1192
|
}
|
|
966
1193
|
}
|
|
967
|
-
|
|
1194
|
+
// Ensure currentDate is always initialized
|
|
1195
|
+
if (!this.currentDate) {
|
|
968
1196
|
this.currentDate = new Date();
|
|
969
1197
|
}
|
|
970
1198
|
this.initializeMonths();
|
|
@@ -1034,20 +1262,22 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
1034
1262
|
* @slot default - Child content of the component.
|
|
1035
1263
|
*/
|
|
1036
1264
|
render() {
|
|
1037
|
-
return (h(Host, { key: '
|
|
1038
|
-
this.hasActions) && (h("div", { key: '
|
|
1265
|
+
return (h(Host, { key: '43d4f3ab9199e9c5f15e853f15283fa59e4a436d' }, h("div", { key: 'b9956225cb2c16d997aa44266af8f8c8222ea968', class: "datepicker-root" }, h("div", { key: '05b63935bc5ebf500bb52d10688385f994b47fb4', class: `datepicker-container ${this.numberOfCalendars === 1 ? 'datepicker-container-single' : ''}` }, h("div", { key: 'd7af15b9ce051026cf841b3be361b32d8db41fc1', class: `datepicker-wrapper ${this.numberOfCalendars === 1 ? 'single' : ''}` }, this.shortcutsPlacement === 'left' && this.renderShortcuts(), Array.from({ length: this.numberOfCalendars }, (_, index) => this.renderCalendar(index, index)), this.shortcutsPlacement === 'right' && this.renderShortcuts()), ((this.hasShortcuts && this.shortcutsPlacement === 'bottom') ||
|
|
1266
|
+
this.hasActions) && (h("div", { key: '1765334bf15564bc9886b210c54bddba64c7042e', class: "datepicker-controls" }, this.shortcutsPlacement === 'bottom' && this.renderShortcuts(), this.hasActions && this.renderActions())))), h("slot", { key: '0ac3446394b8c23b859e5f0065370b95b6fd05d2' })));
|
|
1039
1267
|
}
|
|
1040
1268
|
get el() { return this; }
|
|
1041
1269
|
static get watchers() { return {
|
|
1042
1270
|
"numberOfCalendars": ["validateNumberOfCalendars"],
|
|
1043
1271
|
"rangeValue": ["onRangeValueChange"],
|
|
1044
1272
|
"disabledDates": ["handleDisabledDatesChange"],
|
|
1045
|
-
"singleValue": ["onSingleValueChange"]
|
|
1273
|
+
"singleValue": ["onSingleValueChange"],
|
|
1274
|
+
"value": ["onValueChange"]
|
|
1046
1275
|
}; }
|
|
1047
1276
|
static get style() { return NvCalendarStyle0; }
|
|
1048
1277
|
}, [4, "nv-calendar", {
|
|
1049
1278
|
"firstDayOfWeek": [514, "first-day-of-week"],
|
|
1050
1279
|
"numberOfCalendars": [1538, "number-of-calendars"],
|
|
1280
|
+
"value": [1537],
|
|
1051
1281
|
"singleValue": [1537, "single-value"],
|
|
1052
1282
|
"rangeValue": [1040],
|
|
1053
1283
|
"min": [513],
|
|
@@ -1069,43 +1299,24 @@ const NvCalendar = /*@__PURE__*/ proxyCustomElement(class NvCalendar extends H {
|
|
|
1069
1299
|
"numberOfCalendars": ["validateNumberOfCalendars"],
|
|
1070
1300
|
"rangeValue": ["onRangeValueChange"],
|
|
1071
1301
|
"disabledDates": ["handleDisabledDatesChange"],
|
|
1072
|
-
"singleValue": ["onSingleValueChange"]
|
|
1302
|
+
"singleValue": ["onSingleValueChange"],
|
|
1303
|
+
"value": ["onValueChange"]
|
|
1073
1304
|
}]);
|
|
1074
1305
|
function defineCustomElement() {
|
|
1075
1306
|
if (typeof customElements === "undefined") {
|
|
1076
1307
|
return;
|
|
1077
1308
|
}
|
|
1078
|
-
const components = ["nv-calendar"
|
|
1309
|
+
const components = ["nv-calendar"];
|
|
1079
1310
|
components.forEach(tagName => { switch (tagName) {
|
|
1080
1311
|
case "nv-calendar":
|
|
1081
1312
|
if (!customElements.get(tagName)) {
|
|
1082
1313
|
customElements.define(tagName, NvCalendar);
|
|
1083
1314
|
}
|
|
1084
1315
|
break;
|
|
1085
|
-
case "nv-button":
|
|
1086
|
-
if (!customElements.get(tagName)) {
|
|
1087
|
-
defineCustomElement$4();
|
|
1088
|
-
}
|
|
1089
|
-
break;
|
|
1090
|
-
case "nv-icon":
|
|
1091
|
-
if (!customElements.get(tagName)) {
|
|
1092
|
-
defineCustomElement$3();
|
|
1093
|
-
}
|
|
1094
|
-
break;
|
|
1095
|
-
case "nv-iconbutton":
|
|
1096
|
-
if (!customElements.get(tagName)) {
|
|
1097
|
-
defineCustomElement$2();
|
|
1098
|
-
}
|
|
1099
|
-
break;
|
|
1100
|
-
case "nv-loader":
|
|
1101
|
-
if (!customElements.get(tagName)) {
|
|
1102
|
-
defineCustomElement$1();
|
|
1103
|
-
}
|
|
1104
|
-
break;
|
|
1105
1316
|
} });
|
|
1106
1317
|
}
|
|
1107
1318
|
defineCustomElement();
|
|
1108
1319
|
|
|
1109
1320
|
export { NvCalendar as N, commonjsGlobal as c, defineCustomElement as d, getDefaultExportFromCjs as g };
|
|
1110
1321
|
|
|
1111
|
-
//# sourceMappingURL=p-
|
|
1322
|
+
//# sourceMappingURL=p-5e90b9b8.js.map
|