@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
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Component
|
|
3
|
+
} from "./chunk-CMGXGYUC.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Utils
|
|
6
|
+
} from "./chunk-ZVLOUDIJ.mjs";
|
|
7
|
+
|
|
8
|
+
// src/ts/components/pullToRefresh.ts
|
|
9
|
+
var _defaults = {
|
|
10
|
+
threshold: 64,
|
|
11
|
+
onRefresh: null,
|
|
12
|
+
i18n: {
|
|
13
|
+
refreshing: "Refreshing",
|
|
14
|
+
refreshed: "Refreshed"
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var SLOP = 4;
|
|
18
|
+
var SCROLLING = /* @__PURE__ */ new Set(["auto", "scroll"]);
|
|
19
|
+
var stopsAt = (node, el) => SCROLLING.has(getComputedStyle(node).overflowY) && (node.scrollTop > 0 || node.contains(el));
|
|
20
|
+
var _PullToRefresh = class _PullToRefresh extends Component {
|
|
21
|
+
constructor(el, options) {
|
|
22
|
+
super(el, options);
|
|
23
|
+
/** Where the finger went down and on what, while it may still become a pull. */
|
|
24
|
+
this._start = null;
|
|
25
|
+
this._pulling = false;
|
|
26
|
+
this._travel = 0;
|
|
27
|
+
/** The running refresh. A new object each time, so a promise from an earlier one cannot end it. */
|
|
28
|
+
this._refresh = null;
|
|
29
|
+
this._onStart = (event) => {
|
|
30
|
+
if (this._refresh) return;
|
|
31
|
+
if (event.touches.length !== 1) {
|
|
32
|
+
this._endPull();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const { clientX, clientY } = event.touches[0];
|
|
36
|
+
this._start = { x: clientX, y: clientY, target: Utils.eventTarget(event) };
|
|
37
|
+
};
|
|
38
|
+
this._onMove = (event) => {
|
|
39
|
+
if (!this._start) return;
|
|
40
|
+
const { clientX, clientY } = event.touches[0];
|
|
41
|
+
const dx = clientX - this._start.x;
|
|
42
|
+
const dy = clientY - this._start.y;
|
|
43
|
+
if (!this._pulling) this._decide(dx, dy, this._start.target);
|
|
44
|
+
if (this._pulling) this._drag(event, dy);
|
|
45
|
+
};
|
|
46
|
+
this._onEnd = () => {
|
|
47
|
+
const ready = this._pulling && this._travel >= this.options.threshold;
|
|
48
|
+
this._endPull();
|
|
49
|
+
if (ready) this.refresh();
|
|
50
|
+
};
|
|
51
|
+
this._endPull = () => {
|
|
52
|
+
this._start = null;
|
|
53
|
+
this._pulling = false;
|
|
54
|
+
this._travel = 0;
|
|
55
|
+
this.el.classList.remove("pulling");
|
|
56
|
+
this.el.style.removeProperty("--pull-to-refresh-offset");
|
|
57
|
+
this.el.style.removeProperty("--pull-to-refresh-progress");
|
|
58
|
+
};
|
|
59
|
+
this._onClick = (event) => {
|
|
60
|
+
const button = Utils.eventTarget(event)?.closest("[data-refresh]");
|
|
61
|
+
if (button && this.el.contains(button)) this.refresh();
|
|
62
|
+
};
|
|
63
|
+
if (!(this.options.threshold > 0)) this.options.threshold = _defaults.threshold;
|
|
64
|
+
this._status = el.ownerDocument.createElement("span");
|
|
65
|
+
this._status.className = "pull-to-refresh-status";
|
|
66
|
+
this._status.setAttribute("role", "status");
|
|
67
|
+
el.append(this._status);
|
|
68
|
+
const signal = this._events.signal;
|
|
69
|
+
el.addEventListener("touchstart", this._onStart, { passive: true, signal });
|
|
70
|
+
el.addEventListener("touchmove", this._onMove, { passive: false, signal });
|
|
71
|
+
el.addEventListener("touchend", this._onEnd, { signal });
|
|
72
|
+
el.addEventListener("touchcancel", this._endPull, { signal });
|
|
73
|
+
el.addEventListener("click", this._onClick, { signal });
|
|
74
|
+
}
|
|
75
|
+
static get defaults() {
|
|
76
|
+
return _defaults;
|
|
77
|
+
}
|
|
78
|
+
/** Starts a refresh, as a pull or the refresh button does. Does nothing while one runs. */
|
|
79
|
+
refresh() {
|
|
80
|
+
if (this._refresh || _PullToRefresh.getInstance(this.el) !== this) return;
|
|
81
|
+
const run = { pending: 0 };
|
|
82
|
+
this._refresh = run;
|
|
83
|
+
this.el.setAttribute("aria-busy", "true");
|
|
84
|
+
this._status.textContent = this.options.i18n.refreshing;
|
|
85
|
+
const settle = () => {
|
|
86
|
+
if (--run.pending === 0 && this._refresh === run) this.complete();
|
|
87
|
+
};
|
|
88
|
+
const detail = {
|
|
89
|
+
waitUntil: (promise) => {
|
|
90
|
+
run.pending++;
|
|
91
|
+
Promise.resolve(promise).finally(settle);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
this._fireRefresh(run, detail);
|
|
95
|
+
}
|
|
96
|
+
/** Ends the running refresh: the indicator hides, `aria-busy` goes and the finish is announced. */
|
|
97
|
+
complete() {
|
|
98
|
+
if (this._refresh) this._status.textContent = this.options.i18n.refreshed;
|
|
99
|
+
this._refresh = null;
|
|
100
|
+
this.el.removeAttribute("aria-busy");
|
|
101
|
+
}
|
|
102
|
+
destroy() {
|
|
103
|
+
this._endPull();
|
|
104
|
+
this.complete();
|
|
105
|
+
this._status.remove();
|
|
106
|
+
super.destroy();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Runs `onRefresh` and fires the event. A callback that throws ends the
|
|
110
|
+
* refresh it started, so later pulls still work, and the error still reaches the page.
|
|
111
|
+
*/
|
|
112
|
+
_fireRefresh(run, detail) {
|
|
113
|
+
try {
|
|
114
|
+
this._notify("refresh", this.options.onRefresh, { args: [detail], detail });
|
|
115
|
+
} catch (error) {
|
|
116
|
+
if (this._refresh === run) this.complete();
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Whether a downward drag from `target` would scroll something instead: a
|
|
122
|
+
* scrolled-down scroller inside the container, the container itself, or
|
|
123
|
+
* the scroller it sits in, which is the page when no ancestor scrolls.
|
|
124
|
+
*/
|
|
125
|
+
_canScrollUp(target) {
|
|
126
|
+
let node = target;
|
|
127
|
+
while (node && !stopsAt(node, this.el)) node = node.parentElement;
|
|
128
|
+
return (node ?? this.el.ownerDocument.scrollingElement).scrollTop > 0;
|
|
129
|
+
}
|
|
130
|
+
/** Pulls once the finger moves down, or leaves the touch to scrolling when it moves another way first. */
|
|
131
|
+
_decide(dx, dy, target) {
|
|
132
|
+
if (Math.max(Math.abs(dx), Math.abs(dy)) <= SLOP) return;
|
|
133
|
+
if (dy > Math.abs(dx) && !this._canScrollUp(target)) this._pulling = true;
|
|
134
|
+
else this._start = null;
|
|
135
|
+
}
|
|
136
|
+
/** Moves the indicator down with the finger, at half its travel, and fades it in toward the threshold. */
|
|
137
|
+
_drag(event, dy) {
|
|
138
|
+
if (event.cancelable) event.preventDefault();
|
|
139
|
+
const { threshold } = this.options;
|
|
140
|
+
this._travel = Math.max(dy, 0);
|
|
141
|
+
this.el.classList.add("pulling");
|
|
142
|
+
this.el.style.setProperty("--pull-to-refresh-offset", `${Math.min(this._travel, threshold * 2) / 2}px`);
|
|
143
|
+
this.el.style.setProperty("--pull-to-refresh-progress", `${Math.min(this._travel / threshold, 1)}`);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
_PullToRefresh.key = "Expressive_PullToRefresh";
|
|
147
|
+
var PullToRefresh = _PullToRefresh;
|
|
148
|
+
|
|
149
|
+
export {
|
|
150
|
+
PullToRefresh
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=chunk-T3BNSRP3.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ts/components/pullToRefresh.ts"],
|
|
4
|
+
"sourcesContent": ["import { Component, BaseOptions } from '../core/component';\nimport { Utils } from '../core/utils';\n\n/** What `expressive:refresh` carries, and what `onRefresh` receives. */\nexport interface PullToRefreshDetail {\n /** Keeps the refresh running until the promise settles, fulfilled or rejected. */\n waitUntil(promise: PromiseLike<unknown>): void;\n}\n\n/** What the container's status region announces. */\nexport interface PullToRefreshI18nOptions {\n /** Announced when a refresh starts. */\n refreshing: string;\n /** Announced when it finishes. */\n refreshed: string;\n}\n\nexport interface PullToRefreshOptions extends BaseOptions {\n /**\n * How far a finger must pull down, in pixels, for the release to refresh.\n * A value that is not a positive number falls back to the default.\n * @default 64\n */\n threshold: number;\n /**\n * Called when a refresh starts, with the event's detail.\n * @default null\n */\n onRefresh: ((detail: PullToRefreshDetail) => void) | null;\n /** What the status region announces when a refresh starts and finishes. */\n i18n: Partial<PullToRefreshI18nOptions>;\n}\n\nconst _defaults: PullToRefreshOptions = {\n threshold: 64,\n onRefresh: null,\n i18n: {\n refreshing: 'Refreshing',\n refreshed: 'Refreshed'\n }\n};\n\n/** One refresh, with how many `waitUntil()` promises it still waits for. */\ntype Run = { pending: number };\n\n/** Past this the finger was moving, not resting. Hand jitter, in pixels. */\nconst SLOP = 4;\n/** `overflow-y` values that make an element a scroll container. */\nconst SCROLLING = new Set(['auto', 'scroll']);\n\n/**\n * Whether the walk up from a touch stops at `node`: a scroll container that\n * is scrolled down, so a downward drag scrolls it, or the one that holds the\n * pull-to-refresh container, which decides on its own.\n */\nconst stopsAt = (node: Element, el: Element) =>\n SCROLLING.has(getComputedStyle(node).overflowY) && (node.scrollTop > 0 || node.contains(el));\n\n/**\n * Pull-to-refresh. A touch pull down from the top of the container, or a\n * `[data-refresh]` button inside it, starts a refresh. The refresh runs until\n * every promise passed to `waitUntil()` settles or the page calls `complete()`.\n *\n * Touch events rather than pointer events: a pointer drag the browser takes\n * for a pan ends in `pointercancel`, and Safari has no directional\n * `touch-action` to keep a downward pull from it. A mouse never fires touch\n * events; a stylus does where the browser reports it as touch, as Safari on\n * iPadOS does.\n */\nexport class PullToRefresh extends Component<PullToRefreshOptions> {\n static key = 'Expressive_PullToRefresh';\n /** Where the finger went down and on what, while it may still become a pull. */\n private _start: { x: number; y: number; target: Element | null } | null = null;\n private _pulling = false;\n private _travel = 0;\n /** The running refresh. A new object each time, so a promise from an earlier one cannot end it. */\n private _refresh: Run | null = null;\n /**\n * Announces the start and the finish. The author's indicator cannot: it is\n * hidden once the refresh ends, which would drop the finish.\n */\n private _status: HTMLElement;\n\n constructor(el: HTMLElement, options: Partial<PullToRefreshOptions>) {\n super(el, options);\n // Markup options are untrusted; zero or less would refresh on any pull.\n if (!(this.options.threshold > 0)) this.options.threshold = _defaults.threshold;\n this._status = el.ownerDocument.createElement('span');\n this._status.className = 'pull-to-refresh-status';\n this._status.setAttribute('role', 'status');\n el.append(this._status);\n const signal = this._events.signal;\n el.addEventListener('touchstart', this._onStart, { passive: true, signal });\n // Not passive: a pull cancels the move so the container does not also scroll.\n el.addEventListener('touchmove', this._onMove, { passive: false, signal });\n el.addEventListener('touchend', this._onEnd, { signal });\n el.addEventListener('touchcancel', this._endPull, { signal });\n el.addEventListener('click', this._onClick, { signal });\n }\n\n static get defaults(): PullToRefreshOptions {\n return _defaults;\n }\n\n /** Starts a refresh, as a pull or the refresh button does. Does nothing while one runs. */\n refresh() {\n if (this._refresh || PullToRefresh.getInstance(this.el) !== this) return;\n const run: Run = { pending: 0 };\n this._refresh = run;\n this.el.setAttribute('aria-busy', 'true');\n this._status.textContent = this.options.i18n.refreshing;\n const settle = () => {\n if (--run.pending === 0 && this._refresh === run) this.complete();\n };\n const detail: PullToRefreshDetail = {\n waitUntil: (promise) => {\n run.pending++;\n // finally() passes a rejection on, so a failure the page does not\n // catch still reaches unhandledrejection.\n Promise.resolve(promise).finally(settle);\n }\n };\n this._fireRefresh(run, detail);\n }\n\n /** Ends the running refresh: the indicator hides, `aria-busy` goes and the finish is announced. */\n complete() {\n if (this._refresh) this._status.textContent = this.options.i18n.refreshed;\n this._refresh = null;\n this.el.removeAttribute('aria-busy');\n }\n\n destroy() {\n this._endPull();\n this.complete();\n this._status.remove();\n super.destroy();\n }\n\n /**\n * Runs `onRefresh` and fires the event. A callback that throws ends the\n * refresh it started, so later pulls still work, and the error still reaches the page.\n */\n private _fireRefresh(run: Run, detail: PullToRefreshDetail) {\n try {\n this._notify('refresh', this.options.onRefresh, { args: [detail], detail });\n } catch (error) {\n if (this._refresh === run) this.complete();\n throw error;\n }\n }\n\n /**\n * Whether a downward drag from `target` would scroll something instead: a\n * scrolled-down scroller inside the container, the container itself, or\n * the scroller it sits in, which is the page when no ancestor scrolls.\n */\n private _canScrollUp(target: Element | null) {\n let node = target;\n while (node && !stopsAt(node, this.el)) node = node.parentElement;\n return (node ?? this.el.ownerDocument.scrollingElement!).scrollTop > 0;\n }\n\n private _onStart = (event: TouchEvent) => {\n if (this._refresh) return;\n // A second finger is a pinch or a mistake, not a pull.\n if (event.touches.length !== 1) {\n this._endPull();\n return;\n }\n const { clientX, clientY } = event.touches[0];\n this._start = { x: clientX, y: clientY, target: Utils.eventTarget(event) };\n };\n\n private _onMove = (event: TouchEvent) => {\n if (!this._start) return;\n const { clientX, clientY } = event.touches[0];\n const dx = clientX - this._start.x;\n const dy = clientY - this._start.y;\n if (!this._pulling) this._decide(dx, dy, this._start.target);\n if (this._pulling) this._drag(event, dy);\n };\n\n /** Pulls once the finger moves down, or leaves the touch to scrolling when it moves another way first. */\n private _decide(dx: number, dy: number, target: Element | null) {\n if (Math.max(Math.abs(dx), Math.abs(dy)) <= SLOP) return;\n if (dy > Math.abs(dx) && !this._canScrollUp(target)) this._pulling = true;\n else this._start = null;\n }\n\n /** Moves the indicator down with the finger, at half its travel, and fades it in toward the threshold. */\n private _drag(event: TouchEvent, dy: number) {\n if (event.cancelable) event.preventDefault();\n const { threshold } = this.options;\n this._travel = Math.max(dy, 0);\n this.el.classList.add('pulling');\n this.el.style.setProperty('--pull-to-refresh-offset', `${Math.min(this._travel, threshold * 2) / 2}px`);\n this.el.style.setProperty('--pull-to-refresh-progress', `${Math.min(this._travel / threshold, 1)}`);\n }\n\n private _onEnd = () => {\n const ready = this._pulling && this._travel >= this.options.threshold;\n this._endPull();\n if (ready) this.refresh();\n };\n\n private _endPull = () => {\n this._start = null;\n this._pulling = false;\n this._travel = 0;\n this.el.classList.remove('pulling');\n this.el.style.removeProperty('--pull-to-refresh-offset');\n this.el.style.removeProperty('--pull-to-refresh-progress');\n };\n\n private _onClick = (event: MouseEvent) => {\n const button = Utils.eventTarget(event)?.closest('[data-refresh]');\n if (button && this.el.contains(button)) this.refresh();\n };\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;AAiCA,IAAM,YAAkC;AAAA,EACtC,WAAW;AAAA,EACX,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,YAAY;AAAA,IACZ,WAAW;AAAA,EACb;AACF;AAMA,IAAM,OAAO;AAEb,IAAM,YAAY,oBAAI,IAAI,CAAC,QAAQ,QAAQ,CAAC;AAO5C,IAAM,UAAU,CAAC,MAAe,OAC9B,UAAU,IAAI,iBAAiB,IAAI,EAAE,SAAS,MAAM,KAAK,YAAY,KAAK,KAAK,SAAS,EAAE;AAarF,IAAM,iBAAN,MAAM,uBAAsB,UAAgC;AAAA,EAcjE,YAAY,IAAiB,SAAwC;AACnE,UAAM,IAAI,OAAO;AAZnB;AAAA,SAAQ,SAAkE;AAC1E,SAAQ,WAAW;AACnB,SAAQ,UAAU;AAElB;AAAA,SAAQ,WAAuB;AAuF/B,SAAQ,WAAW,CAAC,UAAsB;AACxC,UAAI,KAAK,SAAU;AAEnB,UAAI,MAAM,QAAQ,WAAW,GAAG;AAC9B,aAAK,SAAS;AACd;AAAA,MACF;AACA,YAAM,EAAE,SAAS,QAAQ,IAAI,MAAM,QAAQ,CAAC;AAC5C,WAAK,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS,QAAQ,MAAM,YAAY,KAAK,EAAE;AAAA,IAC3E;AAEA,SAAQ,UAAU,CAAC,UAAsB;AACvC,UAAI,CAAC,KAAK,OAAQ;AAClB,YAAM,EAAE,SAAS,QAAQ,IAAI,MAAM,QAAQ,CAAC;AAC5C,YAAM,KAAK,UAAU,KAAK,OAAO;AACjC,YAAM,KAAK,UAAU,KAAK,OAAO;AACjC,UAAI,CAAC,KAAK,SAAU,MAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,MAAM;AAC3D,UAAI,KAAK,SAAU,MAAK,MAAM,OAAO,EAAE;AAAA,IACzC;AAmBA,SAAQ,SAAS,MAAM;AACrB,YAAM,QAAQ,KAAK,YAAY,KAAK,WAAW,KAAK,QAAQ;AAC5D,WAAK,SAAS;AACd,UAAI,MAAO,MAAK,QAAQ;AAAA,IAC1B;AAEA,SAAQ,WAAW,MAAM;AACvB,WAAK,SAAS;AACd,WAAK,WAAW;AAChB,WAAK,UAAU;AACf,WAAK,GAAG,UAAU,OAAO,SAAS;AAClC,WAAK,GAAG,MAAM,eAAe,0BAA0B;AACvD,WAAK,GAAG,MAAM,eAAe,4BAA4B;AAAA,IAC3D;AAEA,SAAQ,WAAW,CAAC,UAAsB;AACxC,YAAM,SAAS,MAAM,YAAY,KAAK,GAAG,QAAQ,gBAAgB;AACjE,UAAI,UAAU,KAAK,GAAG,SAAS,MAAM,EAAG,MAAK,QAAQ;AAAA,IACvD;AApIE,QAAI,EAAE,KAAK,QAAQ,YAAY,GAAI,MAAK,QAAQ,YAAY,UAAU;AACtE,SAAK,UAAU,GAAG,cAAc,cAAc,MAAM;AACpD,SAAK,QAAQ,YAAY;AACzB,SAAK,QAAQ,aAAa,QAAQ,QAAQ;AAC1C,OAAG,OAAO,KAAK,OAAO;AACtB,UAAM,SAAS,KAAK,QAAQ;AAC5B,OAAG,iBAAiB,cAAc,KAAK,UAAU,EAAE,SAAS,MAAM,OAAO,CAAC;AAE1E,OAAG,iBAAiB,aAAa,KAAK,SAAS,EAAE,SAAS,OAAO,OAAO,CAAC;AACzE,OAAG,iBAAiB,YAAY,KAAK,QAAQ,EAAE,OAAO,CAAC;AACvD,OAAG,iBAAiB,eAAe,KAAK,UAAU,EAAE,OAAO,CAAC;AAC5D,OAAG,iBAAiB,SAAS,KAAK,UAAU,EAAE,OAAO,CAAC;AAAA,EACxD;AAAA,EAEA,WAAW,WAAiC;AAC1C,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAU;AACR,QAAI,KAAK,YAAY,eAAc,YAAY,KAAK,EAAE,MAAM,KAAM;AAClE,UAAM,MAAW,EAAE,SAAS,EAAE;AAC9B,SAAK,WAAW;AAChB,SAAK,GAAG,aAAa,aAAa,MAAM;AACxC,SAAK,QAAQ,cAAc,KAAK,QAAQ,KAAK;AAC7C,UAAM,SAAS,MAAM;AACnB,UAAI,EAAE,IAAI,YAAY,KAAK,KAAK,aAAa,IAAK,MAAK,SAAS;AAAA,IAClE;AACA,UAAM,SAA8B;AAAA,MAClC,WAAW,CAAC,YAAY;AACtB,YAAI;AAGJ,gBAAQ,QAAQ,OAAO,EAAE,QAAQ,MAAM;AAAA,MACzC;AAAA,IACF;AACA,SAAK,aAAa,KAAK,MAAM;AAAA,EAC/B;AAAA;AAAA,EAGA,WAAW;AACT,QAAI,KAAK,SAAU,MAAK,QAAQ,cAAc,KAAK,QAAQ,KAAK;AAChE,SAAK,WAAW;AAChB,SAAK,GAAG,gBAAgB,WAAW;AAAA,EACrC;AAAA,EAEA,UAAU;AACR,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,QAAQ,OAAO;AACpB,UAAM,QAAQ;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,aAAa,KAAU,QAA6B;AAC1D,QAAI;AACF,WAAK,QAAQ,WAAW,KAAK,QAAQ,WAAW,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;AAAA,IAC5E,SAAS,OAAO;AACd,UAAI,KAAK,aAAa,IAAK,MAAK,SAAS;AACzC,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,aAAa,QAAwB;AAC3C,QAAI,OAAO;AACX,WAAO,QAAQ,CAAC,QAAQ,MAAM,KAAK,EAAE,EAAG,QAAO,KAAK;AACpD,YAAQ,QAAQ,KAAK,GAAG,cAAc,kBAAmB,YAAY;AAAA,EACvE;AAAA;AAAA,EAuBQ,QAAQ,IAAY,IAAY,QAAwB;AAC9D,QAAI,KAAK,IAAI,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC,KAAK,KAAM;AAClD,QAAI,KAAK,KAAK,IAAI,EAAE,KAAK,CAAC,KAAK,aAAa,MAAM,EAAG,MAAK,WAAW;AAAA,QAChE,MAAK,SAAS;AAAA,EACrB;AAAA;AAAA,EAGQ,MAAM,OAAmB,IAAY;AAC3C,QAAI,MAAM,WAAY,OAAM,eAAe;AAC3C,UAAM,EAAE,UAAU,IAAI,KAAK;AAC3B,SAAK,UAAU,KAAK,IAAI,IAAI,CAAC;AAC7B,SAAK,GAAG,UAAU,IAAI,SAAS;AAC/B,SAAK,GAAG,MAAM,YAAY,4BAA4B,GAAG,KAAK,IAAI,KAAK,SAAS,YAAY,CAAC,IAAI,CAAC,IAAI;AACtG,SAAK,GAAG,MAAM,YAAY,8BAA8B,GAAG,KAAK,IAAI,KAAK,UAAU,WAAW,CAAC,CAAC,EAAE;AAAA,EACpG;AAqBF;AAtJa,eACJ,MAAM;AADR,IAAM,gBAAN;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Utils,
|
|
3
|
+
controllerFor
|
|
4
|
+
} from "./chunk-ZVLOUDIJ.mjs";
|
|
5
|
+
|
|
6
|
+
// src/ts/behaviors/sortable.ts
|
|
7
|
+
var itemSelector = ".sortable > li";
|
|
8
|
+
var _Sortable = class _Sortable {
|
|
9
|
+
// A second Init adds nothing: addEventListener ignores a listener it has.
|
|
10
|
+
static Init() {
|
|
11
|
+
if (typeof document === "undefined") return;
|
|
12
|
+
document.addEventListener("click", _Sortable._onClick);
|
|
13
|
+
document.addEventListener("pointerdown", _Sortable._onPointerDown);
|
|
14
|
+
}
|
|
15
|
+
/** Moves an item to a zero-based position in its list, then announces it and fires `change`. */
|
|
16
|
+
static move(item, to) {
|
|
17
|
+
const list = item.parentElement;
|
|
18
|
+
const items = [...list.children];
|
|
19
|
+
const from = items.indexOf(item);
|
|
20
|
+
to = Math.min(Math.max(to, 0), items.length - 1);
|
|
21
|
+
if (to === from) return;
|
|
22
|
+
const active = item.getRootNode().activeElement;
|
|
23
|
+
const focused = item.contains(active) ? active : null;
|
|
24
|
+
list.insertBefore(item, items[to > from ? to + 1 : to] ?? null);
|
|
25
|
+
focused?.focus();
|
|
26
|
+
_Sortable._done(list, item, from, to);
|
|
27
|
+
}
|
|
28
|
+
static _done(list, item, from, to) {
|
|
29
|
+
let region = _Sortable._regions.get(list);
|
|
30
|
+
if (!region) {
|
|
31
|
+
region = document.createElement("div");
|
|
32
|
+
region.className = "visually-hidden";
|
|
33
|
+
region.setAttribute("aria-live", "polite");
|
|
34
|
+
list.after(region);
|
|
35
|
+
_Sortable._regions.set(list, region);
|
|
36
|
+
}
|
|
37
|
+
region.textContent = _Sortable.i18n.moved.replace("{position}", String(to + 1)).replace("{total}", String(list.children.length));
|
|
38
|
+
list.dispatchEvent(new CustomEvent("change", { bubbles: true, detail: { item, from, to } }));
|
|
39
|
+
}
|
|
40
|
+
static _onClick(e) {
|
|
41
|
+
const button = Utils.closestInPath(e, "[data-move]");
|
|
42
|
+
const item = button?.closest(itemSelector);
|
|
43
|
+
if (!item || button.matches(':disabled, [aria-disabled="true"]')) return;
|
|
44
|
+
const index = [...item.parentElement.children].indexOf(item);
|
|
45
|
+
const direction = button.getAttribute("data-move");
|
|
46
|
+
if (direction === "up") _Sortable.move(item, index - 1);
|
|
47
|
+
else if (direction === "down") _Sortable.move(item, index + 1);
|
|
48
|
+
}
|
|
49
|
+
static _onPointerDown(e) {
|
|
50
|
+
const handle = Utils.closestInPath(e, ".drag-handle");
|
|
51
|
+
const item = handle?.closest(itemSelector);
|
|
52
|
+
if (!item || e.button !== 0 || _Sortable._drag) return;
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
const list = item.parentElement;
|
|
55
|
+
const events = controllerFor(item);
|
|
56
|
+
_Sortable._drag = { item, list, from: [...list.children].indexOf(item), pointerId: e.pointerId, events };
|
|
57
|
+
item.classList.add("dragged");
|
|
58
|
+
const { signal } = events;
|
|
59
|
+
document.addEventListener("pointermove", _Sortable._onPointerMove, { signal });
|
|
60
|
+
document.addEventListener("pointerup", _Sortable._onPointerEnd, { signal });
|
|
61
|
+
document.addEventListener("pointercancel", _Sortable._onPointerEnd, { signal });
|
|
62
|
+
document.addEventListener("keydown", _Sortable._onKeyDown, { signal });
|
|
63
|
+
}
|
|
64
|
+
static _onPointerMove(e) {
|
|
65
|
+
const drag = _Sortable._drag;
|
|
66
|
+
if (!drag || e.pointerId !== drag.pointerId) return;
|
|
67
|
+
const previous = drag.item.previousElementSibling;
|
|
68
|
+
const next = drag.item.nextElementSibling;
|
|
69
|
+
const middle = (el) => {
|
|
70
|
+
const rect = el.getBoundingClientRect();
|
|
71
|
+
return rect.top + rect.height / 2;
|
|
72
|
+
};
|
|
73
|
+
if (previous && e.clientY < middle(previous)) drag.list.insertBefore(drag.item, previous);
|
|
74
|
+
else if (next && e.clientY > middle(next)) drag.list.insertBefore(drag.item, next.nextElementSibling);
|
|
75
|
+
}
|
|
76
|
+
static _onPointerEnd(e) {
|
|
77
|
+
if (e.pointerId === _Sortable._drag?.pointerId) _Sortable._finish(e.type === "pointercancel");
|
|
78
|
+
}
|
|
79
|
+
// Listening only while a drag is active. preventDefault keeps the Escape
|
|
80
|
+
// from also closing a modal <dialog> the list sits in.
|
|
81
|
+
static _onKeyDown(e) {
|
|
82
|
+
if (e.key !== "Escape") return;
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
_Sortable._finish(true);
|
|
85
|
+
}
|
|
86
|
+
static _finish(cancel) {
|
|
87
|
+
const drag = _Sortable._drag;
|
|
88
|
+
if (!drag) return;
|
|
89
|
+
_Sortable._drag = null;
|
|
90
|
+
drag.events.abort();
|
|
91
|
+
drag.item.classList.remove("dragged");
|
|
92
|
+
const to = [...drag.list.children].indexOf(drag.item);
|
|
93
|
+
if (cancel) {
|
|
94
|
+
drag.list.insertBefore(drag.item, drag.list.children[drag.from > to ? drag.from + 1 : drag.from] ?? null);
|
|
95
|
+
} else if (to !== drag.from) {
|
|
96
|
+
_Sortable._done(drag.list, drag.item, drag.from, to);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
_Sortable.i18n = { moved: "Moved to position {position} of {total}" };
|
|
101
|
+
_Sortable._drag = null;
|
|
102
|
+
_Sortable._regions = /* @__PURE__ */ new WeakMap();
|
|
103
|
+
var Sortable = _Sortable;
|
|
104
|
+
|
|
105
|
+
export {
|
|
106
|
+
Sortable
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=chunk-TFABTUAZ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ts/behaviors/sortable.ts"],
|
|
4
|
+
"sourcesContent": ["import { Utils, controllerFor } from '../core/utils';\n\nconst itemSelector = '.sortable > li';\n\ninterface Drag {\n item: HTMLElement;\n list: HTMLElement;\n from: number;\n pointerId: number;\n /** Removes the document listeners of this drag. */\n events: AbortController;\n}\n\n/**\n * Sortable lists. In a `.sortable` list, an item moves by dragging its\n * `.drag-handle`, or with a `[data-move=\"up\"]` or `[data-move=\"down\"]` button\n * inside it. The buttons are the keyboard path and the single-pointer\n * alternative to dragging, so every sortable list needs them; they can sit in\n * the row or in a menu. Escape during a drag puts the item back.\n *\n * After each move the list fires a bubbling `change` event whose `detail`\n * holds `{ item, from, to }` (zero-based), and a polite live region beside the\n * list announces the new position. `Sortable.i18n.moved` holds that text.\n */\nexport class Sortable {\n static i18n = { moved: 'Moved to position {position} of {total}' };\n private static _drag: Drag | null = null;\n private static _regions = new WeakMap<HTMLElement, HTMLElement>();\n\n // A second Init adds nothing: addEventListener ignores a listener it has.\n static Init() {\n if (typeof document === 'undefined') return;\n document.addEventListener('click', Sortable._onClick);\n document.addEventListener('pointerdown', Sortable._onPointerDown);\n }\n\n /** Moves an item to a zero-based position in its list, then announces it and fires `change`. */\n static move(item: HTMLElement, to: number) {\n const list = item.parentElement;\n const items = [...list.children] as HTMLElement[];\n const from = items.indexOf(item);\n to = Math.min(Math.max(to, 0), items.length - 1);\n if (to === from) return;\n // Moving a node drops focus from inside it, so it is put back after.\n const active = (item.getRootNode() as Document | ShadowRoot).activeElement;\n const focused = item.contains(active) ? (active as HTMLElement) : null;\n list.insertBefore(item, items[to > from ? to + 1 : to] ?? null);\n focused?.focus();\n Sortable._done(list, item, from, to);\n }\n\n private static _done(list: HTMLElement, item: HTMLElement, from: number, to: number) {\n let region = Sortable._regions.get(list);\n if (!region) {\n region = document.createElement('div');\n region.className = 'visually-hidden';\n region.setAttribute('aria-live', 'polite');\n list.after(region);\n Sortable._regions.set(list, region);\n }\n region.textContent = Sortable.i18n.moved\n .replace('{position}', String(to + 1))\n .replace('{total}', String(list.children.length));\n list.dispatchEvent(new CustomEvent('change', { bubbles: true, detail: { item, from, to } }));\n }\n\n private static _onClick(e: MouseEvent) {\n const button = Utils.closestInPath(e, '[data-move]');\n const item = button?.closest<HTMLElement>(itemSelector);\n if (!item || button.matches(':disabled, [aria-disabled=\"true\"]')) return;\n const index = [...item.parentElement.children].indexOf(item);\n const direction = button.getAttribute('data-move');\n if (direction === 'up') Sortable.move(item, index - 1);\n else if (direction === 'down') Sortable.move(item, index + 1);\n }\n\n private static _onPointerDown(e: PointerEvent) {\n const handle = Utils.closestInPath(e, '.drag-handle');\n const item = handle?.closest<HTMLElement>(itemSelector);\n if (!item || e.button !== 0 || Sortable._drag) return;\n e.preventDefault();\n const list = item.parentElement;\n const events = controllerFor(item);\n Sortable._drag = { item, list, from: [...list.children].indexOf(item), pointerId: e.pointerId, events };\n item.classList.add('dragged');\n // On the document, not the handle: each swap moves the item in the DOM,\n // which releases any pointer capture the handle held.\n const { signal } = events;\n document.addEventListener('pointermove', Sortable._onPointerMove, { signal });\n document.addEventListener('pointerup', Sortable._onPointerEnd, { signal });\n document.addEventListener('pointercancel', Sortable._onPointerEnd, { signal });\n document.addEventListener('keydown', Sortable._onKeyDown, { signal });\n }\n\n private static _onPointerMove(e: PointerEvent) {\n const drag = Sortable._drag;\n if (!drag || e.pointerId !== drag.pointerId) return;\n // Swap with a neighbour once the pointer passes its middle.\n const previous = drag.item.previousElementSibling;\n const next = drag.item.nextElementSibling;\n const middle = (el: Element) => {\n const rect = el.getBoundingClientRect();\n return rect.top + rect.height / 2;\n };\n if (previous && e.clientY < middle(previous)) drag.list.insertBefore(drag.item, previous);\n else if (next && e.clientY > middle(next)) drag.list.insertBefore(drag.item, next.nextElementSibling);\n }\n\n private static _onPointerEnd(e: PointerEvent) {\n if (e.pointerId === Sortable._drag?.pointerId) Sortable._finish(e.type === 'pointercancel');\n }\n\n // Listening only while a drag is active. preventDefault keeps the Escape\n // from also closing a modal <dialog> the list sits in.\n private static _onKeyDown(e: KeyboardEvent) {\n if (e.key !== 'Escape') return;\n e.preventDefault();\n Sortable._finish(true);\n }\n\n private static _finish(cancel: boolean) {\n const drag = Sortable._drag;\n if (!drag) return;\n Sortable._drag = null;\n drag.events.abort();\n drag.item.classList.remove('dragged');\n const to = [...drag.list.children].indexOf(drag.item);\n if (cancel) {\n drag.list.insertBefore(drag.item, drag.list.children[drag.from > to ? drag.from + 1 : drag.from] ?? null);\n } else if (to !== drag.from) {\n Sortable._done(drag.list, drag.item, drag.from, to);\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|