@nova-design-system/nova-webcomponents 3.0.0-beta.41 → 3.0.0-beta.42
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/blazor-docs.json +16850 -0
- package/dist/cjs/_commonjsHelpers-b3309d7b.js +12 -0
- package/dist/cjs/_commonjsHelpers-b3309d7b.js.map +1 -0
- package/dist/cjs/{constants-79d2cdfc.js → constants-bcd6b2e2.js} +100 -2
- package/dist/cjs/constants-bcd6b2e2.js.map +1 -0
- package/dist/cjs/{index-5910ba06.js → index-9bda5507.js} +1364 -1182
- package/dist/cjs/index-9bda5507.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/inputmask-76b7b93f.js +3763 -0
- package/dist/cjs/inputmask-76b7b93f.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/native.cjs.js +3 -3
- package/dist/cjs/native.cjs.js.map +1 -1
- package/dist/cjs/nv-alert.cjs.entry.js +3 -3
- package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-avatar.cjs.entry.js +3 -3
- package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-badge_2.cjs.entry.js +16 -5
- package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-base.cjs.entry.js +2 -2
- package/dist/cjs/nv-breadcrumb.cjs.entry.js +2 -2
- package/dist/cjs/nv-breadcrumbs.cjs.entry.js +2 -2
- package/dist/cjs/nv-button.cjs.entry.js +3 -3
- package/dist/cjs/nv-calendar.cjs.entry.js +77 -22
- package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-col.cjs.entry.js +2 -2
- package/dist/cjs/nv-datagrid.cjs.entry.js +267 -5
- package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-datagridcolumn.cjs.entry.js +2 -2
- package/dist/cjs/nv-dialog.cjs.entry.js +15 -10
- package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +4 -4
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +6 -6
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddate.cjs.entry.js +281 -0
- package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +358 -0
- package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +13 -24
- package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +2 -2
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +22 -30
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldnumber.cjs.entry.js +9 -6
- package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +5 -13
- package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldradio.cjs.entry.js +4 -4
- package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldselect.cjs.entry.js +7 -7
- package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtext.cjs.entry.js +5 -5
- package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js +4 -4
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldtime.cjs.entry.js +12 -12
- package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-icon.cjs.entry.js +4 -4
- package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/{nv-iconbutton.cjs.entry.js → nv-iconbutton_2.cjs.entry.js} +44 -3
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -0
- package/dist/cjs/nv-menu.cjs.entry.js +5 -5
- package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-menuitem.cjs.entry.js +5 -5
- package/dist/cjs/nv-menuitem.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-popover.cjs.entry.js +31 -18
- package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-row.cjs.entry.js +2 -2
- package/dist/cjs/nv-stack.cjs.entry.js +2 -2
- package/dist/cjs/nv-table.cjs.entry.js +3 -3
- package/dist/cjs/nv-tablecolumn.cjs.entry.js +1 -1
- package/dist/cjs/nv-toggle.cjs.entry.js +3 -3
- package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-tooltip.cjs.entry.js +3 -3
- package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
- package/dist/collection/collection-manifest.json +4 -2
- package/dist/collection/components/nv-alert/nv-alert.js +2 -2
- package/dist/collection/components/nv-alert/nv-alert.js.map +1 -1
- package/dist/collection/components/nv-avatar/nv-avatar.js +8 -8
- package/dist/collection/components/nv-avatar/nv-avatar.js.map +1 -1
- package/dist/collection/components/nv-badge/nv-badge.js +4 -4
- package/dist/collection/components/nv-badge/nv-badge.js.map +1 -1
- package/dist/collection/components/nv-base/nv-base.js +1 -1
- package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +1 -1
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
- package/dist/collection/components/nv-button/nv-button.js +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.css +13 -8
- package/dist/collection/components/nv-calendar/nv-calendar.js +82 -24
- package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
- package/dist/collection/components/nv-col/nv-col.js +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +24 -0
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.js +89 -6
- package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
- package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
- package/dist/collection/components/nv-dialog/nv-dialog.js +13 -8
- package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
- package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
- package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +56 -40
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +7 -7
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js +335 -0
- package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js.map +1 -0
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +845 -0
- package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -0
- package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +165 -0
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js +284 -0
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js.map +1 -0
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +988 -0
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -0
- package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +192 -0
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +11 -22
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +14 -16
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.css +1 -0
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +12 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.css +22 -24
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +1 -4
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +19 -48
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +17 -21
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +9 -6
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +9 -10
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -11
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +5 -5
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +30 -15
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +8 -8
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +15 -16
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +6 -6
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +5 -5
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +11 -11
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/{nv-fieldtime.css → styles/nv-fieldtime.css} +20 -32
- package/dist/collection/components/nv-icon/nv-icon.js +8 -8
- package/dist/collection/components/nv-icon/nv-icon.js.map +1 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +31 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +1 -1
- package/dist/collection/components/nv-loader/nv-loader.js +1 -1
- package/dist/collection/components/nv-menu/nv-menu.css +3 -0
- package/dist/collection/components/nv-menu/nv-menu.docs.js +6 -6
- package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
- package/dist/collection/components/nv-menu/nv-menu.js +11 -12
- package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.css +3 -0
- package/dist/collection/components/nv-menuitem/nv-menuitem.js +27 -9
- package/dist/collection/components/nv-menuitem/nv-menuitem.js.map +1 -1
- package/dist/collection/components/nv-popover/nv-popover.css +5 -5
- package/dist/collection/components/nv-popover/nv-popover.docs.js +3 -3
- package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
- package/dist/collection/components/nv-popover/nv-popover.js +38 -37
- package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
- package/dist/collection/components/nv-row/nv-row.js +1 -1
- package/dist/collection/components/nv-stack/nv-stack.js +1 -1
- package/dist/collection/components/nv-table/nv-table.js +2 -2
- package/dist/collection/components/nv-toggle/nv-toggle.js +9 -9
- package/dist/collection/components/nv-toggle/nv-toggle.js.map +1 -1
- package/dist/collection/components/nv-tooltip/nv-tooltip.css +1 -1
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +4 -4
- package/dist/collection/components/nv-tooltip/nv-tooltip.js.map +1 -1
- package/dist/collection/utils/constants.js +94 -0
- package/dist/collection/utils/constants.js.map +1 -1
- package/dist/collection/utils/input.utils.js +20 -0
- package/dist/collection/utils/input.utils.js.map +1 -0
- package/dist/collection/utils/test/input.utils.test.js +42 -0
- package/dist/collection/utils/test/input.utils.test.js.map +1 -0
- package/dist/components/index.js +2 -2
- package/dist/components/nv-alert.js +5 -5
- package/dist/components/nv-alert.js.map +1 -1
- package/dist/components/nv-avatar.js +11 -11
- package/dist/components/nv-avatar.js.map +1 -1
- package/dist/components/nv-badge.js +1 -1
- package/dist/components/nv-base.js +2 -2
- package/dist/components/nv-breadcrumb.js +4 -4
- package/dist/components/nv-breadcrumbs.js +2 -2
- package/dist/components/nv-button.js +1 -1
- package/dist/components/nv-calendar.js +1 -1039
- package/dist/components/nv-calendar.js.map +1 -1
- package/dist/components/nv-col.js +2 -2
- package/dist/components/nv-datagrid.js +272 -7
- package/dist/components/nv-datagrid.js.map +1 -1
- package/dist/components/nv-datagridcolumn.js +2 -2
- package/dist/components/nv-dialog.js +20 -15
- package/dist/components/nv-dialog.js.map +1 -1
- 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.d.ts +11 -0
- package/dist/components/nv-fielddate.js +359 -0
- package/dist/components/nv-fielddate.js.map +1 -0
- package/dist/components/nv-fielddaterange.d.ts +11 -0
- package/dist/components/nv-fielddaterange.js +440 -0
- package/dist/components/nv-fielddaterange.js.map +1 -0
- package/dist/components/nv-fielddropdown.js +18 -29
- 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 +30 -40
- package/dist/components/nv-fieldmultiselect.js.map +1 -1
- package/dist/components/nv-fieldnumber.js +25 -10
- package/dist/components/nv-fieldnumber.js.map +1 -1
- package/dist/components/nv-fieldpassword.js +8 -16
- package/dist/components/nv-fieldpassword.js.map +1 -1
- package/dist/components/nv-fieldradio.js +6 -6
- package/dist/components/nv-fieldradio.js.map +1 -1
- package/dist/components/nv-fieldselect.js +24 -12
- package/dist/components/nv-fieldselect.js.map +1 -1
- package/dist/components/nv-fieldtext.js +9 -9
- package/dist/components/nv-fieldtext.js.map +1 -1
- package/dist/components/nv-fieldtextarea.js +6 -6
- package/dist/components/nv-fieldtextarea.js.map +1 -1
- package/dist/components/nv-fieldtime.js +16 -16
- 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 +12 -12
- package/dist/components/nv-menu.js.map +1 -1
- package/dist/components/nv-menuitem.js +1 -1
- package/dist/components/nv-popover.js +1 -1
- package/dist/components/nv-row.js +2 -2
- package/dist/components/nv-stack.js +2 -2
- package/dist/components/nv-table.js +3 -3
- package/dist/components/nv-tablecolumn.js +1 -1
- package/dist/components/nv-toggle.js +10 -10
- package/dist/components/nv-toggle.js.map +1 -1
- package/dist/components/nv-tooltip.js +1 -1
- package/dist/components/{p-d17558a8.js → p-057ae4f2.js} +41 -1201
- package/dist/components/p-057ae4f2.js.map +1 -0
- package/dist/components/{p-ba145f46.js → p-1a4f9c97.js} +5 -5
- package/dist/components/{p-ba145f46.js.map → p-1a4f9c97.js.map} +1 -1
- package/dist/components/{p-77d0fedc.js → p-1c45c0f2.js} +1283 -1208
- package/dist/components/p-1c45c0f2.js.map +1 -0
- package/dist/components/{p-11cc38e0.js → p-1e095bba.js} +21 -6
- package/dist/components/p-1e095bba.js.map +1 -0
- package/dist/components/{p-4bb5eb79.js → p-1fad2529.js} +16 -5
- package/dist/components/p-1fad2529.js.map +1 -0
- package/dist/components/{p-f201db34.js → p-3a3ba5b1.js} +3 -3
- package/dist/components/{p-f201db34.js.map → p-3a3ba5b1.js.map} +1 -1
- package/dist/components/p-3aa6f6dc.js +1104 -0
- package/dist/components/p-3aa6f6dc.js.map +1 -0
- package/dist/components/{p-69543282.js → p-4c6ba63c.js} +8 -7
- package/dist/components/p-4c6ba63c.js.map +1 -0
- package/dist/components/{p-a633892a.js → p-4c6d8df7.js} +3 -3
- package/dist/components/{p-a633892a.js.map → p-4c6d8df7.js.map} +1 -1
- package/dist/components/p-55202370.js +172 -0
- package/dist/components/p-55202370.js.map +1 -0
- package/dist/components/{p-1657eba4.js → p-56716b97.js} +7 -7
- package/dist/components/{p-1657eba4.js.map → p-56716b97.js.map} +1 -1
- package/dist/components/{p-33f9bdb1.js → p-7f142767.js} +7 -7
- package/dist/components/{p-33f9bdb1.js.map → p-7f142767.js.map} +1 -1
- package/dist/components/{p-b316c35d.js → p-8348db09.js} +99 -3
- package/dist/components/p-8348db09.js.map +1 -0
- package/dist/components/p-89fb308b.js +3761 -0
- package/dist/components/p-89fb308b.js.map +1 -0
- package/dist/components/{p-4b184820.js → p-9476354d.js} +4 -4
- package/dist/components/{p-4b184820.js.map → p-9476354d.js.map} +1 -1
- package/dist/components/{p-fad78896.js → p-a8b5969f.js} +8 -8
- package/dist/components/p-a8b5969f.js.map +1 -0
- package/dist/components/{p-f77c3072.js → p-ebf24fd0.js} +11 -11
- package/dist/components/p-ebf24fd0.js.map +1 -0
- package/dist/docs.json +1822 -151
- package/dist/esm/_commonjsHelpers-1789f0cf.js +9 -0
- package/dist/esm/_commonjsHelpers-1789f0cf.js.map +1 -0
- package/dist/esm/{constants-75e6d7f0.js → constants-98e2dcc2.js} +99 -3
- package/dist/esm/constants-98e2dcc2.js.map +1 -0
- package/dist/esm/{index-fac2d5d2.js → index-1fb7a9a6.js} +1364 -1182
- package/dist/esm/index-1fb7a9a6.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/inputmask-edcad3c1.js +3761 -0
- package/dist/esm/inputmask-edcad3c1.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/native.js +4 -4
- package/dist/esm/native.js.map +1 -1
- package/dist/esm/nv-alert.entry.js +3 -3
- package/dist/esm/nv-alert.entry.js.map +1 -1
- package/dist/esm/nv-avatar.entry.js +3 -3
- package/dist/esm/nv-avatar.entry.js.map +1 -1
- package/dist/esm/nv-badge_2.entry.js +16 -5
- package/dist/esm/nv-badge_2.entry.js.map +1 -1
- package/dist/esm/nv-base.entry.js +2 -2
- package/dist/esm/nv-breadcrumb.entry.js +2 -2
- package/dist/esm/nv-breadcrumbs.entry.js +2 -2
- package/dist/esm/nv-button.entry.js +3 -3
- package/dist/esm/nv-calendar.entry.js +73 -18
- package/dist/esm/nv-calendar.entry.js.map +1 -1
- package/dist/esm/nv-col.entry.js +2 -2
- package/dist/esm/nv-datagrid.entry.js +267 -5
- package/dist/esm/nv-datagrid.entry.js.map +1 -1
- package/dist/esm/nv-datagridcolumn.entry.js +2 -2
- package/dist/esm/nv-dialog.entry.js +15 -10
- package/dist/esm/nv-dialog.entry.js.map +1 -1
- package/dist/esm/nv-dialogfooter_2.entry.js +4 -4
- 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 +277 -0
- package/dist/esm/nv-fielddate.entry.js.map +1 -0
- package/dist/esm/nv-fielddaterange.entry.js +354 -0
- package/dist/esm/nv-fielddaterange.entry.js.map +1 -0
- package/dist/esm/nv-fielddropdown.entry.js +13 -24
- package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdownitem.entry.js +2 -2
- package/dist/esm/nv-fieldmultiselect.entry.js +22 -30
- package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldnumber.entry.js +9 -6
- package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
- package/dist/esm/nv-fieldpassword.entry.js +5 -13
- 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 +7 -7
- package/dist/esm/nv-fieldselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldtext.entry.js +5 -5
- package/dist/esm/nv-fieldtext.entry.js.map +1 -1
- package/dist/esm/nv-fieldtextarea.entry.js +4 -4
- package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
- package/dist/esm/nv-fieldtime.entry.js +12 -12
- package/dist/esm/nv-fieldtime.entry.js.map +1 -1
- package/dist/esm/nv-icon.entry.js +4 -4
- package/dist/esm/nv-icon.entry.js.map +1 -1
- package/dist/esm/{nv-iconbutton.entry.js → nv-iconbutton_2.entry.js} +44 -4
- package/dist/esm/nv-iconbutton_2.entry.js.map +1 -0
- package/dist/esm/nv-menu.entry.js +5 -5
- package/dist/esm/nv-menu.entry.js.map +1 -1
- package/dist/esm/nv-menuitem.entry.js +5 -5
- package/dist/esm/nv-menuitem.entry.js.map +1 -1
- package/dist/esm/nv-popover.entry.js +31 -18
- package/dist/esm/nv-popover.entry.js.map +1 -1
- package/dist/esm/nv-row.entry.js +2 -2
- package/dist/esm/nv-stack.entry.js +2 -2
- package/dist/esm/nv-table.entry.js +3 -3
- package/dist/esm/nv-tablecolumn.entry.js +1 -1
- package/dist/esm/nv-toggle.entry.js +3 -3
- package/dist/esm/nv-toggle.entry.js.map +1 -1
- package/dist/esm/nv-tooltip.entry.js +3 -3
- package/dist/esm/nv-tooltip.entry.js.map +1 -1
- package/dist/native/index.esm.js +1 -1
- package/dist/native/native.esm.js +1 -1
- package/dist/native/native.esm.js.map +1 -1
- package/dist/native/p-0462f723.js +2 -0
- package/dist/native/p-0462f723.js.map +1 -0
- package/dist/native/{p-8664ab16.entry.js → p-048486e0.entry.js} +3 -3
- package/dist/native/p-048486e0.entry.js.map +1 -0
- package/dist/native/{p-fca807b4.entry.js → p-04c6048a.entry.js} +3 -3
- package/dist/native/{p-fca807b4.entry.js.map → p-04c6048a.entry.js.map} +1 -1
- package/dist/native/p-1a46cb52.entry.js +2 -0
- package/dist/native/p-2281d5ef.entry.js +2 -0
- package/dist/native/p-2281d5ef.entry.js.map +1 -0
- package/dist/native/p-22a45102.entry.js +2 -0
- package/dist/native/p-22a45102.entry.js.map +1 -0
- package/dist/native/p-2ed540e3.entry.js +2 -0
- package/dist/native/p-2ed540e3.entry.js.map +1 -0
- package/dist/native/p-31184fdd.entry.js +2 -0
- package/dist/native/p-31184fdd.entry.js.map +1 -0
- package/dist/native/p-314d2b34.entry.js +2 -0
- package/dist/native/p-314d2b34.entry.js.map +1 -0
- package/dist/native/p-332c5d6c.entry.js +2 -0
- package/dist/native/p-332c5d6c.entry.js.map +1 -0
- package/dist/native/p-3af5bcc1.entry.js +2 -0
- package/dist/native/p-3af5bcc1.entry.js.map +1 -0
- package/dist/native/{p-e36e956b.entry.js → p-442f04f9.entry.js} +2 -2
- package/dist/native/{p-af60740c.entry.js → p-45577c7f.entry.js} +2 -2
- package/dist/native/p-45577c7f.entry.js.map +1 -0
- package/dist/native/p-464ef88f.entry.js +2 -0
- package/dist/native/p-464ef88f.entry.js.map +1 -0
- package/dist/native/p-46aa1136.entry.js +2 -0
- package/dist/native/{p-27ad7af2.entry.js → p-4a440970.entry.js} +2 -2
- package/dist/native/p-4a440970.entry.js.map +1 -0
- package/dist/native/p-4dc1d036.entry.js +2 -0
- package/dist/native/{p-e9e77494.entry.js → p-514101d6.entry.js} +2 -2
- package/dist/native/p-514101d6.entry.js.map +1 -0
- package/dist/native/p-53aa81dd.js +10 -0
- package/dist/native/p-53aa81dd.js.map +1 -0
- package/dist/native/{p-1a3d2a74.entry.js → p-56e98443.entry.js} +2 -2
- package/dist/native/p-56e98443.entry.js.map +1 -0
- package/dist/native/{p-b316c35d.js → p-59768ee5.js} +2 -2
- package/dist/native/p-59768ee5.js.map +1 -0
- package/dist/native/{p-edee1c1f.entry.js → p-62df7dd4.entry.js} +2 -2
- package/dist/native/p-665db087.entry.js +2 -0
- package/dist/native/p-68b5a92c.entry.js +2 -0
- package/dist/native/{p-b58c661b.entry.js → p-6a629671.entry.js} +2 -2
- package/dist/native/p-7fade532.entry.js +2 -0
- package/dist/native/p-7fade532.entry.js.map +1 -0
- package/dist/native/p-913907fb.entry.js +2 -0
- package/dist/native/p-913907fb.entry.js.map +1 -0
- package/dist/native/p-942f8e92.entry.js +2 -0
- package/dist/native/p-942f8e92.entry.js.map +1 -0
- package/dist/native/p-9f5e4dfc.entry.js +2 -0
- package/dist/native/p-9f5e4dfc.entry.js.map +1 -0
- package/dist/native/p-ab002252.js +3 -0
- package/dist/native/p-ab002252.js.map +1 -0
- package/dist/native/{p-fde56f9c.entry.js → p-ab84ff42.entry.js} +2 -2
- package/dist/native/{p-fde56f9c.entry.js.map → p-ab84ff42.entry.js.map} +1 -1
- package/dist/native/{p-487b81bd.entry.js → p-b052f1cb.entry.js} +2 -2
- package/dist/native/{p-9795090f.entry.js → p-bdabd495.entry.js} +2 -2
- package/dist/native/p-bdabd495.entry.js.map +1 -0
- package/dist/native/p-be4fc827.entry.js +2 -0
- package/dist/native/p-be4fc827.entry.js.map +1 -0
- package/dist/native/{p-184cd119.entry.js → p-c10e5113.entry.js} +2 -2
- package/dist/native/{p-491f4605.entry.js → p-d5cbf5c8.entry.js} +2 -2
- package/dist/native/{p-491f4605.entry.js.map → p-d5cbf5c8.entry.js.map} +1 -1
- package/dist/native/{p-69fb1c9d.entry.js → p-db2902d6.entry.js} +2 -2
- package/dist/native/p-ecc28398.entry.js +2 -0
- package/dist/native/p-ecc28398.entry.js.map +1 -0
- package/dist/native/p-ed595c96.entry.js +2 -0
- package/dist/native/p-ed595c96.entry.js.map +1 -0
- package/dist/native/p-f5e0d5c5.entry.js +2 -0
- package/dist/native/p-f5e0d5c5.entry.js.map +1 -0
- package/dist/native/p-f89b7d06.entry.js +2 -0
- package/dist/types/components/nv-calendar/nv-calendar.d.ts +7 -0
- package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +21 -0
- package/dist/types/components/nv-dialog/nv-dialog.d.ts +1 -0
- package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +192 -0
- package/dist/types/components/nv-fielddate/nv-fielddate.docs.d.ts +4 -0
- package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +206 -0
- package/dist/types/components/nv-fielddaterange/nv-fielddaterange.docs.d.ts +4 -0
- package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +1 -3
- package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.d.ts +2 -0
- package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +1 -11
- package/dist/types/components/nv-fieldnumber/nv-fieldnumber.d.ts +1 -0
- package/dist/types/components/nv-fieldpassword/nv-fieldpassword.d.ts +0 -1
- package/dist/types/components/nv-iconbutton/nv-iconbutton.d.ts +3 -0
- package/dist/types/components/nv-menu/nv-menu.d.ts +2 -3
- package/dist/types/components/nv-menuitem/nv-menuitem.d.ts +20 -16
- package/dist/types/components/nv-popover/nv-popover.d.ts +7 -4
- package/dist/types/components.d.ts +2344 -974
- package/dist/types/utils/constants.d.ts +6 -0
- package/dist/types/utils/input.utils.d.ts +8 -0
- package/dist/types/utils/test/input.utils.test.d.ts +1 -0
- package/dist/vscode-data.json +4570 -0
- package/hydrate/index.d.ts +22 -5
- package/hydrate/index.js +6403 -1242
- package/hydrate/index.mjs +6403 -1242
- package/package.json +5 -1
- package/dist/cjs/constants-79d2cdfc.js.map +0 -1
- package/dist/cjs/index-5910ba06.js.map +0 -1
- package/dist/cjs/nv-iconbutton.cjs.entry.js.map +0 -1
- package/dist/cjs/nv-loader.cjs.entry.js +0 -35
- package/dist/cjs/nv-loader.cjs.entry.js.map +0 -1
- package/dist/components/p-11cc38e0.js.map +0 -1
- package/dist/components/p-4bb5eb79.js.map +0 -1
- package/dist/components/p-69543282.js.map +0 -1
- package/dist/components/p-77d0fedc.js.map +0 -1
- package/dist/components/p-96605453.js +0 -172
- package/dist/components/p-96605453.js.map +0 -1
- package/dist/components/p-b316c35d.js.map +0 -1
- package/dist/components/p-d17558a8.js.map +0 -1
- package/dist/components/p-f77c3072.js.map +0 -1
- package/dist/components/p-fad78896.js.map +0 -1
- package/dist/esm/constants-75e6d7f0.js.map +0 -1
- package/dist/esm/index-fac2d5d2.js.map +0 -1
- package/dist/esm/nv-iconbutton.entry.js.map +0 -1
- package/dist/esm/nv-loader.entry.js +0 -31
- package/dist/esm/nv-loader.entry.js.map +0 -1
- package/dist/native/p-0a2a9f8b.entry.js +0 -2
- package/dist/native/p-0a2a9f8b.entry.js.map +0 -1
- package/dist/native/p-12d08abc.entry.js +0 -2
- package/dist/native/p-12d08abc.entry.js.map +0 -1
- package/dist/native/p-15be3d96.entry.js +0 -2
- package/dist/native/p-15be3d96.entry.js.map +0 -1
- package/dist/native/p-1a3d2a74.entry.js.map +0 -1
- package/dist/native/p-27ad7af2.entry.js.map +0 -1
- package/dist/native/p-2b2a10f9.entry.js +0 -2
- package/dist/native/p-2b2a10f9.entry.js.map +0 -1
- package/dist/native/p-359f0f53.entry.js +0 -2
- package/dist/native/p-359f0f53.entry.js.map +0 -1
- package/dist/native/p-3b65037c.entry.js +0 -2
- package/dist/native/p-3be2c9a1.entry.js +0 -2
- package/dist/native/p-4283f375.entry.js +0 -2
- package/dist/native/p-5439afb8.js +0 -3
- package/dist/native/p-5439afb8.js.map +0 -1
- package/dist/native/p-554f7b44.entry.js +0 -2
- package/dist/native/p-554f7b44.entry.js.map +0 -1
- package/dist/native/p-729c9d45.entry.js +0 -2
- package/dist/native/p-729c9d45.entry.js.map +0 -1
- package/dist/native/p-78f08578.entry.js +0 -2
- package/dist/native/p-78f08578.entry.js.map +0 -1
- package/dist/native/p-8664ab16.entry.js.map +0 -1
- package/dist/native/p-87bd53df.entry.js +0 -2
- package/dist/native/p-87bd53df.entry.js.map +0 -1
- package/dist/native/p-8d6516a3.entry.js +0 -2
- package/dist/native/p-8d6516a3.entry.js.map +0 -1
- package/dist/native/p-951baf95.entry.js +0 -2
- package/dist/native/p-9795090f.entry.js.map +0 -1
- package/dist/native/p-af60740c.entry.js.map +0 -1
- package/dist/native/p-b316c35d.js.map +0 -1
- package/dist/native/p-b7bc918b.entry.js +0 -2
- package/dist/native/p-cda56476.entry.js +0 -2
- package/dist/native/p-cda56476.entry.js.map +0 -1
- package/dist/native/p-d1bf4d77.entry.js +0 -2
- package/dist/native/p-d7665a07.entry.js +0 -2
- package/dist/native/p-d7665a07.entry.js.map +0 -1
- package/dist/native/p-daeb7e22.entry.js +0 -2
- package/dist/native/p-daeb7e22.entry.js.map +0 -1
- package/dist/native/p-e9e77494.entry.js.map +0 -1
- package/dist/native/p-f1585fc2.entry.js +0 -2
- package/dist/native/p-f1585fc2.entry.js.map +0 -1
- package/dist/native/p-f3579407.entry.js +0 -2
- package/dist/native/p-f3579407.entry.js.map +0 -1
- /package/dist/native/{p-3be2c9a1.entry.js.map → p-1a46cb52.entry.js.map} +0 -0
- /package/dist/native/{p-e36e956b.entry.js.map → p-442f04f9.entry.js.map} +0 -0
- /package/dist/native/{p-d1bf4d77.entry.js.map → p-46aa1136.entry.js.map} +0 -0
- /package/dist/native/{p-4283f375.entry.js.map → p-4dc1d036.entry.js.map} +0 -0
- /package/dist/native/{p-edee1c1f.entry.js.map → p-62df7dd4.entry.js.map} +0 -0
- /package/dist/native/{p-951baf95.entry.js.map → p-665db087.entry.js.map} +0 -0
- /package/dist/native/{p-b7bc918b.entry.js.map → p-68b5a92c.entry.js.map} +0 -0
- /package/dist/native/{p-b58c661b.entry.js.map → p-6a629671.entry.js.map} +0 -0
- /package/dist/native/{p-487b81bd.entry.js.map → p-b052f1cb.entry.js.map} +0 -0
- /package/dist/native/{p-184cd119.entry.js.map → p-c10e5113.entry.js.map} +0 -0
- /package/dist/native/{p-69fb1c9d.entry.js.map → p-db2902d6.entry.js.map} +0 -0
- /package/dist/native/{p-3b65037c.entry.js.map → p-f89b7d06.entry.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["nvIconbuttonCss","NvIconbuttonStyle0","NvIconbutton","constructor","hostRef","this","size","emphasis","loading","disabled","active","type","shape","handleClick","event","preventDefault","_b","_a","internals","form","requestSubmit","_d","_c","reset","handleLoadingChange","handleDisabledChange","handleKeyDown","key","el","click","handleTouchStart","touches","length","componentWillLoad","render","h","Host","role","tabindex","undefined","class","clsx","onClick","name","nvLoaderCss","NvLoaderStyle0","NvLoader","color"],"sources":["src/components/nv-iconbutton/nv-iconbutton.scss?tag=nv-iconbutton","src/components/nv-iconbutton/nv-iconbutton.tsx","src/components/nv-loader/nv-loader.scss?tag=nv-loader","src/components/nv-loader/nv-loader.tsx"],"sourcesContent":["@use \"sass:map\";\n@import \"../../styles/focus-ring\";\n\n/* Variants */\n$button-sizes: (\"xs\", \"sm\", \"md\", \"lg\");\n$button-emphasis: (\"high\", \"medium\", \"low\", \"lower\");\n\n/* Define maps for size-related variables */\n$button-icon-button-padding: (\n \"xs\": var(--button-xs-icon-button-padding),\n \"sm\": var(--button-sm-icon-button-padding),\n \"md\": var(--button-md-icon-button-padding),\n \"lg\": var(--button-lg-icon-button-padding)\n);\n\n$button-gap: (\n \"xs\": var(--button-xs-gap),\n \"sm\": var(--button-sm-gap),\n \"md\": var(--button-md-gap),\n \"lg\": var(--button-lg-gap)\n);\n\n$button-border-radius: (\n \"xs\": var(--button-xs-border-radius),\n \"sm\": var(--button-sm-border-radius),\n \"md\": var(--button-md-border-radius),\n \"lg\": var(--button-lg-border-radius)\n);\n\n$button-line-height: (\n \"xs\": var(--button-xs-line-height),\n \"sm\": var(--button-sm-line-height),\n \"md\": var(--button-md-line-height),\n \"lg\": var(--button-lg-line-height)\n);\n\n$button-font-size: (\n \"xs\": var(--button-xs-font-size),\n \"sm\": var(--button-sm-font-size),\n \"md\": var(--button-md-font-size),\n \"lg\": var(--button-lg-font-size)\n);\n\n/* Define maps for emphasis-related variables */\n$components-button-background: (\n \"high\": var(--components-button-high-background),\n \"medium\": var(--components-button-medium-background),\n \"low\": var(--components-button-low-background),\n \"lower\": var(--components-button-lower-background)\n);\n\n$components-button-border: (\n \"high\": var(--components-button-high-border),\n \"medium\": var(--components-button-medium-border),\n \"low\": var(--components-button-low-border),\n \"lower\": var(--components-button-lower-border)\n);\n\n$components-button-text: (\n \"high\": var(--components-button-high-text),\n \"medium\": var(--components-button-medium-text),\n \"low\": var(--components-button-low-text),\n \"lower\": var(--components-button-lower-text)\n);\n\n$components-button-background-hover: (\n \"high\": var(--components-button-high-background-hover),\n \"medium\": var(--components-button-medium-background-hover),\n \"low\": var(--components-button-low-background-hover),\n \"lower\": var(--components-button-lower-background-hover)\n);\n\n$components-button-text-hover: (\n \"high\": var(--components-button-high-text-hover),\n \"medium\": var(--components-button-medium-text-hover),\n \"low\": var(--components-button-low-text-hover),\n \"lower\": var(--components-button-lower-text-hover)\n);\n\n$components-button-icon: (\n \"high\": var(--components-button-high-icon),\n \"medium\": var(--components-button-medium-icon),\n \"low\": var(--components-button-low-icon),\n \"lower\": var(--components-button-lower-icon)\n);\n\n@mixin root-styles() {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-style: normal;\n font-weight: 500;\n font-family: \"TT Norms Pro\", sans-serif;\n transition: background-color 150ms ease-out;\n height: fit-content;\n width: fit-content;\n}\n\n@mixin size-styles($size) {\n padding: map.get($button-icon-button-padding, $size);\n gap: map.get($button-gap, $size);\n border-radius: map.get($button-border-radius, $size);\n line-height: map.get($button-line-height, $size);\n font-size: map.get($button-font-size, $size);\n}\n\n@mixin emphasis-styles($emphasis) {\n background: map.get($components-button-background, $emphasis);\n border: 1px solid map.get($components-button-border, $emphasis);\n color: map.get($components-button-text, $emphasis);\n\n &:hover {\n background: map.get($components-button-background-hover, $emphasis);\n color: map.get($components-button-text-hover, $emphasis);\n }\n\n @include focus-ring();\n\n &:disabled {\n background: map.get($components-button-background, $emphasis);\n color: map.get($components-button-text, $emphasis);\n opacity: 0.5;\n cursor: not-allowed;\n box-shadow: none;\n }\n\n & nv-icon > svg {\n color: map.get($components-button-icon, $emphasis);\n }\n}\n\nnv-iconbutton {\n &.root {\n @include root-styles();\n }\n\n @each $size in $button-sizes {\n &.size-#{$size} {\n @include size-styles($size);\n }\n }\n\n @each $emphasis in $button-emphasis {\n &.emphasis-#{$emphasis} {\n @include emphasis-styles($emphasis);\n }\n }\n\n &.loading {\n [slot=\"leading-icon\"] {\n display: none;\n }\n }\n\n &.shape-rounded {\n border-radius: var(--radius-rounded-full);\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n AttachInternals,\n Element,\n Watch,\n Listen,\n} from '@stencil/core';\nimport clsx from 'clsx';\n\nimport {\n ButtonSize,\n ButtonEmphasis,\n ButtonType,\n IconButtonShape,\n} from '../../utils/constants';\nimport { IconName } from '../nv-icon/nv-icons';\n\n/**\n * @slot default - Content of the button.\n */\n@Component({\n tag: 'nv-iconbutton',\n shadow: false,\n formAssociated: true,\n styleUrl: 'nv-iconbutton.scss',\n scoped: false,\n})\nexport class NvIconbutton {\n @AttachInternals() internals: ElementInternals;\n @Element() el: HTMLNvIconbuttonElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Determines how large or small the button appears, allowing for\n * customization of the button's dimensions to fit different design\n * specifications and user needs.\n */\n @Prop({ reflect: true })\n readonly size: `${ButtonSize}` = 'md';\n\n /**\n * Adjusts the button’s emphasis to make it more or less visually prominent\n * to users. Use this to draw attention to important actions or reduce focus\n * on less critical ones.\n */\n @Prop({ reflect: true })\n readonly emphasis: `${ButtonEmphasis}` = 'high';\n\n /**\n * Set this to true to show a spinner on the button, letting users know that\n * their action is being processed. It helps improve user experience by\n * indicating ongoing activities. The icon is not displayed when the button\n * is loading. Also, the button is disabled. If you want to disable the\n * button, it is not possible. It is automatically disabled when loading.\n */\n @Prop({ reflect: true, mutable: true })\n loading: boolean = false;\n\n /**\n * Disables the button, preventing user interaction.\n */\n @Prop({ mutable: true, reflect: true })\n disabled: boolean = false;\n\n /**\n * Makes the button look active when it’s within a compatible component\n * like a button group.\n */\n @Prop({ reflect: true })\n readonly active: boolean = false;\n\n /**\n * Choose the icon you want to display. This also sets the aria-label for\n * improved accessibility, helping users who rely on screen readers.\n * The icon is not displayed when the button is loading.\n */\n @Prop({ reflect: true })\n readonly name: `${IconName}` | string;\n\n /**\n * Sets the button type to control its function in forms. Use 'submit' to send\n * form data, 'reset' to clear the form, or 'button' for a standard button\n * that doesn’t interact with form submission by default.\n */\n @Prop({ reflect: true })\n readonly type: `${ButtonType}` = 'button';\n\n /**\n * Sets the shape of the button. Choose between square and rounded.\n */\n @Prop({ reflect: true })\n readonly shape: `${IconButtonShape}` = 'square';\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Handles form-related actions when the button is clicked.\n * - Submits the form if the button type is 'submit'.\n * - Resets the form if the button type is 'reset'.\n * @param {Event} event - The click event.\n */\n private handleClick = (event: Event) => {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n if (this.type === 'submit') {\n this.internals?.form?.requestSubmit();\n }\n if (this.type === 'reset') {\n this.internals?.form?.reset();\n }\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('loading')\n handleLoadingChange(loading: boolean) {\n this.loading = loading;\n this.disabled = loading;\n }\n\n @Watch('disabled')\n handleDisabledChange(disabled: boolean) {\n if (this.loading) {\n this.disabled = this.loading;\n } else {\n this.disabled = disabled;\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region EVENTS\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.el.click();\n }\n }\n\n @Listen('touchstart', { passive: false })\n handleTouchStart(event: TouchEvent) {\n if (event.touches.length > 1) return;\n event.preventDefault();\n this.el.click();\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n if (this.loading) {\n this.disabled = this.loading;\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host\n role=\"button\"\n type={this.type}\n tabindex=\"0\"\n disabled={this.disabled ? true : undefined}\n class={clsx(\n 'root',\n `size-${this.size}`,\n `emphasis-${this.emphasis}`,\n this.loading && 'loading',\n `shape-${this.shape}`,\n )}\n onClick={this.handleClick}\n >\n {this.loading && <nv-loader size={this.size}></nv-loader>}\n\n {!this.loading && <nv-icon name={this.name} size={this.size} />}\n\n <slot></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n","@use \"sass:map\";\n\n/* Variants */\n$loader-sizes: (\"xs\", \"sm\", \"md\", \"lg\", \"xl\");\n$loader-color: (\"brand\", \"white\");\n\n/* Define maps for color-related variables */\n$components-loader-background: (\n \"brand\": var(--components-loader-brand-background),\n \"white\": var(--components-loader-white-background)\n);\n\n$components-loader-foreground: (\n \"brand\": var(--components-loader-brand-foreground),\n \"white\": var(--components-loader-white-foreground)\n);\n\n/* Define maps for size-related variables */\n$components-loader-size: (\n \"xs\": var(--loader-size-xs),\n \"sm\": var(--loader-size-sm),\n \"md\": var(--loader-size-md),\n \"lg\": var(--loader-size-lg),\n \"xl\": var(--loader-size-xl)\n);\n\n@mixin root-styles() {\n display: inline-block;\n position: relative;\n aspect-ratio: 1 / 1;\n border-radius: 9999px;\n color: inherit;\n}\n\n@mixin size-styles($size) {\n $loader-size: map.get($components-loader-size, $size);\n $border-size: calc($loader-size / 10);\n\n width: $loader-size;\n height: $loader-size;\n\n &::before,\n &::after {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n border-radius: inherit;\n width: 100%;\n height: 100%;\n }\n\n &::before {\n content: \" \";\n border: $border-size solid;\n opacity: 0.3;\n }\n\n &::after {\n content: \" \";\n border-top: $border-size solid transparent;\n border-left: $border-size solid transparent;\n border-right: $border-size solid transparent;\n border-bottom: $border-size solid;\n animation: rotation 1s linear infinite;\n }\n}\n\n@mixin color-styles($color) {\n &::before {\n border-color: map.get($components-loader-background, $color);\n opacity: 1;\n }\n\n &::after {\n border-bottom-color: map.get($components-loader-foreground, $color);\n }\n}\n\n@keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\nnv-loader {\n @include root-styles();\n\n @each $size in $loader-sizes {\n &.size-#{$size} {\n @include size-styles($size);\n }\n }\n\n @each $color in $loader-color {\n &.color-#{$color} {\n @include color-styles($color);\n }\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\nimport clsx from 'clsx';\n\nimport { SemanticSizes, LoaderColors } from '../../utils/constants';\n\n@Component({\n tag: 'nv-loader',\n styleUrl: 'nv-loader.scss',\n shadow: false,\n})\nexport class NvLoader {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Choose the size of the loader to best fit your application’s needs, whether\n * it’s a small spinner for subtle loading indicators or a large one for more\n * prominent displays.\n */\n @Prop({ reflect: true })\n readonly size: `${SemanticSizes}` = 'md';\n\n /**\n * Choose the color of the loader. Options are primary and white to keep the\n * design consistent and ensure the loader stands out or blends in\n * appropriately with your application’s interface.\n */\n @Prop({ reflect: true })\n readonly color: `${LoaderColors}`;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n /* <slot> empty to force rendering change */\n render() {\n return (\n <Host\n class={clsx(\n this.size && `size-${this.size}`,\n this.color && `color-${this.color}`,\n )}\n ></Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"6FAAA,MAAMA,EAAkB,qqJACxB,MAAAC,EAAeD,E,MC6BFE,EAAY,MAPzB,WAAAC,CAAAC,G,0KAoBWC,KAAAC,KAAwB,KAQxBD,KAAAE,SAAgC,OAUzCF,KAAAG,QAAmB,MAMnBH,KAAAI,SAAoB,MAOXJ,KAAAK,OAAkB,MAgBlBL,KAAAM,KAAwB,SAMxBN,KAAAO,MAA8B,SAY/BP,KAAAQ,YAAeC,I,YACrB,GAAIT,KAAKI,SAAU,CACjBK,EAAMC,iBACN,M,CAGF,GAAIV,KAAKM,OAAS,SAAU,EAC1BK,GAAAC,EAAAZ,KAAKa,aAAS,MAAAD,SAAA,SAAAA,EAAEE,QAAI,MAAAH,SAAA,SAAAA,EAAEI,e,CAExB,GAAIf,KAAKM,OAAS,QAAS,EACzBU,GAAAC,EAAAjB,KAAKa,aAAS,MAAAI,SAAA,SAAAA,EAAEH,QAAI,MAAAE,SAAA,SAAAA,EAAEE,O,GAS1B,mBAAAC,CAAoBhB,GAClBH,KAAKG,QAAUA,EACfH,KAAKI,SAAWD,C,CAIlB,oBAAAiB,CAAqBhB,GACnB,GAAIJ,KAAKG,QAAS,CAChBH,KAAKI,SAAWJ,KAAKG,O,KAChB,CACLH,KAAKI,SAAWA,C,EASpB,aAAAiB,CAAcZ,GACZ,GAAIA,EAAMa,MAAQ,SAAWb,EAAMa,MAAQ,IAAK,CAC9Cb,EAAMC,iBACNV,KAAKuB,GAAGC,O,EAKZ,gBAAAC,CAAiBhB,GACf,GAAIA,EAAMiB,QAAQC,OAAS,EAAG,OAC9BlB,EAAMC,iBACNV,KAAKuB,GAAGC,O,CAOV,iBAAAI,GACE,GAAI5B,KAAKG,QAAS,CAChBH,KAAKI,SAAWJ,KAAKG,O,EAQzB,MAAA0B,GACE,OACEC,EAACC,EAAI,CAAAT,IAAA,2CACHU,KAAK,SACL1B,KAAMN,KAAKM,KACX2B,SAAS,IACT7B,SAAUJ,KAAKI,SAAW,KAAO8B,UACjCC,MAAOC,EACL,OACA,QAAQpC,KAAKC,OACb,YAAYD,KAAKE,WACjBF,KAAKG,SAAW,UAChB,SAASH,KAAKO,SAEhB8B,QAASrC,KAAKQ,aAEbR,KAAKG,SAAW2B,EAAA,aAAAR,IAAA,2CAAWrB,KAAMD,KAAKC,QAErCD,KAAKG,SAAW2B,EAAA,WAAAR,IAAA,2CAASgB,KAAMtC,KAAKsC,KAAMrC,KAAMD,KAAKC,OAEvD6B,EAAA,QAAAR,IAAA,6C,6KClMR,MAAMiB,EAAc,wmHACpB,MAAAC,EAAeD,E,MCSFE,EAAQ,MALrB,WAAA3C,CAAAC,G,UAeWC,KAAAC,KAA2B,I,CAepC,MAAA4B,GACE,OACEC,EAACC,EAAI,CAAAT,IAAA,2CACHa,MAAOC,EACLpC,KAAKC,MAAQ,QAAQD,KAAKC,OAC1BD,KAAK0C,OAAS,SAAS1C,KAAK0C,U","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as t,h as a,a as s}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as t,h as a,a as s}from"./p-ab002252.js";import{c as n}from"./p-8a1a6e56.js";const e="nv-stack{display:flex;align-items:center;justify-content:flex-start;flex-direction:row}nv-stack nv-col{display:flex}nv-stack:not(nv-row){flex-wrap:nowrap}nv-stack>.nv-stack-item-flex{flex-shrink:1;flex-grow:1}nv-stack>.nv-stack-item-lead{margin-right:auto}nv-stack>.nv-stack-item-lead+*{margin-left:0}nv-stack>.nv-stack-item-center{margin-right:auto;margin-left:auto}nv-stack>.nv-stack-item-tail{margin-left:auto}nv-stack>.nv-stack-nowrap{white-space:nowrap}nv-stack.nv-stack-vertical{align-items:stretch;flex-direction:column}nv-stack.nv-stack-vertical>.nv-stack-item-lead{margin-right:0;margin-bottom:auto}nv-stack.nv-stack-vertical>.nv-stack-item-lead+*{margin-top:0}nv-stack.nv-stack-vertical>.nv-stack-item-tail{margin-left:0;margin-top:auto}nv-stack.nv-stack-vertical>.nv-stack-item-center{margin:auto 0}nv-stack.nv-stack-flex>*{flex-shrink:1;flex-grow:1}nv-stack.nv-stack-fill>*{height:100%}nv-stack.nv-stack-fill.nv-stack-vertical>*{height:auto;width:100%}";const c=e;const i=class{constructor(a){t(this,a);this.gutter=2}render(){return a(s,{key:"aef0e6f873f68880d20b5ae9f4f56ece40e8a0ee",class:n(this.fill&&"nv-stack-fill",this.flex&&"nv-stack-flex",this.full&&"w-full",this.gutter&&!this.vertical&&`gutter-x-${this.gutter}`,this.gutter&&this.vertical&&`gutter-y-${this.gutter}`,this.vertical&&"nv-stack-vertical")},a("slot",{key:"d003e23ec3c9b4a5c4496bc9f4c170af467b311e"}))}};i.style=c;export{i as nv_stack};
|
|
2
|
+
//# sourceMappingURL=p-442f04f9.entry.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,c as r,h as t,a,g as o}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as e,c as r,h as t,a,g as o}from"./p-ab002252.js";import{c as i}from"./p-8a1a6e56.js";import{v as d}from"./p-f5ff676c.js";const n='nv-fieldtextarea{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box}nv-fieldtextarea[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldtextarea[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive)}nv-fieldtextarea[success]:not([success=false]){--nv-field-border-default:var(--components-form-field-border-success);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-success)}nv-fieldtextarea[required]:not([required=false]) label::after{content:"*";color:var(--components-form-text-required);font-weight:700}nv-fieldtextarea label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:"TT Norms Pro", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fieldtextarea .textarea-wrapper{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch}nv-fieldtextarea .textarea-wrapper .textarea-container{display:flex;flex-grow:1;padding:calc(var(--form-field-padding-y) - 1px) var(--form-field-padding-x);justify-content:center;align-items:center;gap:var(--form-field-gap);align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default);background:var(--nv-field-background);transition:all 150ms ease-out}nv-fieldtextarea .textarea-wrapper .textarea-container:hover{border-color:var(--nv-field-border-hover)}nv-fieldtextarea .textarea-wrapper .textarea-container:focus-within{border-color:var(--nv-field-border-focus);box-shadow:0 0 0 var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldtextarea .textarea-wrapper .textarea-container:has(textarea:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldtextarea .textarea-wrapper .textarea-container:has(textarea:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldtextarea .textarea-wrapper .textarea-container textarea{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);text-overflow:ellipsis;font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height)}nv-fieldtextarea .textarea-wrapper .textarea-container textarea:focus{outline:none}nv-fieldtextarea .textarea-wrapper .textarea-container textarea::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:"TT Norms Pro", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}nv-fieldtextarea .textarea-wrapper .textarea-container nv-icon.validation{color:var(--nv-field-border-default)}nv-fieldtextarea .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:"TT Norms Pro", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fieldtextarea .error-description{align-self:stretch;color:var(--components-form-text-description-default);font-family:"TT Norms Pro", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}';const s=n;const l=class{constructor(t){e(this,t);this.valueChanged=r(this,"valueChanged",7);this.inputId=d();this.disabled=false;this.readonly=false;this.required=false;this.error=false;this.success=false;this.rows=3;this.resize="vertical";this.autosize=false;this.autofocus=false;this.handleTextarea=e=>{const r=e.target;this.value=r.value;this.valueChanged.emit(r.value)};this.handleTextareaContainerClick=()=>{this.textareaElement.focus()}}rowsChanged(){if(this.autosize){this.adjustTextareaHeight()}}autosizeChanged(){var e;if(this.autosize){this.adjustTextareaHeight()}else{(e=this.textareaElement)===null||e===void 0?void 0:e.style.removeProperty("height")}}handleValueChange(){if(this.autosize){this.adjustTextareaHeight()}}adjustTextareaHeight(){if(this.textareaElement&&this.autosize){requestAnimationFrame((()=>{requestAnimationFrame((()=>{this.textareaElement.style.height="auto";const e=window.getComputedStyle(this.textareaElement);const r=parseFloat(e.lineHeight);const t=parseFloat(e.paddingTop);const a=parseFloat(e.paddingBottom);const o=parseFloat(e.borderTopWidth);const i=parseFloat(e.borderBottomWidth);const d=r*this.rows+t+a+o+i;this.textareaElement.style.minHeight=`${d}px`;this.textareaElement.style.height=this.textareaElement.scrollHeight+"px"}))}))}}componentWillRender(){if(this.message){this.description=this.message}if(this.validation){this.errorDescription=this.validation;this.error=true}}componentDidLoad(){if(this.autosize){this.adjustTextareaHeight()}}render(){return t(a,{key:"967dc1eda269d0e3df1351d3e34b8be14f9cb639"},(this.label||this.el.querySelector('[slot="label"]'))&&t("label",{key:"4337acb56fc6712eb0a3e509b2a551043b43eadf",htmlFor:this.inputId},t("slot",{key:"c7229aad2d78f79fad1f103908976efefe282b01",name:"label"},this.label)),t("div",{key:"a33155dbb4d6b5d481503225136435690eebf819",class:"textarea-wrapper"},t("div",{key:"14dbd33038acef44773bcf925dcb1fa9531bb6e9",class:"textarea-container",onClick:this.handleTextareaContainerClick},t("textarea",{key:"eee274bac197d25f99114f95684996e1fa933b57",id:this.inputId,ref:e=>this.textareaElement=e,placeholder:this.placeholder,autofocus:this.autofocus,name:this.name,disabled:this.disabled,readOnly:this.readonly,required:this.required,maxlength:this.maxlength,minlength:this.minlength,autocomplete:"off",value:this.value,onInput:this.handleTextarea,rows:this.rows,class:i(this.resize==="none"&&"resize-none",this.resize==="vertical"&&"resize-y",this.resize==="horizontal"&&"resize-x",this.resize==="both"&&"resize")}))),(this.description||this.el.querySelector('[slot="description"]'))&&t("div",{key:"f3f214c3a3e3ee03b3ac44d7dcf6224f3d58585d",class:"description"},t("slot",{key:"803bf10aec909ab4c55098818df6bcd3e22a1957",name:"description"},this.description)),(this.errorDescription||this.el.querySelector('[slot="error-description"]'))&&t("div",{key:"aefd1d3ed4ed2535b06cd314ffe0b19506f7510d",hidden:!this.error,class:"error-description"},t("slot",{key:"e43344938bda4acb4523998e9d21f5b6d8300d1a",name:"error-description"},this.errorDescription)))}static get formAssociated(){return true}get el(){return o(this)}static get watchers(){return{rows:["rowsChanged"],autosize:["autosizeChanged"],value:["handleValueChange"]}}};l.style=s;export{l as nv_fieldtextarea};
|
|
2
|
+
//# sourceMappingURL=p-45577c7f.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["nvFieldtextareaCss","NvFieldtextareaStyle0","NvFieldtextarea","constructor","hostRef","this","inputId","uuidv4","disabled","readonly","required","error","success","rows","resize","autosize","autofocus","handleTextarea","event","textarea","target","value","valueChanged","emit","handleTextareaContainerClick","textareaElement","focus","rowsChanged","adjustTextareaHeight","autosizeChanged","_a","style","removeProperty","handleValueChange","requestAnimationFrame","height","computedStyle","window","getComputedStyle","lineHeight","parseFloat","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","minHeight","scrollHeight","componentWillRender","message","description","validation","errorDescription","componentDidLoad","render","h","Host","key","label","el","querySelector","htmlFor","name","class","onClick","id","ref","e","placeholder","readOnly","maxlength","minlength","autocomplete","onInput","clsx","hidden"],"sources":["src/components/nv-fieldtextarea/nv-fieldtextarea.scss?tag=nv-fieldtextarea","src/components/nv-fieldtextarea/nv-fieldtextarea.tsx"],"sourcesContent":["@import \"../../styles/form-field\";\n\n@mixin form-field-textarea-wrapper() {\n display: flex;\n flex-wrap: wrap;\n gap: var(--form-gap-x);\n align-items: stretch;\n align-self: stretch;\n}\n\n@mixin form-field-textarea-container() {\n display: flex;\n flex-grow: 1;\n padding: calc(var(--form-field-padding-y) - 1px) var(--form-field-padding-x);\n justify-content: center;\n align-items: center;\n gap: var(--form-field-gap);\n align-self: stretch;\n border-radius: var(--form-field-radius);\n border-width: 1px;\n border-style: solid;\n border-color: var(--nv-field-border-default);\n opacity: var(--components-form-opacity-default);\n background: var(--nv-field-background);\n transition: all 150ms ease-out;\n\n &:hover {\n border-color: var(--nv-field-border-hover);\n }\n\n &:focus-within {\n border-color: var(--nv-field-border-focus);\n box-shadow: 0 0 0 var(--focus-field-stroke) var(--nv-field-focus-box-shadow);\n }\n // Keep ReadOnly before Disabled\n &:has(textarea:read-only) {\n // opacity: var(--components-form-opacity-readonly, 0.5); broken token generation, is 50px instead of 0.5\n opacity: 0.5;\n background-color: var(--components-form-field-background-readonly);\n border-color: var(--nv-field-border-readonly);\n }\n\n &:has(textarea:disabled) {\n // opacity: var(--components-form-opacity-disabled, 0.5); broken token generation, is 50px instead of 0.5\n opacity: 0.5;\n background-color: var(--components-form-field-background-disabled);\n border-color: var(--nv-field-border-disabled);\n }\n}\n\n@mixin form-field-textarea() {\n display: flex;\n align-items: center;\n flex: 1 0 0;\n overflow: hidden;\n background-color: transparent;\n color: var(--components-form-field-content-text);\n text-overflow: ellipsis;\n font-size: var(--form-field-font-size);\n font-style: normal;\n font-weight: 500;\n line-height: var(--form-field-line-height);\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n overflow: hidden;\n color: var(--components-form-field-content-placeholder);\n text-overflow: ellipsis;\n font-family: \"TT Norms Pro\", sans-serif;\n font-size: var(--form-field-font-size);\n font-style: normal;\n font-weight: 400;\n line-height: var(--form-field-line-height);\n }\n}\n\nnv-fieldtextarea {\n @include form-field-variables();\n @include form-field-root();\n\n &[readonly]:not([readonly=\"false\"]) {\n @include form-field-readonly-variables();\n }\n\n &[error]:not([error=\"false\"]) {\n @include form-field-error-variables();\n }\n\n &[success]:not([success=\"false\"]) {\n @include form-field-success-variables();\n }\n\n &[required]:not([required=\"false\"]) label {\n @include form-field-label-required();\n }\n\n label {\n @include form-field-label();\n }\n\n .textarea-wrapper {\n @include form-field-textarea-wrapper();\n\n .textarea-container {\n @include form-field-textarea-container();\n\n textarea {\n @include form-field-textarea();\n }\n\n nv-icon.validation {\n @include form-field-icon();\n }\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n Watch,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport clsx from 'clsx';\n\n/**\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n */\n@Component({\n tag: 'nv-fieldtextarea',\n shadow: false,\n formAssociated: true,\n styleUrl: 'nv-fieldtextarea.scss',\n})\nexport class NvFieldtextarea {\n @Element() el: HTMLNvFieldtextareaElement;\n private textareaElement!: HTMLTextAreaElement;\n\n /****************************************************************************/\n //#region DEPRECATED\n\n /**\n * Message defines a 'hint ' message for the Text Field.\n * @deprecated Use `description` instead.\n */\n @Prop({ reflect: true })\n readonly message: string;\n\n /**\n * Add the message to the validation state.\n * @deprecated Use `errorDescription` and set the error prop instead.\n */\n @Prop({ reflect: true })\n readonly validation: string;\n\n //#endregion DEPRECATED\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Lets you define the text that explains what users should enter in the text\n * textarea field. It’s a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Add helpful hints or extra information under the text textarea field. This is\n * where you can clarify what users should enter or provide additional\n * instructions, making the form easier to fill out correctly.\n */\n @Prop({ reflect: true, mutable: true })\n description: string;\n\n /**\n * Display temporary text inside the textarea field to give users a hint about\n * what to type. It’s a great way to provide examples or suggestions directly\n * in the field before they start typing.\n */\n @Prop({ reflect: true })\n readonly placeholder: string;\n\n /**\n * Defines the name attribute of the textarea field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the textarea’s data in form submissions. It should be\n * unique within the form to avoid conflicts\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Specifies the value of the textarea field, which determines the text displayed\n * within the field. This prop is typically used in controlled components\n * where the textarea’s value is managed by the component’s state.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * The disabled prop lets you turn off the textarea field so that users can’t\n * type in it. When disabled, the field is grayed out and won’t respond to#\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Display the textarea field’s content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won’t be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * Marks the textarea field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Alters the textarea field’s appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true, mutable: true })\n error: boolean = false;\n\n /**\n * Show a helpful message under the textarea field when there’s a problem. It\n * explains what’s wrong and how users can fix it, making the error easier to\n * understand and resolve.\n * @validator message\n */\n @Prop({ reflect: true, mutable: true })\n errorDescription: string;\n\n /**\n * Changes the textarea field’s appearance to indicate successful textarea or\n * validation.\n */\n @Prop({ reflect: true })\n readonly success: boolean = false;\n\n /**\n * Limits how many characters users can type into the textarea field. It’s\n * helpful for making sure users don’t enter too much information, keeping\n * their textarea within the allowed limit.\n */\n @Prop({ reflect: true })\n readonly maxlength: number;\n\n /**\n * Ensures that users type at least a certain number of characters into the\n * textarea field. It’s a way to make sure users provide enough information\n * before moving on.\n */\n @Prop({ reflect: true })\n readonly minlength: number;\n\n /**\n * The number of visible text lines for the control. The default is 3. This\n * can be useful when you want to limit the size of the textarea field or when\n * you want to make the textarea field smaller to fit a specific layout. The\n * textarea field will expand vertically to fit the text as the user types.\n */\n @Prop({ reflect: true })\n readonly rows: number = 3;\n\n /**\n * Controls the resize property of a textarea. It can be set to none, both,\n * horizontal, or vertical. The default is vertical.\n */\n @Prop({ reflect: true })\n readonly resize: 'none' | 'both' | 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * Enable this to make the textarea automatically resize as the user types,\n * adjusting the height to fit the content. For the best experience, avoid\n * vertical resizing, as it’s controlled by this feature. Horizontal resizing\n * can still be allowed if desired.\n */\n @Prop({ reflect: true })\n readonly autosize: boolean = false;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on a <textarea>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when the textarea value changes.\n * @bind value\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n /**\n * If autosize is true, we need to make sure to update the min-height when\n * the rows change.\n */\n @Watch('rows')\n rowsChanged() {\n if (this.autosize) {\n this.adjustTextareaHeight();\n }\n }\n\n /**\n * If autosize is true, we need to make sure to update the height and\n * min-height, if false, we need to remove the height property.\n */\n @Watch('autosize')\n autosizeChanged() {\n if (this.autosize) {\n this.adjustTextareaHeight();\n } else {\n this.textareaElement?.style.removeProperty('height');\n }\n }\n\n /**\n * Make sure to adjust the height of the textarea when the value changes\n * programmatically or by typing when autosize is on.\n */\n @Watch('value')\n handleValueChange() {\n if (this.autosize) {\n this.adjustTextareaHeight();\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private handleTextarea = (event: Event) => {\n const textarea = event.target as HTMLTextAreaElement;\n this.value = textarea.value;\n this.valueChanged.emit(textarea.value);\n };\n\n private handleTextareaContainerClick = () => {\n this.textareaElement.focus();\n };\n\n private adjustTextareaHeight() {\n if (this.textareaElement && this.autosize) {\n /**\n * The first requestAnimationFrame ensures that the DOM has applied any\n * pending changes (e.g., value updates or attribute changes) before\n * proceeding to the next frame.\n */\n requestAnimationFrame(() => {\n /**\n * The second requestAnimationFrame ensures that the browser has fully\n * recalculated layout and styles based on the updated DOM, such as\n * recalculating scrollHeight for the textarea after the new value is\n * rendered.\n */\n requestAnimationFrame(() => {\n this.textareaElement.style.height = 'auto';\n\n const computedStyle = window.getComputedStyle(this.textareaElement);\n const lineHeight = parseFloat(computedStyle.lineHeight);\n const paddingTop = parseFloat(computedStyle.paddingTop);\n const paddingBottom = parseFloat(computedStyle.paddingBottom);\n const borderTopWidth = parseFloat(computedStyle.borderTopWidth);\n const borderBottomWidth = parseFloat(computedStyle.borderBottomWidth);\n\n // Calculate min-height based on rows\n const minHeight =\n lineHeight * this.rows +\n paddingTop +\n paddingBottom +\n borderTopWidth +\n borderBottomWidth;\n\n this.textareaElement.style.minHeight = `${minHeight}px`;\n this.textareaElement.style.height =\n this.textareaElement.scrollHeight + 'px';\n });\n });\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillRender() {\n if (this.message) {\n this.description = this.message;\n }\n\n if (this.validation) {\n this.errorDescription = this.validation;\n this.error = true;\n }\n }\n\n componentDidLoad() {\n if (this.autosize) {\n this.adjustTextareaHeight();\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <div class=\"textarea-wrapper\">\n <div\n class=\"textarea-container\"\n onClick={this.handleTextareaContainerClick}\n >\n <textarea\n id={this.inputId}\n ref={e => (this.textareaElement = e)}\n placeholder={this.placeholder}\n autofocus={this.autofocus}\n name={this.name}\n disabled={this.disabled}\n readOnly={this.readonly}\n required={this.required}\n maxlength={this.maxlength}\n minlength={this.minlength}\n autocomplete=\"off\"\n value={this.value}\n onInput={this.handleTextarea}\n rows={this.rows}\n class={clsx(\n this.resize === 'none' && 'resize-none',\n this.resize === 'vertical' && 'resize-y',\n this.resize === 'horizontal' && 'resize-x',\n this.resize === 'both' && 'resize',\n )}\n />\n </div>\n </div>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,c as t,h as i,a as s,g as n}from"./p-ab002252.js";import{a as o}from"./p-a5c8eee9.js";import{T as r}from"./p-59768ee5.js";import{v as l}from"./p-f5ff676c.js";const d='nv-fieldtime{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box}nv-fieldtime[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldtime[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive)}nv-fieldtime[success]:not([success=false]){--nv-field-border-default:var(--components-form-field-border-success);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-success)}nv-fieldtime[required]:not([required=false]) label::after{content:"*";color:var(--components-form-text-required);font-weight:700}nv-fieldtime label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:"TT Norms Pro", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fieldtime nv-popover{width:100%;display:block}nv-fieldtime nv-popover [data-scope=popover]{padding:var(--list-dropdown-padding);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border);width:100%}nv-fieldtime .input-wrapper{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fieldtime .input-container{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out;display:flex;justify-content:flex-start;align-items:center;position:relative;width:100%;min-height:40px;gap:0;padding-left:var(--form-field-padding-x)}nv-fieldtime .input-container:hover{border-color:var(--nv-field-border-hover)}nv-fieldtime .input-container:focus-within,nv-fieldtime .input-container:focus-within:hover,nv-fieldtime .input-container:focus,nv-fieldtime .input-container:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldtime .input-container:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldtime .input-container:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldtime .input-container input.time-input{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height);width:100%;min-width:24px;flex:0 0 24px;text-align:center;padding:0;margin:0}nv-fieldtime .input-container input.time-input:focus{outline:none}nv-fieldtime .input-container input.time-input::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:"TT Norms Pro", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}nv-fieldtime .input-container input.time-input::-webkit-inner-spin-button,nv-fieldtime .input-container input.time-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}nv-fieldtime .input-container span{width:100%;text-align:center;min-width:24px;flex:0 0 24px;padding:0 4px;color:var(--components-form-field-content-text)}nv-fieldtime .input-container>nv-iconbutton{border:0px;border-radius:0px;margin-left:auto}nv-fieldtime .input-container>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fieldtime .input-container nv-icon.validation{color:var(--nv-field-border-default);position:absolute;right:50px;top:50%;transform:translateY(-50%)}nv-fieldtime .input-container:focus,nv-fieldtime .input-container:focus-within{border-color:var(--color-focus-brand);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--color-focus-brand)}nv-fieldtime .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:"TT Norms Pro", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fieldtime .error-description{align-self:stretch;color:var(--components-form-text-description-default);font-family:"TT Norms Pro", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}nv-fieldtime hr{border:none;border-top:1px solid var(--dropdown-divider-color, #ccc);margin:0.5rem 0}nv-fieldtime .time-dropdown{width:100%}nv-fieldtime .time-dropdown .time-columns{display:flex;justify-content:flex-start;align-items:center}nv-fieldtime .time-dropdown .time-columns .time-column{flex:1;text-align:center;max-height:200px;overflow-y:auto;scroll-behavior:smooth}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar{width:4px}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar-thumb{border-radius:4px}nv-fieldtime .time-dropdown .time-columns .time-column:last-child{border-right:none}nv-fieldtime .time-dropdown .time-columns .time-column .time-option{padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x);text-align:center;cursor:pointer;transition:background-color 0.2s;height:40px;border-radius:var(--list-dropdown-item-radius);display:flex;justify-content:center;align-items:center}nv-fieldtime .time-dropdown .time-columns .time-column .time-option:hover{background-color:var(--components-list-dropdown-item-background-hover);color:var(--components-list-dropdown-item-label-hover)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option:focus,nv-fieldtime .time-dropdown .time-columns .time-column .time-option:focus-within{background-color:var(--components-list-dropdown-item-background-hover);color:var(--components-list-dropdown-item-label-hover)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option.selected{background-color:var(--components-list-dropdown-item-background-active);color:var(--components-list-dropdown-item-label-active);border-width:1px;border-style:solid;border-color:var(--components-list-dropdown-item-border-active)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option.highlighted{background-color:var(--components-list-dropdown-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}';const a=d;const h=class{constructor(i){e(this,i);this.valueChanged=t(this,"valueChanged",7);this.inputElements={};this.inputZeroAdded={};this.typeFocused=r.Hours;this.hours="00";this.minutes="00";this.seconds="00";this.inputId=l();this.readonly=false;this.disabled=false;this.required=false;this.success=false;this.error=false;this.format="HH:mm:ss";this.open=false;this.step=6e4;this.autofocus=false}handleOpenChanged(e){this.open=e.detail}handleKeyDown(e){var t,i,s,n;if(!this.open){if(e.key==="ArrowDown"){this.open=true;e.preventDefault();return}return}if(!this.popoverElement){console.warn("nv-fieldtime -> Popover element is not defined");return}const o=`.time-column.time-column-${this.typeFocused} div`;const l=Array.from(this.el.querySelectorAll(o));if(l.length===0){console.warn("nv-fieldtime -> No dropdown items found to navigate");return}let d=l.findIndex((e=>e.classList.contains("highlighted")));if(e.key==="ArrowDown"){e.preventDefault();d=(d+1)%l.length;this.updateHighlightedItem(l,d)}else if(e.key==="ArrowUp"){e.preventDefault();d=(d-1+l.length)%l.length;this.updateHighlightedItem(l,d)}else if(e.key==="Enter"&&d>=0){e.preventDefault();l[d].click();if(this.typeFocused===r.Hours){(t=this.inputElements[r.Minutes])===null||t===void 0?void 0:t.focus();(i=this.inputElements[r.Minutes])===null||i===void 0?void 0:i.select()}else if(this.typeFocused===r.Minutes||this.typeFocused===r.Seconds){(s=this.inputElements[r.Seconds])===null||s===void 0?void 0:s.focus();(n=this.inputElements[r.Seconds])===null||n===void 0?void 0:n.select()}}else if(e.key==="Escape"){e.preventDefault();if(this.inputElements[r.Hours]){this.inputElements[r.Hours].blur()}}}handleValueChange(e){this.valueChanged.emit(e)}handleInputChange(e,t){const i=e.target;const s=i.value.replace(/[^0-9]/g,"");switch(t){case r.Hours:this.handleHoursChange(s,t);break;case r.Minutes:this.handleMinutesChange(s,t);break;case r.Seconds:this.handleSecondsChange(s,t);break}const n=this.reconstructTime();this.value=n}handleHoursChange(e,t){var i,s,n,o;const l=this.format.startsWith("HH");const d=l?24:12;let a=false;const h=this.parseHour(this.max,this.format)||(this.format.startsWith("hh")?"12":"24");const f=this.parseHour(this.min,this.format)||"00";if(e.length===1){this.inputZeroAdded[t]=true;const i=e.padStart(2,"0");if(h&&parseInt(i,10)>parseInt(h,10)){if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";a=true}}else{if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours=i}}}else if(this.inputZeroAdded[t]){this.inputZeroAdded[t]=false;const i=e.slice(1,3).padStart(2,"0");const s=parseInt(i,10)||0;if(s>=d){if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";a=true}}else{if(h&&parseInt(i,10)>parseInt(h,10)){if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";a=true}}else{if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours=i}}}}else if(e.length>2){if(e.startsWith("00")){this.inputZeroAdded[t]=true;const i=e.slice(1,3).padStart(2,"0");if(h&&parseInt(i,10)>parseInt(h,10)){if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";a=true}}else{if(f&&parseInt(i,10)<parseInt(f,10)){this.hours=f}else{this.hours=i}}}else{const t=e.slice(1,3).padStart(2,"0");const i=parseInt(t,10)||0;if(i>=d){if(f&&parseInt(t,10)<parseInt(f,10)){this.hours=f;a=true}else{this.hours="00";a=true}}else{if(h&&i>parseInt(h,10)){if(f&&parseInt(t,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";a=true}}else{if(f&&i<parseInt(f,10)){this.hours=f}else{this.hours=i.toString()}}}}}else{const t=e.padStart(2,"0");const i=parseInt(t,10)||0;if(i>=d){if(f&&parseInt(t,10)<parseInt(f,10)){this.hours=f}else{this.hours="00";a=true}}else{if(h&&i>parseInt(h,10)){this.hours="00";a=true}else{if(f&&i<parseInt(f,10)){this.hours=f}else{this.hours=i.toString()}}}}if(this.hours.length===2&&!this.inputZeroAdded[t]&&!a){(i=this.inputElements[r.Minutes])===null||i===void 0?void 0:i.focus();(s=this.inputElements[r.Minutes])===null||s===void 0?void 0:s.select()}else if(a){(n=this.inputElements[r.Hours])===null||n===void 0?void 0:n.focus();(o=this.inputElements[r.Hours])===null||o===void 0?void 0:o.select()}}handleMinutesChange(e,t){var i,s,n,o,l,d;const a=60;let h=false;const f=(i=this.parseMinute(this.min))!==null&&i!==void 0?i:0;const c=(s=this.parseMinute(this.max))!==null&&s!==void 0?s:59;if(e.length===1){this.inputZeroAdded[t]=true;const i=e.padStart(2,"0");if(c&&parseInt(i,10)>c){if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";h=true}}else{if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i}}}else if(this.inputZeroAdded[t]){this.inputZeroAdded[t]=false;const i=e.slice(1,3).padStart(2,"0");const s=parseInt(i,10)||0;if(s>=a){if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";h=true}}else{if(c&&s>c){if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";h=true}}else{if(f&&s<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i}}}}else if(e.length>2){if(e.startsWith("00")){this.inputZeroAdded[t]=true;const i=e.slice(1,3).padStart(2,"0");if(c&&parseInt(i,10)>c){if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";h=true}}else{if(f&&parseInt(i,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i}}}else{const t=e.slice(1,3).padStart(2,"0");const i=parseInt(t,10)||0;if(i>=a){if(f&&parseInt(t,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";h=true}}else{if(c&&i>c){if(f&&parseInt(t,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";h=true}}else{if(f&&i<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i.toString()}}}}}else{const t=e.padStart(2,"0");const i=parseInt(t,10)||0;if(i>=a){if(f&&parseInt(t,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";h=true}}else{if(c&&i>c){if(f&&parseInt(t,10)<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes="00";h=true}}else{if(f&&i<f){this.minutes=f.toString().padStart(2,"0")}else{this.minutes=i.toString()}}}}if(this.minutes.length===2&&!this.inputZeroAdded[t]&&!h){(n=this.inputElements[r.Seconds])===null||n===void 0?void 0:n.focus();(o=this.inputElements[r.Seconds])===null||o===void 0?void 0:o.select()}else if(h){(l=this.inputElements[r.Minutes])===null||l===void 0?void 0:l.focus();(d=this.inputElements[r.Minutes])===null||d===void 0?void 0:d.select()}}handleSecondsChange(e,t){var i,s,n,o;const l=60;let d=false;const a=(i=this.parseSecond(this.min))!==null&&i!==void 0?i:0;const h=(s=this.parseSecond(this.max))!==null&&s!==void 0?s:59;if(e.length===1){this.inputZeroAdded[t]=true;const i=e.padStart(2,"0");if(h&&parseInt(i,10)>h){if(a&&parseInt(i,10)<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds="00";d=true}}else{if(a&&parseInt(i,10)<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds=i}}}else if(this.inputZeroAdded[t]){this.inputZeroAdded[t]=false;const i=e.slice(1,3).padStart(2,"0");const s=parseInt(i,10)||0;if(s>=l){if(a&&parseInt(i,10)<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds="00";d=true}}else{if(h&&s>h){if(a&&parseInt(i,10)<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds="00";d=true}}else{if(a&&s<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds=i}}}}else if(e.length>2){const t=e.slice(1,3).padStart(2,"0");const i=parseInt(t,10)||0;if(i>=l){if(a&&parseInt(t,10)<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds="00";d=true}}else{if(h&&i>h){if(a&&parseInt(t,10)<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds="00";d=true}}else{if(a&&i<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds=i.toString()}}}}else{const t=e.padStart(2,"0");const i=parseInt(t,10)||0;if(i>=l){if(a&&parseInt(t,10)<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds="00";d=true}}else{if(h&&i>h){if(a&&parseInt(t,10)<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds="00";d=true}}else{if(a&&i<a){this.seconds=a.toString().padStart(2,"0")}else{this.seconds=i.toString()}}}}if(d){(n=this.inputElements[r.Seconds])===null||n===void 0?void 0:n.focus();(o=this.inputElements[r.Seconds])===null||o===void 0?void 0:o.select()}}parseTime(e){if(!e){return}const t=e.replace(/[^0-9]/g,"").padStart(6,"0");const i=t.slice(0,2);const s=t.slice(2,4);const n=t.slice(4,6);const o=this.parseHour(this.min,this.format)||i;const r=this.parseMinute(this.min)||s;const l=this.parseSecond(this.min)||n;this.hours=o.padStart(2,"0");this.minutes=r.toString().padStart(2,"0");this.seconds=l.toString().padStart(2,"0")}reconstructTime(){if(this.format==="HH"||this.format==="hh"){return this.hours}else if(this.format==="HH:mm"||this.format==="hh:mm"){return`${this.hours}:${this.minutes}`}else if(this.format==="HH:mm:ss"||this.format==="hh:mm:ss"){return`${this.hours}:${this.minutes}:${this.seconds}`}else{return`${this.hours}:${this.minutes}:${this.seconds}`}}handleFocus(e){var t,i,s,n;if(this.readonly||this.disabled){return}if(!this.open){this.open=true}if(((t=this.inputElements[e])===null||t===void 0?void 0:t.value.length)===0||((i=this.inputElements[e])===null||i===void 0?void 0:i.value)==="00"){(s=this.inputElements[e])===null||s===void 0?void 0:s.focus();(n=this.inputElements[e])===null||n===void 0?void 0:n.select()}this.typeFocused=e}HandleDropdownIconClick(){var e,t,i,s,n,o;if(this.disabled||this.readonly){return}if(this.open&&this.inputElements[r.Hours]){this.open=false}else if(this.open&&this.inputElements[r.Minutes]){this.open=false}else if(this.open&&this.inputElements[r.Seconds]){this.open=false}else if(!this.open&&this.inputElements[r.Hours]){(e=this.inputElements[r.Hours])===null||e===void 0?void 0:e.focus();(t=this.inputElements[r.Hours])===null||t===void 0?void 0:t.select()}else if(!this.open&&this.inputElements[r.Minutes]){(i=this.inputElements[r.Minutes])===null||i===void 0?void 0:i.focus();(s=this.inputElements[r.Minutes])===null||s===void 0?void 0:s.select()}else if(!this.open&&this.inputElements[r.Seconds]){(n=this.inputElements[r.Seconds])===null||n===void 0?void 0:n.focus();(o=this.inputElements[r.Seconds])===null||o===void 0?void 0:o.select()}else{console.warn("nv-fieldtime -> No input elements found to focus or to blur")}}updateHighlightedItem(e,t){e.forEach(((e,i)=>{if(i===t){e.classList.add("highlighted");e.setAttribute("tabindex","0");e.focus();e.scrollIntoView({block:"nearest"})}else{e.classList.remove("highlighted");e.setAttribute("tabindex","-1")}}))}handleTimeOptionClick(e,t){const i=parseInt(e.target.textContent||"0",10);if(t===r.Hours){this.hours=i.toString().padStart(2,"0")}else if(t===r.Minutes){this.minutes=i.toString().padStart(2,"0")}else if(t===r.Seconds){this.seconds=i.toString().padStart(2,"0")}const s=this.reconstructTime();this.value=s}handleInputBlur(){setTimeout((()=>{if(!this.el.contains(document.activeElement)){if(this.open){this.open=false}}}),150)}handleClickOutside(e){const t=e.target;if(this.el.contains(t)||Object.values(this.inputElements).some((e=>e.contains(t)))){return}if(this.open){this.open=false}}handleScroll(e,t){const i=e.target;const s=i.scrollTop;const n=i.clientHeight;const o=i.scrollHeight;const r=40;const l=this.generateTimeOptions(t);const d=l.length*r;if(s+n>=o-r||s<=0){i.scrollTop=d}}generateTimeOptions(e){const t=this.step/1e3;if(t===0){return["00"]}switch(e){case r.Hours:return this.generateHourOptions(t);case r.Minutes:return this.generateMinuteOptions(t);case r.Seconds:return this.generateSecondOptions(t);default:return[]}}generateHourOptions(e){const t=Math.max(1,Math.floor(e/3600));const i=this.parseHour(this.max,this.format)||(this.format.startsWith("hh")?"12":"24");const s=this.parseHour(this.min,this.format)||"00";const n=parseInt(i,10);const o=parseInt(s,10);const r=[];for(let e=o;e<n;e+=t){r.push(e.toString().padStart(2,"0"))}return r}parseHour(e,t){if(!e)return null;const[i]=e.split(":");const s=parseInt(i,10);if(isNaN(s))return null;if(t.startsWith("hh"))return s>0&&s<=12?i.padStart(2,"0"):null;return s>=0&&s<=24?i.padStart(2,"0"):null}generateMinuteOptions(e){var t,i;const s=Math.max(1,Math.floor(e%3600/60));const n=(t=this.parseMinute(this.min))!==null&&t!==void 0?t:0;const o=(i=this.parseMinute(this.max))!==null&&i!==void 0?i:59;if(n===0&&o===0)return["00"];const r=[];for(let e=n;e<=o;e+=s){r.push(e.toString().padStart(2,"0"))}return r}parseMinute(e){if(!e)return null;const t=e.split(":");if(t.length<2)return null;const i=parseInt(t[1],10);return isNaN(i)||i<0||i>=60?null:i}generateSecondOptions(e){var t,i;const s=Math.max(1,e%60);const n=(t=this.parseSecond(this.min))!==null&&t!==void 0?t:0;const o=(i=this.parseSecond(this.max))!==null&&i!==void 0?i:59;if(n===0&&o===0)return["00"];const r=[];for(let e=n;e<=o;e+=s){r.push(e.toString().padStart(2,"0"))}return r}parseSecond(e){if(!e)return null;const t=e.split(":");if(t.length<3)return null;const i=parseInt(t[2],10);return isNaN(i)||i<0||i>=60?null:i}generateInfiniteTimeOptions(e){const t=this.generateTimeOptions(e);const i=t.length;const s=Math.ceil(300/i);return Array(s).fill(t).flat()}getCurrentTime(){const e=new Date;return e.toLocaleTimeString()}updateColumnHighlight(e,t){const i=Array.from(this.el.querySelectorAll(e));const s=i.findIndex((e=>e.textContent===t));this.updateHighlightedItem(i,s)}handleHostClick(e){var t,i;if(this.disabled||this.readonly){return}const s=e.target;if(s.closest("nv-iconbutton")){return}if(!this.open){if(this.inputElements){(t=this.inputElements[r.Hours])===null||t===void 0?void 0:t.focus();(i=this.inputElements[r.Hours])===null||i===void 0?void 0:i.select()}e.preventDefault()}}componentWillLoad(){document.addEventListener("click",this.handleClickOutside.bind(this));if(this.value){this.parseTime(this.value)}else{const e=this.parseHour(this.min,this.format)||"00";const t=this.parseMinute(this.min)||0;const i=this.parseSecond(this.min)||0;this.hours=e.padStart(2,"0");this.minutes=t.toString().padStart(2,"0");this.seconds=i.toString().padStart(2,"0")}}connectedCallback(){document.addEventListener("click",this.handleClickOutside.bind(this))}disconnectedCallback(){document.removeEventListener("click",this.handleClickOutside.bind(this))}componentDidLoad(){if(!this.value){const e=this.getCurrentTime();let[t,i,s]=e.split(":");let n,o;if(s.includes(" ")){[n,o]=s.split(" ")}else{n=s}let r=parseInt(t,10);if(o){if(o==="PM"&&r<12){r+=12}else if(o==="AM"&&r===12){r=0}}if(this.format.startsWith("hh")){if(r===0){t="12"}else if(r>12){t=(r-12).toString()}else{t=r.toString()}}else{t=r.toString()}t=t.padStart(2,"0");i=i.padStart(2,"0");n=n.padStart(2,"0");const l=`.time-column.time-column-hours div`;this.updateColumnHighlight(l,t);const d=`.time-column.time-column-minutes div`;this.updateColumnHighlight(d,i);const a=`.time-column.time-column-seconds div`;this.updateColumnHighlight(a,n)}}RenderTimeOptionsColumn(e){return i("div",{class:`time-column time-column-${e}`,onScroll:t=>this.handleScroll(t,e)},this.generateInfiniteTimeOptions(e).map(((t,s)=>i("div",{class:{"time-option":true,selected:e===r.Hours&&t===this.hours||e===r.Minutes&&t===this.minutes||e===r.Seconds&&t===this.seconds},key:`${t}-${s}`,onClick:t=>this.handleTimeOptionClick(t,e)},t))))}render(){return i(s,{key:"1ef0b47c6886db0b91833d4680638eeafe886894",onclick:e=>this.handleHostClick(e)},(this.label||this.el.querySelector('[slot="label"]'))&&i("label",{key:"7f0c658c7ad89e2f0fb5100a4de46d368b8edf85",htmlFor:this.inputId},i("slot",{key:"2378b6f07660bb1c536e52a9e48b7a633f9d8bca",name:"label"},this.label)),i("nv-popover",{key:"cc543c978adc3a58c343688b3b579240abfd244d",ref:e=>this.popoverElement=e,triggerMode:"controlled",placement:"bottom-start",open:this.open},i("div",{key:"776927c5aec228f04c0079cc51d7772e50425dae",class:"input-wrapper",slot:"trigger"},i("slot",{key:"9d5324592d1a1e9aed17a4bcdcdfcd0e5be88632",name:"before-input"}),i("div",{key:"ed804b5a42ac0bff1c142f2374d5b32c45d3f5bb",class:"input-container"},i("slot",{key:"a2085ff4c458cd9cbf5d5824bd2f3624b71560b3",name:"leading-input"}),o(this.format,"HH")&&[i("input",{key:"a21fb6c62075b878dd849d9860bdee7cf8d56e61",ref:e=>this.inputElements[r.Hours]=e,type:"number",autofocus:this.autofocus,class:"time-input",pattern:"[0-9]*",maxlength:"3",value:this.hours,onInput:e=>this.handleInputChange(e,r.Hours),placeholder:this.format.includes("hh")?"hh":"HH",inputMode:"numeric",onFocus:()=>this.handleFocus(r.Hours),name:this.name?`${r.Hours}-${this.name}`:r.Hours,id:this.inputId,readonly:this.readonly,disabled:this.disabled,required:this.required,onKeyDown:e=>this.handleKeyDown(e),onBlur:()=>this.handleInputBlur()})],this.format.includes("mm")&&[i("span",{key:"cb0a76c804e60fb918980271cc2e19c389f6ffbc"},":"),i("input",{key:"5ea428290a17350d74e3038728d0992c6fdad28e",ref:e=>this.inputElements[r.Minutes]=e,type:"number",autofocus:this.autofocus,class:"time-input",pattern:"[0-9]*",maxlength:"3",value:this.minutes,onInput:e=>this.handleInputChange(e,r.Minutes),placeholder:"mm",inputMode:"numeric",onFocus:()=>this.handleFocus(r.Minutes),name:this.name?`${r.Minutes}-${this.name}`:r.Minutes,id:`${this.inputId}-minutes`,readonly:this.readonly,disabled:this.disabled,required:this.required,onKeyDown:e=>this.handleKeyDown(e),onBlur:()=>this.handleInputBlur()})],this.format.includes("ss")&&[i("span",{key:"68c7d188eee595668066e82fbfa60f387d1078f6"},":"),i("input",{key:"23345802e5b7b9ea2e98fc47ca0ed88fec1f2176",ref:e=>this.inputElements[r.Seconds]=e,type:"number",autofocus:this.autofocus,class:"time-input",pattern:"[0-9]*",maxlength:"3",value:this.seconds,onInput:e=>this.handleInputChange(e,r.Seconds),placeholder:"ss",inputMode:"numeric",onFocus:()=>this.handleFocus(r.Seconds),name:this.name?`${r.Seconds}-${this.name}`:r.Seconds,id:`${this.inputId}-seconds`,readonly:this.readonly,disabled:this.disabled,required:this.required,onKeyDown:e=>this.handleKeyDown(e),onBlur:()=>this.handleInputBlur()})],i("nv-iconbutton",{key:"103fc264c69cf3f8cac073d7815d24b3fdf9a821",name:this.open?"chevron-top":"chevron-down",size:"md",emphasis:"lower","aria-label":this.open?"Hide time picker":"Show time picker","aria-pressed":this.open.toString(),onClick:()=>this.HandleDropdownIconClick()}),this.error&&i("nv-icon",{key:"c78ec167b3f228a03172eee52fe888a8456f5851",name:"alert-circle",class:"validation",size:"sm"}),this.success&&i("nv-icon",{key:"845802ea8ebe47b66701a11663c1b5052a51a7e8",name:"circle-check",class:"validation",size:"sm"})),i("slot",{key:"d07b15d6baf4960bf12dec9cc883e89a969c08ea",name:"after-input"})),i("div",{key:"c165f47781a106f0b586f7e39e30902c873faa07",class:"time-dropdown",slot:"content"},i("div",{key:"2c544ba696b3ed2dc1db98ecc99b00d00f7b1531",class:"time-columns"},o(this.format,"HH")&&this.RenderTimeOptionsColumn(r.Hours),this.format.includes("mm")&&this.RenderTimeOptionsColumn(r.Minutes),this.format.includes("ss")&&this.RenderTimeOptionsColumn(r.Seconds)))),(this.description||this.el.querySelector('[slot="description"]'))&&i("div",{key:"f096bace0439c56e5707e385df02cd0c8d76665c",class:"description"},i("slot",{key:"2a90719cfeb9f95ca9f298a1dce3383bbbb99f47",name:"description"},this.description)),(this.errorDescription||this.el.querySelector('[slot="error-description"]'))&&i("div",{key:"62d7d553ac6ad2f1d86d241a3042093a1b95d5d0",hidden:!this.error,class:"error-description"},i("slot",{key:"03ff68aae8a2433f791da59721fd090f2573eebf",name:"error-description"},this.errorDescription)))}static get formAssociated(){return true}get el(){return n(this)}static get watchers(){return{value:["handleValueChange"]}}};h.style=a;export{h as nv_fieldtime};
|
|
2
|
+
//# sourceMappingURL=p-464ef88f.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["nvFieldtimeCss","NvFieldtimeStyle0","NvFieldtime","constructor","hostRef","this","inputElements","inputZeroAdded","typeFocused","TimeType","Hours","hours","minutes","seconds","inputId","uuidv4","readonly","disabled","required","success","error","format","open","step","autofocus","handleOpenChanged","event","detail","handleKeyDown","key","preventDefault","popoverElement","console","warn","stringSelector","items","Array","from","el","querySelectorAll","length","currentIndex","findIndex","item","classList","contains","updateHighlightedItem","click","_a","Minutes","focus","_b","select","Seconds","_c","_d","blur","handleValueChange","newValue","valueChanged","emit","handleInputChange","e","type","inputElement","target","inputValue","value","replace","handleHoursChange","handleMinutesChange","handleSecondsChange","currentValue","reconstructTime","isHHFormat","startsWith","maxHours","reputedToZero","maxHour","parseHour","max","minHour","min","newInputValue","padStart","parseInt","slice","parsedNewInputValue","toString","maxMinutes","minMinute","parseMinute","maxMinute","_e","_f","maxSeconds","minSecond","parseSecond","maxSecond","parseTime","timeString","cleanedTime","hour","minute","second","handleFocus","HandleDropdownIconClick","index","forEach","i","add","setAttribute","scrollIntoView","block","remove","handleTimeOptionClick","option","textContent","handleInputBlur","setTimeout","document","activeElement","handleClickOutside","Object","values","some","input","handleScroll","scrollTop","containerHeight","clientHeight","scrollHeight","itemHeight","options","generateTimeOptions","singleSetHeight","stepInSeconds","generateHourOptions","generateMinuteOptions","generateSecondOptions","hourStep","Math","floor","maxHourValue","minHourValue","push","hourStr","split","isNaN","minuteStep","parts","secondStep","generateInfiniteTimeOptions","totalOptions","repetitions","ceil","fill","flat","getCurrentTime","currentTime","Date","toLocaleTimeString","updateColumnHighlight","selector","x","handleHostClick","targetElement","closest","componentWillLoad","addEventListener","bind","connectedCallback","disconnectedCallback","removeEventListener","componentDidLoad","secondAmPm","amPm","includes","parsedHour","hourSelector","minuteSelector","secondSelector","RenderTimeOptionsColumn","h","class","onScroll","map","selected","onClick","render","Host","onclick","label","querySelector","htmlFor","name","ref","triggerMode","placement","slot","startsWithIgnoreCase","pattern","maxlength","onInput","placeholder","inputMode","onFocus","id","onKeyDown","onBlur","size","emphasis","description","errorDescription","hidden"],"sources":["src/components/nv-fieldtime/styles/nv-fieldtime.scss?tag=nv-fieldtime","src/components/nv-fieldtime/nv-fieldtime.tsx"],"sourcesContent":["@use './mixins' as *;\n@import '../../../styles/form-field';\n\nnv-fieldtime {\n @include form-field-variables();\n @include form-field-root();\n\n &[readonly]:not([readonly='false']) {\n @include form-field-readonly-variables();\n }\n\n &[error]:not([error='false']) {\n @include form-field-error-variables();\n }\n\n &[success]:not([success='false']) {\n @include form-field-success-variables();\n }\n\n &[required]:not([required='false']) label {\n @include form-field-label-required();\n }\n\n label {\n @include form-field-label();\n }\n\n nv-popover {\n @include apply-popover-style;\n }\n\n .input-wrapper {\n @include form-field-input-wrapper();\n width: 100%;\n }\n\n .input-container {\n @include form-field-input-container();\n @include flex-container(flex-start);\n position: relative;\n width: 100%;\n min-height: 40px;\n gap: 0;\n padding-left: var(--form-field-padding-x);\n\n input.time-input {\n @include form-field-input();\n @include apply-input-styles();\n }\n\n span {\n width: 100%;\n text-align: center;\n min-width: 24px;\n flex: 0 0 24px;\n padding: 0 4px;\n color: var(--components-form-field-content-text);\n }\n\n > nv-iconbutton {\n @include form-field-action();\n margin-left: auto;\n }\n\n nv-icon.validation {\n @include form-field-icon();\n @include icon-position(50px);\n }\n\n &:focus,\n &:focus-within {\n @include apply-focus-styles;\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n\n hr {\n border: none;\n border-top: 1px solid var(--dropdown-divider-color, #ccc);\n margin: 0.5rem 0;\n }\n\n .time-dropdown {\n width: 100%;\n\n .time-columns {\n @include flex-container;\n\n .time-column {\n flex: 1;\n text-align: center;\n @include scrollable(200px);\n\n &:last-child {\n border-right: none;\n }\n\n .time-option {\n padding: var(--list-dropdown-item-padding-y)\n var(--list-dropdown-item-padding-x);\n text-align: center;\n cursor: pointer;\n transition: background-color 0.2s;\n height: 40px;\n border-radius: var(--list-dropdown-item-radius);\n @include flex-container(center);\n\n &:hover {\n background-color: var(\n --components-list-dropdown-item-background-hover\n );\n color: var(--components-list-dropdown-item-label-hover);\n }\n\n @include state-focus(\n var(--components-list-dropdown-item-background-hover),\n var(--components-list-dropdown-item-label-hover)\n );\n\n &.selected {\n background-color: var(\n --components-list-dropdown-item-background-active\n );\n color: var(--components-list-dropdown-item-label-active);\n @include bordered-element(\n 1px,\n var(--components-list-dropdown-item-border-active)\n );\n }\n\n &.highlighted {\n background-color: var(\n --components-list-dropdown-item-background-hover\n );\n color: var(--components-menu-contextual-item-content-hover);\n }\n }\n }\n }\n }\n}\n","/* eslint-disable react/jsx-no-bind */\nimport {\n Component,\n Host,\n h,\n State,\n Element,\n Event,\n EventEmitter,\n Prop,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { startsWithIgnoreCase } from '../../utils/string.utils';\nimport { TimeType } from '../../utils/constants';\n\n/**\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n */\n@Component({\n tag: 'nv-fieldtime',\n styleUrl: 'styles/nv-fieldtime.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldtime {\n @Element() el: HTMLNvFieldtimeElement;\n\n // Input elements for hours, minutes, and seconds\n private inputElements: { [key: string]: HTMLInputElement } = {};\n\n private inputZeroAdded: { [key: string]: boolean } = {};\n\n private popoverElement!: HTMLNvPopoverElement;\n\n private typeFocused: TimeType = TimeType.Hours;\n\n /****************************************************************************/\n //#region STATES\n\n @State()\n hours: string = '00';\n @State()\n minutes: string = '00';\n @State()\n seconds: string = '00';\n\n //#endregion STATES\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * The current value of the time input in the specified format.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Lets you define the text that explains what users should enter in the time\n * input field. It's a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Display the input field's content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won't be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can't\n * interact with it. When disabled, the field is grayed out and won't respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Changes the input field’s appearance to indicate successful input or\n * validation.\n */\n @Prop({ reflect: true })\n readonly success: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the time\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Specifies the time format to be used.\n * Available formats:\n * - HH: 24-hour format (00-23)\n * - HH:mm: 24-hour format with minutes (00:00-23:59)\n * - HH:mm:ss: 24-hour format with minutes and seconds (00:00:00-23:59:59)\n * - hh: 12-hour format (01-12)\n * - hh:mm: 12-hour format with minutes (01:00-12:59)\n * - hh:mm:ss: 12-hour format with minutes and seconds (01:00:00-12:59:59)\n */\n @Prop({ reflect: true })\n readonly format: 'HH' | 'HH:mm' | 'HH:mm:ss' | 'hh' | 'hh:mm' | 'hh:mm:ss' =\n 'HH:mm:ss';\n\n /**\n * Add helpful hints or extra information under the time input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * State of the time picker popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The step interval in milliseconds for time increments/decrements.\n * This affects how the time changes when using arrow keys or spinners.\n */\n @Prop({ reflect: true })\n readonly step: number = 60000; // In secondes\n\n /**\n * The maximum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly max: string;\n\n /**\n * The minimum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly min: string;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emit an event when the time value changes.\n * The event detail contains the new time value (HH, HH:mm or HH:mm:ss).\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LISTENERS\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n this.open = event.detail; // Update `open` based on the popover state\n }\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Verify if the popover element is defined\n if (!this.popoverElement) {\n console.warn('nv-fieldtime -> Popover element is not defined');\n return;\n }\n\n const stringSelector = `.time-column.time-column-${this.typeFocused} div`;\n const items = Array.from(\n this.el.querySelectorAll<HTMLElement>(stringSelector),\n );\n\n // Verify if there are items to navigate\n if (items.length === 0) {\n console.warn('nv-fieldtime -> No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n\n if (this.typeFocused === TimeType.Hours) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (\n this.typeFocused === TimeType.Minutes ||\n this.typeFocused === TimeType.Seconds\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n\n if (this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours].blur();\n }\n }\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('value')\n handleValueChange(newValue: string) {\n this.valueChanged.emit(newValue);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private handleInputChange(e: InputEvent, type: TimeType): void {\n const inputElement = e.target as HTMLInputElement;\n const inputValue = inputElement.value.replace(/[^0-9]/g, ''); // Only keep numeric input\n\n // Update the time value based on the type\n switch (type) {\n case TimeType.Hours:\n this.handleHoursChange(inputValue, type);\n break;\n case TimeType.Minutes:\n this.handleMinutesChange(inputValue, type);\n break;\n case TimeType.Seconds:\n this.handleSecondsChange(inputValue, type);\n break;\n }\n\n // Reconstruct time from inputs\n const currentValue = this.reconstructTime();\n\n this.value = currentValue;\n }\n\n private handleHoursChange(inputValue: string, type: TimeType): void {\n const isHHFormat = this.format.startsWith('HH');\n const maxHours = isHHFormat ? 24 : 12;\n let reputedToZero = false;\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n reputedToZero = true;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n if (\n minHour &&\n parseInt(newInputValue, 10) < parseInt(minHour, 10)\n ) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n this.hours = '00';\n reputedToZero = true;\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.hours.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n }\n\n private handleMinutesChange(inputValue: string, type: TimeType): void {\n const maxMinutes = 60;\n let reputedToZero = false;\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.minutes.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n }\n }\n\n private handleSecondsChange(inputValue: string, type: TimeType): void {\n const maxSeconds = 60;\n let reputedToZero = false;\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxSecond && parseInt(newInputValue, 10) > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (reputedToZero) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n }\n\n // Parse a continuous time string (e.g., \"123456\") into hours, minutes, and seconds\n private parseTime(timeString: string): void {\n if (!timeString) {\n return;\n }\n\n const cleanedTime = timeString.replace(/[^0-9]/g, '').padStart(6, '0');\n const hour = cleanedTime.slice(0, 2);\n const minute = cleanedTime.slice(2, 4);\n const second = cleanedTime.slice(4, 6);\n\n const minHour = this.parseHour(this.min, this.format) || hour;\n const minMinute = this.parseMinute(this.min) || minute;\n const minSecond = this.parseSecond(this.min) || second;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n\n private reconstructTime(): string {\n if (this.format === 'HH' || this.format === 'hh') {\n return this.hours;\n } else if (this.format === 'HH:mm' || this.format === 'hh:mm') {\n return `${this.hours}:${this.minutes}`;\n } else if (this.format === 'HH:mm:ss' || this.format === 'hh:mm:ss') {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n } else {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n }\n }\n\n private handleFocus(type: TimeType): void {\n if (this.readonly || this.disabled) {\n return;\n }\n\n if (!this.open) {\n this.open = true; // Force the popover to open\n }\n\n // Refocus on the input if it loses focus and is empty\n if (\n this.inputElements[type]?.value.length === 0 ||\n this.inputElements[type]?.value === '00'\n ) {\n this.inputElements[type]?.focus();\n this.inputElements[type]?.select();\n }\n\n this.typeFocused = type;\n }\n\n private HandleDropdownIconClick(): void {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n if (this.open && this.inputElements[TimeType.Hours]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Minutes]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Seconds]) {\n this.open = false; // Close the popover if it is open\n } else if (!this.open && this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Hours]?.select();\n } else if (!this.open && this.inputElements[TimeType.Minutes]) {\n this.inputElements[TimeType.Minutes]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Minutes]?.select();\n } else if (!this.open && this.inputElements[TimeType.Seconds]) {\n this.inputElements[TimeType.Seconds]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Seconds]?.select();\n } else {\n console.warn(\n 'nv-fieldtime -> No input elements found to focus or to blur',\n );\n }\n }\n\n private updateHighlightedItem(items: HTMLElement[], index: number) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private handleTimeOptionClick(event: MouseEvent, type: TimeType): void {\n const option = parseInt(\n (event.target as HTMLElement).textContent || '0',\n 10,\n );\n\n if (type === TimeType.Hours) {\n this.hours = option.toString().padStart(2, '0');\n } else if (type === TimeType.Minutes) {\n this.minutes = option.toString().padStart(2, '0');\n } else if (type === TimeType.Seconds) {\n this.seconds = option.toString().padStart(2, '0');\n }\n\n const reconstructTime = this.reconstructTime();\n this.value = reconstructTime;\n }\n\n private handleInputBlur(): void {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n if (this.open) {\n this.open = false; // Close the popover if the focus is outside the component\n }\n }\n }, 150);\n }\n\n private handleClickOutside(event: MouseEvent) {\n const target = event.target as Node;\n\n // Check if the click is inside the component or any of the input elements\n if (\n this.el.contains(target) ||\n Object.values(this.inputElements).some(input => input.contains(target))\n ) {\n return;\n }\n\n if (this.open) {\n this.open = false; // Close the popover if the click is outside\n }\n }\n\n private handleScroll(e: Event, type: TimeType): void {\n const target = e.target as HTMLElement;\n const scrollTop = target.scrollTop;\n const containerHeight = target.clientHeight;\n const scrollHeight = target.scrollHeight;\n\n // Define the height of each item, this could be dynamic if the height varies\n const itemHeight = 40; // Consider making this configurable or dynamic\n const options = this.generateTimeOptions(type); // Generates the list of time options\n const singleSetHeight = options.length * itemHeight;\n\n // Check if the scroll is near the bottom or top and reset to the first set\n if (\n scrollTop + containerHeight >= scrollHeight - itemHeight ||\n scrollTop <= 0\n ) {\n target.scrollTop = singleSetHeight; // Reset to the first set from the bottom\n }\n }\n\n private generateTimeOptions(type: TimeType) {\n // Convert the step in seconds\n const stepInSeconds = this.step / 1000;\n\n // Handle edge case for zero step\n if (stepInSeconds === 0) {\n return ['00']; // Just return the default value\n }\n\n // Generate the time options based on the type\n switch (type) {\n case TimeType.Hours:\n return this.generateHourOptions(stepInSeconds);\n\n case TimeType.Minutes:\n return this.generateMinuteOptions(stepInSeconds);\n\n case TimeType.Seconds:\n return this.generateSecondOptions(stepInSeconds);\n\n default:\n return [];\n }\n }\n\n private generateHourOptions(stepInSeconds: number): string[] {\n const hourStep = Math.max(1, Math.floor(stepInSeconds / 3600)); // Prevent step < 1\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n const maxHourValue = parseInt(maxHour, 10);\n const minHourValue = parseInt(minHour, 10);\n const values: string[] = [];\n\n for (let i = minHourValue; i < maxHourValue; i += hourStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseHour(value: string | null, format: string): string | null {\n if (!value) return null;\n const [hourStr] = value.split(':');\n const hour = parseInt(hourStr, 10);\n if (isNaN(hour)) return null;\n if (format.startsWith('hh'))\n return hour > 0 && hour <= 12 ? hourStr.padStart(2, '0') : null;\n return hour >= 0 && hour <= 24 ? hourStr.padStart(2, '0') : null;\n }\n\n private generateMinuteOptions(stepInSeconds: number): string[] {\n const minuteStep = Math.max(1, Math.floor((stepInSeconds % 3600) / 60)); // Ensure step >= 1\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (minMinute === 0 && maxMinute === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minMinute; i <= maxMinute; i += minuteStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseMinute(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 2) return null; // Expect at least \"hh:mm\"\n const minute = parseInt(parts[1], 10);\n return isNaN(minute) || minute < 0 || minute >= 60 ? null : minute;\n }\n\n private generateSecondOptions(stepInSeconds: number): string[] {\n const secondStep = Math.max(1, stepInSeconds % 60); // Ensure step >= 1\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (minSecond === 0 && maxSecond === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minSecond; i <= maxSecond; i += secondStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseSecond(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 3) return null; // Expect \"hh:mm:ss\" or \"HH:mm:ss\"\n const second = parseInt(parts[2], 10);\n return isNaN(second) || second < 0 || second >= 60 ? null : second;\n }\n\n private generateInfiniteTimeOptions(type: TimeType): string[] {\n const options = this.generateTimeOptions(type);\n const totalOptions = options.length;\n\n // Dynamically calculate repetitions based on a target number of items (e.g., 300 items)\n const repetitions = Math.ceil(300 / totalOptions);\n return Array(repetitions).fill(options).flat();\n }\n\n private getCurrentTime(): string {\n const currentTime = new Date();\n return currentTime.toLocaleTimeString(); // Returns the time in the locale's format\n }\n\n private updateColumnHighlight(selector, value): void {\n const items = Array.from(this.el.querySelectorAll<HTMLElement>(selector));\n\n const index = items.findIndex(x => x.textContent === value);\n this.updateHighlightedItem(items, index);\n }\n\n private handleHostClick(event: MouseEvent): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const targetElement = event.target as HTMLElement;\n\n // Check if the click target or its ancestors are inside an nv-iconbutton element\n if (targetElement.closest('nv-iconbutton')) {\n return; // Handle icon button click separately\n }\n\n if (!this.open) {\n if (this.inputElements) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n\n event.preventDefault();\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // If an initial value is passed, parse it\n if (this.value) {\n this.parseTime(this.value);\n } else {\n const minHour = this.parseHour(this.min, this.format) || '00';\n const minMinute = this.parseMinute(this.min) || 0;\n const minSecond = this.parseSecond(this.min) || 0;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n }\n\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n componentDidLoad() {\n if (!this.value) {\n const currentTime = this.getCurrentTime();\n\n // Split time into components\n // eslint-disable-next-line prefer-const\n let [hour, minute, secondAmPm] = currentTime.split(':');\n let second, amPm;\n\n // Check if AM/PM is present and split accordingly\n if (secondAmPm.includes(' ')) {\n [second, amPm] = secondAmPm.split(' ');\n } else {\n second = secondAmPm;\n }\n\n // Parse hour as integer for calculations\n let parsedHour = parseInt(hour, 10);\n\n // Convert hour to 24-hour format based on AM/PM (if present)\n if (amPm) {\n if (amPm === 'PM' && parsedHour < 12) {\n parsedHour += 12; // Convert PM to 24-hour\n } else if (amPm === 'AM' && parsedHour === 12) {\n parsedHour = 0; // Midnight in 24-hour format\n }\n }\n\n // Adjust for 12-hour format if necessary\n if (this.format.startsWith('hh')) {\n if (parsedHour === 0) {\n hour = '12'; // Midnight in 12-hour format\n } else if (parsedHour > 12) {\n hour = (parsedHour - 12).toString(); // Convert 24-hour to 12-hour\n } else {\n hour = parsedHour.toString();\n }\n } else {\n hour = parsedHour.toString(); // Use 24-hour format directly\n }\n\n // Pad hour, minute, and second to ensure two digits\n hour = hour.padStart(2, '0');\n minute = minute.padStart(2, '0');\n second = second.padStart(2, '0');\n\n // Update highlighted items for hours\n const hourSelector = `.time-column.time-column-hours div`;\n this.updateColumnHighlight(hourSelector, hour);\n\n // Update highlighted items for minutes\n const minuteSelector = `.time-column.time-column-minutes div`;\n this.updateColumnHighlight(minuteSelector, minute);\n\n // Update highlighted items for seconds\n const secondSelector = `.time-column.time-column-seconds div`;\n this.updateColumnHighlight(secondSelector, second);\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n private RenderTimeOptionsColumn(type: TimeType): HTMLElement {\n return (\n <div\n class={`time-column time-column-${type}`}\n onScroll={e => this.handleScroll(e, type)}\n >\n {/* Hours */}\n {this.generateInfiniteTimeOptions(type).map((option, index) => (\n <div\n class={{\n 'time-option': true,\n 'selected':\n (type === TimeType.Hours && option === this.hours) ||\n (type === TimeType.Minutes && option === this.minutes) ||\n (type === TimeType.Seconds && option === this.seconds),\n }}\n key={`${option}-${index}`}\n onClick={e => this.handleTimeOptionClick(e, type)}\n >\n {option}\n </div>\n ))}\n </div>\n );\n }\n\n render() {\n return (\n <Host onclick={e => this.handleHostClick(e)}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container\">\n <slot name=\"leading-input\"></slot>\n {/* Input fields for hours, minutes, and seconds */}\n {/* Hours */}\n {startsWithIgnoreCase(this.format, 'HH') && [\n <input\n ref={el => (this.inputElements[TimeType.Hours] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.hours}\n onInput={e => this.handleInputChange(e, TimeType.Hours)}\n placeholder={this.format.includes('hh') ? 'hh' : 'HH'}\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Hours)}\n name={\n this.name\n ? `${TimeType.Hours}-${this.name}`\n : TimeType.Hours\n }\n id={this.inputId}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Minutes */}\n {this.format.includes('mm') && [\n <span>:</span>,\n <input\n ref={el => (this.inputElements[TimeType.Minutes] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.minutes}\n onInput={e => this.handleInputChange(e, TimeType.Minutes)}\n placeholder=\"mm\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Minutes)}\n name={\n this.name\n ? `${TimeType.Minutes}-${this.name}`\n : TimeType.Minutes\n }\n id={`${this.inputId}-minutes`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Seconds */}\n {this.format.includes('ss') && [\n <span>:</span>,\n\n <input\n ref={el => (this.inputElements[TimeType.Seconds] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.seconds}\n onInput={e => this.handleInputChange(e, TimeType.Seconds)}\n placeholder=\"ss\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Seconds)}\n name={\n this.name\n ? `${TimeType.Seconds}-${this.name}`\n : TimeType.Seconds\n }\n id={`${this.inputId}-seconds`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n\n <nv-iconbutton\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide time picker' : 'Show time picker'}\n aria-pressed={this.open.toString()}\n onClick={() => this.HandleDropdownIconClick()}\n />\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"sm\" />\n )}\n {this.success && (\n <nv-icon name=\"circle-check\" class=\"validation\" size=\"sm\" />\n )}\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div class=\"time-dropdown\" slot=\"content\">\n <div class=\"time-columns\">\n {startsWithIgnoreCase(this.format, 'HH') &&\n this.RenderTimeOptionsColumn(TimeType.Hours)}\n {this.format.includes('mm') &&\n this.RenderTimeOptionsColumn(TimeType.Minutes)}\n {this.format.includes('ss') &&\n this.RenderTimeOptionsColumn(TimeType.Seconds)}\n </div>\n </div>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as a,h as r,a as c}from"./p-ab002252.js";const s="nv-row{display:flex;flex-wrap:wrap;margin-right:calc(var(--spacing-4) * -1);margin-left:calc(var(--spacing-4) * -1);row-gap:var(--spacing-4)}";const e=s;const n=class{constructor(r){a(this,r)}render(){return r(c,{key:"d6f9bbc1ed59bfc59a97728896c0443c8e104e59"},r("slot",{key:"3d9c1c809524d0a4b9d8ad541ead8978d246c998"}))}};n.style=e;export{n as nv_row};
|
|
2
|
+
//# sourceMappingURL=p-46aa1136.entry.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,c as a,h as o,a as r,g as t}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as e,c as a,h as o,a as r,g as t}from"./p-ab002252.js";import{c as n}from"./p-8a1a6e56.js";import{F as s}from"./p-59768ee5.js";import{u as i,t as c}from"./p-42301d8f.js";import{u as l}from"./p-1daca48a.js";const f='nv-alert{display:flex !important;align-items:flex-start;position:relative;gap:var(--alert-gap-x);border-radius:var(--alert-radius);font-family:"TT Norms Pro", "Montserrat", sans-serif}nv-alert>nv-icon{margin-left:var(--alert-icon-position-x);margin-top:var(--alert-icon-position-y)}nv-alert.feedback-information{background-color:var(--components-alert-information-background);border:1px solid var(--components-alert-information-border) !important}nv-alert.feedback-information>.close:focus,nv-alert.feedback-information>.close:focus-within{outline:none}nv-alert.feedback-information>.close:focus-visible,nv-alert.feedback-information>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-information-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert.feedback-warning{background-color:var(--components-alert-warning-background);border:1px solid var(--components-alert-warning-border) !important}nv-alert.feedback-warning>.close:focus,nv-alert.feedback-warning>.close:focus-within{outline:none}nv-alert.feedback-warning>.close:focus-visible,nv-alert.feedback-warning>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-warning-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert.feedback-error{background-color:var(--components-alert-error-background);border:1px solid var(--components-alert-error-border) !important}nv-alert.feedback-error>.close:focus,nv-alert.feedback-error>.close:focus-within{outline:none}nv-alert.feedback-error>.close:focus-visible,nv-alert.feedback-error>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-error-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert.feedback-success{background-color:var(--components-alert-success-background);border:1px solid var(--components-alert-success-border) !important}nv-alert.feedback-success>.close:focus,nv-alert.feedback-success>.close:focus-within{outline:none}nv-alert.feedback-success>.close:focus-visible,nv-alert.feedback-success>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-success-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert.feedback-neutral{background-color:var(--components-alert-neutral-background);border:1px solid var(--components-alert-neutral-border) !important}nv-alert.feedback-neutral>.close:focus,nv-alert.feedback-neutral>.close:focus-within{outline:none}nv-alert.feedback-neutral>.close:focus-visible,nv-alert.feedback-neutral>.close:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-alert-neutral-border);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-alert>nv-icon.icon-information{color:var(--components-alert-information-icon)}nv-alert>nv-icon.icon-warning{color:var(--components-alert-warning-icon)}nv-alert>nv-icon.icon-error{color:var(--components-alert-error-icon)}nv-alert>nv-icon.icon-success{color:var(--components-alert-success-icon)}nv-alert>nv-icon.icon-neutral{color:var(--components-alert-neutral-icon)}nv-alert>.content{display:flex;padding:var(--alert-padding);padding-left:0;flex-direction:column;gap:var(--alert-gap-y)}nv-alert>.content>.heading{color:var(--components-alert-content-title);font-size:var(--alert-heading-font-size);line-height:var(--alert-heading-line-height);font-weight:var(--alert-heading-font-weight)}nv-alert>.content>.message{color:var(--components-alert-content-description);font-size:var(--alert-message-font-size);line-height:var(--alert-message-line-height)}nv-alert>.close{border-radius:var(--alert-radius);position:absolute;display:flex;top:var(--alert-icon-position-y);right:var(--alert-icon-position-x);padding:0;border:none;background:none;cursor:pointer}';const d=f;const u=class{constructor(o){e(this,o);this.hiddenChanged=a(this,"hiddenChanged",7);this.hiddenChangedComplete=a(this,"hiddenChangedComplete",7);this.closeClicked=a(this,"closeClicked",7);this.feedback="information";this.dismissible=false;this.preventAutoClose=false;this.hidden=false;this.hasNoAnimations=false;this.handleDismiss=e=>{if(!this.preventAutoClose){this.hidden=true}this.closeClicked.emit(e)};this.getDefaultIcon=()=>{switch(this.feedback){case s.Warning:return"alert-circle";case s.Information:return"info-circle";case s.Success:return"circle-check";case s.Error:return"alert-circle";case s.Neutral:return"help";default:return"info-circle"}}}componentWillRender(){if(this.color){switch(this.color){case"primary":this.feedback="warning";break;case"secondary":this.feedback="information";break;case"neutral":this.feedback="information";break;default:this.feedback=this.color}}}async handleHiddenChange(e){this.hiddenChanged.emit(e);await this.updateVisibility(e);this.hiddenChangedComplete.emit(e)}async updateVisibility(e){if(this.hasNoAnimations){this.toggleHiddenClass(e);return}const{fadeIn:a,fadeOut:o}=l(this.ref,{duration:150});const{collapse:r,expand:t}=i(this.ref,{duration:150});if(e){await c(o,r).start();this.toggleHiddenClass(true)}else{this.toggleHiddenClass(false);await c(t,a).start()}}toggleHiddenClass(e){this.ref.classList.toggle("hidden",e)}componentWillLoad(){if(this.color){switch(this.color){case"primary":this.feedback="warning";break;case"secondary":this.feedback="information";break;case"neutral":this.feedback="information";break;default:this.feedback=this.color}}if(this.hidden){this.ref.classList.add("hidden")}}render(){var e;return o(r,{key:"4c91e200a6eb2f11ecde0ee6bd5fbed8a7f9fe42",role:"alert",class:n("root",`feedback-${this.feedback}`)},o("nv-icon",{key:"35ab5320ea3817717bd8328ab969a88a09e7bad2",name:(e=this.icon)!==null&&e!==void 0?e:this.getDefaultIcon(),class:`icon-${this.feedback}`,size:"md"}),o("div",{key:"5b152a1762c2a6ac637f7fe237ebe29954aa1a00",class:"content"},this.heading&&o("p",{key:"c955254210c0df22004ac3eed3b5d91a847dcb7b",class:"heading"},this.heading),this.message&&o("p",{key:"623ef5fb99dbdaa15255e49262994474f78efb71",class:"message"},this.message),o("slot",{key:"05b862a15f47eeef8381e91665104c75a100294c"})),this.dismissible&&o("button",{key:"6f7cb842fca3d0ec2c2bd1201454b906821721fb",class:"close",type:"button",onClick:this.handleDismiss},o("nv-icon",{key:"dfbc3e788b9c5d71528d7604602a9418c555e17b",name:"x",size:"sm"})))}get ref(){return t(this)}static get watchers(){return{hidden:["handleHiddenChange"]}}};u.style=d;export{u as nv_alert};
|
|
2
|
+
//# sourceMappingURL=p-4a440970.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["nvAlertCss","NvAlertStyle0","NvAlert","constructor","hostRef","this","feedback","dismissible","preventAutoClose","hidden","hasNoAnimations","handleDismiss","originalEvent","closeClicked","emit","getDefaultIcon","FeedbackColors","Warning","Information","Success","Error","Neutral","componentWillRender","color","handleHiddenChange","hiddenChanged","updateVisibility","hiddenChangedComplete","toggleHiddenClass","fadeIn","fadeOut","useFade","ref","duration","collapse","expand","useCollapse","timeline","start","classList","toggle","componentWillLoad","add","render","h","Host","key","role","class","clsx","name","_a","icon","size","heading","message","type","onClick"],"sources":["src/components/nv-alert/nv-alert.scss?tag=nv-alert","src/components/nv-alert/nv-alert.tsx"],"sourcesContent":["@use \"sass:map\";\n@import \"../../styles/focus-ring\";\n\n/* Variants */\n$alert-feedback: (\"information\", \"warning\", \"error\", \"success\", \"neutral\");\n\n/* Define maps for feedback-related variables */\n$components-alert-background: (\n \"information\": var(--components-alert-information-background),\n \"warning\": var(--components-alert-warning-background),\n \"error\": var(--components-alert-error-background),\n \"success\": var(--components-alert-success-background),\n \"neutral\": var(--components-alert-neutral-background)\n);\n\n$components-alert-border: (\n \"information\": var(--components-alert-information-border),\n \"warning\": var(--components-alert-warning-border),\n \"error\": var(--components-alert-error-border),\n \"success\": var(--components-alert-success-border),\n \"neutral\": var(--components-alert-neutral-border)\n);\n\n$components-alert-icon: (\n \"information\": var(--components-alert-information-icon),\n \"warning\": var(--components-alert-warning-icon),\n \"error\": var(--components-alert-error-icon),\n \"success\": var(--components-alert-success-icon),\n \"neutral\": var(--components-alert-neutral-icon)\n);\n\n@mixin root-styles() {\n display: flex !important; // override the display: none in [hidden] css\n align-items: flex-start;\n position: relative;\n gap: var(--alert-gap-x);\n border-radius: var(--alert-radius);\n font-family: \"TT Norms Pro\", \"Montserrat\", sans-serif;\n}\n\n@mixin content-styles() {\n display: flex;\n padding: var(--alert-padding);\n padding-left: 0;\n flex-direction: column;\n gap: var(--alert-gap-y);\n}\n\n@mixin feedback-color($feedback-type) {\n background-color: map.get($components-alert-background, $feedback-type);\n border: 1px solid map.get($components-alert-border, $feedback-type) !important;\n}\n\n@mixin icon-color($feedback-type) {\n color: map.get($components-alert-icon, $feedback-type);\n}\n\n@mixin icon-position {\n margin-left: var(--alert-icon-position-x);\n margin-top: var(--alert-icon-position-y);\n}\n\nnv-alert {\n @include root-styles();\n\n & > nv-icon {\n @include icon-position();\n }\n\n @each $feedback in $alert-feedback {\n &.feedback-#{$feedback} {\n @include feedback-color($feedback);\n & > .close {\n @include focus-ring(map.get($components-alert-border, $feedback));\n }\n }\n }\n\n @each $feedback in $alert-feedback {\n & > nv-icon.icon-#{$feedback} {\n @include icon-color($feedback);\n }\n }\n\n & > .content {\n @include content-styles();\n\n & > .heading {\n color: var(--components-alert-content-title);\n font-size: var(--alert-heading-font-size);\n line-height: var(--alert-heading-line-height);\n font-weight: var(--alert-heading-font-weight);\n }\n & > .message {\n color: var(--components-alert-content-description);\n font-size: var(--alert-message-font-size);\n line-height: var(--alert-message-line-height);\n }\n }\n & > .close {\n border-radius: var(--alert-radius);\n position: absolute;\n display: flex;\n top: var(--alert-icon-position-y);\n right: var(--alert-icon-position-x);\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Watch,\n Element,\n} from '@stencil/core';\nimport clsx from 'clsx';\n\nimport {\n DeprecatedSemanticColors,\n FeedbackColors,\n} from '../../utils/constants';\nimport { useCollapse, useFade, timeline } from '../../animations';\n\n/**\n * @slot default - Use this slot to insert HTML into the alert content.\n */\n@Component({\n tag: 'nv-alert',\n styleUrl: 'nv-alert.scss',\n shadow: false,\n})\nexport class NvAlert {\n @Element() ref: HTMLNvAlertElement;\n\n /****************************************************************************/\n //#region DEPRECATED\n\n /**\n * Defines color of the alert.\n * @deprecated use feedback instead.\n */\n @Prop({ reflect: true })\n readonly color: `${DeprecatedSemanticColors}`;\n\n componentWillRender() {\n if (this.color) {\n switch (this.color) {\n case 'primary' as DeprecatedSemanticColors:\n this.feedback = 'warning' as FeedbackColors;\n break;\n case 'secondary' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n case 'neutral' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n default:\n this.feedback = this.color as FeedbackColors;\n }\n }\n }\n\n //#endregion DEPRECATED\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Specifies the alert type which determines the color and default icon.\n */\n @Prop({ reflect: true, mutable: true })\n feedback: `${FeedbackColors}` = 'information';\n\n /**\n * Main content of the alert. For more complex content, use the default slot\n * instead.\n */\n @Prop({ reflect: true })\n readonly message: string;\n\n /**\n * Short and concise text for the alert title.\n */\n @Prop({ reflect: true })\n readonly heading: string;\n\n /**\n * Icon associated with the alert, defaults vary based on the feedback type.\n */\n @Prop({ reflect: true })\n readonly icon: string;\n\n /**\n * Allows the alert to be dismissed via a close button (x). The alert is not\n * dismissible unless explicitly enabled.\n */\n @Prop({ reflect: true })\n readonly dismissible: boolean = false;\n\n /**\n * When true, the alert does not automatically close upon dismissing.\n * Useful for externally controlled component behavior.\n */\n @Prop({ reflect: true })\n readonly preventAutoClose: boolean = false;\n\n /**\n * Controls the visibility of the alert. Will animate with fade and collapse.\n */\n @Prop({ reflect: true, mutable: true })\n hidden: boolean = false; // eslint-disable-line @stencil-community/reserved-member-names\n\n /**\n * When true, the alert will not animate when it is hidden or shown.\n */\n @Prop({ reflect: true })\n readonly hasNoAnimations: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emits when the 'hidden' prop changes, reflecting a change in visibility.\n * Passes hidden value to the detail.\n * @bind hidden\n */\n @Event()\n hiddenChanged: EventEmitter<boolean>;\n\n /**\n * Emitted when the animations complete, detail includes the hidden value.\n */\n @Event()\n hiddenChangedComplete: EventEmitter<boolean>;\n\n /**\n * Emitted when the close button is clicked.\n */\n @Event()\n closeClicked: EventEmitter<MouseEvent>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n /**\n * Used for 2 way binding with the hidden property.\n * Triggers open and close animations.\n * @param {boolean} hidden - The visibility state of the alert.\n */\n @Watch('hidden')\n async handleHiddenChange(hidden: boolean) {\n this.hiddenChanged.emit(hidden);\n\n await this.updateVisibility(hidden);\n this.hiddenChangedComplete.emit(hidden);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Handles the dismissal of the alert, considering the preventAutoClose prop.\n * Passes the original event from the close button to the close event detail.\n * @param {MouseEvent} originalEvent - The original event from the close button.\n */\n private handleDismiss = (originalEvent?: MouseEvent) => {\n if (!this.preventAutoClose) {\n this.hidden = true;\n }\n\n this.closeClicked.emit(originalEvent);\n };\n\n /**\n * By default an icon is linked to the feedback type\n * @returns {string} - The default icon name.\n */\n private getDefaultIcon = () => {\n switch (this.feedback) {\n case FeedbackColors.Warning:\n return 'alert-circle';\n case FeedbackColors.Information:\n return 'info-circle';\n case FeedbackColors.Success:\n return 'circle-check';\n case FeedbackColors.Error:\n return 'alert-circle';\n case FeedbackColors.Neutral:\n return 'help';\n default:\n return 'info-circle';\n }\n };\n\n /**\n * Updates the visibility state of the alert with optional animations\n * @param {boolean} hidden - Whether the alert should be hidden\n */\n private async updateVisibility(hidden: boolean) {\n if (this.hasNoAnimations) {\n this.toggleHiddenClass(hidden);\n return;\n }\n\n const { fadeIn, fadeOut } = useFade(this.ref, { duration: 150 });\n const { collapse, expand } = useCollapse(this.ref, { duration: 150 });\n\n if (hidden) {\n await timeline(fadeOut, collapse).start();\n this.toggleHiddenClass(true);\n } else {\n this.toggleHiddenClass(false);\n await timeline(expand, fadeIn).start();\n }\n }\n\n /**\n * Toggles the 'hidden' class on the element\n * @param {boolean} hidden - Whether to add or remove the hidden class\n */\n private toggleHiddenClass(hidden: boolean) {\n this.ref.classList.toggle('hidden', hidden);\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n if (this.color) {\n switch (this.color) {\n case 'primary' as DeprecatedSemanticColors:\n this.feedback = 'warning' as FeedbackColors;\n break;\n case 'secondary' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n case 'neutral' as DeprecatedSemanticColors:\n this.feedback = 'information' as FeedbackColors;\n break;\n default:\n this.feedback = this.color as FeedbackColors;\n }\n }\n\n if (this.hidden) {\n this.ref.classList.add('hidden');\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host role=\"alert\" class={clsx('root', `feedback-${this.feedback}`)}>\n <nv-icon\n name={this.icon ?? this.getDefaultIcon()}\n class={`icon-${this.feedback}`}\n size=\"md\"\n ></nv-icon>\n\n <div class=\"content\">\n {this.heading && <p class=\"heading\">{this.heading}</p>}\n\n {this.message && <p class=\"message\">{this.message}</p>}\n\n <slot></slot>\n </div>\n\n {this.dismissible && (\n <button class=\"close\" type=\"button\" onClick={this.handleDismiss}>\n <nv-icon name=\"x\" size=\"sm\" />\n </button>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"uNAAA,MAAMA,EAAa,wvHACnB,MAAAC,EAAeD,E,MCyBFE,EAAO,MALpB,WAAAC,CAAAC,G,+JA4CEC,KAAAC,SAAgC,cA0BvBD,KAAAE,YAAuB,MAOvBF,KAAAG,iBAA4B,MAMrCH,KAAAI,OAAkB,MAMTJ,KAAAK,gBAA2B,MAoD5BL,KAAAM,cAAiBC,IACvB,IAAKP,KAAKG,iBAAkB,CAC1BH,KAAKI,OAAS,I,CAGhBJ,KAAKQ,aAAaC,KAAKF,EAAc,EAO/BP,KAAAU,eAAiB,KACvB,OAAQV,KAAKC,UACX,KAAKU,EAAeC,QAClB,MAAO,eACT,KAAKD,EAAeE,YAClB,MAAO,cACT,KAAKF,EAAeG,QAClB,MAAO,eACT,KAAKH,EAAeI,MAClB,MAAO,eACT,KAAKJ,EAAeK,QAClB,MAAO,OACT,QACE,MAAO,c,EApJb,mBAAAC,GACE,GAAIjB,KAAKkB,MAAO,CACd,OAAQlB,KAAKkB,OACX,IAAK,UACHlB,KAAKC,SAAW,UAChB,MACF,IAAK,YACHD,KAAKC,SAAW,cAChB,MACF,IAAK,UACHD,KAAKC,SAAW,cAChB,MACF,QACED,KAAKC,SAAWD,KAAKkB,M,EA8F7B,wBAAMC,CAAmBf,GACvBJ,KAAKoB,cAAcX,KAAKL,SAElBJ,KAAKqB,iBAAiBjB,GAC5BJ,KAAKsB,sBAAsBb,KAAKL,E,CA6C1B,sBAAMiB,CAAiBjB,GAC7B,GAAIJ,KAAKK,gBAAiB,CACxBL,KAAKuB,kBAAkBnB,GACvB,M,CAGF,MAAMoB,OAAEA,EAAMC,QAAEA,GAAYC,EAAQ1B,KAAK2B,IAAK,CAAEC,SAAU,MAC1D,MAAMC,SAAEA,EAAQC,OAAEA,GAAWC,EAAY/B,KAAK2B,IAAK,CAAEC,SAAU,MAE/D,GAAIxB,EAAQ,OACJ4B,EAASP,EAASI,GAAUI,QAClCjC,KAAKuB,kBAAkB,K,KAClB,CACLvB,KAAKuB,kBAAkB,aACjBS,EAASF,EAAQN,GAAQS,O,EAQ3B,iBAAAV,CAAkBnB,GACxBJ,KAAK2B,IAAIO,UAAUC,OAAO,SAAU/B,E,CAOtC,iBAAAgC,GACE,GAAIpC,KAAKkB,MAAO,CACd,OAAQlB,KAAKkB,OACX,IAAK,UACHlB,KAAKC,SAAW,UAChB,MACF,IAAK,YACHD,KAAKC,SAAW,cAChB,MACF,IAAK,UACHD,KAAKC,SAAW,cAChB,MACF,QACED,KAAKC,SAAWD,KAAKkB,M,CAI3B,GAAIlB,KAAKI,OAAQ,CACfJ,KAAK2B,IAAIO,UAAUG,IAAI,S,EAQ3B,MAAAC,G,MACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,KAAK,QAAQC,MAAOC,EAAK,OAAQ,YAAY5C,KAAKC,aACtDsC,EAAA,WAAAE,IAAA,2CACEI,MAAMC,EAAA9C,KAAK+C,QAAI,MAAAD,SAAA,EAAAA,EAAI9C,KAAKU,iBACxBiC,MAAO,QAAQ3C,KAAKC,WACpB+C,KAAK,OAGPT,EAAA,OAAAE,IAAA,2CAAKE,MAAM,WACR3C,KAAKiD,SAAWV,EAAA,KAAAE,IAAA,2CAAGE,MAAM,WAAW3C,KAAKiD,SAEzCjD,KAAKkD,SAAWX,EAAA,KAAAE,IAAA,2CAAGE,MAAM,WAAW3C,KAAKkD,SAE1CX,EAAA,QAAAE,IAAA,8CAGDzC,KAAKE,aACJqC,EAAA,UAAAE,IAAA,2CAAQE,MAAM,QAAQQ,KAAK,SAASC,QAASpD,KAAKM,eAChDiC,EAAA,WAAAE,IAAA,2CAASI,KAAK,IAAIG,KAAK,Q","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,c as r,h as o,a as d,g as i}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as e,c as r,h as o,a as d,g as i}from"./p-ab002252.js";import{c as a}from"./p-8a1a6e56.js";import{v as t}from"./p-f5ff676c.js";const n='nv-fieldradio{--nv-fieldradio-border-default:var(--components-form-field-border-default);--nv-fieldradio-border-hover:var(--components-form-field-border-hover);--nv-fieldradio-border-focus:var(--components-form-field-border-default);--nv-fieldradio-background-default:var(--components-form-field-background-default);--nv-fieldradio-background-checked:var(--components-form-field-background-checked);--nv-fieldradio-background-disabled:var(--components-form-field-background-disabled);--nv-fieldradio-focus-box-shadow:var(--color-focus-brand);--nv-fieldradio-dot-color-checked:var(--components-form-shape-foreground-default);--nv-fieldradio-dot-color-disabled:var(--components-form-shape-foreground-disabled);--nv-fieldradio-outline-color:var(--color-focus-brand);display:inline-flex;align-items:flex-start;gap:var(--form-gap-x)}nv-fieldradio:not([disabled]) input,nv-fieldradio:not([disabled]) label,nv-fieldradio[disabled=false] input,nv-fieldradio[disabled=false] label{cursor:pointer}nv-fieldradio.error{--nv-fieldradio-border-default:var(--components-form-field-border-error);--nv-fieldradio-border-hover:var(--nv-fieldradio-border-default);--nv-fieldradio-border-focus:var(--components-form-field-border-error);--nv-fieldradio-background-checked:var(--components-form-field-background-error);--nv-fieldradio-focus-box-shadow:var(--color-focus-destructive);--nv-fieldradio-dot-color-checked:var(--components-form-shape-foreground-default);--nv-fieldradio-dot-color-disabled:var(--components-form-field-border-error);--nv-fieldradio-outline-color:var(--color-focus-destructive)}nv-fieldradio.label-placement-before{flex-direction:row-reverse}nv-fieldradio[disabled]{opacity:0.5}nv-fieldradio label{align-self:stretch;color:var(--components-form-text-label-default);font-family:"TT Norms Pro", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:var(--form-label-font-weight);line-height:var(--form-label-line-height)}nv-fieldradio input[type=radio]{appearance:none;position:relative;display:flex;width:var(--form-radio-size);height:var(--form-radio-size);padding:var(--form-radio-inner-circle-padding);flex-direction:column;align-items:flex-start;border-radius:var(--radius-rounded-full);border-width:var(--form-radio-border-width);border-style:solid;border-color:var(--nv-fieldradio-border-default);background:var(--nv-fieldradio-background-default)}nv-fieldradio input[type=radio]:hover{border-color:var(--nv-fieldradio-border-hover)}nv-fieldradio input[type=radio]:focus{border-color:var(--nv-fieldradio-border-focus)}nv-fieldradio input[type=radio]:focus,nv-fieldradio input[type=radio]:focus-within{outline:none}nv-fieldradio input[type=radio]:focus-visible,nv-fieldradio input[type=radio]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--nv-fieldradio-outline-color);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-fieldradio input[type=radio]:checked{background:var(--nv-fieldradio-background-checked);border-color:var(--nv-fieldradio-background-checked)}nv-fieldradio input[type=radio]:checked:hover,nv-fieldradio input[type=radio]:checked:focus{border-color:var(--nv-fieldradio-background-checked);background:var(--nv-fieldradio-background-checked)}nv-fieldradio input[type=radio]:checked::before{content:"";position:absolute;top:50%;right:50%;transform:translate(50%, -50%);left:0;width:var(--form-radio-inner-circle-size);height:var(--form-radio-inner-circle-size);flex-shrink:0;border-radius:var(--radius-rounded-full);background:var(--nv-fieldradio-dot-color-checked)}nv-fieldradio input[type=radio]:disabled{border-radius:var(--radius-rounded-full);border-width:var(--form-radio-border-width);border-style:solid;border-color:var(--nv-fieldradio-border-default);background:var(--nv-fieldradio-background-disabled)}nv-fieldradio input[type=radio]:disabled:checked::before{background:var(--nv-fieldradio-dot-color-disabled)}nv-fieldradio input[type=radio]:disabled:hover{border-color:var(--nv-fieldradio-border-default);background:var(--nv-fieldradio-background-disabled)}nv-fieldradio .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:"TT Norms Pro", sans-serif;font-size:var(--form-description-font-size);font-style:normal;font-weight:var(--form-description-font-weight);line-height:var(--form-description-line-height)}nv-fieldradio .error-description{align-self:stretch;color:var(--components-form-text-description-default);font-family:"TT Norms Pro", sans-serif;font-size:var(--form-description-font-size);font-style:normal;font-weight:var(--form-description-font-weight);line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}nv-fieldradio .text-container{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0}';const l=n;const f=class{constructor(o){e(this,o);this.checkedChanged=r(this,"checkedChanged",7);this.labelBefore=false;this.inputId=t();this.error=false;this.checked=false;this.disabled=false;this.autofocus=false}componentWillRender(){if(this.message){this.description=this.message}if(this.labelBefore){this.labelPlacement="before"}}handleCheckedChange(e){this.checkedChanged.emit(e)}handleChange(e){const r=e.target;if((r===null||r===void 0?void 0:r.type)==="radio"){Array.from(document.getElementsByTagName("nv-fieldradio")).forEach((e=>{if(e.name===this.name){e.checked=false}}));this.checked=r.checked}}render(){return o(d,{key:"cab4d25a83792d8f0d3f5de48073a621f8b1823e",class:a(this.labelPlacement==="before"&&"label-placement-before",this.error&&"error")},o("input",{key:"a923e6ad8e76b90c5e00ae17a353614b8f7390b1",type:"radio",id:this.inputId,name:this.name,autofocus:this.autofocus,autocomplete:"off",value:this.value,checked:this.checked,disabled:this.disabled}),o("div",{key:"585cc5389b0190e2291447d188637e8325d937aa",class:"text-container"},(this.label||this.el.querySelector('[slot="label"]'))&&o("label",{key:"7e16f9cd7078e11661685a141afbd46472683e0f",htmlFor:this.inputId},o("slot",{key:"3e9aab3f47e1a0c96a6e3b6f2495428bce324962",name:"label"},this.label)),(this.description||this.el.querySelector('[slot="description"]'))&&o("div",{key:"0c2b8b8e49dd877131c37bb23d450e254c58fcdc",class:"description"},o("slot",{key:"fd3d99a005667b46260dde7d84f4c6b82e4e4853",name:"description"},this.description)),(this.errorDescription||this.el.querySelector('[slot="error-description"]'))&&o("div",{key:"d524f91210f3e28627e68f380484d1c28ab962d9",hidden:!this.error,class:"error-description"},o("slot",{key:"416222f3b3db021de57b35697a64270582f6bad7",name:"error-description"},this.errorDescription))))}static get formAssociated(){return true}get el(){return i(this)}static get watchers(){return{checked:["handleCheckedChange"]}}};f.style=l;export{f as nv_fieldradio};
|
|
2
|
+
//# sourceMappingURL=p-514101d6.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["nvFieldradioCss","NvFieldradioStyle0","NvFieldradio","constructor","hostRef","this","labelBefore","inputId","uuidv4","error","checked","disabled","autofocus","componentWillRender","message","description","labelPlacement","handleCheckedChange","checkedChanged","emit","handleChange","event","target","type","Array","from","document","getElementsByTagName","forEach","element","name","render","h","Host","key","class","clsx","id","autocomplete","value","label","el","querySelector","htmlFor","errorDescription","hidden"],"sources":["src/components/nv-fieldradio/nv-fieldradio.scss?tag=nv-fieldradio","src/components/nv-fieldradio/nv-fieldradio.tsx"],"sourcesContent":["@import \"../../styles/focus-ring\";\n\n@mixin fieldradio-variables() {\n --nv-fieldradio-border-default: var(--components-form-field-border-default);\n --nv-fieldradio-border-hover: var(--components-form-field-border-hover);\n --nv-fieldradio-border-focus: var(--components-form-field-border-default);\n --nv-fieldradio-background-default: var(--components-form-field-background-default);\n --nv-fieldradio-background-checked: var(--components-form-field-background-checked);\n --nv-fieldradio-background-disabled: var(--components-form-field-background-disabled);\n --nv-fieldradio-focus-box-shadow: var(--color-focus-brand);\n --nv-fieldradio-dot-color-checked: var(--components-form-shape-foreground-default);\n --nv-fieldradio-dot-color-disabled: var(--components-form-shape-foreground-disabled);\n --nv-fieldradio-outline-color: var(--color-focus-brand);\n}\n\n@mixin fieldradio-error-variables() {\n --nv-fieldradio-border-default: var(--components-form-field-border-error);\n --nv-fieldradio-border-hover: var(--nv-fieldradio-border-default);\n --nv-fieldradio-border-focus: var(--components-form-field-border-error);\n --nv-fieldradio-background-checked: var(--components-form-field-background-error);\n --nv-fieldradio-focus-box-shadow: var(--color-focus-destructive);\n --nv-fieldradio-dot-color-checked: var(--components-form-shape-foreground-default);\n --nv-fieldradio-dot-color-disabled: var(--components-form-field-border-error);\n --nv-fieldradio-outline-color: var(--color-focus-destructive);\n\n}\n\n@mixin root-styles() {\n display: inline-flex;\n align-items: flex-start;\n gap: var(--form-gap-x);\n\n &:not([disabled]),\n &[disabled=\"false\"] {\n input,\n label {\n cursor: pointer;\n }\n }\n}\n\n@mixin label-before-styles() {\n flex-direction: row-reverse;\n}\n\n@mixin label-styles() {\n align-self: stretch;\n color: var(--components-form-text-label-default);\n font-family: \"TT Norms Pro\", sans-serif;\n font-size: var(--form-label-font-size);\n font-style: normal;\n font-weight: var(--form-label-font-weight);\n line-height: var(--form-label-line-height);\n}\n\n@mixin description-styles() {\n align-self: stretch;\n color: var(--components-form-text-description-default);\n font-family: \"TT Norms Pro\", sans-serif;\n font-size: var(--form-description-font-size);\n font-style: normal;\n font-weight: var(--form-description-font-weight);\n line-height: var(--form-description-line-height);\n}\n\n@mixin error-description-styles() {\n @include description-styles();\n\n color: var(--components-form-text-description-error);\n}\n\n@mixin text-container-styles() {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n flex: 1 0 0;\n}\n\n@mixin input-styles() {\n appearance: none;\n position: relative;\n display: flex;\n width: var(--form-radio-size);\n height: var(--form-radio-size);\n padding: var(--form-radio-inner-circle-padding);\n flex-direction: column;\n align-items: flex-start;\n //gap: 10px;\n border-radius: var(--radius-rounded-full);\n border-width: var(--form-radio-border-width);\n border-style: solid;\n border-color: var(--nv-fieldradio-border-default);\n background: var(--nv-fieldradio-background-default);\n\n &:hover {\n border-color: var(--nv-fieldradio-border-hover);\n }\n\n &:focus {\n border-color: var(--nv-fieldradio-border-focus);\n }\n\n @include focus-ring(var(--nv-fieldradio-outline-color));\n\n &:checked {\n background: var(--nv-fieldradio-background-checked);\n border-color: var(--nv-fieldradio-background-checked);\n\n &:hover,\n &:focus {\n border-color: var(--nv-fieldradio-background-checked);\n background: var(--nv-fieldradio-background-checked);\n }\n\n &::before {\n content: \"\";\n position: absolute;\n top: 50%;\n right: 50%;\n transform: translate(50%, -50%);\n left: 0;\n width: var(--form-radio-inner-circle-size);\n height: var(--form-radio-inner-circle-size);\n flex-shrink: 0;\n border-radius: var(--radius-rounded-full);\n background: var(--nv-fieldradio-dot-color-checked);\n }\n }\n\n &:disabled {\n border-radius: var(--radius-rounded-full);\n border-width: var(--form-radio-border-width);\n border-style: solid;\n border-color: var(--nv-fieldradio-border-default);\n background: var(--nv-fieldradio-background-disabled);\n\n &:checked {\n &::before {\n background: var(--nv-fieldradio-dot-color-disabled);\n }\n }\n\n &:hover {\n border-color: var(--nv-fieldradio-border-default);\n background: var(--nv-fieldradio-background-disabled);\n }\n }\n}\n\nnv-fieldradio {\n @include fieldradio-variables();\n @include root-styles();\n\n &.error {\n @include fieldradio-error-variables();\n }\n\n &.label-placement-before {\n @include label-before-styles();\n }\n \n &[disabled] {\n // TODO: Find a way to use the --components-form-opacity-disabled variable properly, right now it outputs a value of 50px instead of 0.5.\n // opacity: var(--components-form-opacity-disabled); Error: Invalid value for --components-form-opacity-disabled (expected a <number> but got \"50px\")\n opacity: 0.5;\n }\n\n label {\n @include label-styles();\n }\n\n input[type=\"radio\"] {\n @include input-styles();\n }\n\n .description {\n @include description-styles();\n }\n\n .error-description {\n @include error-description-styles();\n }\n\n .text-container {\n @include text-container-styles();\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Listen,\n Watch,\n Element,\n} from '@stencil/core';\nimport clsx from 'clsx';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { type LabelPlacement } from '../../utils/constants';\n\n/**\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n */\n@Component({\n tag: 'nv-fieldradio',\n shadow: false,\n styleUrl: 'nv-fieldradio.scss',\n formAssociated: true,\n})\nexport class NvFieldradio {\n @Element() el: HTMLNvFieldradioElement;\n\n /****************************************************************************/\n //#region DEPRECATED\n\n /**\n * Adds a helpful hint message below the label\n * @deprecated use description instead.\n */\n @Prop({ reflect: true })\n readonly message: string;\n\n /**\n * Set the label placement to before the input\n * @deprecated use labelPlacement instead.\n */\n @Prop({ reflect: true })\n readonly labelBefore: boolean = false;\n\n componentWillRender() {\n if (this.message) {\n this.description = this.message;\n }\n\n if (this.labelBefore) {\n this.labelPlacement = 'before';\n }\n }\n\n //#endregion DEPRECATED\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Sets the ID for the radio button’s input element and the for attribute of\n * the associated label. If no ID is provided, a random one will be\n * automatically generated to ensure unique identification, facilitating\n * proper label association and accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Use this to assign a group name to your radio buttons. When you have\n * multiple radio buttons with the same name, users will be able to select\n * only one option within that group, making your forms more organized and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Defines what data will be sent when the radio button is selected.\n * This helps you identify which option the user has chosen in your form,\n * ensuring accurate data collection. When the form is submitted, the data\n * will consist of a name=value pair.\n */\n @Prop({ reflect: true })\n readonly value: string;\n\n /**\n * Sets the text content that is rendered next to the input element of type\n * radio. This label is essential for accessibility and user clarity, as it\n * describes the purpose or option of the radio button.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Defines the position of the label relative to the radio button.\n */\n @Prop({ mutable: true, reflect: true })\n labelPlacement: `${LabelPlacement}`;\n\n /**\n * Adds a helpful hint message below the label. This description provides\n * extra information or context about the radio button option, assisting users\n * in making more informed choices.\n */\n @Prop({ mutable: true, reflect: true })\n description: string;\n\n /**\n * Highlight the radio button with error styling. It helps users quickly\n * identify which option needs attention, improving their form-filling\n * experience by making issues more visible.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the radio\n * button.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Controls whether the radio button is selected.\n */\n @Prop({ mutable: true, reflect: true })\n checked: boolean = false;\n\n /**\n * Disables the radio button, making it un-selectable.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emits when the checked state changes.\n * @bind checked\n */\n @Event()\n checkedChanged: EventEmitter<boolean>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region WATCHERS\n\n /**\n * Watches for changes to the checked state and emits the new value.\n * @param {boolean} checked - The new value of the checked state.\n */\n @Watch('checked')\n handleCheckedChange(checked: boolean) {\n this.checkedChanged.emit(checked);\n }\n\n /**\n * Listens for the change event on the radio button input element and controls\n * the checked state of the host elements.\n * @param {Event} event - The change event.\n */\n @Listen('change')\n handleChange(event: Event) {\n const target = event.target as HTMLInputElement;\n\n if (target?.type === 'radio') {\n Array.from(document.getElementsByTagName('nv-fieldradio')).forEach(\n element => {\n if (element.name === this.name) {\n element.checked = false;\n }\n },\n );\n\n this.checked = target.checked;\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host\n class={clsx(\n this.labelPlacement === 'before' && 'label-placement-before',\n this.error && 'error',\n )}\n >\n <input\n type=\"radio\"\n id={this.inputId}\n name={this.name}\n autofocus={this.autofocus}\n autocomplete=\"off\"\n value={this.value}\n checked={this.checked}\n disabled={this.disabled}\n />\n\n <div class=\"text-container\">\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </div>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"mappings":"wIAAA,MAAMA,EAAkB,osJACxB,MAAAC,EAAeD,E,MC0BFE,EAAY,MANzB,WAAAC,CAAAC,G,yDAwBWC,KAAAC,YAAuB,MAuBvBD,KAAAE,QAAkBC,IAiDlBH,KAAAI,MAAiB,MAc1BJ,KAAAK,QAAmB,MAMVL,KAAAM,SAAoB,MASpBN,KAAAO,UAAqB,K,CAnG9B,mBAAAC,GACE,GAAIR,KAAKS,QAAS,CAChBT,KAAKU,YAAcV,KAAKS,O,CAG1B,GAAIT,KAAKC,YAAa,CACpBD,KAAKW,eAAiB,Q,EAmH1B,mBAAAC,CAAoBP,GAClBL,KAAKa,eAAeC,KAAKT,E,CAS3B,YAAAU,CAAaC,GACX,MAAMC,EAASD,EAAMC,OAErB,IAAIA,IAAM,MAANA,SAAM,SAANA,EAAQC,QAAS,QAAS,CAC5BC,MAAMC,KAAKC,SAASC,qBAAqB,kBAAkBC,SACzDC,IACE,GAAIA,EAAQC,OAASzB,KAAKyB,KAAM,CAC9BD,EAAQnB,QAAU,K,KAKxBL,KAAKK,QAAUY,EAAOZ,O,EAQ1B,MAAAqB,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAOC,EACL/B,KAAKW,iBAAmB,UAAY,yBACpCX,KAAKI,OAAS,UAGhBuB,EAAA,SAAAE,IAAA,2CACEX,KAAK,QACLc,GAAIhC,KAAKE,QACTuB,KAAMzB,KAAKyB,KACXlB,UAAWP,KAAKO,UAChB0B,aAAa,MACbC,MAAOlC,KAAKkC,MACZ7B,QAASL,KAAKK,QACdC,SAAUN,KAAKM,WAGjBqB,EAAA,OAAAE,IAAA,2CAAKC,MAAM,mBACP9B,KAAKmC,OAASnC,KAAKoC,GAAGC,cAAc,oBACpCV,EAAA,SAAAE,IAAA,2CAAOS,QAAStC,KAAKE,SACnByB,EAAA,QAAAE,IAAA,2CAAMJ,KAAK,SAASzB,KAAKmC,SAI3BnC,KAAKU,aACLV,KAAKoC,GAAGC,cAAc,0BACtBV,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eACTH,EAAA,QAAAE,IAAA,2CAAMJ,KAAK,eAAezB,KAAKU,eAIjCV,KAAKuC,kBACLvC,KAAKoC,GAAGC,cAAc,gCACtBV,EAAA,OAAAE,IAAA,2CAAKW,QAASxC,KAAKI,MAAO0B,MAAM,qBAC9BH,EAAA,QAAAE,IAAA,2CAAMJ,KAAK,qBAAqBzB,KAAKuC,oB","ignoreList":[]}
|