@expressivecss/expressive 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1502 -1
- package/README.md +9 -8
- package/dist/css/expressive.css +19247 -11923
- package/dist/css/expressive.css.map +1 -1
- package/dist/css/expressive.min.css +1 -1
- package/dist/css/expressive.min.css.map +1 -1
- package/dist/fonts/LICENSE-noto-sans-arabic +93 -0
- package/dist/fonts/LICENSE-noto-sans-hebrew +93 -0
- package/dist/fonts/LICENSE-noto-sans-thai +93 -0
- package/dist/fonts/material-symbols-outlined.woff2 +0 -0
- package/dist/fonts/material-symbols-rounded.woff2 +0 -0
- package/dist/fonts/material-symbols-sharp.woff2 +0 -0
- package/dist/fonts/noto-sans-arabic-arabic-400.woff2 +0 -0
- package/dist/fonts/noto-sans-arabic-arabic-500.woff2 +0 -0
- package/dist/fonts/noto-sans-arabic-arabic-700.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-400.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-500.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-700.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-ext-400.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-ext-500.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-ext-700.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari-400.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari-500.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari-700.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-400.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-500.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-700.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-ext-400.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-ext-500.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-ext-700.woff2 +0 -0
- package/dist/fonts/noto-sans-hebrew-hebrew-400.woff2 +0 -0
- package/dist/fonts/noto-sans-hebrew-hebrew-500.woff2 +0 -0
- package/dist/fonts/noto-sans-hebrew-hebrew-700.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-700.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-ext-400.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-ext-500.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-ext-700.woff2 +0 -0
- package/dist/fonts/noto-sans-thai-thai-400.woff2 +0 -0
- package/dist/fonts/noto-sans-thai-thai-500.woff2 +0 -0
- package/dist/fonts/noto-sans-thai-thai-700.woff2 +0 -0
- package/dist/fonts/noto-sans-vietnamese-400.woff2 +0 -0
- package/dist/fonts/noto-sans-vietnamese-500.woff2 +0 -0
- package/dist/fonts/noto-sans-vietnamese-700.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-400.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-500.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-700.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-ext-400.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-ext-500.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-ext-700.woff2 +0 -0
- package/dist/fonts/roboto-greek-400.woff2 +0 -0
- package/dist/fonts/roboto-greek-500.woff2 +0 -0
- package/dist/fonts/roboto-greek-700.woff2 +0 -0
- package/dist/fonts/roboto-greek-ext-400.woff2 +0 -0
- package/dist/fonts/roboto-greek-ext-500.woff2 +0 -0
- package/dist/fonts/roboto-greek-ext-700.woff2 +0 -0
- package/dist/fonts/roboto-latin-700.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-400.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-500.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-700.woff2 +0 -0
- package/dist/fonts/roboto-vietnamese-400.woff2 +0 -0
- package/dist/fonts/roboto-vietnamese-500.woff2 +0 -0
- package/dist/fonts/roboto-vietnamese-700.woff2 +0 -0
- package/dist/js/chunks/chunk-2CS6TITK.mjs +219 -0
- package/dist/js/chunks/chunk-2CS6TITK.mjs.map +7 -0
- package/dist/js/chunks/chunk-2RLBDFH4.mjs +108 -0
- package/dist/js/chunks/chunk-2RLBDFH4.mjs.map +7 -0
- package/dist/js/chunks/chunk-3L3QIYLC.mjs +85 -0
- package/dist/js/chunks/chunk-3L3QIYLC.mjs.map +7 -0
- package/dist/js/chunks/chunk-4EWGD4V2.mjs +75 -0
- package/dist/js/chunks/chunk-4EWGD4V2.mjs.map +7 -0
- package/dist/js/chunks/chunk-4IKVPCSU.mjs +7 -0
- package/dist/js/chunks/chunk-4IKVPCSU.mjs.map +7 -0
- package/dist/js/chunks/chunk-4PIXLDNJ.mjs +127 -0
- package/dist/js/chunks/chunk-4PIXLDNJ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-4QUCNFSD.mjs} +64 -113
- package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +7 -0
- package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-4TRZ2AER.mjs} +35 -41
- package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +7 -0
- package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-5KIHWJI2.mjs} +40 -26
- package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +7 -0
- package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-67ZPPKXS.mjs} +20 -33
- package/dist/js/chunks/chunk-67ZPPKXS.mjs.map +7 -0
- package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-6FSEUFVW.mjs} +39 -26
- package/dist/js/chunks/chunk-6FSEUFVW.mjs.map +7 -0
- package/dist/js/chunks/chunk-752ADW4M.mjs +225 -0
- package/dist/js/chunks/chunk-752ADW4M.mjs.map +7 -0
- package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-75E5EDJF.mjs} +3 -11
- package/dist/js/chunks/chunk-75E5EDJF.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-7NLUI3RR.mjs} +139 -66
- package/dist/js/chunks/chunk-7NLUI3RR.mjs.map +7 -0
- package/dist/js/chunks/chunk-7W7TV6NY.mjs +108 -0
- package/dist/js/chunks/chunk-7W7TV6NY.mjs.map +7 -0
- package/dist/js/chunks/chunk-7YQBHTK3.mjs +225 -0
- package/dist/js/chunks/chunk-7YQBHTK3.mjs.map +7 -0
- package/dist/js/chunks/chunk-7YZ5CN3V.mjs +33 -0
- package/dist/js/chunks/chunk-7YZ5CN3V.mjs.map +7 -0
- package/dist/js/chunks/chunk-AI73GJKG.mjs +28 -0
- package/dist/js/chunks/chunk-AI73GJKG.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-ANKFWNWT.mjs} +21 -45
- package/dist/js/chunks/chunk-ANKFWNWT.mjs.map +7 -0
- package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-B7DQFHA5.mjs} +30 -47
- package/dist/js/chunks/chunk-B7DQFHA5.mjs.map +7 -0
- package/dist/js/chunks/chunk-BIGU5RCJ.mjs +153 -0
- package/dist/js/chunks/chunk-BIGU5RCJ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-BPF3I2MN.mjs} +109 -24
- package/dist/js/chunks/chunk-BPF3I2MN.mjs.map +7 -0
- package/dist/js/chunks/chunk-CMGXGYUC.mjs +74 -0
- package/dist/js/chunks/chunk-CMGXGYUC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-CSYWKEK3.mjs} +310 -196
- package/dist/js/chunks/chunk-CSYWKEK3.mjs.map +7 -0
- package/dist/js/chunks/chunk-CZSQHXEV.mjs +227 -0
- package/dist/js/chunks/chunk-CZSQHXEV.mjs.map +7 -0
- package/dist/js/chunks/chunk-DZYVU75J.mjs +121 -0
- package/dist/js/chunks/chunk-DZYVU75J.mjs.map +7 -0
- package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-EC26RU2D.mjs} +11 -29
- package/dist/js/chunks/chunk-EC26RU2D.mjs.map +7 -0
- package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-EVCVFEV3.mjs} +235 -146
- package/dist/js/chunks/chunk-EVCVFEV3.mjs.map +7 -0
- package/dist/js/chunks/chunk-FCNF4GRJ.mjs +445 -0
- package/dist/js/chunks/chunk-FCNF4GRJ.mjs.map +7 -0
- package/dist/js/chunks/chunk-GCWWEZKO.mjs +342 -0
- package/dist/js/chunks/chunk-GCWWEZKO.mjs.map +7 -0
- package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
- package/dist/js/chunks/chunk-GVZQH2H5.mjs +54 -0
- package/dist/js/chunks/chunk-GVZQH2H5.mjs.map +7 -0
- package/dist/js/chunks/chunk-GWZ76SR4.mjs +435 -0
- package/dist/js/chunks/chunk-GWZ76SR4.mjs.map +7 -0
- package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-ILDRRG7T.mjs} +21 -23
- package/dist/js/chunks/chunk-ILDRRG7T.mjs.map +7 -0
- package/dist/js/chunks/chunk-INLZWHLY.mjs +80 -0
- package/dist/js/chunks/chunk-INLZWHLY.mjs.map +7 -0
- package/dist/js/chunks/chunk-JUKBBN6P.mjs +175 -0
- package/dist/js/chunks/chunk-JUKBBN6P.mjs.map +7 -0
- package/dist/js/chunks/chunk-KYIEG4U3.mjs +730 -0
- package/dist/js/chunks/chunk-KYIEG4U3.mjs.map +7 -0
- package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-KZPSAXIU.mjs} +142 -32
- package/dist/js/chunks/chunk-KZPSAXIU.mjs.map +7 -0
- package/dist/js/chunks/chunk-LDXCC2L3.mjs +438 -0
- package/dist/js/chunks/chunk-LDXCC2L3.mjs.map +7 -0
- package/dist/js/chunks/chunk-NAC72P7R.mjs +137 -0
- package/dist/js/chunks/chunk-NAC72P7R.mjs.map +7 -0
- package/dist/js/chunks/chunk-NBJAUGPP.mjs +244 -0
- package/dist/js/chunks/chunk-NBJAUGPP.mjs.map +7 -0
- package/dist/js/chunks/chunk-NNHVANQA.mjs +113 -0
- package/dist/js/chunks/chunk-NNHVANQA.mjs.map +7 -0
- package/dist/js/chunks/chunk-NVQ5EHCU.mjs +376 -0
- package/dist/js/chunks/chunk-NVQ5EHCU.mjs.map +7 -0
- package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-OP43LLIC.mjs} +28 -45
- package/dist/js/chunks/chunk-OP43LLIC.mjs.map +7 -0
- package/dist/js/chunks/chunk-OUCHKSAW.mjs +63 -0
- package/dist/js/chunks/chunk-OUCHKSAW.mjs.map +7 -0
- package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-OYNUDOHR.mjs} +19 -47
- package/dist/js/chunks/chunk-OYNUDOHR.mjs.map +7 -0
- package/dist/js/chunks/{chunk-UAZSDUVP.mjs → chunk-P6DRQ6KS.mjs} +36 -30
- package/dist/js/chunks/chunk-P6DRQ6KS.mjs.map +7 -0
- package/dist/js/chunks/chunk-PA7NU5AK.mjs +99 -0
- package/dist/js/chunks/chunk-PA7NU5AK.mjs.map +7 -0
- package/dist/js/chunks/chunk-QACZ6TUP.mjs +224 -0
- package/dist/js/chunks/chunk-QACZ6TUP.mjs.map +7 -0
- package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-QXKWVHBD.mjs} +265 -161
- package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +7 -0
- package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-ROH2HDB4.mjs} +7 -6
- package/dist/js/chunks/chunk-ROH2HDB4.mjs.map +7 -0
- package/dist/js/chunks/chunk-S23RJ3XY.mjs +86 -0
- package/dist/js/chunks/chunk-S23RJ3XY.mjs.map +7 -0
- package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-SPPHF7YZ.mjs} +36 -29
- package/dist/js/chunks/chunk-SPPHF7YZ.mjs.map +7 -0
- package/dist/js/chunks/chunk-T3BNSRP3.mjs +152 -0
- package/dist/js/chunks/chunk-T3BNSRP3.mjs.map +7 -0
- package/dist/js/chunks/chunk-TFABTUAZ.mjs +108 -0
- package/dist/js/chunks/chunk-TFABTUAZ.mjs.map +7 -0
- package/dist/js/chunks/chunk-U4B3VHFS.mjs +507 -0
- package/dist/js/chunks/chunk-U4B3VHFS.mjs.map +7 -0
- package/dist/js/chunks/chunk-UGJHCHXG.mjs +341 -0
- package/dist/js/chunks/chunk-UGJHCHXG.mjs.map +7 -0
- package/dist/js/chunks/chunk-VFV75DHF.mjs +70 -0
- package/dist/js/chunks/chunk-VFV75DHF.mjs.map +7 -0
- package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-VGY4M57S.mjs} +266 -120
- package/dist/js/chunks/chunk-VGY4M57S.mjs.map +7 -0
- package/dist/js/chunks/chunk-VH4BMAZS.mjs +167 -0
- package/dist/js/chunks/chunk-VH4BMAZS.mjs.map +7 -0
- package/dist/js/chunks/chunk-VJVQIXHC.mjs +123 -0
- package/dist/js/chunks/chunk-VJVQIXHC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-VMY55K2X.mjs} +76 -109
- package/dist/js/chunks/chunk-VMY55K2X.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-VR3L2WN5.mjs} +11 -17
- package/dist/js/chunks/chunk-VR3L2WN5.mjs.map +7 -0
- package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
- package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
- package/dist/js/chunks/chunk-WU7XJ4RR.mjs +450 -0
- package/dist/js/chunks/chunk-WU7XJ4RR.mjs.map +7 -0
- package/dist/js/chunks/chunk-X7SDA2J5.mjs +116 -0
- package/dist/js/chunks/chunk-X7SDA2J5.mjs.map +7 -0
- package/dist/js/chunks/chunk-Y6H2X7ZC.mjs +209 -0
- package/dist/js/chunks/chunk-Y6H2X7ZC.mjs.map +7 -0
- package/dist/js/chunks/chunk-Y6TLRA3U.mjs +129 -0
- package/dist/js/chunks/chunk-Y6TLRA3U.mjs.map +7 -0
- package/dist/js/chunks/chunk-Z4GICXR2.mjs +190 -0
- package/dist/js/chunks/chunk-Z4GICXR2.mjs.map +7 -0
- package/dist/js/chunks/chunk-Z4OARDZ7.mjs +442 -0
- package/dist/js/chunks/chunk-Z4OARDZ7.mjs.map +7 -0
- package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-ZJNLAGY5.mjs} +19 -30
- package/dist/js/chunks/chunk-ZJNLAGY5.mjs.map +7 -0
- package/dist/js/chunks/chunk-ZKWUWBUB.mjs +81 -0
- package/dist/js/chunks/chunk-ZKWUWBUB.mjs.map +7 -0
- package/dist/js/chunks/chunk-ZM3XBHWV.mjs +746 -0
- package/dist/js/chunks/chunk-ZM3XBHWV.mjs.map +7 -0
- package/dist/js/chunks/chunk-ZO6ZLHFF.mjs +48 -0
- package/dist/js/chunks/chunk-ZO6ZLHFF.mjs.map +7 -0
- package/dist/js/chunks/chunk-ZVLOUDIJ.mjs +251 -0
- package/dist/js/chunks/chunk-ZVLOUDIJ.mjs.map +7 -0
- package/dist/js/expressive.cjs +10613 -4327
- package/dist/js/expressive.cjs.map +4 -4
- package/dist/js/expressive.js +10613 -4327
- package/dist/js/expressive.js.map +4 -4
- package/dist/js/expressive.min.js +23 -22
- package/dist/js/expressive.min.js.map +4 -4
- package/dist/js/expressive.mjs +182 -71
- package/dist/js/expressive.mjs.map +2 -2
- package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
- package/dist/js/internal/behaviors/copy.mjs +9 -0
- package/dist/js/internal/behaviors/copy.mjs.map +7 -0
- package/dist/js/internal/behaviors/dataTables.mjs +10 -0
- package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
- package/dist/js/internal/behaviors/dialogs.mjs +2 -2
- package/dist/js/internal/behaviors/forms.mjs +2 -2
- package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
- package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
- package/dist/js/internal/behaviors/lists.mjs +8 -0
- package/dist/js/internal/behaviors/lists.mjs.map +7 -0
- package/dist/js/internal/behaviors/paneResize.mjs +8 -0
- package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
- package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
- package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
- package/dist/js/internal/behaviors/sortable.mjs +8 -0
- package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
- package/dist/js/internal/behaviors/theme.mjs +8 -0
- package/dist/js/internal/behaviors/theme.mjs.map +7 -0
- package/dist/js/internal/behaviors/tour.mjs +8 -0
- package/dist/js/internal/behaviors/tour.mjs.map +7 -0
- package/dist/js/internal/behaviors/transferList.mjs +8 -0
- package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
- package/dist/js/internal/components/appBar.mjs +3 -2
- package/dist/js/internal/components/autocomplete.mjs +4 -4
- package/dist/js/internal/components/backToTop.mjs +9 -0
- package/dist/js/internal/components/backToTop.mjs.map +7 -0
- package/dist/js/internal/components/barChart.mjs +5 -4
- package/dist/js/internal/components/buttonGroup.mjs +3 -2
- package/dist/js/internal/components/buttons.mjs +3 -3
- package/dist/js/internal/components/cards.mjs +3 -3
- package/dist/js/internal/components/carousel.mjs +3 -3
- package/dist/js/internal/components/cascader.mjs +10 -0
- package/dist/js/internal/components/cascader.mjs.map +7 -0
- package/dist/js/internal/components/characterCounter.mjs +3 -2
- package/dist/js/internal/components/chips.mjs +6 -5
- package/dist/js/internal/components/colorPicker.mjs +9 -0
- package/dist/js/internal/components/colorPicker.mjs.map +7 -0
- package/dist/js/internal/components/columnChart.mjs +4 -3
- package/dist/js/internal/components/commandPalette.mjs +3 -3
- package/dist/js/internal/components/confetti.mjs +3 -2
- package/dist/js/internal/components/currencyInput.mjs +9 -0
- package/dist/js/internal/components/currencyInput.mjs.map +7 -0
- package/dist/js/internal/components/datepicker.mjs +11 -8
- package/dist/js/internal/components/expandingCard.mjs +3 -3
- package/dist/js/internal/components/funnelChart.mjs +10 -0
- package/dist/js/internal/components/funnelChart.mjs.map +7 -0
- package/dist/js/internal/components/heatmapChart.mjs +4 -3
- package/dist/js/internal/components/hoverCard.mjs +9 -0
- package/dist/js/internal/components/hoverCard.mjs.map +7 -0
- package/dist/js/internal/components/index.mjs +131 -66
- package/dist/js/internal/components/inputMask.mjs +9 -0
- package/dist/js/internal/components/inputMask.mjs.map +7 -0
- package/dist/js/internal/components/keypad.mjs +3 -3
- package/dist/js/internal/components/lightbox.mjs +3 -3
- package/dist/js/internal/components/lineChart.mjs +25 -4
- package/dist/js/internal/components/loadingOverlay.mjs +9 -0
- package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
- package/dist/js/internal/components/mapView.mjs +3 -3
- package/dist/js/internal/components/menu.mjs +3 -3
- package/dist/js/internal/components/menubar.mjs +10 -0
- package/dist/js/internal/components/menubar.mjs.map +7 -0
- package/dist/js/internal/components/messageScroller.mjs +3 -3
- package/dist/js/internal/components/mixedChart.mjs +5 -4
- package/dist/js/internal/components/navigationRail.mjs +3 -2
- package/dist/js/internal/components/particles.mjs +3 -2
- package/dist/js/internal/components/pieChart.mjs +4 -3
- package/dist/js/internal/components/pullToRefresh.mjs +9 -0
- package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
- package/dist/js/internal/components/questionnaire.mjs +3 -3
- package/dist/js/internal/components/radarChart.mjs +4 -3
- package/dist/js/internal/components/radialChart.mjs +4 -3
- package/dist/js/internal/components/registry.mjs +59 -41
- package/dist/js/internal/components/richTextEditor.mjs +3 -3
- package/dist/js/internal/components/sankeyChart.mjs +10 -0
- package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
- package/dist/js/internal/components/scatterChart.mjs +10 -0
- package/dist/js/internal/components/scatterChart.mjs.map +7 -0
- package/dist/js/internal/components/scrollspy.mjs +3 -2
- package/dist/js/internal/components/select.mjs +4 -4
- package/dist/js/internal/components/showMore.mjs +9 -0
- package/dist/js/internal/components/showMore.mjs.map +7 -0
- package/dist/js/internal/components/slider.mjs +3 -3
- package/dist/js/internal/components/snackbar.mjs +2 -2
- package/dist/js/internal/components/swipeActions.mjs +9 -0
- package/dist/js/internal/components/swipeActions.mjs.map +7 -0
- package/dist/js/internal/components/tabs.mjs +3 -4
- package/dist/js/internal/components/timepicker.mjs +5 -4
- package/dist/js/internal/components/tooltip.mjs +3 -3
- package/dist/js/internal/components/treeSelect.mjs +13 -0
- package/dist/js/internal/components/treeSelect.mjs.map +7 -0
- package/dist/js/internal/components/treemapChart.mjs +10 -0
- package/dist/js/internal/components/treemapChart.mjs.map +7 -0
- package/dist/js/internal/core/component.mjs +2 -1
- package/dist/js/internal/core/formControl.mjs +12 -0
- package/dist/js/internal/core/formControl.mjs.map +7 -0
- package/dist/js/internal/core/spring.mjs +11 -0
- package/dist/js/internal/core/spring.mjs.map +7 -0
- package/dist/js/internal/core/utils.mjs +11 -3
- package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
- package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
- package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
- package/dist/js/modular.mjs +173 -71
- package/dist/types/behaviors/bottomSheets.d.ts +19 -3
- package/dist/types/behaviors/copy.d.ts +18 -0
- package/dist/types/behaviors/dataTables.d.ts +129 -0
- package/dist/types/behaviors/dialogs.d.ts +27 -1
- package/dist/types/behaviors/forms.d.ts +68 -2
- package/dist/types/behaviors/imageCompare.d.ts +12 -0
- package/dist/types/behaviors/lists.d.ts +12 -0
- package/dist/types/behaviors/paneResize.d.ts +29 -0
- package/dist/types/behaviors/sheetDrag.d.ts +18 -0
- package/dist/types/behaviors/sideSheets.d.ts +1 -1
- package/dist/types/behaviors/sortable.d.ts +28 -0
- package/dist/types/behaviors/theme.d.ts +22 -0
- package/dist/types/behaviors/tour.d.ts +36 -0
- package/dist/types/behaviors/transferList.d.ts +51 -0
- package/dist/types/components/appBar.d.ts +5 -6
- package/dist/types/components/autocomplete.d.ts +91 -17
- package/dist/types/components/backToTop.d.ts +36 -0
- package/dist/types/components/barChart.d.ts +3 -6
- package/dist/types/components/buttonGroup.d.ts +2 -4
- package/dist/types/components/buttons.d.ts +5 -5
- package/dist/types/components/cards.d.ts +3 -16
- package/dist/types/components/carousel.d.ts +9 -15
- package/dist/types/components/cascader.d.ts +130 -0
- package/dist/types/components/characterCounter.d.ts +2 -15
- package/dist/types/components/chips.d.ts +65 -19
- package/dist/types/components/colorPicker.d.ts +42 -0
- package/dist/types/components/columnChart.d.ts +23 -10
- package/dist/types/components/commandPalette.d.ts +11 -16
- package/dist/types/components/confetti.d.ts +2 -4
- package/dist/types/components/currencyInput.d.ts +59 -0
- package/dist/types/components/datepicker.d.ts +56 -32
- package/dist/types/components/expandingCard.d.ts +4 -6
- package/dist/types/components/funnelChart.d.ts +38 -0
- package/dist/types/components/heatmapChart.d.ts +39 -8
- package/dist/types/components/hoverCard.d.ts +58 -0
- package/dist/types/components/index.d.ts +16 -1
- package/dist/types/components/inputMask.d.ts +30 -0
- package/dist/types/components/keypad.d.ts +38 -6
- package/dist/types/components/lightbox.d.ts +14 -20
- package/dist/types/components/lineChart.d.ts +172 -10
- package/dist/types/components/loadingOverlay.d.ts +42 -0
- package/dist/types/components/mapView.d.ts +26 -17
- package/dist/types/components/menu.d.ts +60 -22
- package/dist/types/components/menubar.d.ts +37 -0
- package/dist/types/components/messageScroller.d.ts +2 -14
- package/dist/types/components/mixedChart.d.ts +15 -6
- package/dist/types/components/navigationRail.d.ts +16 -5
- package/dist/types/components/particles.d.ts +8 -4
- package/dist/types/components/pieChart.d.ts +32 -7
- package/dist/types/components/pullToRefresh.d.ts +80 -0
- package/dist/types/components/questionnaire.d.ts +58 -16
- package/dist/types/components/radarChart.d.ts +10 -6
- package/dist/types/components/radialChart.d.ts +58 -7
- package/dist/types/components/registry.d.ts +73 -3
- package/dist/types/components/richTextEditor.d.ts +6 -14
- package/dist/types/components/sankeyChart.d.ts +72 -0
- package/dist/types/components/scatterChart.d.ts +102 -0
- package/dist/types/components/scrollspy.d.ts +3 -5
- package/dist/types/components/select.d.ts +43 -30
- package/dist/types/components/showMore.d.ts +51 -0
- package/dist/types/components/slider.d.ts +3 -15
- package/dist/types/components/snackbar.d.ts +61 -0
- package/dist/types/components/swipeActions.d.ts +81 -0
- package/dist/types/components/tabs.d.ts +89 -27
- package/dist/types/components/timepicker.d.ts +113 -21
- package/dist/types/components/tooltip.d.ts +56 -20
- package/dist/types/components/treeSelect.d.ts +106 -0
- package/dist/types/components/treemapChart.d.ts +56 -0
- package/dist/types/core/component.d.ts +43 -25
- package/dist/types/core/formControl.d.ts +21 -0
- package/dist/types/core/spring.d.ts +20 -0
- package/dist/types/core/utils.d.ts +85 -72
- package/dist/types/modular.d.ts +33 -1
- package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
- package/dist/types/plugins/modalDisplayPlugin.d.ts +32 -0
- package/package.json +10 -8
- package/src/sass/README.md +27 -18
- package/src/sass/abstracts/_elevation.scss +13 -7
- package/src/sass/abstracts/_index.scss +1 -0
- package/src/sass/abstracts/_mixins.scss +422 -36
- package/src/sass/abstracts/_spring.scss +63 -0
- package/src/sass/abstracts/_variables.scss +39 -21
- package/src/sass/base/_fonts.scss +61 -48
- package/src/sass/base/_global.scss +104 -24
- package/src/sass/base/_index.scss +2 -0
- package/src/sass/base/_normalize.scss +59 -114
- package/src/sass/base/_print.scss +21 -0
- package/src/sass/base/_prose.scss +68 -0
- package/src/sass/base/_typography.scss +9 -5
- package/src/sass/components/_accordion.scss +9 -16
- package/src/sass/components/_alert.scss +102 -0
- package/src/sass/components/_aura.scss +8 -3
- package/src/sass/components/_avatar.scss +3 -3
- package/src/sass/components/_back-to-top.scss +38 -0
- package/src/sass/components/_badges.scss +6 -5
- package/src/sass/components/_bar-chart.scss +41 -19
- package/src/sass/components/_bottom-sheet.scss +44 -16
- package/src/sass/components/_breadcrumb.scss +8 -1
- package/src/sass/components/_button-groups.scss +15 -25
- package/src/sass/components/_buttons.scss +156 -63
- package/src/sass/components/_calendar.scss +246 -0
- package/src/sass/components/_cards.scss +36 -44
- package/src/sass/components/_carousel.scss +27 -103
- package/src/sass/components/_cascader.scss +142 -0
- package/src/sass/components/_chips.scss +36 -46
- package/src/sass/components/_column-chart.scss +19 -12
- package/src/sass/components/_command-palette.scss +4 -7
- package/src/sass/components/_confetti.scss +0 -2
- package/src/sass/components/_countdown.scss +1 -1
- package/src/sass/components/_data-table.scss +162 -25
- package/src/sass/components/_datepicker.scss +54 -40
- package/src/sass/components/_description-list.scss +85 -0
- package/src/sass/components/_dialog.scss +42 -41
- package/src/sass/components/_docked-display.scss +1 -3
- package/src/sass/components/_drag-handle.scss +16 -20
- package/src/sass/components/_expanding-card.scss +20 -9
- package/src/sass/components/_fab-menu.scss +44 -32
- package/src/sass/components/_funnel-chart.scss +124 -0
- package/src/sass/components/_heatmap-chart.scss +111 -22
- package/src/sass/components/_icon-buttons.scss +7 -7
- package/src/sass/components/_icons-material-design.scss +2 -2
- package/src/sass/components/_image-compare.scss +108 -0
- package/src/sass/components/_index.scss +20 -0
- package/src/sass/components/_keypad.scss +39 -19
- package/src/sass/components/_kpi.scss +6 -11
- package/src/sass/components/_lightbox.scss +24 -13
- package/src/sass/components/_line-chart.scss +16 -2
- package/src/sass/components/_list.scss +59 -14
- package/src/sass/components/_loading-indicator.scss +1 -0
- package/src/sass/components/_loading-overlay.scss +105 -0
- package/src/sass/components/_map.scss +33 -11
- package/src/sass/components/_marquee.scss +3 -2
- package/src/sass/components/_mega-menu.scss +137 -0
- package/src/sass/components/_menu.scss +143 -123
- package/src/sass/components/_menubar.scss +59 -0
- package/src/sass/components/_message-scroller.scss +2 -2
- package/src/sass/components/_message.scss +3 -3
- package/src/sass/components/_mixed-chart.scss +37 -9
- package/src/sass/components/_modal-display.scss +21 -0
- package/src/sass/components/_navbar.scss +34 -20
- package/src/sass/components/_navigation-bar.scss +15 -77
- package/src/sass/components/_navigation-rail.scss +151 -92
- package/src/sass/components/_org-chart.scss +192 -0
- package/src/sass/components/_page-footer.scss +1 -1
- package/src/sass/components/_pagination.scss +6 -13
- package/src/sass/components/_panes.scss +32 -26
- package/src/sass/components/_particles.scss +0 -2
- package/src/sass/components/_pie-chart.scss +91 -11
- package/src/sass/components/_popover.scss +18 -5
- package/src/sass/components/_progress.scss +152 -31
- package/src/sass/components/_pull-to-refresh.scss +90 -0
- package/src/sass/components/_questionnaire.scss +74 -3
- package/src/sass/components/_radar-chart.scss +38 -10
- package/src/sass/components/_radial-chart.scss +113 -5
- package/src/sass/components/_rich-text-editor.scss +2 -2
- package/src/sass/components/_sankey-chart.scss +114 -0
- package/src/sass/components/_scatter-chart.scss +153 -0
- package/src/sass/components/_scrim.scss +0 -2
- package/src/sass/components/_scrollspy.scss +0 -2
- package/src/sass/components/_search.scss +26 -22
- package/src/sass/components/_show-more.scss +8 -0
- package/src/sass/components/_side-sheet.scss +23 -37
- package/src/sass/components/_skeleton.scss +2 -4
- package/src/sass/components/_snackbar.scss +27 -21
- package/src/sass/components/_split-button.scss +5 -5
- package/src/sass/components/_stat.scss +3 -8
- package/src/sass/components/_stepper.scss +1 -1
- package/src/sass/components/_swipe-actions.scss +71 -0
- package/src/sass/components/_tabs.scss +51 -32
- package/src/sass/components/_timeline.scss +12 -12
- package/src/sass/components/_timepicker.scss +109 -78
- package/src/sass/components/_toolbar.scss +35 -43
- package/src/sass/components/_tooltip.scss +21 -12
- package/src/sass/components/_tour.scss +89 -0
- package/src/sass/components/_transfer-list.scss +73 -0
- package/src/sass/components/_transitions.scss +4 -4
- package/src/sass/components/_tree.scss +3 -16
- package/src/sass/components/_treemap-chart.scss +122 -0
- package/src/sass/components/forms/_checkboxes.scss +106 -24
- package/src/sass/components/forms/_color-picker.scss +135 -0
- package/src/sass/components/forms/_color-swatches.scss +85 -0
- package/src/sass/components/forms/_drop-zone.scss +15 -9
- package/src/sass/components/forms/_fieldset.scss +7 -7
- package/src/sass/components/forms/_file-input.scss +6 -8
- package/src/sass/components/forms/_index.scss +3 -1
- package/src/sass/components/forms/_input-fields.scss +254 -90
- package/src/sass/components/forms/_radio-buttons.scss +33 -94
- package/src/sass/components/forms/_rating.scss +2 -32
- package/src/sass/components/forms/_select.scss +199 -20
- package/src/sass/components/forms/_slider.scss +91 -94
- package/src/sass/components/forms/_switches.scss +53 -164
- package/src/sass/custom.scss +10 -1
- package/src/sass/expressive.scss +3 -63
- package/src/sass/tokens/_contrast.scss +94 -0
- package/src/sass/tokens/_elevation.scss +16 -0
- package/src/sass/tokens/_index.scss +5 -0
- package/src/sass/tokens/_motion.scss +109 -0
- package/src/sass/tokens/_reference.scss +72 -141
- package/src/sass/tokens/_shape.scss +38 -0
- package/src/sass/tokens/_stacking.scss +27 -0
- package/src/sass/tokens/_state.scss +0 -2
- package/src/sass/tokens/_theme.scss +10 -1
- package/src/sass/tokens/_vibrant.scss +2 -5
- package/src/sass/utilities/_defer-render.scss +17 -0
- package/src/sass/utilities/_helpers.scss +183 -26
- package/src/sass/utilities/_index.scss +1 -0
- package/src/sass/utilities/_scroll-area.scss +0 -2
- package/src/sass/utilities/_spacing.scss +52 -34
- package/src/sass/utilities/_typescale.scss +8 -1
- package/src/sass/utilities/_visibility.scss +47 -76
- package/src/sass/utilities/_z-depth.scss +7 -4
- package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
- package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
- package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
- package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
- package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
- package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
- package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
- package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
- package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
- package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
- package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
- package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
- package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
- package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
- package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
- package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
- package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
- package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
- package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
- package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
- package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
- package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
- package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
- package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
- package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
- package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
- package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
- package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
- package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
- package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
- package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
- package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
- package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
- package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
- package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
- package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
- package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
- package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
- package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
- package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
- package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
- package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
- package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
- package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
- package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
- package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
- package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
- package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
- package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
- package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
- package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
- package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
- package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
- package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
- package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
- package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
- package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
- package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
- package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
- package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
- package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
- package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
- package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
- package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
- package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
- package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
- package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
- package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
- /package/dist/js/chunks/{chunk-VKAUVTQY.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
|
@@ -1,17 +1,94 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
ModalDisplayPlugin,
|
|
3
|
+
createDisplayPlugin,
|
|
4
|
+
hideModal
|
|
5
|
+
} from "./chunk-OUCHKSAW.mjs";
|
|
4
6
|
import {
|
|
5
7
|
FormSelect
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
Utils
|
|
9
|
-
} from "./chunk-M372EDXD.mjs";
|
|
8
|
+
} from "./chunk-EVCVFEV3.mjs";
|
|
10
9
|
import {
|
|
11
10
|
Component
|
|
12
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CMGXGYUC.mjs";
|
|
12
|
+
import {
|
|
13
|
+
Utils,
|
|
14
|
+
pickerFooter
|
|
15
|
+
} from "./chunk-ZVLOUDIJ.mjs";
|
|
13
16
|
|
|
14
17
|
// src/ts/components/datepicker.ts
|
|
18
|
+
var MONTHS = Array.from({ length: 12 }, (_, month) => new Date(Date.UTC(2023, month, 1)));
|
|
19
|
+
var WEEKDAYS = Array.from({ length: 7 }, (_, day) => new Date(Date.UTC(2023, 0, 1 + day)));
|
|
20
|
+
function localeDates(locale) {
|
|
21
|
+
const names = (dates, options) => {
|
|
22
|
+
const format = new Intl.DateTimeFormat(locale, { ...options, calendar: "gregory", timeZone: "UTC" });
|
|
23
|
+
return dates.map((date) => format.format(date));
|
|
24
|
+
};
|
|
25
|
+
const intl = new Intl.Locale(locale);
|
|
26
|
+
const week = intl.getWeekInfo?.() ?? intl.weekInfo;
|
|
27
|
+
return {
|
|
28
|
+
week: week ? { firstDay: week.firstDay % 7 } : {},
|
|
29
|
+
i18n: {
|
|
30
|
+
months: names(MONTHS, { month: "long" }),
|
|
31
|
+
monthsShort: names(MONTHS, { month: "short" }),
|
|
32
|
+
weekdays: names(WEEKDAYS, { weekday: "long" }),
|
|
33
|
+
weekdaysShort: names(WEEKDAYS, { weekday: "short" }),
|
|
34
|
+
weekdaysAbbrev: names(WEEKDAYS, { weekday: "narrow" })
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var escapeRegExp = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
39
|
+
var NUMBER = "(\\d{1,2})";
|
|
40
|
+
var named = (names, key) => [
|
|
41
|
+
`(${names.map(escapeRegExp).join("|")})`,
|
|
42
|
+
(parts, text) => key && (parts[key] = names.findIndex((name) => name.toLowerCase() === text.toLowerCase()))
|
|
43
|
+
];
|
|
44
|
+
var READERS = {
|
|
45
|
+
d: () => [NUMBER, (parts, text) => parts.day = +text],
|
|
46
|
+
dd: () => [NUMBER, (parts, text) => parts.day = +text],
|
|
47
|
+
ddd: (i18n) => named(i18n.weekdaysShort),
|
|
48
|
+
dddd: (i18n) => named(i18n.weekdays),
|
|
49
|
+
m: () => [NUMBER, (parts, text) => parts.month = +text - 1],
|
|
50
|
+
mm: () => [NUMBER, (parts, text) => parts.month = +text - 1],
|
|
51
|
+
mmm: (i18n) => named(i18n.monthsShort, "month"),
|
|
52
|
+
mmmm: (i18n) => named(i18n.months, "month"),
|
|
53
|
+
// As Date.parse reads them: 00 to 49 in this century, 50 to 99 in the last.
|
|
54
|
+
yy: () => ["(\\d{2})", (parts, text) => parts.year = +text + (+text < 50 ? 2e3 : 1900)],
|
|
55
|
+
yyyy: () => ["(\\d{4})", (parts, text) => parts.year = +text]
|
|
56
|
+
};
|
|
57
|
+
var pad = (n) => String(n).padStart(2, "0");
|
|
58
|
+
var FORMATS = {
|
|
59
|
+
d: (date) => date.getDate(),
|
|
60
|
+
dd: (date) => pad(date.getDate()),
|
|
61
|
+
ddd: (date, i18n) => i18n.weekdaysShort[date.getDay()],
|
|
62
|
+
dddd: (date, i18n) => i18n.weekdays[date.getDay()],
|
|
63
|
+
m: (date) => date.getMonth() + 1,
|
|
64
|
+
mm: (date) => pad(date.getMonth() + 1),
|
|
65
|
+
mmm: (date, i18n) => i18n.monthsShort[date.getMonth()],
|
|
66
|
+
mmmm: (date, i18n) => i18n.months[date.getMonth()],
|
|
67
|
+
yy: (date) => String(date.getFullYear()).slice(2),
|
|
68
|
+
yyyy: (date) => date.getFullYear()
|
|
69
|
+
};
|
|
70
|
+
function readDate(value, format, i18n) {
|
|
71
|
+
const readers = [];
|
|
72
|
+
const pattern = format.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g).map((token) => {
|
|
73
|
+
const reader = READERS[token]?.(i18n);
|
|
74
|
+
if (reader) readers.push(reader);
|
|
75
|
+
return reader ? reader[0] : escapeRegExp(token);
|
|
76
|
+
});
|
|
77
|
+
const match = new RegExp(`^\\s*${pattern.join("")}\\s*$`, "iu").exec(value);
|
|
78
|
+
if (!match) return null;
|
|
79
|
+
const parts = {};
|
|
80
|
+
readers.forEach(([, set], i) => set(parts, match[i + 1]));
|
|
81
|
+
const date = new Date(2e3, 0, 1);
|
|
82
|
+
date.setFullYear(parts.year, parts.month, parts.day);
|
|
83
|
+
const same = [date.getFullYear(), date.getMonth(), date.getDate()].join() === [parts.year, parts.month, parts.day].join();
|
|
84
|
+
return same ? date : null;
|
|
85
|
+
}
|
|
86
|
+
function withLocale(el, options = {}) {
|
|
87
|
+
const locale = Utils.locale(el);
|
|
88
|
+
if (!locale) return options;
|
|
89
|
+
const { week, i18n } = localeDates(locale);
|
|
90
|
+
return { ...week, ...options, i18n: { ...i18n, ...options.i18n } };
|
|
91
|
+
}
|
|
15
92
|
var _defaults = {
|
|
16
93
|
// the default output format for the input field value
|
|
17
94
|
format: "mmm dd, yyyy",
|
|
@@ -46,8 +123,6 @@ var _defaults = {
|
|
|
46
123
|
maxYear: 9999,
|
|
47
124
|
minMonth: void 0,
|
|
48
125
|
maxMonth: void 0,
|
|
49
|
-
startRange: null,
|
|
50
|
-
endRange: null,
|
|
51
126
|
isRTL: false,
|
|
52
127
|
yearRangeReverse: false,
|
|
53
128
|
// Render the month after year in the calendar title
|
|
@@ -67,8 +142,8 @@ var _defaults = {
|
|
|
67
142
|
cancel: "Cancel",
|
|
68
143
|
clear: "Clear",
|
|
69
144
|
done: "Ok",
|
|
70
|
-
previousMonth: "
|
|
71
|
-
nextMonth: "
|
|
145
|
+
previousMonth: "Previous month",
|
|
146
|
+
nextMonth: "Next month",
|
|
72
147
|
months: [
|
|
73
148
|
"January",
|
|
74
149
|
"February",
|
|
@@ -114,12 +189,15 @@ var _defaults = {
|
|
|
114
189
|
};
|
|
115
190
|
var _Datepicker = class _Datepicker extends Component {
|
|
116
191
|
constructor(el, options) {
|
|
117
|
-
|
|
192
|
+
options = withLocale(el, options);
|
|
193
|
+
super(el, options);
|
|
118
194
|
this.multiple = false;
|
|
119
195
|
/** What setInputValue last wrote, so reading it back does not depend on the parser. */
|
|
120
196
|
this._writtenInputs = /* @__PURE__ */ new WeakMap();
|
|
121
|
-
|
|
122
|
-
this.
|
|
197
|
+
this._form = null;
|
|
198
|
+
this._resetDates = /* @__PURE__ */ new WeakMap();
|
|
199
|
+
// Counts selections, so a callback that selects again silences the stale event.
|
|
200
|
+
this._selection = 0;
|
|
123
201
|
/** Nesting depth of {@link _batchDraws}; > 0 means draws are being collected. */
|
|
124
202
|
this._drawDepth = 0;
|
|
125
203
|
/** Whether a draw was requested while batching. */
|
|
@@ -136,11 +214,11 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
136
214
|
this.draw();
|
|
137
215
|
this.gotoDate(e.target === this.el ? this.date : this.endDate);
|
|
138
216
|
});
|
|
139
|
-
|
|
217
|
+
this._showDisplay();
|
|
140
218
|
if (this.options.onInputInteraction) this.options.onInputInteraction.call(this);
|
|
141
219
|
};
|
|
142
|
-
this._handleInputKeydown = (e) => {
|
|
143
|
-
if (e.key ===
|
|
220
|
+
this._handleInputKeydown = Utils.ignoringComposition((e) => {
|
|
221
|
+
if (e.key === "Enter") {
|
|
144
222
|
e.preventDefault();
|
|
145
223
|
this._batchDraws(() => {
|
|
146
224
|
this.setDateFromInput(e.target);
|
|
@@ -151,7 +229,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
151
229
|
this._syncCalendarFocus(true);
|
|
152
230
|
if (this.options.onInputInteraction) this.options.onInputInteraction.call(this);
|
|
153
231
|
}
|
|
154
|
-
};
|
|
232
|
+
});
|
|
155
233
|
this._handleCalendarFocus = (event) => {
|
|
156
234
|
const button = event.target;
|
|
157
235
|
if (!button.matches(".datepicker-day-button")) return;
|
|
@@ -160,7 +238,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
160
238
|
};
|
|
161
239
|
this._handleCalendarKeydown = (event) => {
|
|
162
240
|
const button = event.target;
|
|
163
|
-
if (!button.matches(".datepicker-day-button") ||
|
|
241
|
+
if (!button.matches(".datepicker-day-button") || !Utils.plainKey(event)) return;
|
|
164
242
|
const date = this._dayDate(button);
|
|
165
243
|
const weekday = (date.getDay() - this.options.firstDay + 7) % 7;
|
|
166
244
|
const offsets = {
|
|
@@ -216,7 +294,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
216
294
|
};
|
|
217
295
|
this._handleDateRangeCalendarClick = (date) => {
|
|
218
296
|
if (this.endDate == null || !_Datepicker._compareDates(date, this.endDate)) {
|
|
219
|
-
if (_Datepicker._isDate(this.date) &&
|
|
297
|
+
if (_Datepicker._isDate(this.date) && date < this.date) {
|
|
220
298
|
return;
|
|
221
299
|
}
|
|
222
300
|
this.setDate(date, false, _Datepicker._isDate(this.date));
|
|
@@ -241,6 +319,18 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
241
319
|
this._handleYearChange = (e) => {
|
|
242
320
|
this.gotoYear(e.target.value);
|
|
243
321
|
};
|
|
322
|
+
// A reset restores the inputs' values after its event, without a change
|
|
323
|
+
// event. Drop the inputs added for extra dates and read the selection back
|
|
324
|
+
// from what the reset left.
|
|
325
|
+
this._handleFormReset = (e) => {
|
|
326
|
+
clearTimeout(this._resetTimer);
|
|
327
|
+
this._resetTimer = setTimeout(() => {
|
|
328
|
+
if (e.defaultPrevented) return;
|
|
329
|
+
if (this.options.isMultipleSelection) this._readBackMultiple();
|
|
330
|
+
else this._readBackSingle();
|
|
331
|
+
this.draw();
|
|
332
|
+
});
|
|
333
|
+
};
|
|
244
334
|
this._handleInputChange = (e) => {
|
|
245
335
|
if (e["detail"]?.firedBy === this) return;
|
|
246
336
|
this.setDateFromInput(e.target);
|
|
@@ -250,21 +340,17 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
250
340
|
};
|
|
251
341
|
this._confirm = () => {
|
|
252
342
|
this._finishSelection();
|
|
253
|
-
|
|
343
|
+
hideModal(this.displayPlugin);
|
|
344
|
+
this._notify("confirm", this.options.onConfirm, { args: [] });
|
|
254
345
|
};
|
|
255
346
|
this._cancel = () => {
|
|
256
|
-
|
|
347
|
+
hideModal(this.displayPlugin);
|
|
348
|
+
this._notify("cancel", this.options.onCancel, { args: [] });
|
|
257
349
|
};
|
|
258
|
-
this.
|
|
259
|
-
this.options
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
};
|
|
263
|
-
if (!!options && options.hasOwnProperty("i18n") && typeof options.i18n === "object") {
|
|
264
|
-
this.options.i18n = { ..._Datepicker.defaults.i18n, ...options.i18n };
|
|
265
|
-
}
|
|
266
|
-
if (this.options.minDate) this.options.minDate.setHours(0, 0, 0, 0);
|
|
267
|
-
if (this.options.maxDate) this.options.maxDate.setHours(0, 0, 0, 0);
|
|
350
|
+
if (this.options.displayPlugin === "modal") Object.assign(this.options, { openByDefault: true, autoSubmit: false });
|
|
351
|
+
const { minDate, maxDate } = this.options;
|
|
352
|
+
if (minDate) this.options.minDate = new Date(new Date(minDate.getTime()).setHours(0, 0, 0, 0));
|
|
353
|
+
if (maxDate) this.options.maxDate = new Date(new Date(maxDate.getTime()).setHours(0, 0, 0, 0));
|
|
268
354
|
this.id = Utils.guid();
|
|
269
355
|
if (this.options.isMultipleSelection) {
|
|
270
356
|
this.multiple = true;
|
|
@@ -274,7 +360,8 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
274
360
|
this._setupVariables();
|
|
275
361
|
this._insertHTMLIntoDOM();
|
|
276
362
|
this._setupEventHandlers();
|
|
277
|
-
|
|
363
|
+
const fromValue = !this.options.defaultDate;
|
|
364
|
+
if (fromValue) {
|
|
278
365
|
this.options.defaultDate = this._parseInput(this.el.value);
|
|
279
366
|
}
|
|
280
367
|
const defDate = this.options.defaultDate;
|
|
@@ -282,6 +369,8 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
282
369
|
if (this.options.setDefaultDate) {
|
|
283
370
|
this.setDate(defDate, true);
|
|
284
371
|
this.setInputValue(this.el, defDate);
|
|
372
|
+
} else if (fromValue && this._isSelectableDay(defDate)) {
|
|
373
|
+
this.setDate(defDate, true);
|
|
285
374
|
} else {
|
|
286
375
|
this.gotoDate(defDate);
|
|
287
376
|
}
|
|
@@ -298,21 +387,19 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
298
387
|
}
|
|
299
388
|
}
|
|
300
389
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
390
|
+
this.displayPlugin = createDisplayPlugin(this.options.displayPlugin, this.el, this.containerEl, this.options.displayPluginOptions, this._cancel);
|
|
391
|
+
if (this.endDateEl) this.displayPlugin?.triggers.push(this.endDateEl);
|
|
392
|
+
for (const input of [this.el, this.endDateEl]) this._rememberResetDate(input);
|
|
393
|
+
}
|
|
394
|
+
// Only a default the picker wrote needs this: any other default text parses
|
|
395
|
+
// at reset exactly as it did here.
|
|
396
|
+
_rememberResetDate(input) {
|
|
397
|
+
const written = input && this._writtenInputs.get(input);
|
|
398
|
+
if (written && written.value === input.defaultValue) this._resetDates.set(input, written);
|
|
304
399
|
}
|
|
305
400
|
static get defaults() {
|
|
306
401
|
return _defaults;
|
|
307
402
|
}
|
|
308
|
-
/**
|
|
309
|
-
* Initializes instances of Datepicker.
|
|
310
|
-
* @param els HTML elements.
|
|
311
|
-
* @param options Component options.
|
|
312
|
-
*/
|
|
313
|
-
static init(els, options = {}) {
|
|
314
|
-
return super.init(els, options, _Datepicker);
|
|
315
|
-
}
|
|
316
403
|
/**
|
|
317
404
|
* Escape a value for interpolation into the calendar markup.
|
|
318
405
|
*
|
|
@@ -328,65 +415,56 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
328
415
|
static _isDate(obj) {
|
|
329
416
|
return /Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());
|
|
330
417
|
}
|
|
418
|
+
/**
|
|
419
|
+
* A value read without a custom parser: in the picker's own string format
|
|
420
|
+
* with its names, or else as an ISO date or by the browser.
|
|
421
|
+
*/
|
|
422
|
+
_readDefault(value, el) {
|
|
423
|
+
const { format, i18n } = this.options;
|
|
424
|
+
const read = typeof format === "string" && el.type !== "date" ? readDate(value, format, i18n) : null;
|
|
425
|
+
return read ?? _Datepicker._parseDate(value);
|
|
426
|
+
}
|
|
331
427
|
static _parseDate(value) {
|
|
332
428
|
value = value.trim();
|
|
333
429
|
if (!/^\d{4}-\d{2}-\d{2}$/.test(value)) return new Date(Date.parse(value));
|
|
334
430
|
const date = /* @__PURE__ */ new Date(value + "T00:00:00");
|
|
335
431
|
return date.getDate() === Number(value.slice(-2)) ? date : /* @__PURE__ */ new Date(NaN);
|
|
336
432
|
}
|
|
337
|
-
_parseInput(value) {
|
|
338
|
-
if (!value.trim() || !this.options.parse) return
|
|
433
|
+
_parseInput(value, el = this.el) {
|
|
434
|
+
if (!value.trim() || !this.options.parse) return this._readDefault(value, el);
|
|
339
435
|
return this.options.parse(
|
|
340
436
|
value,
|
|
341
437
|
typeof this.options.format === "string" ? this.options.format : ""
|
|
342
438
|
);
|
|
343
439
|
}
|
|
344
|
-
static _isWeekend(date) {
|
|
345
|
-
const day = date.getDay();
|
|
346
|
-
return day === 0 || day === 6;
|
|
347
|
-
}
|
|
348
440
|
/**
|
|
349
441
|
* @deprecated as this function has no effect without any return statement or global parameter setter.
|
|
350
442
|
*/
|
|
351
443
|
static _setToStartOfDay(date) {
|
|
352
444
|
if (_Datepicker._isDate(date)) date.setHours(0, 0, 0, 0);
|
|
353
445
|
}
|
|
354
|
-
static _getDaysInMonth(year, month) {
|
|
355
|
-
return [31, _Datepicker._isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
|
|
356
|
-
}
|
|
357
|
-
static _isLeapYear(year) {
|
|
358
|
-
return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
|
|
359
|
-
}
|
|
360
446
|
static _compareDates(a, b) {
|
|
361
447
|
return a.getTime() === b.getTime();
|
|
362
448
|
}
|
|
363
|
-
static _compareWithinRange(day, date, dateEnd) {
|
|
364
|
-
return day.getTime() > date.getTime() && day.getTime() < dateEnd.getTime();
|
|
365
|
-
}
|
|
366
|
-
static _comparePastDate(a, b) {
|
|
367
|
-
return a.getTime() < b.getTime();
|
|
368
|
-
}
|
|
369
|
-
static getInstance(el) {
|
|
370
|
-
return el["Expressive_Datepicker"];
|
|
371
|
-
}
|
|
372
449
|
destroy() {
|
|
373
|
-
this.
|
|
450
|
+
this._events.abort();
|
|
451
|
+
clearTimeout(this._resetTimer);
|
|
374
452
|
this.dateEls?.slice(1).forEach((input) => this._removeDateInput(input));
|
|
375
453
|
if (!this.options.dateRangeEndEl && this.endDateEl) this._removeDateInput(this.endDateEl);
|
|
376
454
|
this.displayPlugin?.destroy();
|
|
377
455
|
this.containerEl.remove();
|
|
378
456
|
this.destroySelects();
|
|
379
|
-
this.
|
|
457
|
+
this._removeDateOverlay();
|
|
458
|
+
super.destroy();
|
|
459
|
+
}
|
|
460
|
+
// CSS paints data-date over a native date input's own text.
|
|
461
|
+
_removeDateOverlay() {
|
|
462
|
+
this.el.classList.remove("datepicker-date-input");
|
|
463
|
+
for (const input of [this.el, this.endDateEl]) if (input?.type === "date") input.removeAttribute("data-date");
|
|
380
464
|
}
|
|
381
465
|
destroySelects() {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
FormSelect.getInstance(oldYearSelect).destroy();
|
|
385
|
-
}
|
|
386
|
-
const oldMonthSelect = this.calendarEl.querySelector(".orig-select-month");
|
|
387
|
-
if (oldMonthSelect) {
|
|
388
|
-
FormSelect.getInstance(oldMonthSelect).destroy();
|
|
389
|
-
}
|
|
466
|
+
this._formSelect(".orig-select-year")?.destroy();
|
|
467
|
+
this._formSelect(".orig-select-month")?.destroy();
|
|
390
468
|
}
|
|
391
469
|
_insertHTMLIntoDOM() {
|
|
392
470
|
if (this.el.type == "date") {
|
|
@@ -407,10 +485,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
407
485
|
}
|
|
408
486
|
}
|
|
409
487
|
}
|
|
410
|
-
|
|
411
|
-
if (!this.options.autoSubmit) {
|
|
412
|
-
Utils.createConfirmationContainer(this.footer, this.options.i18n.done, this.options.i18n.cancel, this._confirm, this._cancel);
|
|
413
|
-
}
|
|
488
|
+
pickerFooter(this.footer, this.options, "datepicker-clear", this._handleClearClick, this._confirm, this._cancel);
|
|
414
489
|
if (this.options.container) {
|
|
415
490
|
const optEl = this.options.container;
|
|
416
491
|
this.options.container = optEl instanceof HTMLElement ? optEl : document.querySelector(optEl);
|
|
@@ -444,30 +519,40 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
444
519
|
*/
|
|
445
520
|
formatDate(date, format) {
|
|
446
521
|
const formatArray = format.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g);
|
|
447
|
-
return formatArray.map((label) =>
|
|
522
|
+
return formatArray.map((label) => FORMATS[label] ? FORMATS[label](date, this.options.i18n) : label).join("");
|
|
448
523
|
}
|
|
449
524
|
/**
|
|
450
525
|
* Sets date from input field.
|
|
451
526
|
*/
|
|
452
527
|
setDateFromInput(el) {
|
|
453
|
-
|
|
528
|
+
this._syncDataDate(el);
|
|
454
529
|
if ((this.options.isDateRange || !this.options.isMultipleSelection) && !el.value.trim()) {
|
|
455
530
|
this.setSingleDate(null, el === this.endDateEl);
|
|
456
531
|
this.draw();
|
|
457
532
|
return;
|
|
458
533
|
}
|
|
459
|
-
const
|
|
460
|
-
const parsedDate = written && written.value === el.value ? written.date : this._parseInput(el.value);
|
|
534
|
+
const parsedDate = this._dateInInput(el);
|
|
461
535
|
if (!_Datepicker._isDate(parsedDate)) return;
|
|
462
536
|
const date = new Date(parsedDate.getTime());
|
|
463
537
|
_Datepicker._setToStartOfDay(date);
|
|
464
538
|
const isEndDate = el === this.endDateEl;
|
|
465
|
-
|
|
466
|
-
|
|
539
|
+
const outOfOrder = this.options.isDateRange && (isEndDate ? this.date && date < this.date : this.endDate && date > this.endDate);
|
|
540
|
+
if (outOfOrder || this._isDisabledDay(date)) {
|
|
541
|
+
this.setInputValue(el, this._selectedDateFor(el));
|
|
467
542
|
return;
|
|
468
543
|
}
|
|
544
|
+
this._selectTypedMultiDate(el, date);
|
|
469
545
|
this.setDate(date, false, isEndDate, true);
|
|
470
546
|
}
|
|
547
|
+
// setDate does not toggle a typed date into a multiple selection, so it goes
|
|
548
|
+
// in here, in place of the date its input showed. Re-reading an input on
|
|
549
|
+
// click leaves the selection as it was.
|
|
550
|
+
_selectTypedMultiDate(el, date) {
|
|
551
|
+
if (!this.options.isMultipleSelection) return;
|
|
552
|
+
const shown = this._selectedDateFor(el);
|
|
553
|
+
this.dates = this.dates.filter((day) => day !== shown && day.getTime() !== date.getTime());
|
|
554
|
+
this.setMultiDate(date);
|
|
555
|
+
}
|
|
471
556
|
/**
|
|
472
557
|
* Set a date on the datepicker.
|
|
473
558
|
* @param date Date to set on the datepicker.
|
|
@@ -481,12 +566,12 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
481
566
|
return;
|
|
482
567
|
}
|
|
483
568
|
_Datepicker._setToStartOfDay(selectedDate);
|
|
569
|
+
const selection = ++this._selection;
|
|
484
570
|
if (!this.options.isMultipleSelection) this.setSingleDate(selectedDate, isEndDate);
|
|
485
571
|
else if (!fromUserInput) this.setMultiDate(selectedDate);
|
|
486
572
|
this.gotoDate(selectedDate);
|
|
487
|
-
if (
|
|
488
|
-
|
|
489
|
-
}
|
|
573
|
+
if (preventOnSelect) return;
|
|
574
|
+
this._notify("select", this.options.onSelect, { args: [selectedDate], detail: { date: selectedDate }, current: () => selection === this._selection });
|
|
490
575
|
}
|
|
491
576
|
validateDate(date) {
|
|
492
577
|
if (!date) {
|
|
@@ -507,6 +592,38 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
507
592
|
}
|
|
508
593
|
return new Date(date.getTime());
|
|
509
594
|
}
|
|
595
|
+
/**
|
|
596
|
+
* The date an input holds. Without a custom parser, Date.parse reads
|
|
597
|
+
* "05/10/2026" from a dd/mm/yyyy format as 10 May, so reuse the date behind
|
|
598
|
+
* a value the picker wrote, or behind the value the input resets to.
|
|
599
|
+
*/
|
|
600
|
+
_dateInInput(el) {
|
|
601
|
+
const known = !this.options.parse && [this._writtenInputs.get(el), this._resetDates.get(el)].find((entry) => entry?.value === el.value);
|
|
602
|
+
return known ? known.date : this._parseInput(el.value, el);
|
|
603
|
+
}
|
|
604
|
+
/** The selected date an input shows: its place in `dates` for a multiple selection. */
|
|
605
|
+
_selectedDateFor(el) {
|
|
606
|
+
if (this.options.isMultipleSelection) return this.dates[this.dateEls.indexOf(el)] ?? null;
|
|
607
|
+
return el === this.endDateEl ? this.endDate : this.date;
|
|
608
|
+
}
|
|
609
|
+
/** `_isDisabledDay` for a date that may carry a time of day. */
|
|
610
|
+
_isSelectableDay(date) {
|
|
611
|
+
const day = new Date(date.getTime());
|
|
612
|
+
_Datepicker._setToStartOfDay(day);
|
|
613
|
+
return !this._isDisabledDay(day);
|
|
614
|
+
}
|
|
615
|
+
/** Whether the calendar shows `day` as disabled: outside the bounds, or refused by an option. */
|
|
616
|
+
_isDisabledDay(day) {
|
|
617
|
+
return this._isOutOfBounds(day) || this._isRefusedDay(day);
|
|
618
|
+
}
|
|
619
|
+
_isOutOfBounds(day) {
|
|
620
|
+
const { minDate, maxDate } = this.options;
|
|
621
|
+
return minDate && day < minDate || maxDate && day > maxDate;
|
|
622
|
+
}
|
|
623
|
+
_isRefusedDay(day) {
|
|
624
|
+
const { disableWeekends, disableDayFn } = this.options;
|
|
625
|
+
return disableWeekends && [0, 6].includes(day.getDay()) || !!disableDayFn?.(day);
|
|
626
|
+
}
|
|
510
627
|
/**
|
|
511
628
|
* Set a single date on the datepicker.
|
|
512
629
|
* @param date Date to set on the datepicker.
|
|
@@ -530,7 +647,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
530
647
|
} else {
|
|
531
648
|
this.dates.splice(index, 1);
|
|
532
649
|
}
|
|
533
|
-
this.dates.sort((a, b) => a.getTime()
|
|
650
|
+
this.dates.sort((a, b) => a.getTime() - b.getTime());
|
|
534
651
|
}
|
|
535
652
|
/**
|
|
536
653
|
* Sets the data-date attribute on the date input field
|
|
@@ -645,7 +762,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
645
762
|
this.adjustCalendars();
|
|
646
763
|
}
|
|
647
764
|
render(year, month, randId) {
|
|
648
|
-
const now = /* @__PURE__ */ new Date(), days =
|
|
765
|
+
const now = /* @__PURE__ */ new Date(), days = new Date(year, month + 1, 0).getDate(), data = [];
|
|
649
766
|
let before = new Date(year, month, 1).getDay(), row = [];
|
|
650
767
|
_Datepicker._setToStartOfDay(now);
|
|
651
768
|
if (this.options.firstDay > 0) {
|
|
@@ -654,10 +771,10 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
654
771
|
before += 7;
|
|
655
772
|
}
|
|
656
773
|
}
|
|
657
|
-
const previousMonth = month === 0 ? 11 : month - 1, nextMonth = month === 11 ? 0 : month + 1, yearOfPreviousMonth = month === 0 ? year - 1 : year, yearOfNextMonth = month === 11 ? year + 1 : year, daysInPreviousMonth =
|
|
774
|
+
const previousMonth = month === 0 ? 11 : month - 1, nextMonth = month === 11 ? 0 : month + 1, yearOfPreviousMonth = month === 0 ? year - 1 : year, yearOfNextMonth = month === 11 ? year + 1 : year, daysInPreviousMonth = new Date(year, month, 0).getDate();
|
|
658
775
|
const cells = Math.ceil((days + before) / 7) * 7;
|
|
659
776
|
for (let i = 0, r = 0; i < cells; i++) {
|
|
660
|
-
const day = new Date(year, month, 1 + (i - before)), isToday = _Datepicker._compareDates(day, now), hasEvent = this.options.events.indexOf(day.toDateString()) !== -1, isEmpty = i < before || i >= days + before,
|
|
777
|
+
const day = new Date(year, month, 1 + (i - before)), isToday = _Datepicker._compareDates(day, now), hasEvent = this.options.events.indexOf(day.toDateString()) !== -1, isEmpty = i < before || i >= days + before, isDisabled = this._isDisabledDay(day), isDateRangeStart = this.options.isDateRange && this.date && this.endDate && _Datepicker._compareDates(this.date, day), isDateRangeEnd = this.options.isDateRange && this.endDate && _Datepicker._compareDates(this.endDate, day), isDateRange = this.options.isDateRange && [this.date, this.endDate].every(_Datepicker._isDate) && day > this.date && day < this.endDate;
|
|
661
778
|
let dayNumber = 1 + (i - before), monthNumber = month, yearNumber = year;
|
|
662
779
|
let isSelected = false;
|
|
663
780
|
if (_Datepicker._isDate(this.date)) {
|
|
@@ -689,9 +806,6 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
689
806
|
isToday,
|
|
690
807
|
isDisabled,
|
|
691
808
|
isEmpty,
|
|
692
|
-
isStartRange,
|
|
693
|
-
isEndRange,
|
|
694
|
-
isInRange,
|
|
695
809
|
showDaysInNextAndPreviousMonths: this.options.showDaysInNextAndPreviousMonths,
|
|
696
810
|
isDateRangeStart,
|
|
697
811
|
isDateRangeEnd,
|
|
@@ -712,9 +826,6 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
712
826
|
isToday: "is-today",
|
|
713
827
|
isSelected: "is-selected",
|
|
714
828
|
hasEvent: "has-event",
|
|
715
|
-
isInRange: "is-inrange",
|
|
716
|
-
isStartRange: "is-startrange",
|
|
717
|
-
isEndRange: "is-endrange",
|
|
718
829
|
isDateRangeStart: "is-daterange-start",
|
|
719
830
|
isDateRangeEnd: "is-daterange-end",
|
|
720
831
|
isDateRange: "is-daterange"
|
|
@@ -740,7 +851,6 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
740
851
|
/** Assemble calendar cells; reject unsupported elements and attributes. */
|
|
741
852
|
renderRow(days, isRTL, isRowSelected) {
|
|
742
853
|
const row = '<tr class="datepicker-row' + (isRowSelected ? " is-selected" : "") + '">' + _Datepicker._calendarMarkup((isRTL ? days.reverse() : days).join(""), "tr") + "</tr>";
|
|
743
|
-
this._checkedRows.add(row);
|
|
744
854
|
return row;
|
|
745
855
|
}
|
|
746
856
|
/** Assemble calendar rows; reject unsupported elements and attributes. */
|
|
@@ -761,7 +871,6 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
761
871
|
renderBody(rows) {
|
|
762
872
|
const html = rows.join("");
|
|
763
873
|
const safeHtml = _Datepicker._calendarMarkup(html, "tbody");
|
|
764
|
-
this._checkedRows.clear();
|
|
765
874
|
return "<tbody>" + safeHtml + "</tbody>";
|
|
766
875
|
}
|
|
767
876
|
static _calendarMarkup(html, parent) {
|
|
@@ -857,7 +966,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
857
966
|
if (opts.yearRangeReverse) arr.reverse();
|
|
858
967
|
const yearHtml = `<select class="datepicker-select orig-select-year" tabindex="-1">${arr.join("")}</select>`;
|
|
859
968
|
const leftArrow = '<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"/><path d="M0-.5h24v24H0z" fill="none"/></svg>';
|
|
860
|
-
html += `<button class="month-prev${prev ? "" : " is-disabled"}" type="button">${leftArrow}</button>`;
|
|
969
|
+
html += `<button class="month-prev${prev ? "" : " is-disabled"}" type="button" aria-label="${_Datepicker._escape(opts.i18n.previousMonth)}">${leftArrow}</button>`;
|
|
861
970
|
html += '<div class="selects-container">';
|
|
862
971
|
if (opts.showMonthAfterYear) {
|
|
863
972
|
html += yearHtml + monthHtml;
|
|
@@ -866,7 +975,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
866
975
|
}
|
|
867
976
|
html += "</div>";
|
|
868
977
|
const rightArrow = '<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"/><path d="M0-.25h24v24H0z" fill="none"/></svg>';
|
|
869
|
-
html += `<button class="month-next${next ? "" : " is-disabled"}" type="button">${rightArrow}</button>`;
|
|
978
|
+
html += `<button class="month-next${next ? "" : " is-disabled"}" type="button" aria-label="${_Datepicker._escape(opts.i18n.nextMonth)}">${rightArrow}</button>`;
|
|
870
979
|
return html += "</div>";
|
|
871
980
|
}
|
|
872
981
|
/**
|
|
@@ -906,6 +1015,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
906
1015
|
const active = this.calendarEl.getRootNode().activeElement;
|
|
907
1016
|
const restoreDayFocus = active?.matches(".datepicker-day-button") && this.calendarEl.contains(active);
|
|
908
1017
|
const restoreArrow = this.calendarEl.contains(active) && active?.matches(".month-prev, .month-next") ? active.classList.contains("month-prev") ? ".month-prev" : ".month-next" : null;
|
|
1018
|
+
const restoreSelect = this._selectFocusRestorer(active);
|
|
909
1019
|
const year = this.calendars[0].year;
|
|
910
1020
|
const month = this.calendars[0].month;
|
|
911
1021
|
this._renderDateDisplay(this.date, this.endDate);
|
|
@@ -920,10 +1030,27 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
920
1030
|
this._renderCalendarTable(year, month);
|
|
921
1031
|
this._syncCalendarFocus(!!restoreDayFocus);
|
|
922
1032
|
if (restoreArrow) this.calendarEl.querySelector(restoreArrow)?.focus();
|
|
1033
|
+
restoreSelect();
|
|
923
1034
|
if (typeof this.options.onDraw === "function") {
|
|
924
1035
|
this.options.onDraw.call(this);
|
|
925
1036
|
}
|
|
926
1037
|
}
|
|
1038
|
+
_formSelect(selector) {
|
|
1039
|
+
const el = this.calendarEl.querySelector(selector);
|
|
1040
|
+
return el ? FormSelect.getInstance(el) : void 0;
|
|
1041
|
+
}
|
|
1042
|
+
/**
|
|
1043
|
+
* Picking a year rebuilds both selects under the focus, which is on the old
|
|
1044
|
+
* input or in its menu. The returned callback, run after the redraw, gives
|
|
1045
|
+
* focus to the matching new input if the old one went with the rebuild.
|
|
1046
|
+
*/
|
|
1047
|
+
_selectFocusRestorer(active) {
|
|
1048
|
+
const holdsFocus = (select) => !!select && (select.input === active || !!select.menuEl?.contains(active));
|
|
1049
|
+
const selector = [".orig-select-year", ".orig-select-month"].find((s) => holdsFocus(this._formSelect(s)));
|
|
1050
|
+
return () => {
|
|
1051
|
+
if (selector && !active.isConnected) this._formSelect(selector)?.input.focus();
|
|
1052
|
+
};
|
|
1053
|
+
}
|
|
927
1054
|
/** Tear down the two FormSelects and render the controls from scratch. */
|
|
928
1055
|
_rebuildControls(year, month) {
|
|
929
1056
|
this.destroySelects();
|
|
@@ -965,78 +1092,38 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
965
1092
|
_setupEventHandlers() {
|
|
966
1093
|
this._addInputEventHandlers(this.el);
|
|
967
1094
|
if (this.endDateEl) this._addInputEventHandlers(this.endDateEl);
|
|
968
|
-
this.
|
|
969
|
-
|
|
970
|
-
this.
|
|
1095
|
+
this._form = this.el.form;
|
|
1096
|
+
const { signal } = this._events;
|
|
1097
|
+
this._form?.addEventListener("reset", this._handleFormReset, { signal });
|
|
1098
|
+
this.calendarEl.addEventListener("click", this._handleCalendarClick, { signal });
|
|
1099
|
+
this.calendarEl.addEventListener("keydown", this._handleCalendarKeydown, { signal });
|
|
1100
|
+
this.calendarEl.addEventListener("focusin", this._handleCalendarFocus, { signal });
|
|
971
1101
|
}
|
|
972
1102
|
_setupVariables() {
|
|
973
1103
|
const template = document.createElement("template");
|
|
974
1104
|
template.innerHTML = _Datepicker._template.trim();
|
|
975
1105
|
this.containerEl = template.content.firstChild;
|
|
976
1106
|
this.calendarEl = this.containerEl.querySelector(".datepicker-calendar");
|
|
977
|
-
this.yearTextEl = this.containerEl.querySelector(".year-text");
|
|
978
1107
|
this.dateTextEl = this.containerEl.querySelector(".date-text");
|
|
979
1108
|
this.footer = this.containerEl.querySelector(".datepicker-footer");
|
|
980
|
-
this.formats = {
|
|
981
|
-
d: (date) => {
|
|
982
|
-
return date.getDate();
|
|
983
|
-
},
|
|
984
|
-
dd: (date) => {
|
|
985
|
-
const d = date.getDate();
|
|
986
|
-
return (d < 10 ? "0" : "") + d;
|
|
987
|
-
},
|
|
988
|
-
ddd: (date) => {
|
|
989
|
-
return this.options.i18n.weekdaysShort[date.getDay()];
|
|
990
|
-
},
|
|
991
|
-
dddd: (date) => {
|
|
992
|
-
return this.options.i18n.weekdays[date.getDay()];
|
|
993
|
-
},
|
|
994
|
-
m: (date) => {
|
|
995
|
-
return date.getMonth() + 1;
|
|
996
|
-
},
|
|
997
|
-
mm: (date) => {
|
|
998
|
-
const m = date.getMonth() + 1;
|
|
999
|
-
return (m < 10 ? "0" : "") + m;
|
|
1000
|
-
},
|
|
1001
|
-
mmm: (date) => {
|
|
1002
|
-
return this.options.i18n.monthsShort[date.getMonth()];
|
|
1003
|
-
},
|
|
1004
|
-
mmmm: (date) => {
|
|
1005
|
-
return this.options.i18n.months[date.getMonth()];
|
|
1006
|
-
},
|
|
1007
|
-
yy: (date) => {
|
|
1008
|
-
return ("" + date.getFullYear()).slice(2);
|
|
1009
|
-
},
|
|
1010
|
-
yyyy: (date) => {
|
|
1011
|
-
return date.getFullYear();
|
|
1012
|
-
}
|
|
1013
|
-
};
|
|
1014
|
-
}
|
|
1015
|
-
_removeEventHandlers() {
|
|
1016
|
-
for (const input of this.dateEls ?? [this.el]) this._removeInputEventHandlers(input);
|
|
1017
|
-
this.calendarEl.removeEventListener("click", this._handleCalendarClick);
|
|
1018
|
-
this.calendarEl.removeEventListener("keydown", this._handleCalendarKeydown);
|
|
1019
|
-
this.calendarEl.removeEventListener("focusin", this._handleCalendarFocus);
|
|
1020
|
-
if (this.options.isDateRange && this.endDateEl) {
|
|
1021
|
-
this._removeInputEventHandlers(this.endDateEl);
|
|
1022
|
-
}
|
|
1023
1109
|
}
|
|
1110
|
+
/** A date input's listeners. An input the picker removes keeps them, but no event reaches it then. */
|
|
1024
1111
|
_addInputEventHandlers(input) {
|
|
1025
|
-
|
|
1026
|
-
input.addEventListener("
|
|
1027
|
-
input.addEventListener("
|
|
1028
|
-
|
|
1029
|
-
_removeInputEventHandlers(input) {
|
|
1030
|
-
input.removeEventListener("click", this._handleInputClick);
|
|
1031
|
-
input.removeEventListener("keydown", this._handleInputKeydown);
|
|
1032
|
-
input.removeEventListener("change", this._handleInputChange);
|
|
1112
|
+
const { signal } = this._events;
|
|
1113
|
+
input.addEventListener("click", this._handleInputClick, { signal });
|
|
1114
|
+
input.addEventListener("keydown", this._handleInputKeydown, { signal });
|
|
1115
|
+
input.addEventListener("change", this._handleInputChange, { signal });
|
|
1033
1116
|
}
|
|
1034
1117
|
_removeDateInput(input) {
|
|
1035
1118
|
const focused = input.getRootNode().activeElement === input;
|
|
1036
|
-
this._removeInputEventHandlers(input);
|
|
1037
1119
|
input.remove();
|
|
1038
1120
|
if (focused && document.activeElement === document.body) this.el.focus();
|
|
1039
1121
|
}
|
|
1122
|
+
/** Shows a docked or modal calendar. A modal takes focus from the input, so the selected day gets it. */
|
|
1123
|
+
_showDisplay() {
|
|
1124
|
+
this.displayPlugin?.show();
|
|
1125
|
+
if (this.displayPlugin instanceof ModalDisplayPlugin) this._syncCalendarFocus(true);
|
|
1126
|
+
}
|
|
1040
1127
|
_dayDate(button) {
|
|
1041
1128
|
const date = /* @__PURE__ */ new Date(0);
|
|
1042
1129
|
date.setFullYear(Number(button.dataset.year), Number(button.dataset.month), Number(button.dataset.day));
|
|
@@ -1046,7 +1133,7 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
1046
1133
|
_syncCalendarFocus(restore = false) {
|
|
1047
1134
|
const buttons = [...this.calendarEl.querySelectorAll(".datepicker-day-button")];
|
|
1048
1135
|
const current = buttons.filter((button) => !button.parentElement.classList.contains("is-selection-disabled"));
|
|
1049
|
-
const preferred = this._focusedDate || this.date || /* @__PURE__ */ new Date();
|
|
1136
|
+
const preferred = this._focusedDate || this.date || new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0));
|
|
1050
1137
|
const target = current.find((button) => _Datepicker._compareDates(this._dayDate(button), preferred)) || current.find((button) => button.parentElement.classList.contains("is-selected")) || current.find((button) => !button.parentElement.classList.contains("is-disabled")) || current[0];
|
|
1051
1138
|
for (const button of buttons) {
|
|
1052
1139
|
button.tabIndex = button === target ? 0 : -1;
|
|
@@ -1071,6 +1158,22 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
1071
1158
|
this.adjustCalendars();
|
|
1072
1159
|
}
|
|
1073
1160
|
}
|
|
1161
|
+
_readBackMultiple() {
|
|
1162
|
+
for (const input of this.dateEls.splice(1)) this._removeDateInput(input);
|
|
1163
|
+
this.dates = [];
|
|
1164
|
+
this._syncDataDate(this.el);
|
|
1165
|
+
const date = this._dateInInput(this.el);
|
|
1166
|
+
if (_Datepicker._isDate(date) && this._isSelectableDay(date)) this.setDate(date, true);
|
|
1167
|
+
}
|
|
1168
|
+
/** A native date input's overlay text follows its value, including an empty one. */
|
|
1169
|
+
_syncDataDate(el) {
|
|
1170
|
+
if (el.type === "date") this.setDataDate(el, _Datepicker._parseDate(el.value));
|
|
1171
|
+
}
|
|
1172
|
+
_readBackSingle() {
|
|
1173
|
+
this.setSingleDate(null, false);
|
|
1174
|
+
this.setSingleDate(null, true);
|
|
1175
|
+
for (const input of [this.el, this.endDateEl]) if (input) this.setDateFromInput(input);
|
|
1176
|
+
}
|
|
1074
1177
|
renderDayName(opts, day, abbr = false) {
|
|
1075
1178
|
day += opts.firstDay;
|
|
1076
1179
|
while (day >= 7) {
|
|
@@ -1087,10 +1190,10 @@ var _Datepicker = class _Datepicker extends Component {
|
|
|
1087
1190
|
return dateInput;
|
|
1088
1191
|
}
|
|
1089
1192
|
};
|
|
1193
|
+
_Datepicker.key = "Expressive_Datepicker";
|
|
1090
1194
|
_Datepicker._template = `
|
|
1091
1195
|
<div class="datepicker-container">
|
|
1092
1196
|
<div class="datepicker-date-display">
|
|
1093
|
-
<span class="year-text"></span>
|
|
1094
1197
|
<span class="date-text"></span>
|
|
1095
1198
|
</div>
|
|
1096
1199
|
<div class="datepicker-calendar-container">
|
|
@@ -1101,6 +1204,7 @@ _Datepicker._template = `
|
|
|
1101
1204
|
var Datepicker = _Datepicker;
|
|
1102
1205
|
|
|
1103
1206
|
export {
|
|
1207
|
+
readDate,
|
|
1104
1208
|
Datepicker
|
|
1105
1209
|
};
|
|
1106
|
-
//# sourceMappingURL=chunk-
|
|
1210
|
+
//# sourceMappingURL=chunk-QXKWVHBD.mjs.map
|