@expressivecss/expressive 0.16.0 → 0.17.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 +306 -1
- package/README.md +1 -1
- package/dist/css/expressive.css +540 -646
- 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/js/chunks/{chunk-PA7NU5AK.mjs → chunk-26VUH75M.mjs} +6 -3
- package/dist/js/chunks/chunk-26VUH75M.mjs.map +7 -0
- package/dist/js/chunks/{chunk-NBJAUGPP.mjs → chunk-2LFCOGC3.mjs} +12 -23
- package/dist/js/chunks/chunk-2LFCOGC3.mjs.map +7 -0
- package/dist/js/chunks/{chunk-OP43LLIC.mjs → chunk-36GELQGX.mjs} +4 -4
- package/dist/js/chunks/{chunk-OP43LLIC.mjs.map → chunk-36GELQGX.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-EC26RU2D.mjs → chunk-3FKWIRHW.mjs} +6 -2
- package/dist/js/chunks/chunk-3FKWIRHW.mjs.map +7 -0
- package/dist/js/chunks/{chunk-Y6H2X7ZC.mjs → chunk-3KF65KGL.mjs} +3 -3
- package/dist/js/chunks/{chunk-4QUCNFSD.mjs → chunk-3KLZRQZI.mjs} +31 -10
- package/dist/js/chunks/chunk-3KLZRQZI.mjs.map +7 -0
- package/dist/js/chunks/{chunk-75E5EDJF.mjs → chunk-3XORNED5.mjs} +2 -2
- package/dist/js/chunks/{chunk-NNHVANQA.mjs → chunk-4WBGAQN3.mjs} +3 -3
- package/dist/js/chunks/{chunk-ZJNLAGY5.mjs → chunk-5F4URJHL.mjs} +2 -2
- package/dist/js/chunks/{chunk-ZVLOUDIJ.mjs → chunk-67UNY7RH.mjs} +50 -2
- package/dist/js/chunks/chunk-67UNY7RH.mjs.map +7 -0
- package/dist/js/chunks/{chunk-P6DRQ6KS.mjs → chunk-7CXNATJS.mjs} +6 -5
- package/dist/js/chunks/chunk-7CXNATJS.mjs.map +7 -0
- package/dist/js/chunks/{chunk-4TRZ2AER.mjs → chunk-7X44MKEQ.mjs} +15 -14
- package/dist/js/chunks/chunk-7X44MKEQ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-GWZ76SR4.mjs → chunk-7ZAMOMGY.mjs} +12 -7
- package/dist/js/chunks/chunk-7ZAMOMGY.mjs.map +7 -0
- package/dist/js/chunks/{chunk-GVZQH2H5.mjs → chunk-AEG6LOAJ.mjs} +2 -2
- package/dist/js/chunks/{chunk-Y6TLRA3U.mjs → chunk-AQNFCJJ5.mjs} +27 -21
- package/dist/js/chunks/chunk-AQNFCJJ5.mjs.map +7 -0
- package/dist/js/chunks/{chunk-OUCHKSAW.mjs → chunk-B55LWKBM.mjs} +16 -4
- package/dist/js/chunks/chunk-B55LWKBM.mjs.map +7 -0
- package/dist/js/chunks/{chunk-AI73GJKG.mjs → chunk-BB5VXYXT.mjs} +2 -2
- package/dist/js/chunks/{chunk-2RLBDFH4.mjs → chunk-BDATLH3H.mjs} +4 -4
- package/dist/js/chunks/{chunk-2CS6TITK.mjs → chunk-CWMQOT4O.mjs} +23 -10
- package/dist/js/chunks/chunk-CWMQOT4O.mjs.map +7 -0
- package/dist/js/chunks/{chunk-ZKWUWBUB.mjs → chunk-CY2CTOVM.mjs} +2 -2
- package/dist/js/chunks/{chunk-CSYWKEK3.mjs → chunk-DWA5UYLJ.mjs} +58 -27
- package/dist/js/chunks/chunk-DWA5UYLJ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-CMGXGYUC.mjs → chunk-EB2V4OKL.mjs} +14 -9
- package/dist/js/chunks/chunk-EB2V4OKL.mjs.map +7 -0
- package/dist/js/chunks/{chunk-Z4GICXR2.mjs → chunk-EWO662ZC.mjs} +5 -7
- package/dist/js/chunks/chunk-EWO662ZC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VGY4M57S.mjs → chunk-F7LAKFMX.mjs} +67 -34
- package/dist/js/chunks/chunk-F7LAKFMX.mjs.map +7 -0
- package/dist/js/chunks/{chunk-67ZPPKXS.mjs → chunk-FNIIH2LU.mjs} +3 -3
- package/dist/js/chunks/chunk-GE3YMFS6.mjs +15 -0
- package/dist/js/chunks/chunk-GE3YMFS6.mjs.map +7 -0
- package/dist/js/chunks/{chunk-DZYVU75J.mjs → chunk-GFWYMWYN.mjs} +18 -14
- package/dist/js/chunks/chunk-GFWYMWYN.mjs.map +7 -0
- package/dist/js/chunks/{chunk-3L3QIYLC.mjs → chunk-H5ISU45X.mjs} +8 -6
- package/dist/js/chunks/chunk-H5ISU45X.mjs.map +7 -0
- package/dist/js/chunks/{chunk-QXKWVHBD.mjs → chunk-H6YIKFAQ.mjs} +67 -46
- package/dist/js/chunks/chunk-H6YIKFAQ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KZPSAXIU.mjs → chunk-HEH7E3KO.mjs} +22 -12
- package/dist/js/chunks/chunk-HEH7E3KO.mjs.map +7 -0
- package/dist/js/chunks/{chunk-T3BNSRP3.mjs → chunk-HQRLBTNM.mjs} +3 -3
- package/dist/js/chunks/{chunk-NAC72P7R.mjs → chunk-I2F7MLUU.mjs} +2 -2
- package/dist/js/chunks/{chunk-ZM3XBHWV.mjs → chunk-IQOTGGHX.mjs} +86 -35
- package/dist/js/chunks/chunk-IQOTGGHX.mjs.map +7 -0
- package/dist/js/chunks/{chunk-QACZ6TUP.mjs → chunk-JH3YWKA6.mjs} +5 -4
- package/dist/js/chunks/chunk-JH3YWKA6.mjs.map +7 -0
- package/dist/js/chunks/chunk-JOLJAYIJ.mjs +7 -0
- package/dist/js/chunks/{chunk-4IKVPCSU.mjs.map → chunk-JOLJAYIJ.mjs.map} +1 -1
- package/dist/js/chunks/{chunk-BPF3I2MN.mjs → chunk-KOTGMCMI.mjs} +9 -2
- package/dist/js/chunks/chunk-KOTGMCMI.mjs.map +7 -0
- package/dist/js/chunks/{chunk-ANKFWNWT.mjs → chunk-LC4O5LFS.mjs} +3 -3
- package/dist/js/chunks/{chunk-4PIXLDNJ.mjs → chunk-LEF33SCP.mjs} +2 -2
- package/dist/js/chunks/{chunk-ILDRRG7T.mjs → chunk-LFORZRPH.mjs} +3 -3
- package/dist/js/chunks/{chunk-Z4OARDZ7.mjs → chunk-LWLNV5EC.mjs} +26 -17
- package/dist/js/chunks/chunk-LWLNV5EC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-WU7XJ4RR.mjs → chunk-LXRHUQAX.mjs} +66 -25
- package/dist/js/chunks/chunk-LXRHUQAX.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VMY55K2X.mjs → chunk-MA2SZZFB.mjs} +11 -7
- package/dist/js/chunks/chunk-MA2SZZFB.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VJVQIXHC.mjs → chunk-MDBZAMIV.mjs} +8 -10
- package/dist/js/chunks/chunk-MDBZAMIV.mjs.map +7 -0
- package/dist/js/chunks/{chunk-4EWGD4V2.mjs → chunk-NODZ5VAD.mjs} +2 -2
- package/dist/js/chunks/{chunk-UGJHCHXG.mjs → chunk-O2WJB6TH.mjs} +79 -55
- package/dist/js/chunks/chunk-O2WJB6TH.mjs.map +7 -0
- package/dist/js/chunks/{chunk-7YZ5CN3V.mjs → chunk-PCABY5BN.mjs} +5 -3
- package/dist/js/chunks/chunk-PCABY5BN.mjs.map +7 -0
- package/dist/js/chunks/{chunk-X7SDA2J5.mjs → chunk-PWKYVMND.mjs} +9 -5
- package/dist/js/chunks/{chunk-X7SDA2J5.mjs.map → chunk-PWKYVMND.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-SPPHF7YZ.mjs → chunk-QHZZT7YO.mjs} +35 -14
- package/dist/js/chunks/chunk-QHZZT7YO.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LDXCC2L3.mjs → chunk-QND56EW2.mjs} +5 -4
- package/dist/js/chunks/chunk-QND56EW2.mjs.map +7 -0
- package/dist/js/chunks/{chunk-NVQ5EHCU.mjs → chunk-QNODAANY.mjs} +4 -4
- package/dist/js/chunks/{chunk-7NLUI3RR.mjs → chunk-QRO5FV3I.mjs} +23 -13
- package/dist/js/chunks/chunk-QRO5FV3I.mjs.map +7 -0
- package/dist/js/chunks/{chunk-FCNF4GRJ.mjs → chunk-R7A7JRC5.mjs} +6 -11
- package/dist/js/chunks/chunk-R7A7JRC5.mjs.map +7 -0
- package/dist/js/chunks/{chunk-S23RJ3XY.mjs → chunk-RKG2CBFE.mjs} +4 -16
- package/dist/js/chunks/chunk-RKG2CBFE.mjs.map +7 -0
- package/dist/js/chunks/{chunk-6FSEUFVW.mjs → chunk-RSNS5OYS.mjs} +6 -6
- package/dist/js/chunks/chunk-RSNS5OYS.mjs.map +7 -0
- package/dist/js/chunks/{chunk-ROH2HDB4.mjs → chunk-RUDYMEJ3.mjs} +2 -2
- package/dist/js/chunks/{chunk-BIGU5RCJ.mjs → chunk-STJR62SU.mjs} +13 -5
- package/dist/js/chunks/chunk-STJR62SU.mjs.map +7 -0
- package/dist/js/chunks/{chunk-752ADW4M.mjs → chunk-SUSD4UTN.mjs} +27 -32
- package/dist/js/chunks/chunk-SUSD4UTN.mjs.map +7 -0
- package/dist/js/chunks/{chunk-B7DQFHA5.mjs → chunk-SYBOA5HC.mjs} +7 -12
- package/dist/js/chunks/chunk-SYBOA5HC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-TFABTUAZ.mjs → chunk-T4MOBP3J.mjs} +2 -2
- package/dist/js/chunks/{chunk-GCWWEZKO.mjs → chunk-TM7HPGTV.mjs} +3 -3
- package/dist/js/chunks/{chunk-5KIHWJI2.mjs → chunk-TMQDZSDC.mjs} +34 -12
- package/dist/js/chunks/chunk-TMQDZSDC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-ZO6ZLHFF.mjs → chunk-TVSX5YA2.mjs} +3 -3
- package/dist/js/chunks/{chunk-INLZWHLY.mjs → chunk-UHO5CV6K.mjs} +2 -2
- package/dist/js/chunks/{chunk-INLZWHLY.mjs.map → chunk-UHO5CV6K.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-7YQBHTK3.mjs → chunk-UKCNELUN.mjs} +6 -8
- package/dist/js/chunks/chunk-UKCNELUN.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VH4BMAZS.mjs → chunk-UKQK5GWR.mjs} +13 -13
- package/dist/js/chunks/chunk-UKQK5GWR.mjs.map +7 -0
- package/dist/js/chunks/{chunk-OYNUDOHR.mjs → chunk-UTSLYQ65.mjs} +7 -6
- package/dist/js/chunks/{chunk-OYNUDOHR.mjs.map → chunk-UTSLYQ65.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-7W7TV6NY.mjs → chunk-VS5OJBOD.mjs} +2 -2
- package/dist/js/chunks/{chunk-7W7TV6NY.mjs.map → chunk-VS5OJBOD.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-KYIEG4U3.mjs → chunk-VZMROW5A.mjs} +43 -14
- package/dist/js/chunks/chunk-VZMROW5A.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VFV75DHF.mjs → chunk-XB6Y7P5W.mjs} +11 -12
- package/dist/js/chunks/chunk-XB6Y7P5W.mjs.map +7 -0
- package/dist/js/chunks/{chunk-CZSQHXEV.mjs → chunk-XDAMOMVD.mjs} +20 -21
- package/dist/js/chunks/chunk-XDAMOMVD.mjs.map +7 -0
- package/dist/js/chunks/{chunk-EVCVFEV3.mjs → chunk-XJPMW5SP.mjs} +21 -35
- package/dist/js/chunks/chunk-XJPMW5SP.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VR3L2WN5.mjs → chunk-YKANQILZ.mjs} +7 -6
- package/dist/js/chunks/chunk-YKANQILZ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-JUKBBN6P.mjs → chunk-YLZOJLDI.mjs} +2 -2
- package/dist/js/chunks/{chunk-U4B3VHFS.mjs → chunk-ZK7YY322.mjs} +28 -21
- package/dist/js/chunks/chunk-ZK7YY322.mjs.map +7 -0
- package/dist/js/expressive.cjs +2739 -2387
- package/dist/js/expressive.cjs.map +4 -4
- package/dist/js/expressive.js +2739 -2387
- package/dist/js/expressive.js.map +4 -4
- package/dist/js/expressive.min.js +7 -7
- package/dist/js/expressive.min.js.map +4 -4
- package/dist/js/expressive.mjs +76 -75
- package/dist/js/expressive.mjs.map +1 -1
- package/dist/js/internal/behaviors/bottomSheets.mjs +3 -3
- package/dist/js/internal/behaviors/copy.mjs +3 -3
- package/dist/js/internal/behaviors/dataTables.mjs +2 -4
- 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 +2 -2
- package/dist/js/internal/behaviors/lists.mjs +2 -2
- package/dist/js/internal/behaviors/paneResize.mjs +2 -2
- package/dist/js/internal/behaviors/sheetDrag.mjs +2 -2
- package/dist/js/internal/behaviors/sideSheets.mjs +3 -3
- package/dist/js/internal/behaviors/sortable.mjs +2 -2
- package/dist/js/internal/behaviors/theme.mjs +2 -2
- package/dist/js/internal/behaviors/tour.mjs +2 -2
- package/dist/js/internal/behaviors/transferList.mjs +2 -2
- package/dist/js/internal/components/appBar.mjs +3 -3
- package/dist/js/internal/components/autocomplete.mjs +5 -4
- package/dist/js/internal/components/backToTop.mjs +3 -3
- package/dist/js/internal/components/barChart.mjs +5 -5
- package/dist/js/internal/components/buttonGroup.mjs +3 -3
- 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 +4 -4
- package/dist/js/internal/components/characterCounter.mjs +3 -3
- package/dist/js/internal/components/chips.mjs +7 -6
- package/dist/js/internal/components/colorPicker.mjs +3 -3
- package/dist/js/internal/components/columnChart.mjs +4 -4
- package/dist/js/internal/components/commandPalette.mjs +3 -3
- package/dist/js/internal/components/confetti.mjs +3 -3
- package/dist/js/internal/components/currencyInput.mjs +3 -3
- package/dist/js/internal/components/datepicker.mjs +8 -7
- package/dist/js/internal/components/expandingCard.mjs +3 -3
- package/dist/js/internal/components/funnelChart.mjs +4 -4
- package/dist/js/internal/components/heatmapChart.mjs +4 -4
- package/dist/js/internal/components/hoverCard.mjs +3 -3
- package/dist/js/internal/components/index.mjs +60 -59
- package/dist/js/internal/components/inputMask.mjs +3 -3
- 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 +23 -7
- package/dist/js/internal/components/loadingOverlay.mjs +3 -3
- 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 +4 -4
- package/dist/js/internal/components/messageScroller.mjs +3 -3
- package/dist/js/internal/components/mixedChart.mjs +5 -5
- package/dist/js/internal/components/navigationRail.mjs +3 -3
- package/dist/js/internal/components/particles.mjs +3 -3
- package/dist/js/internal/components/pieChart.mjs +4 -4
- package/dist/js/internal/components/pullToRefresh.mjs +3 -3
- package/dist/js/internal/components/questionnaire.mjs +3 -3
- package/dist/js/internal/components/radarChart.mjs +4 -4
- package/dist/js/internal/components/radialChart.mjs +4 -4
- package/dist/js/internal/components/registry.mjs +59 -58
- package/dist/js/internal/components/richTextEditor.mjs +3 -3
- package/dist/js/internal/components/sankeyChart.mjs +4 -4
- package/dist/js/internal/components/scatterChart.mjs +4 -4
- package/dist/js/internal/components/scrollspy.mjs +3 -3
- package/dist/js/internal/components/select.mjs +5 -4
- package/dist/js/internal/components/showMore.mjs +3 -3
- 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 +3 -3
- package/dist/js/internal/components/tabs.mjs +3 -3
- package/dist/js/internal/components/timepicker.mjs +5 -5
- package/dist/js/internal/components/tooltip.mjs +3 -3
- package/dist/js/internal/components/treeSelect.mjs +6 -5
- package/dist/js/internal/components/treemapChart.mjs +4 -4
- package/dist/js/internal/core/component.mjs +6 -4
- package/dist/js/internal/core/formControl.mjs +2 -2
- package/dist/js/internal/core/imageURL.mjs +7 -0
- package/dist/js/internal/core/imageURL.mjs.map +7 -0
- package/dist/js/internal/core/utils.mjs +11 -1
- package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
- package/dist/js/internal/plugins/modalDisplayPlugin.mjs +3 -3
- package/dist/js/modular.mjs +76 -75
- package/dist/types/behaviors/bottomSheets.d.ts +5 -3
- package/dist/types/behaviors/dataTables.d.ts +2 -6
- package/dist/types/behaviors/forms.d.ts +7 -7
- package/dist/types/behaviors/imageCompare.d.ts +2 -1
- package/dist/types/behaviors/transferList.d.ts +2 -0
- package/dist/types/components/autocomplete.d.ts +14 -3
- package/dist/types/components/carousel.d.ts +7 -0
- package/dist/types/components/chips.d.ts +15 -0
- package/dist/types/components/colorPicker.d.ts +14 -0
- package/dist/types/components/currencyInput.d.ts +5 -4
- package/dist/types/components/datepicker.d.ts +54 -27
- package/dist/types/components/funnelChart.d.ts +1 -4
- package/dist/types/components/heatmapChart.d.ts +3 -0
- package/dist/types/components/hoverCard.d.ts +1 -0
- package/dist/types/components/inputMask.d.ts +0 -2
- package/dist/types/components/lineChart.d.ts +43 -5
- package/dist/types/components/mapView.d.ts +113 -11
- package/dist/types/components/menu.d.ts +14 -0
- package/dist/types/components/particles.d.ts +14 -1
- package/dist/types/components/pieChart.d.ts +1 -2
- package/dist/types/components/richTextEditor.d.ts +40 -9
- package/dist/types/components/select.d.ts +1 -3
- package/dist/types/components/showMore.d.ts +2 -0
- package/dist/types/components/slider.d.ts +0 -1
- package/dist/types/components/snackbar.d.ts +7 -1
- package/dist/types/components/tabs.d.ts +3 -3
- package/dist/types/components/timepicker.d.ts +15 -6
- package/dist/types/components/tooltip.d.ts +1 -1
- package/dist/types/components/treemapChart.d.ts +2 -2
- package/dist/types/core/component.d.ts +9 -3
- package/dist/types/core/imageURL.d.ts +2 -0
- package/dist/types/core/utils.d.ts +39 -1
- package/dist/types/modular.d.ts +1 -1
- package/dist/types/plugins/modalDisplayPlugin.d.ts +8 -1
- package/package.json +8 -6
- package/src/sass/abstracts/_mixins.scss +459 -59
- package/src/sass/abstracts/_variables.scss +25 -0
- package/src/sass/components/_accordion.scss +1 -3
- package/src/sass/components/_aura.scss +1 -0
- package/src/sass/components/_back-to-top.scss +3 -3
- package/src/sass/components/_bar-chart.scss +2 -83
- package/src/sass/components/_bottom-sheet.scss +7 -0
- package/src/sass/components/_breadcrumb.scss +1 -7
- package/src/sass/components/_button-groups.scss +15 -38
- package/src/sass/components/_buttons.scss +24 -74
- package/src/sass/components/_calendar.scss +1 -3
- package/src/sass/components/_carousel.scss +10 -10
- package/src/sass/components/_cascader.scss +3 -14
- package/src/sass/components/_column-chart.scss +1 -19
- package/src/sass/components/_confetti.scss +3 -4
- package/src/sass/components/_data-table.scss +10 -0
- package/src/sass/components/_dialog.scss +10 -18
- package/src/sass/components/_expanding-card.scss +1 -5
- package/src/sass/components/_fab-menu.scss +4 -12
- package/src/sass/components/_funnel-chart.scss +1 -62
- package/src/sass/components/_heatmap-chart.scss +2 -6
- package/src/sass/components/_icon-buttons.scss +1 -4
- package/src/sass/components/_line-chart.scss +2 -70
- package/src/sass/components/_map.scss +4 -0
- package/src/sass/components/_marquee.scss +3 -3
- package/src/sass/components/_mega-menu.scss +8 -17
- package/src/sass/components/_menu.scss +10 -11
- package/src/sass/components/_menubar.scss +1 -13
- package/src/sass/components/_mixed-chart.scss +1 -37
- package/src/sass/components/_navbar.scss +11 -16
- package/src/sass/components/_navigation-bar.scss +2 -5
- package/src/sass/components/_navigation-rail.scss +25 -15
- package/src/sass/components/_page-footer.scss +1 -3
- package/src/sass/components/_pagination.scss +3 -14
- package/src/sass/components/_panes.scss +3 -16
- package/src/sass/components/_particles.scss +3 -4
- package/src/sass/components/_pie-chart.scss +8 -70
- package/src/sass/components/_progress.scss +31 -13
- package/src/sass/components/_radar-chart.scss +2 -32
- package/src/sass/components/_radial-chart.scss +2 -48
- package/src/sass/components/_sankey-chart.scss +5 -28
- package/src/sass/components/_scatter-chart.scss +2 -11
- package/src/sass/components/_search.scss +1 -4
- package/src/sass/components/_side-sheet.scss +9 -14
- package/src/sass/components/_skeleton.scss +24 -15
- package/src/sass/components/_snackbar.scss +11 -13
- package/src/sass/components/_table_of_contents.scss +1 -3
- package/src/sass/components/_tabs.scss +4 -20
- package/src/sass/components/_timepicker.scss +2 -1
- package/src/sass/components/_toolbar.scss +1 -4
- package/src/sass/components/_tooltip.scss +9 -5
- package/src/sass/components/_tree.scss +5 -17
- package/src/sass/components/_treemap-chart.scss +2 -26
- package/src/sass/components/forms/_checkboxes.scss +2 -21
- package/src/sass/components/forms/_drop-zone.scss +1 -4
- package/src/sass/components/forms/_fieldset.scss +1 -4
- package/src/sass/components/forms/_file-input.scss +6 -0
- package/src/sass/components/forms/_input-fields.scss +21 -4
- package/src/sass/components/forms/_radio-buttons.scss +2 -24
- package/src/sass/components/forms/_select.scss +6 -7
- package/src/sass/components/forms/_slider.scss +1 -4
- package/src/sass/components/forms/_switches.scss +14 -21
- package/src/sass/utilities/_helpers.scss +1 -1
- package/src/sass/utilities/_visibility.scss +1 -3
- package/dist/js/chunks/chunk-2CS6TITK.mjs.map +0 -7
- package/dist/js/chunks/chunk-3L3QIYLC.mjs.map +0 -7
- package/dist/js/chunks/chunk-4IKVPCSU.mjs +0 -7
- package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +0 -7
- package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +0 -7
- package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +0 -7
- package/dist/js/chunks/chunk-6FSEUFVW.mjs.map +0 -7
- package/dist/js/chunks/chunk-752ADW4M.mjs.map +0 -7
- package/dist/js/chunks/chunk-7NLUI3RR.mjs.map +0 -7
- package/dist/js/chunks/chunk-7YQBHTK3.mjs.map +0 -7
- package/dist/js/chunks/chunk-7YZ5CN3V.mjs.map +0 -7
- package/dist/js/chunks/chunk-B7DQFHA5.mjs.map +0 -7
- package/dist/js/chunks/chunk-BIGU5RCJ.mjs.map +0 -7
- package/dist/js/chunks/chunk-BPF3I2MN.mjs.map +0 -7
- package/dist/js/chunks/chunk-CMGXGYUC.mjs.map +0 -7
- package/dist/js/chunks/chunk-CSYWKEK3.mjs.map +0 -7
- package/dist/js/chunks/chunk-CZSQHXEV.mjs.map +0 -7
- package/dist/js/chunks/chunk-DZYVU75J.mjs.map +0 -7
- package/dist/js/chunks/chunk-EC26RU2D.mjs.map +0 -7
- package/dist/js/chunks/chunk-EVCVFEV3.mjs.map +0 -7
- package/dist/js/chunks/chunk-FCNF4GRJ.mjs.map +0 -7
- package/dist/js/chunks/chunk-GWZ76SR4.mjs.map +0 -7
- package/dist/js/chunks/chunk-KYIEG4U3.mjs.map +0 -7
- package/dist/js/chunks/chunk-KZPSAXIU.mjs.map +0 -7
- package/dist/js/chunks/chunk-LDXCC2L3.mjs.map +0 -7
- package/dist/js/chunks/chunk-NBJAUGPP.mjs.map +0 -7
- package/dist/js/chunks/chunk-OUCHKSAW.mjs.map +0 -7
- package/dist/js/chunks/chunk-P6DRQ6KS.mjs.map +0 -7
- package/dist/js/chunks/chunk-PA7NU5AK.mjs.map +0 -7
- package/dist/js/chunks/chunk-QACZ6TUP.mjs.map +0 -7
- package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +0 -7
- package/dist/js/chunks/chunk-S23RJ3XY.mjs.map +0 -7
- package/dist/js/chunks/chunk-SPPHF7YZ.mjs.map +0 -7
- package/dist/js/chunks/chunk-U4B3VHFS.mjs.map +0 -7
- package/dist/js/chunks/chunk-UGJHCHXG.mjs.map +0 -7
- package/dist/js/chunks/chunk-VFV75DHF.mjs.map +0 -7
- package/dist/js/chunks/chunk-VGY4M57S.mjs.map +0 -7
- package/dist/js/chunks/chunk-VH4BMAZS.mjs.map +0 -7
- package/dist/js/chunks/chunk-VJVQIXHC.mjs.map +0 -7
- package/dist/js/chunks/chunk-VMY55K2X.mjs.map +0 -7
- package/dist/js/chunks/chunk-VR3L2WN5.mjs.map +0 -7
- package/dist/js/chunks/chunk-WU7XJ4RR.mjs.map +0 -7
- package/dist/js/chunks/chunk-Y6TLRA3U.mjs.map +0 -7
- package/dist/js/chunks/chunk-Z4GICXR2.mjs.map +0 -7
- package/dist/js/chunks/chunk-Z4OARDZ7.mjs.map +0 -7
- package/dist/js/chunks/chunk-ZM3XBHWV.mjs.map +0 -7
- package/dist/js/chunks/chunk-ZVLOUDIJ.mjs.map +0 -7
- /package/dist/js/chunks/{chunk-Y6H2X7ZC.mjs.map → chunk-3KF65KGL.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-75E5EDJF.mjs.map → chunk-3XORNED5.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-NNHVANQA.mjs.map → chunk-4WBGAQN3.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-ZJNLAGY5.mjs.map → chunk-5F4URJHL.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-GVZQH2H5.mjs.map → chunk-AEG6LOAJ.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-AI73GJKG.mjs.map → chunk-BB5VXYXT.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-2RLBDFH4.mjs.map → chunk-BDATLH3H.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-ZKWUWBUB.mjs.map → chunk-CY2CTOVM.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-67ZPPKXS.mjs.map → chunk-FNIIH2LU.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-T3BNSRP3.mjs.map → chunk-HQRLBTNM.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-NAC72P7R.mjs.map → chunk-I2F7MLUU.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-ANKFWNWT.mjs.map → chunk-LC4O5LFS.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-4PIXLDNJ.mjs.map → chunk-LEF33SCP.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-ILDRRG7T.mjs.map → chunk-LFORZRPH.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-4EWGD4V2.mjs.map → chunk-NODZ5VAD.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-NVQ5EHCU.mjs.map → chunk-QNODAANY.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-ROH2HDB4.mjs.map → chunk-RUDYMEJ3.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-TFABTUAZ.mjs.map → chunk-T4MOBP3J.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-GCWWEZKO.mjs.map → chunk-TM7HPGTV.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-ZO6ZLHFF.mjs.map → chunk-TVSX5YA2.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-JUKBBN6P.mjs.map → chunk-YLZOJLDI.mjs.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DockedDisplayPlugin
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CY2CTOVM.mjs";
|
|
4
4
|
|
|
5
5
|
// src/ts/plugins/modalDisplayPlugin.ts
|
|
6
6
|
var ModalDisplayPlugin = class {
|
|
@@ -8,9 +8,19 @@ var ModalDisplayPlugin = class {
|
|
|
8
8
|
/** Whether the picker, not the user, is closing the dialog. */
|
|
9
9
|
this._settled = false;
|
|
10
10
|
this._opener = null;
|
|
11
|
-
/**
|
|
11
|
+
/** Whether the press that ends in the next click started on the scrim. */
|
|
12
|
+
this._downOnScrim = false;
|
|
13
|
+
this._handlePointerDown = (e) => {
|
|
14
|
+
this._downOnScrim = e.target === this.dialog;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* The picker fills the dialog, so a press on the dialog itself is on the
|
|
18
|
+
* scrim. A drag that starts on the picker, such as the timepicker hand,
|
|
19
|
+
* and ends on the scrim also clicks the dialog, so both ends must be there.
|
|
20
|
+
*/
|
|
12
21
|
this._handleClick = (e) => {
|
|
13
|
-
if (e.target === this.dialog) this.dialog.close();
|
|
22
|
+
if (e.target === this.dialog && this._downOnScrim) this.dialog.close();
|
|
23
|
+
this._downOnScrim = false;
|
|
14
24
|
};
|
|
15
25
|
this._handleClose = () => {
|
|
16
26
|
const dismissed = !this._settled;
|
|
@@ -19,6 +29,7 @@ var ModalDisplayPlugin = class {
|
|
|
19
29
|
if (dismissed) this.onDismiss();
|
|
20
30
|
};
|
|
21
31
|
this.destroy = () => {
|
|
32
|
+
this.dialog.removeEventListener("pointerdown", this._handlePointerDown);
|
|
22
33
|
this.dialog.removeEventListener("click", this._handleClick);
|
|
23
34
|
this.dialog.removeEventListener("close", this._handleClose);
|
|
24
35
|
this.dialog.remove();
|
|
@@ -42,6 +53,7 @@ var ModalDisplayPlugin = class {
|
|
|
42
53
|
if (label) this.dialog.setAttribute("aria-label", label);
|
|
43
54
|
this.dialog.append(container);
|
|
44
55
|
el.parentElement.append(this.dialog);
|
|
56
|
+
this.dialog.addEventListener("pointerdown", this._handlePointerDown);
|
|
45
57
|
this.dialog.addEventListener("click", this._handleClick);
|
|
46
58
|
this.dialog.addEventListener("close", this._handleClose);
|
|
47
59
|
}
|
|
@@ -60,4 +72,4 @@ export {
|
|
|
60
72
|
createDisplayPlugin,
|
|
61
73
|
hideModal
|
|
62
74
|
};
|
|
63
|
-
//# sourceMappingURL=chunk-
|
|
75
|
+
//# sourceMappingURL=chunk-B55LWKBM.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ts/plugins/modalDisplayPlugin.ts"],
|
|
4
|
+
"sourcesContent": ["import { DockedDisplayPlugin, DockedDisplayPluginOptions } from './dockedDisplayPlugin';\n\n/**\n * Shows a picker in a modal <dialog>, which the dialog styles draw as a\n * basic dialog over a scrim. The browser keeps focus inside it. Escape or a\n * press on the scrim closes it, and the picker hears that as Cancel; the\n * picker closes it itself through hide() on Ok or Cancel. Focus goes back\n * to the field that opened it.\n */\nexport class ModalDisplayPlugin {\n /** The fields that open the dialog, as DockedDisplayPlugin keeps them. */\n readonly triggers: HTMLElement[];\n private readonly dialog: HTMLDialogElement;\n private readonly onDismiss: () => void;\n /** Whether the picker, not the user, is closing the dialog. */\n private _settled = false;\n private _opener: HTMLElement | null = null;\n /** Whether the press that ends in the next click started on the scrim. */\n private _downOnScrim = false;\n\n constructor(el: HTMLElement, container: HTMLElement, onDismiss: () => void) {\n this.triggers = [el];\n this.onDismiss = onDismiss;\n this.dialog = document.createElement('dialog');\n this.dialog.className = 'display-modal';\n const label = (el as HTMLInputElement).labels?.[0]?.textContent.trim() || el.getAttribute('aria-label');\n if (label) this.dialog.setAttribute('aria-label', label);\n this.dialog.append(container);\n el.parentElement.append(this.dialog);\n this.dialog.addEventListener('pointerdown', this._handlePointerDown);\n this.dialog.addEventListener('click', this._handleClick);\n this.dialog.addEventListener('close', this._handleClose);\n }\n\n private _handlePointerDown = (e: PointerEvent) => {\n this._downOnScrim = e.target === this.dialog;\n };\n\n /**\n * The picker fills the dialog, so a press on the dialog itself is on the\n * scrim. A drag that starts on the picker, such as the timepicker hand,\n * and ends on the scrim also clicks the dialog, so both ends must be there.\n */\n private _handleClick = (e: MouseEvent) => {\n if (e.target === this.dialog && this._downOnScrim) this.dialog.close();\n this._downOnScrim = false;\n };\n\n private _handleClose = () => {\n const dismissed = !this._settled;\n this._settled = false;\n this._opener?.focus({ preventScroll: true });\n if (dismissed) this.onDismiss();\n };\n\n destroy = () => {\n this.dialog.removeEventListener('pointerdown', this._handlePointerDown);\n this.dialog.removeEventListener('click', this._handleClick);\n this.dialog.removeEventListener('close', this._handleClose);\n this.dialog.remove();\n };\n\n show = () => {\n if (this.dialog.open) return;\n const root = this.dialog.getRootNode() as Document | ShadowRoot;\n this._opener = root.activeElement as HTMLElement | null;\n this.dialog.showModal();\n };\n\n hide = () => {\n if (!this.dialog.open) return;\n this._settled = true;\n this.dialog.close();\n };\n}\n\nexport type DisplayPlugin = DockedDisplayPlugin | ModalDisplayPlugin;\n\n/**\n * The display plugin a picker's `displayPlugin` option names: 'docked',\n * 'modal', or none for an inline picker. `onDismiss` is the picker's Cancel.\n */\nexport function createDisplayPlugin(\n type: string | null,\n el: HTMLElement,\n container: HTMLElement,\n options: Partial<DockedDisplayPluginOptions>,\n onDismiss: () => void\n): DisplayPlugin | undefined {\n if (type === 'modal') return new ModalDisplayPlugin(el, container, onDismiss);\n if (type === 'docked') return new DockedDisplayPlugin(el, container, options);\n return undefined;\n}\n\n/** Ok and Cancel close a modal picker; a docked one stays until a click outside. */\nexport function hideModal(plugin: DisplayPlugin | undefined) {\n if (plugin instanceof ModalDisplayPlugin) plugin.hide();\n}\n"],
|
|
5
|
+
"mappings": ";;;;;AASO,IAAM,qBAAN,MAAyB;AAAA,EAW9B,YAAY,IAAiB,WAAwB,WAAuB;AAL5E;AAAA,SAAQ,WAAW;AACnB,SAAQ,UAA8B;AAEtC;AAAA,SAAQ,eAAe;AAgBvB,SAAQ,qBAAqB,CAAC,MAAoB;AAChD,WAAK,eAAe,EAAE,WAAW,KAAK;AAAA,IACxC;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAQ,eAAe,CAAC,MAAkB;AACxC,UAAI,EAAE,WAAW,KAAK,UAAU,KAAK,aAAc,MAAK,OAAO,MAAM;AACrE,WAAK,eAAe;AAAA,IACtB;AAEA,SAAQ,eAAe,MAAM;AAC3B,YAAM,YAAY,CAAC,KAAK;AACxB,WAAK,WAAW;AAChB,WAAK,SAAS,MAAM,EAAE,eAAe,KAAK,CAAC;AAC3C,UAAI,UAAW,MAAK,UAAU;AAAA,IAChC;AAEA,mBAAU,MAAM;AACd,WAAK,OAAO,oBAAoB,eAAe,KAAK,kBAAkB;AACtE,WAAK,OAAO,oBAAoB,SAAS,KAAK,YAAY;AAC1D,WAAK,OAAO,oBAAoB,SAAS,KAAK,YAAY;AAC1D,WAAK,OAAO,OAAO;AAAA,IACrB;AAEA,gBAAO,MAAM;AACX,UAAI,KAAK,OAAO,KAAM;AACtB,YAAM,OAAO,KAAK,OAAO,YAAY;AACrC,WAAK,UAAU,KAAK;AACpB,WAAK,OAAO,UAAU;AAAA,IACxB;AAEA,gBAAO,MAAM;AACX,UAAI,CAAC,KAAK,OAAO,KAAM;AACvB,WAAK,WAAW;AAChB,WAAK,OAAO,MAAM;AAAA,IACpB;AApDE,SAAK,WAAW,CAAC,EAAE;AACnB,SAAK,YAAY;AACjB,SAAK,SAAS,SAAS,cAAc,QAAQ;AAC7C,SAAK,OAAO,YAAY;AACxB,UAAM,QAAS,GAAwB,SAAS,CAAC,GAAG,YAAY,KAAK,KAAK,GAAG,aAAa,YAAY;AACtG,QAAI,MAAO,MAAK,OAAO,aAAa,cAAc,KAAK;AACvD,SAAK,OAAO,OAAO,SAAS;AAC5B,OAAG,cAAc,OAAO,KAAK,MAAM;AACnC,SAAK,OAAO,iBAAiB,eAAe,KAAK,kBAAkB;AACnE,SAAK,OAAO,iBAAiB,SAAS,KAAK,YAAY;AACvD,SAAK,OAAO,iBAAiB,SAAS,KAAK,YAAY;AAAA,EACzD;AA0CF;AAQO,SAAS,oBACd,MACA,IACA,WACA,SACA,WAC2B;AAC3B,MAAI,SAAS,QAAS,QAAO,IAAI,mBAAmB,IAAI,WAAW,SAAS;AAC5E,MAAI,SAAS,SAAU,QAAO,IAAI,oBAAoB,IAAI,WAAW,OAAO;AAC5E,SAAO;AACT;AAGO,SAAS,UAAU,QAAmC;AAC3D,MAAI,kBAAkB,mBAAoB,QAAO,KAAK;AACxD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Utils
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-67UNY7RH.mjs";
|
|
4
4
|
|
|
5
5
|
// src/ts/behaviors/lists.ts
|
|
6
6
|
var rowTarget = ":scope > li > :is(a[href], button):only-child";
|
|
@@ -25,4 +25,4 @@ var Lists = _Lists;
|
|
|
25
25
|
export {
|
|
26
26
|
Lists
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
28
|
+
//# sourceMappingURL=chunk-BB5VXYXT.mjs.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Menu
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DWA5UYLJ.mjs";
|
|
4
4
|
import {
|
|
5
5
|
Component
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EB2V4OKL.mjs";
|
|
7
7
|
import {
|
|
8
8
|
Utils
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-67UNY7RH.mjs";
|
|
10
10
|
|
|
11
11
|
// src/ts/components/menubar.ts
|
|
12
12
|
var _defaults = {
|
|
@@ -105,4 +105,4 @@ Menubar.key = "Expressive_Menubar";
|
|
|
105
105
|
export {
|
|
106
106
|
Menubar
|
|
107
107
|
};
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
108
|
+
//# sourceMappingURL=chunk-BDATLH3H.mjs.map
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Component
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EB2V4OKL.mjs";
|
|
4
4
|
import {
|
|
5
5
|
Utils,
|
|
6
|
+
afterFormReset,
|
|
6
7
|
controllerFor
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-67UNY7RH.mjs";
|
|
8
9
|
|
|
9
10
|
// src/ts/components/colorPicker.ts
|
|
10
11
|
var _defaults = {
|
|
11
|
-
onChange: null
|
|
12
|
+
onChange: null,
|
|
13
|
+
i18n: {
|
|
14
|
+
area: "Saturation and brightness",
|
|
15
|
+
value: (saturation, brightness) => `Saturation ${saturation}%, brightness ${brightness}%`,
|
|
16
|
+
hue: "Hue",
|
|
17
|
+
hex: "Hex color"
|
|
18
|
+
}
|
|
12
19
|
};
|
|
13
20
|
var clamp = (n) => Math.min(1, Math.max(0, n));
|
|
14
21
|
function hueOf(r, g, b) {
|
|
@@ -87,8 +94,8 @@ var ColorPicker = class extends Component {
|
|
|
87
94
|
};
|
|
88
95
|
// Left and right change saturation, up and down brightness; see KEY_STEPS.
|
|
89
96
|
this._onKeyDown = (e) => {
|
|
90
|
-
const steps =
|
|
91
|
-
if (!steps
|
|
97
|
+
const steps = this._keySteps(e);
|
|
98
|
+
if (!steps) return;
|
|
92
99
|
e.preventDefault();
|
|
93
100
|
const unit = e.shiftKey ? 0.1 : 0.01;
|
|
94
101
|
const { s, v } = this._hsv;
|
|
@@ -99,6 +106,7 @@ var ColorPicker = class extends Component {
|
|
|
99
106
|
this._hsv = toHsv(this.input.value) ?? this._hsv;
|
|
100
107
|
this._build();
|
|
101
108
|
this.input.addEventListener("input", this._onNativeInput, { signal: this._events.signal });
|
|
109
|
+
afterFormReset(this.input, this._onNativeInput, this._events.signal);
|
|
102
110
|
this._render();
|
|
103
111
|
}
|
|
104
112
|
static get defaults() {
|
|
@@ -125,12 +133,13 @@ var ColorPicker = class extends Component {
|
|
|
125
133
|
}
|
|
126
134
|
_build() {
|
|
127
135
|
const disabled = this.input.disabled;
|
|
136
|
+
const { i18n } = this.options;
|
|
128
137
|
const area = document.createElement("div");
|
|
129
138
|
area.className = "color-picker-area";
|
|
130
139
|
const thumb = document.createElement("div");
|
|
131
140
|
thumb.className = "color-picker-thumb";
|
|
132
141
|
thumb.setAttribute("role", "slider");
|
|
133
|
-
thumb.setAttribute("aria-label",
|
|
142
|
+
thumb.setAttribute("aria-label", i18n.area);
|
|
134
143
|
thumb.setAttribute("aria-valuemin", "0");
|
|
135
144
|
thumb.setAttribute("aria-valuemax", "100");
|
|
136
145
|
thumb.tabIndex = disabled ? -1 : 0;
|
|
@@ -141,12 +150,12 @@ var ColorPicker = class extends Component {
|
|
|
141
150
|
hue.className = "color-picker-hue";
|
|
142
151
|
hue.min = "0";
|
|
143
152
|
hue.max = "359";
|
|
144
|
-
hue.setAttribute("aria-label",
|
|
153
|
+
hue.setAttribute("aria-label", i18n.hue);
|
|
145
154
|
hue.disabled = disabled;
|
|
146
155
|
const hex = document.createElement("input");
|
|
147
156
|
hex.type = "text";
|
|
148
157
|
hex.className = "color-picker-hex";
|
|
149
|
-
hex.setAttribute("aria-label",
|
|
158
|
+
hex.setAttribute("aria-label", i18n.hex);
|
|
150
159
|
hex.autocomplete = "off";
|
|
151
160
|
hex.spellcheck = false;
|
|
152
161
|
hex.maxLength = 7;
|
|
@@ -178,7 +187,7 @@ var ColorPicker = class extends Component {
|
|
|
178
187
|
thumb.style.setProperty("--_color-picker-y", String(1 - v));
|
|
179
188
|
thumb.style.setProperty("--_color-picker-color", hex);
|
|
180
189
|
thumb.setAttribute("aria-valuenow", String(Math.round(s * 100)));
|
|
181
|
-
thumb.setAttribute("aria-valuetext",
|
|
190
|
+
thumb.setAttribute("aria-valuetext", this.options.i18n.value(Math.round(s * 100), Math.round(v * 100)));
|
|
182
191
|
this._hue.value = String(Math.round(h));
|
|
183
192
|
this._hex.value = hex;
|
|
184
193
|
}
|
|
@@ -210,10 +219,14 @@ var ColorPicker = class extends Component {
|
|
|
210
219
|
const v = 1 - clamp((e.clientY - box.top) / box.height);
|
|
211
220
|
this._set({ ...this._hsv, s, v }, commit);
|
|
212
221
|
}
|
|
222
|
+
/** How a key moves the point. Shift is the larger step; Alt, Ctrl and Meta stay the browser's. */
|
|
223
|
+
_keySteps(e) {
|
|
224
|
+
return Utils.plainKey(e) && !this.input.disabled ? KEY_STEPS[e.key] : void 0;
|
|
225
|
+
}
|
|
213
226
|
};
|
|
214
227
|
ColorPicker.key = "Expressive_ColorPicker";
|
|
215
228
|
|
|
216
229
|
export {
|
|
217
230
|
ColorPicker
|
|
218
231
|
};
|
|
219
|
-
//# sourceMappingURL=chunk-
|
|
232
|
+
//# sourceMappingURL=chunk-CWMQOT4O.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ts/components/colorPicker.ts"],
|
|
4
|
+
"sourcesContent": ["import { Component, BaseOptions } from '../core/component';\nimport { Utils, afterFormReset, controllerFor } from '../core/utils';\n\nexport interface ColorPickerI18n {\n /** The name of the saturation and brightness area. */\n area: string;\n /** What the area reports as its value, from two whole percentages. */\n value: (saturation: number, brightness: number) => string;\n /** The name of the hue slider. */\n hue: string;\n /** The name of the hex field. */\n hex: string;\n}\n\nexport interface ColorPickerOptions extends BaseOptions {\n /**\n * Called with the new `#rrggbb` value when a change is committed: the end\n * of a drag, a key press, a hue release or a typed hex value.\n * @default null\n */\n onChange: ((value: string) => void) | null;\n /** The accessible names, for a page in another language. */\n i18n: Partial<ColorPickerI18n>;\n}\n\nconst _defaults: ColorPickerOptions = {\n onChange: null,\n i18n: {\n area: 'Saturation and brightness',\n value: (saturation, brightness) => `Saturation ${saturation}%, brightness ${brightness}%`,\n hue: 'Hue',\n hex: 'Hex color'\n }\n};\n\n/** Hue in degrees, saturation and value from 0 to 1. */\ninterface Hsv { h: number; s: number; v: number }\n\nconst clamp = (n: number) => Math.min(1, Math.max(0, n));\n\n// Hue in degrees of an RGB color with channels from 0 to 1.\nfunction hueOf(r: number, g: number, b: number): number {\n const max = Math.max(r, g, b);\n const range = max - Math.min(r, g, b);\n if (!range) return 0;\n const sector = max === r ? (g - b) / range : max === g ? (b - r) / range + 2 : (r - g) / range + 4;\n return (sector * 60 + 360) % 360;\n}\n\nfunction toHsv(hex: string): Hsv | null {\n const match = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!match) return null;\n const digits = match[1].length === 3 ? [...match[1]].map((c) => c + c).join('') : match[1];\n const [r, g, b] = [0, 2, 4].map((i) => parseInt(digits.slice(i, i + 2), 16) / 255);\n const max = Math.max(r, g, b);\n return { h: hueOf(r, g, b), s: max ? (max - Math.min(r, g, b)) / max : 0, v: max };\n}\n\nfunction toHex({ h, s, v }: Hsv): string {\n const channel = (n: number) => {\n const k = (n + h / 60) % 6;\n return v - v * s * Math.max(0, Math.min(k, 4 - k, 1));\n };\n return '#' + [5, 3, 1].map((n) => Math.round(channel(n) * 255).toString(16).padStart(2, '0')).join('');\n}\n\n// Area keys as [saturation, brightness] steps of 1%; Shift takes ten of them.\n// Home and End overshoot so the clamp lands on the ends of saturation.\nconst KEY_STEPS: Record<string, [number, number]> = {\n ArrowRight: [1, 0],\n ArrowLeft: [-1, 0],\n ArrowUp: [0, 1],\n ArrowDown: [0, -1],\n PageUp: [0, 10],\n PageDown: [0, -10],\n Home: [-100, 0],\n End: [100, 0]\n};\n\n/**\n * Color picker. Enhances a `.color-picker` holding an `<input type=\"color\">`\n * with a saturation and brightness area, a hue slider and a hex field. The\n * native input stays the form value and the preview, so the browser's own\n * picker still opens from it, and it fires `input` and `change` as it would\n * if the person had used that picker.\n */\nexport class ColorPicker extends Component<ColorPickerOptions> {\n /** The native color input that holds the value. */\n input: HTMLInputElement | null;\n private _hsv: Hsv = { h: 0, s: 0, v: 0 };\n private _area: HTMLDivElement | null = null;\n private _thumb: HTMLDivElement | null = null;\n private _hue: HTMLInputElement | null = null;\n private _hex: HTMLInputElement | null = null;\n // Set while the picker writes the native input, so its own events are not\n // read back as an outside change.\n private _writing = false;\n\n constructor(el: HTMLElement, options: Partial<ColorPickerOptions>) {\n super(el, options);\n this.input = el.querySelector<HTMLInputElement>(':scope > input[type=\"color\"]');\n if (!this.input) return;\n this._hsv = toHsv(this.input.value) ?? this._hsv;\n this._build();\n this.input.addEventListener('input', this._onNativeInput, { signal: this._events.signal });\n // A form reset restores the native value without an input event.\n afterFormReset(this.input, this._onNativeInput, this._events.signal);\n this._render();\n }\n\n static get defaults(): ColorPickerOptions {\n return _defaults;\n }\n\n static key = 'Expressive_ColorPicker';\n\n destroy() {\n for (const part of [this._area, this._hue, this._hex]) part?.remove();\n this._area = this._thumb = this._hue = this._hex = null;\n this.el.style.removeProperty('--_color-picker-hue');\n super.destroy();\n }\n\n /** The current color as `#rrggbb`. Setting it fires no events, as with a native input. */\n get value(): string {\n return this.input?.value ?? '';\n }\n\n set value(hex: string) {\n const hsv = toHsv(hex);\n if (!hsv || !this.input) return;\n this._hsv = hsv;\n this._writing = true;\n this.input.value = toHex(hsv);\n this._writing = false;\n this._render();\n }\n\n private _build() {\n const disabled = this.input!.disabled;\n const { i18n } = this.options;\n\n const area = document.createElement('div');\n area.className = 'color-picker-area';\n const thumb = document.createElement('div');\n thumb.className = 'color-picker-thumb';\n thumb.setAttribute('role', 'slider');\n thumb.setAttribute('aria-label', i18n.area!);\n thumb.setAttribute('aria-valuemin', '0');\n thumb.setAttribute('aria-valuemax', '100');\n thumb.tabIndex = disabled ? -1 : 0;\n if (disabled) thumb.setAttribute('aria-disabled', 'true');\n area.append(thumb);\n\n const hue = document.createElement('input');\n hue.type = 'range';\n hue.className = 'color-picker-hue';\n hue.min = '0';\n hue.max = '359';\n hue.setAttribute('aria-label', i18n.hue!);\n hue.disabled = disabled;\n\n const hex = document.createElement('input');\n hex.type = 'text';\n hex.className = 'color-picker-hex';\n hex.setAttribute('aria-label', i18n.hex!);\n hex.autocomplete = 'off';\n hex.spellcheck = false;\n hex.maxLength = 7;\n hex.disabled = disabled;\n\n // Area and hue before the native input, the hex field after it.\n this.input!.before(area, hue);\n this.input!.after(hex);\n this._area = area;\n this._thumb = thumb;\n this._hue = hue;\n this._hex = hex;\n\n area.addEventListener('pointerdown', this._onPointerDown);\n thumb.addEventListener('keydown', this._onKeyDown);\n hue.addEventListener('input', () => this._set({ ...this._hsv, h: Number(hue.value) }, false));\n hue.addEventListener('change', () => this._commit());\n hex.addEventListener('change', this._onHex);\n hex.addEventListener('keydown', (e) => {\n // Enter in a text field would submit the form; take it as \"apply\".\n if (e.key === 'Enter' && !Utils.isComposing(e)) {\n e.preventDefault();\n this._onHex();\n }\n });\n }\n\n private _render() {\n const { h, s, v } = this._hsv;\n const hex = toHex(this._hsv);\n const thumb = this._thumb!;\n this.el.style.setProperty('--_color-picker-hue', String(Math.round(h)));\n thumb.style.setProperty('--_color-picker-x', String(s));\n thumb.style.setProperty('--_color-picker-y', String(1 - v));\n thumb.style.setProperty('--_color-picker-color', hex);\n thumb.setAttribute('aria-valuenow', String(Math.round(s * 100)));\n thumb.setAttribute('aria-valuetext', this.options.i18n.value!(Math.round(s * 100), Math.round(v * 100)));\n this._hue!.value = String(Math.round(h));\n // The hex field only commits on change, so rewriting it never fights typing.\n this._hex!.value = hex;\n }\n\n // Store the color, write it to the native input and fire `input`; with\n // `commit`, also fire `change` and onChange.\n // Only reached from the built controls, which a disabled input disables.\n private _set(hsv: Hsv, commit = true) {\n const input = this.input!;\n this._hsv = hsv;\n const hex = toHex(hsv);\n const changed = input.value !== hex;\n this._writing = true;\n input.value = hex;\n if (changed) input.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this._writing = false;\n this._render();\n if (commit) this._commit();\n }\n\n private _commit() {\n if (!this.input) return;\n this._writing = true;\n this.input.dispatchEvent(new Event('change', { bubbles: true }));\n this._writing = false;\n this.options.onChange?.(this.input.value);\n }\n\n // The person used the browser's own picker on the native input.\n private _onNativeInput = () => {\n if (this._writing || !this.input) return;\n const hsv = toHsv(this.input.value);\n if (!hsv) return;\n this._hsv = hsv;\n this._render();\n };\n\n private _onHex = () => {\n const hsv = toHsv(this._hex!.value);\n if (hsv && toHex(hsv) !== this.input!.value) this._set(hsv);\n // An invalid entry goes back to the current color.\n this._hex!.value = toHex(this._hsv);\n };\n\n private _fromPoint(e: PointerEvent, commit: boolean) {\n const box = this._area!.getBoundingClientRect();\n const s = clamp((e.clientX - box.left) / box.width);\n const v = 1 - clamp((e.clientY - box.top) / box.height);\n this._set({ ...this._hsv, s, v }, commit);\n }\n\n private _onPointerDown = (e: PointerEvent) => {\n if (e.button || this.input!.disabled) return;\n const area = this._area!;\n e.preventDefault();\n this._thumb!.focus();\n area.setPointerCapture(e.pointerId);\n this._fromPoint(e, false);\n const move = (ev: PointerEvent) => this._fromPoint(ev, false);\n const drag = controllerFor(area);\n const up = (ev: PointerEvent) => {\n drag.abort();\n this._fromPoint(ev, true);\n };\n const { signal } = drag;\n area.addEventListener('pointermove', move, { signal });\n area.addEventListener('pointerup', up, { signal });\n area.addEventListener('pointercancel', up, { signal });\n };\n\n // Left and right change saturation, up and down brightness; see KEY_STEPS.\n private _onKeyDown = (e: KeyboardEvent) => {\n const steps = this._keySteps(e);\n if (!steps) return;\n e.preventDefault();\n const unit = e.shiftKey ? 0.1 : 0.01;\n const { s, v } = this._hsv;\n this._set({ ...this._hsv, s: clamp(s + steps[0] * unit), v: clamp(v + steps[1] * unit) });\n };\n\n /** How a key moves the point. Shift is the larger step; Alt, Ctrl and Meta stay the browser's. */\n private _keySteps(e: KeyboardEvent) {\n return Utils.plainKey(e) && !this.input!.disabled ? KEY_STEPS[e.key] : undefined;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Utils
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-67UNY7RH.mjs";
|
|
4
4
|
|
|
5
5
|
// src/ts/plugins/dockedDisplayPlugin.ts
|
|
6
6
|
var _defaults = {
|
|
@@ -78,4 +78,4 @@ var DockedDisplayPlugin = class {
|
|
|
78
78
|
export {
|
|
79
79
|
DockedDisplayPlugin
|
|
80
80
|
};
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-CY2CTOVM.mjs.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Component
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EB2V4OKL.mjs";
|
|
4
4
|
import {
|
|
5
5
|
Utils,
|
|
6
6
|
controllerFor,
|
|
7
7
|
restoreAttribute
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-67UNY7RH.mjs";
|
|
9
9
|
|
|
10
10
|
// src/ts/components/menu.ts
|
|
11
11
|
var parentOf = (el) => el.parentElement ?? (el.getRootNode().host || null);
|
|
@@ -76,6 +76,10 @@ var _Menu = class _Menu extends Component {
|
|
|
76
76
|
this._contextPoint = null;
|
|
77
77
|
/** What had focus when a context menu opened; focus goes back there. */
|
|
78
78
|
this._contextReturn = null;
|
|
79
|
+
/** Each attribute setup wrote, with the value it had before, for destroy(). */
|
|
80
|
+
this._originalAttributes = /* @__PURE__ */ new Map();
|
|
81
|
+
/** Where the menu was before it moved next to the trigger. */
|
|
82
|
+
this._originalPlace = { parent: null, next: null };
|
|
79
83
|
this._handleContextMenu = (e) => {
|
|
80
84
|
if (e.defaultPrevented) {
|
|
81
85
|
this.close();
|
|
@@ -115,14 +119,13 @@ var _Menu = class _Menu extends Component {
|
|
|
115
119
|
this._openedByHover = true;
|
|
116
120
|
this.open();
|
|
117
121
|
};
|
|
122
|
+
// A hover menu stays open while the pointer moves onto its content or onto
|
|
123
|
+
// the trigger of an open menu. relatedTarget is null when the pointer
|
|
124
|
+
// leaves the window entirely.
|
|
118
125
|
this._handleMouseLeave = (e) => {
|
|
119
126
|
const toEl = e.relatedTarget;
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
const leaveToActiveMenuTrigger = toEl.closest(".menu-trigger")?.["Expressive_Menu"]?.isOpen;
|
|
125
|
-
if (!leaveToActiveMenuTrigger && !this.menuEl?.contains(toEl)) this.close();
|
|
127
|
+
if (toEl && (this.menuEl?.contains(toEl) || _Menu._inOpenTrigger(toEl))) return;
|
|
128
|
+
this.close();
|
|
126
129
|
};
|
|
127
130
|
this._handleDocumentClick = (e) => {
|
|
128
131
|
const path = e.composedPath();
|
|
@@ -183,7 +186,7 @@ var _Menu = class _Menu extends Component {
|
|
|
183
186
|
const target = e.target;
|
|
184
187
|
this._menuClickTargets.set(e, target);
|
|
185
188
|
const li = target.closest("li");
|
|
186
|
-
if (li?.matches('.disabled, [aria-disabled="true"]')) {
|
|
189
|
+
if (li?.matches('.disabled, [aria-disabled="true"], .divider, .gap, .label, .optgroup')) {
|
|
187
190
|
e.preventDefault();
|
|
188
191
|
e.stopPropagation();
|
|
189
192
|
return;
|
|
@@ -373,10 +376,10 @@ var _Menu = class _Menu extends Component {
|
|
|
373
376
|
this.focusedIndex = -1;
|
|
374
377
|
this.filterQuery = [];
|
|
375
378
|
if (!this.options.contextMenu) {
|
|
376
|
-
this.el
|
|
377
|
-
if (!this.el.hasAttribute("aria-haspopup")) this.el
|
|
379
|
+
this._setAttribute(this.el, "aria-expanded", "false");
|
|
380
|
+
if (!this.el.hasAttribute("aria-haspopup")) this._setAttribute(this.el, "aria-haspopup", "menu");
|
|
378
381
|
if (this.id && !this.el.hasAttribute("aria-controls"))
|
|
379
|
-
this.el
|
|
382
|
+
this._setAttribute(this.el, "aria-controls", this.id);
|
|
380
383
|
}
|
|
381
384
|
if (!this.menuEl) {
|
|
382
385
|
console.warn(`Menu skipped: no element matches target "${this.id}".`, el);
|
|
@@ -400,6 +403,7 @@ var _Menu = class _Menu extends Component {
|
|
|
400
403
|
clearTimeout(this.filterTimeout);
|
|
401
404
|
this._resetMenuStyles();
|
|
402
405
|
this._restoreInert();
|
|
406
|
+
this._restoreSetup();
|
|
403
407
|
this._events.abort();
|
|
404
408
|
this._openEvents?.abort();
|
|
405
409
|
const index = _Menu._menus.indexOf(this);
|
|
@@ -440,6 +444,10 @@ var _Menu = class _Menu extends Component {
|
|
|
440
444
|
}
|
|
441
445
|
if (this.options.contextMenu) document.addEventListener("contextmenu", this._handleDocumentContextMenu, { signal });
|
|
442
446
|
}
|
|
447
|
+
static _inOpenTrigger(el) {
|
|
448
|
+
const trigger = el.closest(".menu-trigger");
|
|
449
|
+
return Boolean(trigger && _Menu.getInstance(trigger)?.isOpen);
|
|
450
|
+
}
|
|
443
451
|
_activateItem(li) {
|
|
444
452
|
const checked = this._toggleChecked(li);
|
|
445
453
|
if (!this._notify("select", this.options.onItemClick, { args: [li], detail: { item: li } })) return;
|
|
@@ -485,27 +493,27 @@ var _Menu = class _Menu extends Component {
|
|
|
485
493
|
}
|
|
486
494
|
_setupAccessibility() {
|
|
487
495
|
if (!this.menuEl) return;
|
|
488
|
-
if (!this.menuEl.hasAttribute("role")) this.menuEl
|
|
496
|
+
if (!this.menuEl.hasAttribute("role")) this._setAttribute(this.menuEl, "role", "menu");
|
|
489
497
|
const menus = [this.menuEl, ...this.menuEl.querySelectorAll("menu")];
|
|
490
498
|
menus.forEach((menu) => {
|
|
491
|
-
if (!menu.hasAttribute("role"))
|
|
499
|
+
if (!menu.hasAttribute("role")) this._setAttribute(menu, "role", "menu");
|
|
492
500
|
if (menu.getAttribute("role") !== "menu") return;
|
|
493
501
|
menu.querySelectorAll(ROWS).forEach((li) => {
|
|
494
502
|
if (li.classList.contains("divider")) {
|
|
495
|
-
if (!li.hasAttribute("role"))
|
|
503
|
+
if (!li.hasAttribute("role")) this._setAttribute(li, "role", "separator");
|
|
496
504
|
return;
|
|
497
505
|
}
|
|
498
506
|
if (li.classList.contains("gap")) {
|
|
499
|
-
|
|
507
|
+
this._setAttribute(li, "aria-hidden", "true");
|
|
500
508
|
return;
|
|
501
509
|
}
|
|
502
510
|
if (li.classList.contains("label") || li.classList.contains("optgroup")) {
|
|
503
|
-
if (!li.hasAttribute("role"))
|
|
511
|
+
if (!li.hasAttribute("role")) this._setAttribute(li, "role", "presentation");
|
|
504
512
|
return;
|
|
505
513
|
}
|
|
506
|
-
if (!li.hasAttribute("role"))
|
|
514
|
+
if (!li.hasAttribute("role")) this._setAttribute(li, "role", "menuitem");
|
|
507
515
|
if (li.classList.contains("disabled") && !li.hasAttribute("aria-disabled")) {
|
|
508
|
-
|
|
516
|
+
this._setAttribute(li, "aria-disabled", "true");
|
|
509
517
|
}
|
|
510
518
|
});
|
|
511
519
|
});
|
|
@@ -522,8 +530,8 @@ var _Menu = class _Menu extends Component {
|
|
|
522
530
|
this.menuEl?.querySelectorAll("li").forEach((li) => {
|
|
523
531
|
if (!li.querySelector(":scope > menu")) return;
|
|
524
532
|
const trigger = li.querySelector(":scope > a, :scope > button, :scope > span") ?? li;
|
|
525
|
-
|
|
526
|
-
|
|
533
|
+
this._setAttribute(trigger, "aria-haspopup", "menu");
|
|
534
|
+
this._setAttribute(trigger, "aria-expanded", "false");
|
|
527
535
|
});
|
|
528
536
|
}
|
|
529
537
|
_toggleSubmenu(li) {
|
|
@@ -583,7 +591,7 @@ var _Menu = class _Menu extends Component {
|
|
|
583
591
|
}
|
|
584
592
|
_resetMenuStyles() {
|
|
585
593
|
if (!this.menuEl) return;
|
|
586
|
-
this.menuEl.hidePopover();
|
|
594
|
+
if (this.menuEl.popover) this.menuEl.hidePopover();
|
|
587
595
|
this._resetMenuPositioningStyles();
|
|
588
596
|
this.menuEl.style.transform = "";
|
|
589
597
|
this.menuEl.style.opacity = "";
|
|
@@ -598,19 +606,42 @@ var _Menu = class _Menu extends Component {
|
|
|
598
606
|
this._stopReanchoring();
|
|
599
607
|
}
|
|
600
608
|
_moveMenuToElement() {
|
|
609
|
+
this._originalPlace = { parent: this.menuEl.parentNode, next: this.menuEl.nextSibling };
|
|
601
610
|
if (this.options.container) this.options.container.append(this.menuEl);
|
|
602
611
|
else this.el.after(this.menuEl);
|
|
603
612
|
}
|
|
613
|
+
/** Keeps the value an attribute had before setup first changed it, which destroy() puts back. */
|
|
614
|
+
_keepAttribute(el, name) {
|
|
615
|
+
const saved = this._originalAttributes.get(el) ?? /* @__PURE__ */ new Map();
|
|
616
|
+
if (!saved.has(name)) saved.set(name, el.getAttribute(name));
|
|
617
|
+
this._originalAttributes.set(el, saved);
|
|
618
|
+
}
|
|
619
|
+
_setAttribute(el, name, value) {
|
|
620
|
+
this._keepAttribute(el, name);
|
|
621
|
+
el.setAttribute(name, value);
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Puts back the attributes setup wrote and the menu where it was, so a
|
|
625
|
+
* destroyed trigger is no longer announced as a menu button. The place is
|
|
626
|
+
* only used while it is still in the page.
|
|
627
|
+
*/
|
|
628
|
+
_restoreSetup() {
|
|
629
|
+
this._originalAttributes.forEach((saved, el) => saved.forEach((value, name) => restoreAttribute(el, name, value)));
|
|
630
|
+
this._originalAttributes.clear();
|
|
631
|
+
const { parent, next } = this._originalPlace;
|
|
632
|
+
if (parent?.isConnected) parent.insertBefore(this.menuEl, next?.parentNode === parent ? next : null);
|
|
633
|
+
}
|
|
604
634
|
_makeMenuFocusable() {
|
|
605
635
|
if (!this.menuEl) return;
|
|
636
|
+
this._keepAttribute(this.menuEl, "popover");
|
|
606
637
|
this.menuEl.popover = "manual";
|
|
607
|
-
this.menuEl
|
|
638
|
+
this._setAttribute(this.menuEl, "tabindex", "-1");
|
|
608
639
|
this.menuEl.querySelectorAll(":scope li").forEach((el) => {
|
|
609
640
|
if (el.matches('.divider, .gap, .label, .optgroup, [role="none"]')) {
|
|
610
|
-
|
|
641
|
+
this._setAttribute(el, "tabindex", "-1");
|
|
611
642
|
return;
|
|
612
643
|
}
|
|
613
|
-
if (!el.getAttribute("tabindex"))
|
|
644
|
+
if (!el.getAttribute("tabindex")) this._setAttribute(el, "tabindex", "0");
|
|
614
645
|
});
|
|
615
646
|
}
|
|
616
647
|
/**
|
|
@@ -862,7 +893,7 @@ var _Menu = class _Menu extends Component {
|
|
|
862
893
|
}
|
|
863
894
|
// A trigger whose target never resolved has no menu to open.
|
|
864
895
|
get _canOpen() {
|
|
865
|
-
return !this.isOpen && !!this.menuEl && this.el
|
|
896
|
+
return !this.isOpen && !!this.menuEl && _Menu.getInstance(this.el) === this;
|
|
866
897
|
}
|
|
867
898
|
};
|
|
868
899
|
_Menu._menus = [];
|
|
@@ -872,4 +903,4 @@ var Menu = _Menu;
|
|
|
872
903
|
export {
|
|
873
904
|
Menu
|
|
874
905
|
};
|
|
875
|
-
//# sourceMappingURL=chunk-
|
|
906
|
+
//# sourceMappingURL=chunk-DWA5UYLJ.mjs.map
|