optikos 0.4.0 → 0.5.1
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 +38 -0
- package/dist/build.js +2 -0
- package/dist/build.js.map +7 -0
- package/dist/{chunk-FCJI2JF7.js → chunk-34KVSA2V.js} +2 -2
- package/dist/{chunk-M7FNPRV4.js → chunk-4DW5WBZB.js} +2 -2
- package/dist/chunk-4QAHVGGE.js +2 -0
- package/dist/chunk-4QAHVGGE.js.map +7 -0
- package/dist/{chunk-I5A74NMJ.js → chunk-4Z4E3BZ2.js} +2 -2
- package/dist/chunk-5H533QXN.js +2 -0
- package/dist/chunk-5H533QXN.js.map +7 -0
- package/dist/chunk-5KJ5Y4GY.js +2 -0
- package/dist/chunk-5KJ5Y4GY.js.map +7 -0
- package/dist/chunk-5WE2JOBY.js +2 -0
- package/dist/chunk-5WE2JOBY.js.map +7 -0
- package/dist/{chunk-SEW5OCQF.js → chunk-6IXVTWFH.js} +2 -2
- package/dist/{chunk-NJ5IFOPR.js → chunk-6S4BKUGD.js} +2 -2
- package/dist/{chunk-CWIE74NX.js → chunk-6VWSTY32.js} +2 -2
- package/dist/{chunk-F4HZUAKM.js → chunk-72ESP5DB.js} +2 -2
- package/dist/chunk-74IVU356.js +3 -0
- package/dist/chunk-74IVU356.js.map +7 -0
- package/dist/chunk-76A4MY7P.js +2 -0
- package/dist/chunk-76A4MY7P.js.map +7 -0
- package/dist/{chunk-3BG75P7T.js → chunk-7SE4B4TC.js} +2 -2
- package/dist/{chunk-PGVLRMTQ.js → chunk-A5N2AJCE.js} +2 -2
- package/dist/{chunk-3QRA3XOA.js → chunk-ALNUVKDT.js} +2 -2
- package/dist/{chunk-NQV4THNE.js → chunk-ANR27GED.js} +2 -2
- package/dist/{chunk-EXIADWI7.js → chunk-AZUWS2C5.js} +2 -2
- package/dist/{chunk-Z6L55FTN.js → chunk-BHKI2SU3.js} +2 -2
- package/dist/{chunk-GZIDE5K2.js → chunk-BIQX75P2.js} +2 -2
- package/dist/{chunk-MNSDGJKA.js → chunk-BPCD37A2.js} +2 -2
- package/dist/chunk-CGSCBLG2.js +2 -0
- package/dist/chunk-CGSCBLG2.js.map +7 -0
- package/dist/{chunk-R32HPK7R.js → chunk-DHUBCB4H.js} +2 -2
- package/dist/chunk-DY3ZYMXD.js +2 -0
- package/dist/chunk-DY3ZYMXD.js.map +7 -0
- package/dist/{chunk-JSEI44A7.js → chunk-EKRWJJ65.js} +2 -2
- package/dist/chunk-EO2IXU2W.js +2 -0
- package/dist/chunk-EO2IXU2W.js.map +7 -0
- package/dist/{chunk-JE56CJX2.js → chunk-EQ4IWYLW.js} +2 -2
- package/dist/{chunk-5PYJ6FJK.js → chunk-EXBGOHG7.js} +2 -2
- package/dist/{chunk-UQRQH2JW.js → chunk-FTZMF2QX.js} +2 -2
- package/dist/{chunk-XFIREDWO.js → chunk-G7NNOLOG.js} +2 -2
- package/dist/chunk-GPEA3UWY.js +2 -0
- package/dist/chunk-GPEA3UWY.js.map +7 -0
- package/dist/{chunk-4OB2IM5L.js → chunk-GX32KEG2.js} +2 -2
- package/dist/{chunk-ZSPJZ3ZH.js → chunk-GYGX4VYF.js} +2 -2
- package/dist/{chunk-BIGL3ZVD.js → chunk-H2EC3QP4.js} +2 -2
- package/dist/{chunk-HRW25TMU.js → chunk-H2KFAM7L.js} +2 -2
- package/dist/{chunk-6LJK4QWF.js → chunk-HHOSKOO6.js} +2 -2
- package/dist/{chunk-JJLOUMCJ.js → chunk-I5KHVFJ4.js} +2 -2
- package/dist/{chunk-N2LS4JD6.js → chunk-IB5T27PW.js} +2 -2
- package/dist/{chunk-5BMG5ZBY.js → chunk-IE7KRNFJ.js} +2 -2
- package/dist/chunk-IODSL7KU.js +2 -0
- package/dist/chunk-IODSL7KU.js.map +7 -0
- package/dist/{chunk-3FK52VQX.js → chunk-J2YP2YD3.js} +2 -2
- package/dist/{chunk-3FCIZKIN.js → chunk-J6D4T4WY.js} +2 -2
- package/dist/{chunk-H25XXQVH.js → chunk-JF4WPGJQ.js} +2 -2
- package/dist/chunk-K44IJHPF.js +2 -0
- package/dist/{chunk-UDXO3KM3.js → chunk-KMBTJ5AG.js} +2 -2
- package/dist/chunk-KMBTJ5AG.js.map +7 -0
- package/dist/chunk-KNWO4NXX.js +2 -0
- package/dist/chunk-KNWO4NXX.js.map +7 -0
- package/dist/{chunk-JLKIHXZP.js → chunk-KP7O5MVL.js} +2 -2
- package/dist/{chunk-HLS5FI55.js → chunk-KVUELLYF.js} +2 -2
- package/dist/chunk-LLHDEUIA.js +2 -0
- package/dist/chunk-LLHDEUIA.js.map +7 -0
- package/dist/{chunk-CMV3F6HR.js → chunk-LRUKKIYA.js} +2 -2
- package/dist/{chunk-DWTDNKXX.js → chunk-M2XOIEPY.js} +2 -2
- package/dist/{chunk-P4O57S6N.js → chunk-MBRCE5A7.js} +2 -2
- package/dist/{chunk-CFGCB37K.js → chunk-MMPPDQ2E.js} +2 -2
- package/dist/{chunk-643FOYQB.js → chunk-MRDX3RVJ.js} +2 -2
- package/dist/{chunk-6PZPBPAD.js → chunk-NAWQBQ57.js} +2 -2
- package/dist/{chunk-RG6SHPHF.js → chunk-NBR5IRZT.js} +2 -2
- package/dist/chunk-NSUAVAWO.js +2 -0
- package/dist/chunk-NSUAVAWO.js.map +7 -0
- package/dist/chunk-NYXRPWIB.js +2 -0
- package/dist/chunk-NYXRPWIB.js.map +7 -0
- package/dist/{chunk-J5QPFJ7M.js → chunk-OK3SN5PN.js} +2 -2
- package/dist/{chunk-NNR2FNHG.js → chunk-OQFQDTLL.js} +2 -2
- package/dist/chunk-OVEQUN4V.js +2 -0
- package/dist/chunk-OVEQUN4V.js.map +7 -0
- package/dist/{chunk-GEBAYD6N.js → chunk-PMIIQMVH.js} +2 -2
- package/dist/{chunk-DIOJGTUN.js → chunk-QT5JRZZJ.js} +2 -2
- package/dist/{chunk-IUOEPAWG.js → chunk-R52OSARY.js} +2 -2
- package/dist/{chunk-XR677UYD.js → chunk-RI62AESU.js} +2 -2
- package/dist/{chunk-6BOM5KZR.js → chunk-RRGAJ7T4.js} +2 -2
- package/dist/{chunk-2YRQULDC.js → chunk-SQTM4QFP.js} +2 -2
- package/dist/{chunk-FPU53CCV.js → chunk-TAFHKT6O.js} +2 -2
- package/dist/{chunk-3TCITFUU.js → chunk-TBM35UV6.js} +2 -2
- package/dist/{chunk-YDX2PCVL.js → chunk-TBOQ6HZZ.js} +2 -2
- package/dist/{chunk-GEJKFE4X.js → chunk-TJJL2GSJ.js} +2 -2
- package/dist/{chunk-3F4MN2BU.js → chunk-TJXH3F7Z.js} +2 -2
- package/dist/chunk-TMBGEZSD.js +2 -0
- package/dist/chunk-TMBGEZSD.js.map +7 -0
- package/dist/{chunk-BQEFLPDA.js → chunk-U5RENLU4.js} +2 -2
- package/dist/chunk-U5RENLU4.js.map +7 -0
- package/dist/chunk-UXL7KG46.js +2 -0
- package/dist/chunk-UXL7KG46.js.map +7 -0
- package/dist/{chunk-DWA45BWR.js → chunk-VADYSXHY.js} +2 -2
- package/dist/{chunk-Q6FY4L2F.js → chunk-VBLCO5Q7.js} +2 -2
- package/dist/{chunk-ESCLDVFS.js → chunk-VCK5WWMQ.js} +2 -2
- package/dist/{chunk-BCVOUMJJ.js → chunk-VCYCNSJY.js} +2 -2
- package/dist/{chunk-4AZ44KV4.js → chunk-VOCGAAG7.js} +2 -2
- package/dist/{chunk-AT7VFZRB.js → chunk-WHWPLMIG.js} +2 -2
- package/dist/{chunk-S2CMWKVB.js → chunk-WVJSNE6Q.js} +2 -2
- package/dist/chunk-WWETTEUZ.js +2 -0
- package/dist/{chunk-YXOKWCYS.js.map → chunk-WWETTEUZ.js.map} +4 -4
- package/dist/chunk-XFDNXSU5.js +2 -0
- package/dist/{chunk-XQHATUKN.js.map → chunk-XFDNXSU5.js.map} +3 -3
- package/dist/{chunk-U5L76VVB.js → chunk-XI4IBUE3.js} +2 -2
- package/dist/{chunk-4S3HRFQB.js → chunk-YAKKOVRI.js} +2 -2
- package/dist/{chunk-HG7OOHGD.js → chunk-YF5GWNM7.js} +2 -2
- package/dist/{chunk-4CWYF4O7.js → chunk-YRCR5ELY.js} +2 -2
- package/dist/{chunk-C3MWS7P2.js → chunk-YVEGWCYD.js} +2 -2
- package/dist/{chunk-MQ5BYGFY.js → chunk-ZYHMTPW4.js} +2 -2
- package/dist/components/alert.js +2 -0
- package/dist/components/alert.js.map +7 -0
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/carousel.js +1 -1
- package/dist/components/chart.js +1 -1
- package/dist/components/chat.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/checkboxgroup.js +1 -1
- package/dist/components/chip.js +1 -1
- package/dist/components/codeviewer.js +1 -1
- package/dist/components/columntotals.js +2 -0
- package/dist/components/columntotals.js.map +7 -0
- package/dist/components/combobox.js +1 -1
- package/dist/components/commandpalette.js +1 -1
- package/dist/components/container.js +1 -1
- package/dist/components/dataview.js +1 -1
- package/dist/components/datefield.js +1 -1
- package/dist/components/daterangefield.js +1 -1
- package/dist/components/datetimefield.js +1 -1
- package/dist/components/dial.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/exportbar.js +2 -0
- package/dist/components/exportbar.js.map +7 -0
- package/dist/components/fieldgroup.js +1 -1
- package/dist/components/fieldlist.js +1 -1
- package/dist/components/fieldset.js +1 -1
- package/dist/components/filterbuilder.js +1 -1
- package/dist/components/form.js +1 -1
- package/dist/components/formactions.js +1 -1
- package/dist/components/formerrors.js +1 -1
- package/dist/components/formsection.js +1 -1
- package/dist/components/grid.js +1 -1
- package/dist/components/gridexport.js +1 -1
- package/dist/components/grouping.js +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/image.js +1 -1
- package/dist/components/imagecanvas.js +1 -1
- package/dist/components/imagefield.js +1 -1
- package/dist/components/inputgroup.js +1 -1
- package/dist/components/label.js +1 -1
- package/dist/components/listbox.js +1 -1
- package/dist/components/lookupfield.js +1 -1
- package/dist/components/maskfield.js +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/messagebox.js +1 -1
- package/dist/components/navmenu.js +1 -1
- package/dist/components/numberfield.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/panel.js +1 -1
- package/dist/components/pickerfield.js +1 -1
- package/dist/components/quicksearch.js +2 -0
- package/dist/components/quicksearch.js.map +7 -0
- package/dist/components/radiogroup.js +1 -1
- package/dist/components/searchgrid.js +1 -1
- package/dist/components/secretfield.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/shortcuts.js +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/spacer.js +1 -1
- package/dist/components/spinner.js +1 -1
- package/dist/components/stat.js +1 -1
- package/dist/components/stepform.js +1 -1
- package/dist/components/stepper.js +1 -1
- package/dist/components/suggestfield.js +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/textfield.js +1 -1
- package/dist/components/timeentry.js +2 -0
- package/dist/components/timeentry.js.map +7 -0
- package/dist/components/timefield.js +1 -1
- package/dist/components/timeline.js +1 -1
- package/dist/components/toast.js +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/components/toolbar.js +1 -1
- package/dist/components/tree.js +1 -1
- package/dist/components/treegrid.js +1 -1
- package/dist/components/viewmanager.js +1 -1
- package/dist/components/viewport.js +1 -1
- package/dist/components/widget.js +1 -1
- package/dist/components/window.js +1 -1
- package/dist/core.js +1 -1
- package/dist/css/alert.css +60 -0
- package/dist/css/carousel.css +60 -0
- package/dist/css/columntotals.css +56 -0
- package/dist/css/exportbar.css +9 -0
- package/dist/css/grid.css +12 -0
- package/dist/css/grouping.css +7 -0
- package/dist/css/label.css +14 -0
- package/dist/css/quicksearch.css +13 -0
- package/dist/css/stat.css +14 -0
- package/dist/css/timeentry.css +116 -0
- package/dist/css/timeline.css +45 -0
- package/dist/data.js +1 -1
- package/dist/dev.js +1 -1
- package/dist/dev.js.map +2 -2
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/optikos.css +411 -0
- package/dist/types/build/build.d.ts +49 -0
- package/dist/types/build/index.d.ts +1 -0
- package/dist/types/components/alert.d.ts +1 -0
- package/dist/types/components/base/label/label.d.ts +11 -1
- package/dist/types/components/charts/stat/stat.d.ts +7 -1
- package/dist/types/components/columntotals.d.ts +1 -0
- package/dist/types/components/data/columntotals/columntotals.d.ts +24 -0
- package/dist/types/components/data/exportbar/exportbar.d.ts +24 -0
- package/dist/types/components/data/grid/footer.d.ts +6 -0
- package/dist/types/components/data/grouping/controls.d.ts +27 -0
- package/dist/types/components/data/grouping/grouping.d.ts +15 -3
- package/dist/types/components/data/quicksearch/quicksearch.d.ts +13 -0
- package/dist/types/components/data/timeentry/timeentry.d.ts +37 -0
- package/dist/types/components/data/timeline/timeline.d.ts +3 -0
- package/dist/types/components/exportbar.d.ts +1 -0
- package/dist/types/components/feedback/alert/alert.d.ts +28 -0
- package/dist/types/components/fields/datetimefield/datetimefield.d.ts +2 -0
- package/dist/types/components/fields/maskfield/maskfield.d.ts +23 -4
- package/dist/types/components/layout/carousel/carousel.d.ts +8 -0
- package/dist/types/components/navigation/navmenu/navmenu.d.ts +4 -0
- package/dist/types/components/quicksearch.d.ts +1 -0
- package/dist/types/components/timeentry.d.ts +1 -0
- package/dist/types/core/component.d.ts +6 -3
- package/dist/types/core/container.d.ts +2 -0
- package/dist/types/data/column.d.ts +4 -2
- package/dist/types/index.d.ts +6 -0
- package/dist/types/layout/layout.d.ts +5 -0
- package/dist/ui.js +1 -1
- package/package.json +5 -1
- package/dist/chunk-2HNQ2XRY.js +0 -2
- package/dist/chunk-2HNQ2XRY.js.map +0 -7
- package/dist/chunk-5PWPAN62.js +0 -2
- package/dist/chunk-5PWPAN62.js.map +0 -7
- package/dist/chunk-AQ3RTHG5.js +0 -2
- package/dist/chunk-AQ3RTHG5.js.map +0 -7
- package/dist/chunk-BJWREA76.js +0 -2
- package/dist/chunk-BJWREA76.js.map +0 -7
- package/dist/chunk-BQEFLPDA.js.map +0 -7
- package/dist/chunk-DJUSVBD5.js +0 -2
- package/dist/chunk-DJUSVBD5.js.map +0 -7
- package/dist/chunk-GFFZTFQH.js +0 -2
- package/dist/chunk-GFFZTFQH.js.map +0 -7
- package/dist/chunk-PMOXLQ72.js +0 -2
- package/dist/chunk-PMOXLQ72.js.map +0 -7
- package/dist/chunk-SB4ICXBV.js +0 -2
- package/dist/chunk-SB4ICXBV.js.map +0 -7
- package/dist/chunk-SWCB2GMN.js +0 -2
- package/dist/chunk-SWCB2GMN.js.map +0 -7
- package/dist/chunk-TQPQ4UEA.js +0 -2
- package/dist/chunk-TQPQ4UEA.js.map +0 -7
- package/dist/chunk-UDXO3KM3.js.map +0 -7
- package/dist/chunk-XQHATUKN.js +0 -2
- package/dist/chunk-YJTUFK4P.js +0 -2
- package/dist/chunk-YXOKWCYS.js +0 -2
- /package/dist/{chunk-FCJI2JF7.js.map → chunk-34KVSA2V.js.map} +0 -0
- /package/dist/{chunk-M7FNPRV4.js.map → chunk-4DW5WBZB.js.map} +0 -0
- /package/dist/{chunk-I5A74NMJ.js.map → chunk-4Z4E3BZ2.js.map} +0 -0
- /package/dist/{chunk-SEW5OCQF.js.map → chunk-6IXVTWFH.js.map} +0 -0
- /package/dist/{chunk-NJ5IFOPR.js.map → chunk-6S4BKUGD.js.map} +0 -0
- /package/dist/{chunk-CWIE74NX.js.map → chunk-6VWSTY32.js.map} +0 -0
- /package/dist/{chunk-F4HZUAKM.js.map → chunk-72ESP5DB.js.map} +0 -0
- /package/dist/{chunk-3BG75P7T.js.map → chunk-7SE4B4TC.js.map} +0 -0
- /package/dist/{chunk-PGVLRMTQ.js.map → chunk-A5N2AJCE.js.map} +0 -0
- /package/dist/{chunk-3QRA3XOA.js.map → chunk-ALNUVKDT.js.map} +0 -0
- /package/dist/{chunk-NQV4THNE.js.map → chunk-ANR27GED.js.map} +0 -0
- /package/dist/{chunk-EXIADWI7.js.map → chunk-AZUWS2C5.js.map} +0 -0
- /package/dist/{chunk-Z6L55FTN.js.map → chunk-BHKI2SU3.js.map} +0 -0
- /package/dist/{chunk-GZIDE5K2.js.map → chunk-BIQX75P2.js.map} +0 -0
- /package/dist/{chunk-MNSDGJKA.js.map → chunk-BPCD37A2.js.map} +0 -0
- /package/dist/{chunk-R32HPK7R.js.map → chunk-DHUBCB4H.js.map} +0 -0
- /package/dist/{chunk-JSEI44A7.js.map → chunk-EKRWJJ65.js.map} +0 -0
- /package/dist/{chunk-JE56CJX2.js.map → chunk-EQ4IWYLW.js.map} +0 -0
- /package/dist/{chunk-5PYJ6FJK.js.map → chunk-EXBGOHG7.js.map} +0 -0
- /package/dist/{chunk-UQRQH2JW.js.map → chunk-FTZMF2QX.js.map} +0 -0
- /package/dist/{chunk-XFIREDWO.js.map → chunk-G7NNOLOG.js.map} +0 -0
- /package/dist/{chunk-4OB2IM5L.js.map → chunk-GX32KEG2.js.map} +0 -0
- /package/dist/{chunk-ZSPJZ3ZH.js.map → chunk-GYGX4VYF.js.map} +0 -0
- /package/dist/{chunk-BIGL3ZVD.js.map → chunk-H2EC3QP4.js.map} +0 -0
- /package/dist/{chunk-HRW25TMU.js.map → chunk-H2KFAM7L.js.map} +0 -0
- /package/dist/{chunk-6LJK4QWF.js.map → chunk-HHOSKOO6.js.map} +0 -0
- /package/dist/{chunk-JJLOUMCJ.js.map → chunk-I5KHVFJ4.js.map} +0 -0
- /package/dist/{chunk-N2LS4JD6.js.map → chunk-IB5T27PW.js.map} +0 -0
- /package/dist/{chunk-5BMG5ZBY.js.map → chunk-IE7KRNFJ.js.map} +0 -0
- /package/dist/{chunk-3FK52VQX.js.map → chunk-J2YP2YD3.js.map} +0 -0
- /package/dist/{chunk-3FCIZKIN.js.map → chunk-J6D4T4WY.js.map} +0 -0
- /package/dist/{chunk-H25XXQVH.js.map → chunk-JF4WPGJQ.js.map} +0 -0
- /package/dist/{chunk-YJTUFK4P.js.map → chunk-K44IJHPF.js.map} +0 -0
- /package/dist/{chunk-JLKIHXZP.js.map → chunk-KP7O5MVL.js.map} +0 -0
- /package/dist/{chunk-HLS5FI55.js.map → chunk-KVUELLYF.js.map} +0 -0
- /package/dist/{chunk-CMV3F6HR.js.map → chunk-LRUKKIYA.js.map} +0 -0
- /package/dist/{chunk-DWTDNKXX.js.map → chunk-M2XOIEPY.js.map} +0 -0
- /package/dist/{chunk-P4O57S6N.js.map → chunk-MBRCE5A7.js.map} +0 -0
- /package/dist/{chunk-CFGCB37K.js.map → chunk-MMPPDQ2E.js.map} +0 -0
- /package/dist/{chunk-643FOYQB.js.map → chunk-MRDX3RVJ.js.map} +0 -0
- /package/dist/{chunk-6PZPBPAD.js.map → chunk-NAWQBQ57.js.map} +0 -0
- /package/dist/{chunk-RG6SHPHF.js.map → chunk-NBR5IRZT.js.map} +0 -0
- /package/dist/{chunk-J5QPFJ7M.js.map → chunk-OK3SN5PN.js.map} +0 -0
- /package/dist/{chunk-NNR2FNHG.js.map → chunk-OQFQDTLL.js.map} +0 -0
- /package/dist/{chunk-GEBAYD6N.js.map → chunk-PMIIQMVH.js.map} +0 -0
- /package/dist/{chunk-DIOJGTUN.js.map → chunk-QT5JRZZJ.js.map} +0 -0
- /package/dist/{chunk-IUOEPAWG.js.map → chunk-R52OSARY.js.map} +0 -0
- /package/dist/{chunk-XR677UYD.js.map → chunk-RI62AESU.js.map} +0 -0
- /package/dist/{chunk-6BOM5KZR.js.map → chunk-RRGAJ7T4.js.map} +0 -0
- /package/dist/{chunk-2YRQULDC.js.map → chunk-SQTM4QFP.js.map} +0 -0
- /package/dist/{chunk-FPU53CCV.js.map → chunk-TAFHKT6O.js.map} +0 -0
- /package/dist/{chunk-3TCITFUU.js.map → chunk-TBM35UV6.js.map} +0 -0
- /package/dist/{chunk-YDX2PCVL.js.map → chunk-TBOQ6HZZ.js.map} +0 -0
- /package/dist/{chunk-GEJKFE4X.js.map → chunk-TJJL2GSJ.js.map} +0 -0
- /package/dist/{chunk-3F4MN2BU.js.map → chunk-TJXH3F7Z.js.map} +0 -0
- /package/dist/{chunk-DWA45BWR.js.map → chunk-VADYSXHY.js.map} +0 -0
- /package/dist/{chunk-Q6FY4L2F.js.map → chunk-VBLCO5Q7.js.map} +0 -0
- /package/dist/{chunk-ESCLDVFS.js.map → chunk-VCK5WWMQ.js.map} +0 -0
- /package/dist/{chunk-BCVOUMJJ.js.map → chunk-VCYCNSJY.js.map} +0 -0
- /package/dist/{chunk-4AZ44KV4.js.map → chunk-VOCGAAG7.js.map} +0 -0
- /package/dist/{chunk-AT7VFZRB.js.map → chunk-WHWPLMIG.js.map} +0 -0
- /package/dist/{chunk-S2CMWKVB.js.map → chunk-WVJSNE6Q.js.map} +0 -0
- /package/dist/{chunk-U5L76VVB.js.map → chunk-XI4IBUE3.js.map} +0 -0
- /package/dist/{chunk-4S3HRFQB.js.map → chunk-YAKKOVRI.js.map} +0 -0
- /package/dist/{chunk-HG7OOHGD.js.map → chunk-YF5GWNM7.js.map} +0 -0
- /package/dist/{chunk-4CWYF4O7.js.map → chunk-YRCR5ELY.js.map} +0 -0
- /package/dist/{chunk-C3MWS7P2.js.map → chunk-YVEGWCYD.js.map} +0 -0
- /package/dist/{chunk-MQ5BYGFY.js.map → chunk-ZYHMTPW4.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/data/timeline/timeline.ts"],
|
|
4
|
+
"sourcesContent": ["import { Component, type ComponentConfig } from '../../../core/component';\nimport { register } from '../../../core/registry';\nimport { h } from '../../../core/dom';\nimport { t, getLocale, addMessages } from '../../../core/i18n';\nimport type { Store } from '../../../data/store';\nimport { iconEl } from '../../base/icon/icon';\n\naddMessages('en', { timeline: 'Timeline', tlNow: 'Now', tlFromTo: '{from} to {to}' });\naddMessages('pt-BR', { timeline: 'Linha do tempo', tlNow: 'Agora', tlFromTo: '{from} at\u00E9 {to}' });\n\nexport interface TimelineItem {\n id?: string | number;\n title: string;\n text?: string;\n icon?: string;\n tone?: 'default' | 'success' | 'warning' | 'danger' | 'info';\n /** `list`: when it happened (an ISO date or time, or any text). */\n time?: string;\n /** `range`: ISO dates or date-times. */\n start?: string;\n end?: string;\n /** `range`: the row (a person, a room, a phase). */\n lane?: string;\n}\n\nexport interface TimelineConfig extends ComponentConfig {\n /** `list`: events one under the other, with a marker (default). `range`: a schedule: bars over a time axis, one row per `lane`. */\n mode?: 'list' | 'range';\n items?: TimelineItem[];\n /** Items from a Store (its records are `TimelineItem`s). */\n store?: Store<any>;\n /** `range`: the order of the rows. Default: order of appearance. */\n lanes?: string[];\n /** `range`: the window shown. Default: from the first start to the last end. */\n from?: string;\n to?: string;\n /** `range`: a marker at the current time. Default true. */\n now?: boolean;\n /** `range`: `horizontal` (time runs left to right, one row per lane, default) or `vertical` (time runs top to bottom, one column per lane). */\n direction?: 'horizontal' | 'vertical';\n /** Optional features (`timeEntry()`...). See `TimelinePlugin`. */\n plugins?: TimelinePlugin[];\n}\n\n/** Extends a Timeline without growing its base: `init` runs once it is rendered and may return a cleanup. The timeline fires `paint` after every repaint. */\nexport interface TimelinePlugin {\n init(timeline: Timeline): void | (() => void);\n}\n\n/** The time axis of a `range` timeline: its ends in ms, and how to read and write the item dates (`clock`: `'HH:mm'` of one day, else ISO). */\nexport interface TimelineScale {\n lo: number;\n hi: number;\n clock: boolean;\n vertical: boolean;\n parse(v: string): number;\n format(ms: number): string;\n}\n\nconst CLOCK = /^\\d{1,2}:\\d{2}$/;\nconst pad = (n: number) => String(n).padStart(2, '0');\n\nconst DAY = 86400000;\nconst when = (v: string, o: Intl.DateTimeFormatOptions) => (/^\\d{4}-\\d{2}/.test(v) && !isNaN(+new Date(v)) ? new Intl.DateTimeFormat(getLocale()._lang, o).format(new Date(/^\\d{4}-\\d{2}-\\d{2}$/.test(v) ? `${v}T00:00` : v)) : v);\n\n/** Events as a vertical list, or a schedule (phases, staff shifts) as bars on a time axis. Click or Enter on an item fires `select`. */\nexport class Timeline extends Component<TimelineConfig> {\n protected override baseCls = 'op-timeline';\n private items: TimelineItem[] = [];\n private scale?: TimelineScale;\n\n protected override build() {\n return h('div', this.baseCls);\n }\n\n protected override onRender() {\n this.el.classList.add(`op-timeline--${this.config.mode ?? 'list'}`);\n if (this.config.mode === 'range' && this.config.direction === 'vertical') this.el.classList.add('op-timeline--vertical');\n const store = this.config.store;\n if (store) this.own(store.subscribe(() => this.setItems(store.getFiltered().map((r) => r.data))));\n this.setItems(store ? store.getFiltered().map((r) => r.data) : (this.config.items ?? []));\n for (const p of this.config.plugins ?? []) {\n const off = p.init(this);\n if (off) this.own(off);\n }\n this.listen(this.el, 'click', (e: Event) => this.pick(e.target as HTMLElement));\n this.listen(this.el, 'keydown', (e: KeyboardEvent) => e.key === 'Enter' && this.pick(e.target as HTMLElement));\n }\n\n private pick(el: HTMLElement) {\n const i = Number(el.closest<HTMLElement>('[data-i]')?.dataset.i);\n if (this.items[i]) this.emit('select', this.items[i]);\n }\n\n getItems(): TimelineItem[] {\n return this.items;\n }\n\n /** The time axis of a `range` timeline (set by the last paint), for plugins. */\n getScale(): TimelineScale | undefined {\n return this.scale;\n }\n\n setItems(items: TimelineItem[]) {\n this.items = items;\n if (this.rendered) this.paint();\n }\n\n private paint() {\n this.el.setAttribute('role', 'list');\n this.el.setAttribute('aria-label', this.config.ariaLabel ?? t('timeline'));\n this.el.replaceChildren(...(this.config.mode === 'range' ? this.range() : this.list()));\n this.emit('paint');\n }\n\n private list(): HTMLElement[] {\n return this.items.map((it, i) =>\n h('div', `op-timeline__item${it.tone && it.tone !== 'default' ? ` is-${it.tone}` : ''}`, { role: 'listitem', 'data-i': i, tabindex: 0 },\n h('div', 'op-timeline__when', {}, it.time ? when(it.time, /T/.test(it.time) ? { dateStyle: 'medium', timeStyle: 'short' } : { dateStyle: 'medium' }) : ''),\n h('div', 'op-timeline__marker', { 'aria-hidden': 'true' }, it.icon ? iconEl(it.icon) : null),\n h('div', 'op-timeline__body', {}, h('div', 'op-timeline__title', {}, it.title), it.text ? h('div', 'op-timeline__text', {}, it.text) : null),\n ),\n );\n }\n\n private range(): HTMLElement[] {\n const c = this.config;\n const clock = CLOCK.test(c.from ?? this.items.find((x) => x.start)?.start ?? '');\n const ms = (v: string) => (clock ? (Number(v.slice(0, -3)) * 60 + Number(v.slice(-2))) * 60000 : +new Date(/^\\d{4}-\\d{2}-\\d{2}$/.test(v) ? `${v}T00:00` : v));\n const spans = this.items.filter((x) => x.start).map((x) => ({ x, a: ms(x.start!), b: ms(x.end ?? x.start!) + (!clock && x.end && /^\\d{4}-\\d{2}-\\d{2}$/.test(x.end) ? DAY : 0) }));\n if (!spans.length && !(c.from && c.to)) return [];\n const lo = c.from ? ms(c.from) : Math.min(...spans.map((s) => s.a));\n const hi = c.to ? ms(c.to) + (/^\\d{4}-\\d{2}-\\d{2}$/.test(c.to) ? DAY : 0) : Math.max(...spans.map((s) => s.b), lo + 1);\n const vertical = c.direction === 'vertical';\n const pct = (v: number) => `${(Math.min(Math.max((v - lo) / (hi - lo), 0), 1) * 100).toFixed(3)}%`;\n const lanes = [...(c.lanes ?? []), ...spans.map((s) => s.x.lane ?? '').filter((l, i, a) => a.indexOf(l) === i && !(c.lanes ?? []).includes(l))];\n this.scale = { lo, hi, clock, vertical, parse: ms, format: (v) => (clock ? `${pad(Math.floor(v / 3600000))}:${pad(Math.round(v / 60000) % 60)}` : ((d) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}`)(new Date(v))) };\n const long = !clock && hi - lo > 62 * DAY;\n const tickEls: HTMLElement[] = [];\n const tickAt = (at: number, text: string) => {\n const tick = h('span', 'op-timeline__tick', {}, text);\n tick.style[vertical ? 'insetBlockStart' : 'insetInlineStart'] = pct(at);\n tickEls.push(tick);\n };\n if (clock) for (let at = Math.ceil(lo / 3600000) * 3600000, hop = (hi - lo) / 3600000 > 14 ? 7200000 : 3600000; at < hi; at += hop) tickAt(at, this.scale.format(at));\n else\n for (let d = new Date(lo); +d < hi; long ? d.setMonth(d.getMonth() + 1, 1) : d.setDate(d.getDate() + 1)) {\n d.setHours(0, 0, 0, 0);\n if (+d < lo) continue;\n tickAt(+d, new Intl.DateTimeFormat(getLocale()._lang, long ? { month: 'short' } : { day: 'numeric', month: 'short' }).format(d));\n }\n const out: HTMLElement[] = [h('div', 'op-timeline__axis', {}, h('span', 'op-timeline__lane-name'), h('div', 'op-timeline__track', { 'aria-hidden': 'true' }, ...tickEls))];\n for (const lane of lanes) {\n const bars = spans.filter((s) => (s.x.lane ?? '') === lane).map(({ x, a, b }) => {\n const bar = h('div', `op-timeline__bar${x.tone && x.tone !== 'default' ? ` is-${x.tone}` : ''}`, { role: 'listitem', tabindex: 0, 'data-i': this.items.indexOf(x), 'aria-label': `${x.title}, ${t('tlFromTo', { from: when(x.start!, { dateStyle: 'medium', timeStyle: /T/.test(x.start!) ? 'short' : undefined }), to: when(x.end ?? x.start!, { dateStyle: 'medium', timeStyle: /T/.test(x.end ?? '') ? 'short' : undefined }) })}` }, x.icon ? iconEl(x.icon) : null, h('span', 'op-timeline__bar-text', {}, x.title));\n bar.title = x.text ?? x.title;\n bar.style[vertical ? 'insetBlockStart' : 'insetInlineStart'] = pct(a);\n bar.style[vertical ? 'insetBlockEnd' : 'insetInlineEnd'] = `calc(100% - ${pct(Math.max(b, a + (hi - lo) / 200))})`;\n return bar;\n });\n out.push(h('div', 'op-timeline__lane', { role: 'group', 'aria-label': lane }, h('span', 'op-timeline__lane-name', {}, lane), h('div', 'op-timeline__track', {}, ...bars)));\n }\n this.el.style.gridTemplateColumns = vertical ? `var(--op-timeline-axis-width) repeat(${lanes.length}, minmax(0, 1fr))` : '';\n const now = Date.now();\n if (c.now !== false && !clock && now >= lo && now <= hi) {\n const mark = () => {\n const m = h('div', 'op-timeline__now', { 'aria-hidden': 'true', title: t('tlNow') });\n m.style[vertical ? 'insetBlockStart' : 'insetInlineStart'] = pct(now);\n return m;\n };\n if (vertical) for (const track of out.slice(1).map((l) => l.querySelector('.op-timeline__track')!)) track.append(mark());\n else out.push(h('div', 'op-timeline__nowrow', { 'aria-hidden': 'true' }, h('span', 'op-timeline__lane-name'), h('div', 'op-timeline__track', {}, mark())));\n }\n return out;\n }\n}\nregister('timeline', Timeline);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["addMessages", "CLOCK", "pad", "n", "DAY", "when", "v", "o", "getLocale", "Timeline", "Component", "h", "store", "r", "p", "off", "e", "el", "i", "items", "t", "it", "iconEl", "c", "clock", "x", "ms", "spans", "lo", "s", "hi", "vertical", "pct", "lanes", "l", "a", "d", "long", "tickEls", "tickAt", "at", "text", "tick", "hop", "out", "lane", "bars", "b", "bar", "now", "mark", "m", "track", "register"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as p}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as p}from"./chunk-SQTM4QFP.js";import{a as m}from"./chunk-TIPK3SCJ.js";import{f as c}from"./chunk-PZSHOSOS.js";import{d as u,f as s}from"./chunk-S4QD5NID.js";var o=class extends p{baseCls="op-field op-textfield op-numberfield";garbage=!1;emptyValue(){return null}isEmpty(e){return e==null}get lang(){return this.config.locale??u()._lang}get decimalSep(){return new Intl.NumberFormat(this.lang).formatToParts(1.5).find(e=>e.type==="decimal").value}parse(e){this.garbage=!1;let t=e.trim();if(!t)return null;let{format:r,scale:i=1}=this.config,n=this.decimalSep,l=Number(t.replace(new RegExp(`[^\\d\\-${n==="."?".":","}]`,"g"),"").replace(n,"."))*(r==="percent"?.01:1);return Number.isNaN(l)||!/\d/.test(t)?(this.garbage=!0,null):Math.round(l*i*1e9)/1e9}display(e){if(e==null)return"";let{format:t="decimal",decimals:r,scale:i=1}=this.config,n=e/i;return t==="decimal"&&r==null?String(n).replace(".",this.decimalSep):new Intl.NumberFormat(this.lang,{style:t,currency:t==="currency"?this.config.currency??u()._currency:void 0,...r!=null&&{minimumFractionDigits:r,maximumFractionDigits:r},useGrouping:t!=="decimal"}).format(n)}createControl(){let e=super.createControl(),t=this.input;return t.setAttribute("inputmode","decimal"),t.setAttribute("role","spinbutton"),this.syncAria(),this.listen(t,"blur",()=>{this.garbage||(this.input.value=this.display(this.value))}),e}syncAria(){let{min:e,max:t}=this.config,r=this.inputEl;e!=null?r.setAttribute("aria-valuemin",String(e)):r.removeAttribute("aria-valuemin"),t!=null?r.setAttribute("aria-valuemax",String(t)):r.removeAttribute("aria-valuemax"),this.value!=null?r.setAttribute("aria-valuenow",String(this.value)):r.removeAttribute("aria-valuenow")}onInput(){super.onInput(),this.syncAria(),this.garbage?this.setError(s("number")):this.error&&this.validate()}applyValue(e){super.applyValue(e),this.garbage=!1,this.syncAria()}check(){if(this.garbage)return s("number");let e=super.check(),t=this.value,{min:r,max:i}=this.config;return e||t==null?e:r!=null&&i!=null&&(t<r||t>i)?s("range",{min:r,max:i}):r!=null&&t<r?s("min",{n:r}):i!=null&&t>i?s("max",{n:i}):""}onKey(e){let t=e.key==="PageUp"||e.key==="PageDown";e.key==="ArrowUp"||e.key==="ArrowDown"||t?(e.preventDefault(),this.bump((e.key.endsWith("Up")?1:-1)*(t?10:1))):super.onKey(e)}bump(e){let{step:t=1,min:r,max:i,decimals:n,scale:l=1}=this.config,a=(this.value??0)+t*l*e;(r!=null||i!=null)&&(a=c(a,r??-1/0,i??1/0)),a=Number(a.toFixed(n==null?10:Math.max(0,n+Math.log10(l)))),this.setValue(a)}increment(){this.bump(1)}decrement(){this.bump(-1)}setMin(e){this.config.min=e,this.rendered&&this.syncAria()}setMax(e){this.config.max=e,this.rendered&&this.syncAria()}setStep(e){this.config.step=e}setDecimals(e){this.config.decimals=e,this.rendered&&(this.input.value=this.display(this.value))}};m("numberfield",o);export{o as a};
|
|
2
|
+
//# sourceMappingURL=chunk-DHUBCB4H.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function l(t,p){let e=t.el.querySelector(".op-grid__footer");if(!e){e=Object.assign(document.createElement("div"),{className:"op-grid__footer"});let r=t.el.querySelector(".op-grid__pager");r?(r.before(e),e.append(r)):t.el.querySelector(".op-grid__table").after(e)}e.append(p);let o=e;return()=>{if(p.remove(),o.querySelector(".op-footer-group"))return;let r=o.querySelector(".op-grid__pager");r&&o.before(r),o.remove()}}export{l as a};
|
|
2
|
+
//# sourceMappingURL=chunk-DY3ZYMXD.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/data/grid/footer.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Grid } from './grid';\n\n/**\n * The row under a grid where the pager and the plugins' icon buttons sit side by side. Each plugin adds its own group;\n * the last one out gives the pager back.\n */\nexport function addFooterGroup(grid: Grid, group: HTMLElement): () => void {\n let row = grid.el.querySelector<HTMLElement>('.op-grid__footer');\n if (!row) {\n row = Object.assign(document.createElement('div'), { className: 'op-grid__footer' });\n const pager = grid.el.querySelector<HTMLElement>('.op-grid__pager');\n if (pager) {\n pager.before(row);\n row.append(pager);\n } else grid.el.querySelector('.op-grid__table')!.after(row);\n }\n row.append(group);\n const mine = row;\n return () => {\n group.remove();\n if (mine.querySelector('.op-footer-group')) return;\n const pager = mine.querySelector<HTMLElement>('.op-grid__pager');\n if (pager) mine.before(pager);\n mine.remove();\n };\n}\n"],
|
|
5
|
+
"mappings": "AAMO,SAASA,EAAeC,EAAYC,EAAgC,CACzE,IAAIC,EAAMF,EAAK,GAAG,cAA2B,kBAAkB,EAC/D,GAAI,CAACE,EAAK,CACRA,EAAM,OAAO,OAAO,SAAS,cAAc,KAAK,EAAG,CAAE,UAAW,iBAAkB,CAAC,EACnF,IAAMC,EAAQH,EAAK,GAAG,cAA2B,iBAAiB,EAC9DG,GACFA,EAAM,OAAOD,CAAG,EAChBA,EAAI,OAAOC,CAAK,GACXH,EAAK,GAAG,cAAc,iBAAiB,EAAG,MAAME,CAAG,CAC5D,CACAA,EAAI,OAAOD,CAAK,EAChB,IAAMG,EAAOF,EACb,MAAO,IAAM,CAEX,GADAD,EAAM,OAAO,EACTG,EAAK,cAAc,kBAAkB,EAAG,OAC5C,IAAMD,EAAQC,EAAK,cAA2B,iBAAiB,EAC3DD,GAAOC,EAAK,OAAOD,CAAK,EAC5BC,EAAK,OAAO,CACd,CACF",
|
|
6
|
+
"names": ["addFooterGroup", "grid", "group", "row", "pager", "mine"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as m}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as m}from"./chunk-FTZMF2QX.js";import{b as f}from"./chunk-676AKAGF.js";import{a as u}from"./chunk-VV7CFMPZ.js";import{a as g}from"./chunk-TIPK3SCJ.js";import{b as p}from"./chunk-PZSHOSOS.js";import{e as d,f as l}from"./chunk-S4QD5NID.js";d("en",{wDockLeft:"Dock to the left",wDockRight:"Dock to the right",wDockTop:"Dock to the top",wDockBottom:"Dock to the bottom",wResize:"Resize"});d("pt-BR",{wDockLeft:"Fixar \xE0 esquerda",wDockRight:"Fixar \xE0 direita",wDockTop:"Fixar em cima",wDockBottom:"Fixar embaixo",wResize:"Redimensionar"});var v=160,w={left:"chevron-left",right:"chevron-right",top:"chevron-up",bottom:"chevron-down"},y={left:"wDockLeft",right:"wDockRight",top:"wDockTop",bottom:"wDockBottom"},b=["right","left","top","bottom"],a=class extends m{baseCls="op-panel op-widget";opened=!1;opener=null;cancelHide;userTools;pos;grip;constructor(e={}){let t=[...e.tools??[]],i=e.sides??["left","right","bottom"];if(e.sideSwitcher)for(let o of i)t.push({icon:w[o],label:l(y[o]),handler:s=>s.setSide(o)});super({closable:!0,closeAction:"hide",floating:!0,side:"right",layout:"fit",hidden:!0,...e,tools:t}),this.userTools=e.tools?.length??0}onRender(){super.onRender();let e=this.config;this.el.setAttribute("role","complementary"),this.el.classList.toggle("is-floating",e.floating!==!1),e.sideSwitcher&&(e.sides??["left","right","bottom"]).forEach((t,i)=>{let o=this.el.querySelectorAll(".op-panel__tool")[this.userTools+i];o&&(o.dataset.side=t)}),this.paintSide(),e.size!=null&&this.setSize(e.size),e.draggable&&e.floating!==!1&&this.initDrag(),this.setResizable(!!e.resizable),this.listen(this.el,"keydown",t=>{t.key==="Escape"&&e.closeOnEsc!==!1&&!t.defaultPrevented&&e.floating!==!1&&(t.stopPropagation(),this.close())})}getSide(){return this.config.side??"right"}setSide(e){e===this.getSide()||!b.includes(e)||(this.config.side=e,this.resetPosition(),this.paintSide(),this.emit("side-change",e))}paintSide(){if(!this.rendered)return;let e=this.getSide();for(let t of b)this.el.classList.toggle(`op-widget--${t}`,t===e);for(let t of Array.from(this.el.querySelectorAll("[data-side]")))t.setAttribute("aria-pressed",String(t.dataset.side===e));this.paintGrip()}getPosition(){return this.pos}resetPosition(){if(!this.pos)return;this.pos=void 0;let e=this.el.style;for(let t of["inset","inset-inline","inset-block","left","top","width","height"])e.removeProperty(t);this.el.classList.remove("is-moved"),this.paintGrip(),this.emit("move",void 0)}moveTo(e,t){let i=this.el;if(!this.pos){let n=i.getBoundingClientRect();n.width&&(i.style.width=`${n.width}px`,i.style.height=`${n.height}px`),i.classList.add("is-moved")}let o=i.offsetWidth||i.getBoundingClientRect().width,s=i.offsetHeight||i.getBoundingClientRect().height;this.pos={x:Math.max(0,Math.min(e,innerWidth-Math.min(o,innerWidth))),y:Math.max(0,Math.min(t,innerHeight-Math.min(s,innerHeight)))},i.style.inset="auto",i.style.left=`${this.pos.x}px`,i.style.top=`${this.pos.y}px`,this.paintGrip(),this.emit("move",this.pos)}initDrag(){let e=this.headerEl;e.classList.add("op-widget__handle"),e.tabIndex=0,e.setAttribute("aria-roledescription","draggable"),this.listen(e,"pointerdown",t=>{if(t.target.closest(".op-panel__tool")||t.button)return;let i=this.el.getBoundingClientRect(),o=t.clientX-i.left,s=t.clientY-i.top;this.el.classList.add("is-dragging");let n=h=>this.moveTo(h.clientX-o,h.clientY-s),r=()=>{this.el.classList.remove("is-dragging"),document.removeEventListener("pointermove",n),document.removeEventListener("pointerup",r)};document.addEventListener("pointermove",n),document.addEventListener("pointerup",r),this.own(r)}),this.listen(e,"keydown",t=>{if(!t.altKey)return;let i=t.shiftKey?64:16,o=this.el.getBoundingClientRect(),s={ArrowLeft:[o.left-i,o.top],ArrowRight:[o.left+i,o.top],ArrowUp:[o.left,o.top-i],ArrowDown:[o.left,o.top+i]};t.key==="Home"?(t.preventDefault(),this.resetPosition()):s[t.key]&&(t.preventDefault(),this.moveTo(...s[t.key]))})}setSize(e){this.config.size=e,this.rendered&&this.el.style.setProperty("--op-widget-size",typeof e=="number"?`${e}px`:e)}setResizable(e){if(this.config.resizable=e,!this.rendered||(this.grip?.remove(),this.grip=void 0,!e||this.config.floating===!1))return;let t=this.grip=p("div","op-widget__resize",{role:"separator",tabindex:0,"aria-label":l("wResize")});this.el.append(t),this.listen(t,"pointerdown",i=>{if(i.button)return;i.preventDefault();let o=this.el.getBoundingClientRect(),s=i.clientX,n=i.clientY;this.el.classList.add("is-resizing");let r=c=>this.resizeBy(o,c.clientX-s,c.clientY-n),h=()=>{this.el.classList.remove("is-resizing"),document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",h)};document.addEventListener("pointermove",r),document.addEventListener("pointerup",h),this.own(h)}),this.listen(t,"keydown",i=>{let o=i.shiftKey?64:16,s={ArrowLeft:[-o,0],ArrowRight:[o,0],ArrowUp:[0,-o],ArrowDown:[0,o]};!s[i.key]||i.altKey||(i.preventDefault(),this.resizeBy(this.el.getBoundingClientRect(),...s[i.key]))}),this.paintGrip()}resizeBy(e,t,i){let o=(n,r)=>Math.round(Math.max(v,Math.min(n,r)));if(this.pos)t&&(this.el.style.width=`${o(e.width+t,innerWidth-this.pos.x)}px`),i&&(this.el.style.height=`${o(e.height+i,innerHeight-this.pos.y)}px`);else{let n=this.getSide(),r=n==="left"||n==="right",h=n==="right"?-t:n==="left"?t:n==="bottom"?-i:i;this.setSize(o((r?e.width:e.height)+h,(r?innerWidth:innerHeight)-32))}this.paintGrip();let s=this.el.getBoundingClientRect();this.emit("resize",{width:Math.round(s.width),height:Math.round(s.height)})}paintGrip(){let e=this.grip;if(!e)return;let t=this.getSide(),i=!!this.pos||t==="left"||t==="right",o=this.el.getBoundingClientRect();e.setAttribute("aria-orientation",i?"vertical":"horizontal"),e.setAttribute("aria-valuemin",String(v)),e.setAttribute("aria-valuenow",String(Math.round(i?o.width:o.height)))}isOpen(){return this.config.floating===!1?!this.isHidden():this.opened}open(){this.show()}setOpen(e=!this.isOpen()){e?this.show():this.hide()}show(){if(this.config.floating===!1)return super.show();if(this.opened||this.destroyed||this.emit("before-show")===!1)return;this.cancelHide?.(),this.opener=document.activeElement;let e=this.el;this.opened=!0,this.config.hidden=!1,f(e,this.opener),e.hidden=!1,this.notifyMount(),requestAnimationFrame(()=>this.opened&&e.classList.add("is-open")),e.tabIndex<0&&!e.hasAttribute("tabindex")&&(e.tabIndex=-1),(this.config.autoFocus&&u(this.getBody())[0]||e).focus(),this.emit("show")}hide(){if(this.config.floating===!1)return super.hide();if(!this.opened||this.emit("before-hide")===!1)return;this.opened=!1,this.config.hidden=!0,this.el.classList.remove("is-open"),this.cancelHide=this.later(()=>this.el.hidden=!0,250);let e=this.opener;e instanceof HTMLElement&&e.isConnected&&this.el.contains(document.activeElement)&&e.focus(),this.emit("hide")}onDestroy(){super.onDestroy(),this.el.remove()}};g("widget",a);export{a};
|
|
2
|
+
//# sourceMappingURL=chunk-EKRWJJ65.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as p}from"./chunk-4DW5WBZB.js";import{a as c}from"./chunk-VOCGAAG7.js";import{a as h}from"./chunk-RI62AESU.js";import{a as u}from"./chunk-TIPK3SCJ.js";import{b as m}from"./chunk-PZSHOSOS.js";import{e as n,f as a}from"./chunk-S4QD5NID.js";n("en",{dtDate:"Date",dtTime:"Time",datetime:"Enter a date and a time"});n("pt-BR",{dtDate:"Data",dtTime:"Hora",datetime:"Informe a data e a hora"});var r=d=>String(d).padStart(2,"0"),l=class extends h{baseCls="op-field op-datetimefield";date;time;emptyValue(){return null}isEmpty(e){return!e}createControl(){let{min:e,max:t,step:s}=this.config;this.date=new c({min:e,max:t,ariaLabel:a("dtDate")}),this.time=new p({step:s,ariaLabel:a("dtTime")});for(let i of[this.date,this.time])i.on("change",()=>this.compose());return this.own(()=>(this.date.destroy(),this.time.destroy())),this.inputEl=this.date.el.querySelector("input"),m("div","op-datetimefield__parts",{role:"group"},this.date.el,this.time.el)}compose(){let e=this.date.getValue(),t=this.time.getValue();e&&!t&&this.config.defaultTime&&this.time.setValue(t=this.config.defaultTime,!0);let s=null;e&&t&&(s=this.config.utc?new Date(+e.slice(0,4),+e.slice(5,7)-1,+e.slice(8),+t.slice(0,2),+t.slice(3)).toISOString():`${e}T${t}`),this.commit(s)}applyValue(e){let t=null,s=null;if(e){let i=this.config.utc?new Date(e):void 0;[t,s]=i?[`${i.getFullYear()}-${r(i.getMonth()+1)}-${r(i.getDate())}`,`${r(i.getHours())}:${r(i.getMinutes())}`]:e.split("T").map(o=>o.slice(0,o.includes(":")?5:10))}this.date.setValue(t,!0),this.time.setValue(s,!0)}getDisplayText(){return this.value?[this.date.getDisplayText(),this.time.getDisplayText()].join(" "):""}check(){let[e,t]=[this.date.getValue(),this.time.getValue()];return!this.date.isValid()||!this.time.isValid()||!!e!=!!t?a("datetime"):super.check()}onDisabled(e){this.date.setDisabled(e),this.time.setDisabled(e)}onReadonly(e){this.date.setReadonly(e),this.time.setReadonly(e)}setMin(e){this.config.min=e,this.date.setMin(e)}setMax(e){this.config.max=e,this.date.setMax(e)}};u("datetimefield",l);export{l as a};
|
|
2
|
+
//# sourceMappingURL=chunk-EO2IXU2W.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/fields/datetimefield/datetimefield.ts"],
|
|
4
|
+
"sourcesContent": ["import { Field, type FieldConfig } from '../../../core/field';\nimport { register } from '../../../core/registry';\nimport { h } from '../../../core/dom';\nimport { t, addMessages } from '../../../core/i18n';\nimport { DateField } from '../datefield/datefield';\nimport { TimeField } from '../timefield/timefield';\n\naddMessages('en', { dtDate: 'Date', dtTime: 'Time', datetime: 'Enter a date and a time' });\naddMessages('pt-BR', { dtDate: 'Data', dtTime: 'Hora', datetime: 'Informe a data e a hora' });\n\nexport interface DateTimeFieldConfig extends FieldConfig<string | null> {\n /** Earliest and latest date, `YYYY-MM-DD`. */\n min?: string;\n max?: string;\n /** Minutes moved by \u2191/\u2193 in the time part. */\n step?: number;\n /** The value is the ISO instant (`2026-11-10T17:30:00.000Z`) of what the user typed, in their time zone. Default: the local `YYYY-MM-DDTHH:mm`. */\n utc?: boolean;\n /** `HH:mm` used (and shown) when only the date is filled in, e.g. `'23:59'` for an end date. */\n defaultTime?: string;\n}\n\nconst pad = (n: number) => String(n).padStart(2, '0');\n\n/** A date and a time of day side by side. The value is one ISO string (local, or UTC with `utc`) or null. */\nexport class DateTimeField extends Field<string | null, DateTimeFieldConfig> {\n protected override baseCls = 'op-field op-datetimefield';\n private date!: DateField;\n private time!: TimeField;\n\n protected override emptyValue() {\n return null;\n }\n protected override isEmpty(v: string | null) {\n return !v;\n }\n\n protected createControl() {\n const { min, max, step } = this.config;\n this.date = new DateField({ min, max, ariaLabel: t('dtDate') });\n this.time = new TimeField({ step, ariaLabel: t('dtTime') });\n for (const f of [this.date, this.time]) f.on('change', () => this.compose());\n this.own(() => (this.date.destroy(), this.time.destroy()));\n this.inputEl = this.date.el.querySelector('input')!;\n return h('div', 'op-datetimefield__parts', { role: 'group' }, this.date.el, this.time.el);\n }\n\n /** Both parts \u2192 the value. One part alone is not a value yet (`check` says so). */\n private compose() {\n const d = this.date.getValue();\n let tm = this.time.getValue();\n if (d && !tm && this.config.defaultTime) this.time.setValue((tm = this.config.defaultTime), true);\n let v: string | null = null;\n if (d && tm) v = this.config.utc ? new Date(+d.slice(0, 4), +d.slice(5, 7) - 1, +d.slice(8), +tm.slice(0, 2), +tm.slice(3)).toISOString() : `${d}T${tm}`;\n this.commit(v);\n }\n\n protected applyValue(v: string | null) {\n let d: string | null = null;\n let tm: string | null = null;\n if (v) {\n const x = this.config.utc ? new Date(v) : undefined;\n [d, tm] = x ? [`${x.getFullYear()}-${pad(x.getMonth() + 1)}-${pad(x.getDate())}`, `${pad(x.getHours())}:${pad(x.getMinutes())}`] : v.split('T').map((s) => s.slice(0, s.includes(':') ? 5 : 10));\n }\n this.date.setValue(d, true);\n this.time.setValue(tm, true);\n }\n\n override getDisplayText() {\n return this.value ? [this.date.getDisplayText(), this.time.getDisplayText()].join(' ') : '';\n }\n\n protected override check(): string {\n const [d, tm] = [this.date.getValue(), this.time.getValue()];\n if (!this.date.isValid() || !this.time.isValid() || (!!d !== !!tm)) return t('datetime');\n return super.check();\n }\n\n protected override onDisabled(disabled: boolean) {\n this.date.setDisabled(disabled);\n this.time.setDisabled(disabled);\n }\n protected override onReadonly(readonly: boolean) {\n this.date.setReadonly(readonly);\n this.time.setReadonly(readonly);\n }\n\n setMin(min: string | undefined) {\n this.config.min = min;\n this.date.setMin(min);\n }\n setMax(max: string | undefined) {\n this.config.max = max;\n this.date.setMax(max);\n }\n}\nregister('datetimefield', DateTimeField);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["addMessages", "pad", "n", "DateTimeField", "Field", "v", "min", "max", "step", "DateField", "t", "TimeField", "f", "h", "d", "tm", "x", "s", "disabled", "readonly", "register"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as k}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as k}from"./chunk-FTZMF2QX.js";import{b as d,c as u}from"./chunk-676AKAGF.js";import{a as c,b as g}from"./chunk-VV7CFMPZ.js";import{a as v}from"./chunk-TIPK3SCJ.js";import{b as m}from"./chunk-PZSHOSOS.js";import{e as l,f as a}from"./chunk-S4QD5NID.js";import{b,c as y}from"./chunk-4AA4FQEM.js";import{c as r}from"./chunk-2UPUC4RK.js";l("en",{discardText:"Discard your unsaved changes?",discard:"Discard",keepEditing:"Keep editing"});l("pt-BR",{discardText:"Descartar as altera\xE7\xF5es n\xE3o salvas?",discard:"Descartar",keepEditing:"Continuar editando"});var p=class h extends k{baseCls="op-panel op-window";backdrop;visible=!1;cleanup=[];opener=null;moved=!1;leaving=0;constructor(e={}){super({closable:!0,...e})}onRender(){super.onRender();let e=this.config;this.el.setAttribute("role","dialog"),this.el.tabIndex=-1,e.modal!==!1&&this.el.setAttribute("aria-modal","true"),e.draggable!==!1&&this.initDrag()}initDrag(){this.headerEl.classList.add("op-window__handle"),this.listen(this.headerEl,"pointerdown",e=>{if(e.target.closest(".op-panel__tool")||e.button)return;let t=this.el.getBoundingClientRect(),i=e.clientX-t.left,n=e.clientY-t.top;this.el.classList.add("is-dragging");let o=f=>{this.el.style.left=`${Math.max(0,Math.min(f.clientX-i,innerWidth-40))}px`,this.el.style.top=`${Math.max(0,Math.min(f.clientY-n,innerHeight-40))}px`,this.moved=!0},s=()=>{this.el.classList.remove("is-dragging"),document.removeEventListener("pointermove",o),document.removeEventListener("pointerup",s)};document.addEventListener("pointermove",o),document.addEventListener("pointerup",s),this.cleanup.push(s)})}setMask(e){this.config.mask=e,this.backdrop?.classList.toggle("is-clear",!e)}isVisible(){return this.visible}center(){let e=this.el;e.style.left=`${Math.max(0,(innerWidth-e.offsetWidth)/2)}px`,e.style.top=`${Math.max(0,(innerHeight-e.offsetHeight)/3)}px`}keepInView(){if(!this.moved)return this.center();let e=this.el;e.style.top=`${Math.max(0,Math.min(parseFloat(e.style.top)||0,innerHeight-e.offsetHeight))}px`}show(){if(this.visible||this.destroyed||this.emit("before-show")===!1)return;let e=this.config,t=this.el;this.opener=document.activeElement,e.modal!==!1?(this.backdrop=m("div",`op-window-backdrop${e.mask===!1?" is-clear":""}`,{},t),d(this.backdrop,this.opener),this.cleanup.push(u(this.backdrop)),this.listen(this.backdrop,"pointerdown",s=>{s.target===this.backdrop&&(e.closeOnBackdrop?this.close():t.focus())})):d(t,this.opener),this.visible=!0,this.leaving++,t.getAnimations?.().forEach(s=>s.cancel()),this.notifyMount(),this.center(),b(t,this.opener??void 0,"modal"),this.backdrop?.animate?.([{opacity:0},{opacity:1}],{duration:r.ms("modal"),easing:r.easing("enter")}),this.cleanup.push(g(t));let i=s=>{s.key==="Escape"&&e.closeOnEsc!==!1&&!s.defaultPrevented&&(s.stopPropagation(),this.close())};t.addEventListener("keydown",i);let n=()=>this.keepInView();window.addEventListener("resize",n);let o=typeof ResizeObserver=="function"?new ResizeObserver(n):null;o?.observe(t),this.cleanup.push(()=>t.removeEventListener("keydown",i),()=>window.removeEventListener("resize",n),()=>o?.disconnect()),e.autoFocus?this.focusFirst():t.focus(),this.emit("show")}focusFirst(){let e=c(this.bodyEl)[0],t=this.el.querySelector(".op-panel__footer .op-button--primary");(e??t??c(this.el).find(i=>!i.classList.contains("op-panel__tool"))??this.el).focus()}static ask;close(){let e=this.config.confirmDiscard;if(!e||!this.query(i=>i.isDirty?.()===!0).length)return super.close();let t=typeof e=="string"?e:a("discardText");(h.ask?h.ask(t,{okText:a("discard"),cancelText:a("keepEditing")}):Promise.resolve(confirm(t))).then(i=>{!i||this.destroyed||(this.config.confirmDiscard=!1,super.close(),this.config.confirmDiscard=e)})}hide(){!this.visible||this.emit("before-hide")===!1||(this.release(),this.emit("hide"))}release(e=!0){this.visible=!1,this.cleanup.splice(0).reverse().forEach(o=>o());let t=this.backdrop;this.backdrop=void 0;let i=t??this.el,n=e?y(this.el,this.opener??void 0,"modal"):null;if(n){let o=++this.leaving;t?.animate?.([{opacity:1},{opacity:0}],{duration:r.ms("modal","exit"),easing:r.easing("exit"),fill:"forwards"}),n.then(()=>o===this.leaving&&!this.visible&&(i.remove(),t?.remove()))}else i.remove(),t?.remove();this.opener instanceof HTMLElement&&this.opener.isConnected&&this.opener.focus()}onDestroy(){this.visible?this.release(!1):this.leaving&&(this.el.closest(".op-window-backdrop")??this.el).remove(),super.onDestroy()}};v("window",p);export{p as a};
|
|
2
|
+
//# sourceMappingURL=chunk-EQ4IWYLW.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as f,c as v}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as f,c as v}from"./chunk-QT5JRZZJ.js";import{a as u}from"./chunk-TIPK3SCJ.js";import{f as d}from"./chunk-KMBTJ5AG.js";import{b as a,f as m}from"./chunk-PZSHOSOS.js";import{e as g,f as l}from"./chunk-S4QD5NID.js";f({maximize:'<path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M16 21h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"/>'});g("en",{imgZoomIn:"Zoom in",imgZoomOut:"Zoom out",imgReset:"Reset zoom",imgError:"The image could not be loaded"});g("pt-BR",{imgZoomIn:"Aumentar",imgZoomOut:"Diminuir",imgReset:"Restaurar zoom",imgError:"N\xE3o foi poss\xEDvel carregar a imagem"});var p=class extends d{baseCls="op-imagecanvas";stage;img;status;zoom=1;x=0;y=0;pointers=new Map;onRender(){let i=this.config;if(this.img=a("img","op-imagecanvas__img",{draggable:!1}),this.status=a("div","op-imagecanvas__status",{role:"status"}),this.stage=a("div","op-imagecanvas__stage",{tabindex:0,role:"img"},this.img),this.el.append(this.stage,this.status),i.zoomable!==!1&&i.showTools!==!1){let e=(t,s,o)=>{let r=a("button","op-imagecanvas__tool",{type:"button","aria-label":l(s),title:l(s)},v(t));return this.listen(r,"click",o),r};this.el.append(a("div","op-imagecanvas__tools",{},e("minus","imgZoomOut",()=>this.zoomBy(.8)),e("plus","imgZoomIn",()=>this.zoomBy(1.25)),e("maximize","imgReset",()=>this.reset())))}i.ratio&&(this.el.style.aspectRatio=i.ratio),this.listen(this.img,"load",()=>{this.setLoading(!1),this.el.classList.remove("is-error"),this.status.textContent="",this.emit("load")}),this.listen(this.img,"error",()=>{this.setLoading(!1),this.el.classList.add("is-error"),this.status.textContent=l("imgError"),this.emit("error")}),i.zoomable!==!1&&this.bindZoom(),this.setFit(i.fit??"contain"),this.setAlt(i.alt??""),this.setSrc(i.src??"")}bindZoom(){let i=this.stage;this.listen(i,"wheel",t=>{!t.ctrlKey&&!t.metaKey||(t.preventDefault(),this.zoomBy(Math.exp(-t.deltaY*.01),t.clientX,t.clientY))},{passive:!1}),this.listen(i,"dblclick",t=>this.zoom>1?this.reset():this.zoomBy(2,t.clientX,t.clientY)),this.listen(i,"pointerdown",t=>{this.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY}),i.setPointerCapture?.(t.pointerId),this.el.classList.toggle("is-dragging",this.zoom>1)}),this.listen(i,"pointermove",t=>{let s=this.pointers.get(t.pointerId);if(!s)return;let o=[...this.pointers].filter(([n])=>n!==t.pointerId),r=t.clientX-s.x,h=t.clientY-s.y;if(o.length){let n=o[0][1],c=Math.hypot(s.x-n.x,s.y-n.y),y=Math.hypot(t.clientX-n.x,t.clientY-n.y);c&&this.zoomBy(y/c,(t.clientX+n.x)/2,(t.clientY+n.y)/2)}else this.zoom>1&&this.pan(r,h);s.x=t.clientX,s.y=t.clientY});let e=t=>{this.pointers.delete(t.pointerId),this.el.classList.remove("is-dragging")};this.listen(i,"pointerup",e),this.listen(i,"pointercancel",e),this.listen(i,"keydown",t=>{let o={ArrowLeft:[40,0],ArrowRight:[-40,0],ArrowUp:[0,40],ArrowDown:[0,-40]};if(t.key==="+"||t.key==="=")this.zoomBy(1.25);else if(t.key==="-")this.zoomBy(.8);else if(t.key==="0")this.reset();else if(o[t.key]&&this.zoom>1)this.pan(...o[t.key]);else return;t.preventDefault()})}pan(i,e){this.x+=i,this.y+=e,this.paint()}paint(){let i=this.stage.clientWidth,e=this.stage.clientHeight;this.x=m(this.x,-((this.zoom-1)*i)/2,(this.zoom-1)*i/2),this.y=m(this.y,-((this.zoom-1)*e)/2,(this.zoom-1)*e/2),this.img.style.transform=this.zoom===1?"":`translate(${this.x}px, ${this.y}px) scale(${this.zoom})`,this.el.classList.toggle("is-zoomed",this.zoom>1)}zoomTo(i,e,t){let s=m(i,1,this.config.maxZoom??8);if(s===this.zoom||!this.rendered)return;let o=this.stage.getBoundingClientRect(),r=e==null?0:e-(o.left+o.width/2),h=t==null?0:t-(o.top+o.height/2),n=s/this.zoom;this.x=r-(r-this.x)*n,this.y=h-(h-this.y)*n,this.zoom=s,this.paint(),this.emit("zoom",s)}zoomBy(i,e,t){this.zoomTo(this.zoom*i,e,t)}reset(){this.x=this.y=0,this.zoomTo(1),this.paint()}getZoom(){return this.zoom}setSrc(i){this.config.src=i,this.rendered&&(this.zoom=1,this.x=this.y=0,this.paint(),this.el.classList.remove("is-error"),this.status.textContent="",this.setLoading(!!i),i?this.img.src=i:this.img.removeAttribute("src"))}setAlt(i){this.config.alt=i,this.rendered&&(this.img.alt="",this.stage.setAttribute("aria-label",i))}setFit(i){this.config.fit=i,this.rendered&&(this.img.style.objectFit=i)}};u("imagecanvas",p);export{p as a};
|
|
2
|
+
//# sourceMappingURL=chunk-EXBGOHG7.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as c}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as c}from"./chunk-TJXH3F7Z.js";import{a as b}from"./chunk-KVUELLYF.js";import{c as a}from"./chunk-QT5JRZZJ.js";import{c as h}from"./chunk-U5RENLU4.js";import{a as p}from"./chunk-TIPK3SCJ.js";import{b as i,c as r}from"./chunk-PZSHOSOS.js";import{f as l}from"./chunk-S4QD5NID.js";var d=class extends h{baseCls="op-panel";headerEl;titleEl;bodyEl;toolsEl;iconHost;toggleBtn;bars=[];bodyId=r("op-body");titleId=r("op-title");getBody(){return this.bodyEl}build(){let e=this.config,t=i("div",this.baseCls,{role:"region","aria-labelledby":this.titleId});this.iconHost=i("span","op-panel__icon"),this.titleEl=i("span","op-panel__title",{id:this.titleId}),this.toolsEl=i("div","op-panel__tools"),this.headerEl=i("div","op-panel__header",{},this.iconHost,this.titleEl,this.toolsEl),this.bodyEl=i("div",`op-panel__body ${e.bodyCls??""}`,{id:this.bodyId}),t.append(this.headerEl);let o=(s,f)=>{let n=new c({items:s,cls:f});return n.parent=this,this.bars.push(n),n.el};return e.tbar&&t.append(o(e.tbar,"op-panel__tbar")),t.append(this.bodyEl),e.bbar&&t.append(o(e.bbar,"op-panel__bbar")),e.buttons&&t.append(o(["->",...e.buttons.map(s=>new b(s))],"op-panel__footer")),t}onRender(){super.onRender();let e=this.config;this.setTitle(e.title??""),this.setIcon(e.icon??"");for(let t of e.tools??[])this.addTool(t.icon,t.label,o=>t.handler?.(this,o));e.reloadable&&this.addTool("refresh",l("reload"),()=>{this.reload()}),e.collapsible&&(this.toggleBtn=this.addTool("chevron-up",l("collapse"),()=>this.toggle()),this.toggleBtn.setAttribute("aria-controls",this.bodyId),this.el.classList.add("op-panel--collapsible"),this.listen(this.titleEl,"click",()=>this.toggle())),e.closable&&this.addTool("x",l("close"),()=>this.close()),this.setCollapsed(!!e.collapsed),this.updateHeader()}addTool(e,t,o){let s=i("button","op-panel__tool",{type:"button","aria-label":t,"data-op-tip":t},a(e));return this.listen(s,"click",o),this.toolsEl.append(s),s}updateHeader(){let e=this.config;this.headerEl.hidden=!e.title&&!e.icon&&!e.collapsible&&!e.closable&&!e.reloadable&&!e.tools?.length}async reload(){let e=this.el;return e.classList.contains("is-reloading")||this.emit("before-reload")===!1?!1:(e.classList.add("is-reloading"),this.setLoading(!0),await Promise.resolve(this.config.onReload?.(this)).catch(()=>0),this.setLoading(!1),e.classList.remove("is-reloading"),this.emit("reload"),!0)}setTitle(e){this.config.title=e,this.rendered&&(this.titleEl.textContent=e,this.updateHeader())}setIcon(e){this.config.icon=e,this.rendered&&(this.iconHost.replaceChildren(...e?[a(e)]:[]),this.iconHost.hidden=!e,this.updateHeader())}setCollapsed(e){if(this.config.collapsed=e,!!this.rendered){this.el.classList.toggle("is-collapsed",e);for(let t of[this.bodyEl,...this.bars.map(o=>o.el)])t.hidden=e;this.toggleBtn&&(this.toggleBtn.setAttribute("aria-expanded",String(!e)),this.toggleBtn.setAttribute("aria-label",l(e?"expand":"collapse")))}}collapse(){this.config.collapsed||this.emit("before-collapse")===!1||(this.setCollapsed(!0),this.emit("collapse"))}expand(){!this.config.collapsed||this.emit("before-expand")===!1||(this.setCollapsed(!1),this.emit("expand"))}toggle(){this.config.collapsed?this.expand():this.collapse()}close(){this.emit("before-close")!==!1&&(this.emit("close"),this.config.closeAction==="hide"?this.hide():this.destroy())}onDestroy(){super.onDestroy(),this.bars.forEach(e=>e.destroy())}};p("panel",d);export{d as a};
|
|
2
|
+
//# sourceMappingURL=chunk-FTZMF2QX.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as c}from"./chunk-TIPK3SCJ.js";import{
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as c}from"./chunk-TIPK3SCJ.js";import{f as l}from"./chunk-KMBTJ5AG.js";import{b as e}from"./chunk-PZSHOSOS.js";import{a as h}from"./chunk-IODSL7KU.js";import{c as d}from"./chunk-L5SQQFO7.js";import{f as p}from"./chunk-S4QD5NID.js";var r=class extends l{baseCls="op-table";tag="table";store;unsub;onRender(){let t=this.config;this.el.classList.toggle("op-table--striped",!!t.striped),this.bind(t.store??new d({data:t.data??[]})),this.own(()=>this.unsub?.())}bind(t){this.unsub?.(),this.store=t,this.unsub=t.subscribe(()=>this.paint()),this.paint()}cols(){return(this.config.columns??Object.keys(this.store.getAt(0)?.data??{}).map(o=>({field:o}))).filter(o=>!o.hidden)}paint(){let t=this.config,n=this.cols(),o=e("tr","",{},...n.map(i=>e("th",i.align?`op-table__cell--${i.align}`:"",{scope:"col"},i.header??i.field))),a=this.store.getRange().map(i=>e("tr","",{},...n.map(s=>e("td",`${s.align?`op-table__cell--${s.align}`:""} ${s.cls??""}`.trim(),{},h(s,i))))),m=a.length?a:[e("tr","op-table__empty",{},e("td","",{colspan:n.length||1},t.emptyText??p("empty")))];this.el.replaceChildren(...t.caption?[e("caption","",{},t.caption)]:[],e("thead","",{},o),e("tbody","",{},...m))}setData(t){this.config.data=t,this.rendered&&this.store.loadData(t)}setStore(t){this.config.store=t,this.rendered&&this.bind(t)}setColumns(t){this.config.columns=t,this.rendered&&this.paint()}setCaption(t){this.config.caption=t,this.rendered&&this.paint()}};c("table",r);export{r as a};
|
|
2
|
+
//# sourceMappingURL=chunk-G7NNOLOG.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as y,c as u}from"./chunk-QT5JRZZJ.js";import{c as b}from"./chunk-U5RENLU4.js";import{a as m}from"./chunk-TIPK3SCJ.js";import{b as i,e as v,f as h}from"./chunk-PZSHOSOS.js";import{e as d,f as n}from"./chunk-S4QD5NID.js";y({play:'<path d="m6 3 14 9-14 9z"/>',pause:'<rect x="14" y="4" width="4" height="16" rx="1"/><rect x="6" y="4" width="4" height="16" rx="1"/>'});d("en",{carousel:"Carousel",carouselSlide:"{n} of {total}",carouselGo:"Go to {n}",carouselPrev:"Previous",carouselNext:"Next",carouselPause:"Pause",carouselPlay:"Play"});d("pt-BR",{carousel:"Carrossel",carouselSlide:"{n} de {total}",carouselGo:"Ir para {n}",carouselPrev:"Anterior",carouselNext:"Pr\xF3ximo",carouselPlay:"Tocar",carouselPause:"Pausar"});var g=class extends b{baseCls="op-carousel";track;prevBtn;nextBtn;dotsEl;toggleBtn;captionEl;index=0;stopped=!1;scrollTimer;playTimer;get perView(){return this.config.transition==="fade"?1:Math.max(1,this.config.perView??1)}get last(){return Math.max(0,this.items.length-this.perView)}build(){let t=(e,o,a,p)=>{let l=i("button",`op-carousel__${e}`,{type:"button","aria-label":n(a)},u(o));return this.listen(l,"click",()=>{this.interact(),p()}),l};return this.prevBtn=t("prev","chevron-left","carouselPrev",()=>this.prev()),this.nextBtn=t("next","chevron-right","carouselNext",()=>this.next()),this.toggleBtn=t("toggle","pause","carouselPause",()=>this.isPlaying()?this.pause():this.play()),this.track=i("div","op-carousel__track",{tabindex:0}),this.dotsEl=i("div","op-carousel__dots"),this.captionEl=i("div","op-carousel__caption"),i("div",this.baseCls,{role:"region","aria-roledescription":"carousel"},i("div","op-carousel__viewport",{},this.track,this.prevBtn,this.nextBtn),i("div","op-carousel__footer",{},this.captionEl,i("div","op-carousel__bar",{},this.dotsEl,this.toggleBtn)))}getBody(){return this.track}onRender(){let t=this.config;this.el.setAttribute("aria-label",t.ariaLabel??n("carousel")),this.track.setAttribute("aria-label",t.ariaLabel??n("carousel")),this.el.classList.toggle("op-carousel--fade",t.transition==="fade"),this.el.classList.toggle("op-carousel--overlay",!!t.overlay),this.el.style.setProperty("--op-carousel-per-view",String(this.perView)),t.gap!=null&&this.el.style.setProperty("--op-carousel-gap",v(t.gap)),super.onRender(),this.index=h(t.active??0,0,this.last),this.on("add",()=>this.refresh()),this.on("remove",()=>this.refresh()),this.listen(this.track,"scroll",()=>{clearTimeout(this.scrollTimer),this.scrollTimer=setTimeout(()=>this.settle(),90)}),this.listen(this.el,"keydown",e=>{let o=e.target;if(o!==this.track&&!o.closest(".op-carousel__prev, .op-carousel__next, .op-carousel__dots, .op-carousel__toggle"))return;let a={ArrowLeft:()=>this.step(-1),ArrowRight:()=>this.step(1),Home:()=>this.goTo(0),End:()=>this.goTo(this.last)};a[e.key]&&(e.preventDefault(),this.interact(),a[e.key]())}),this.listen(this.track,"pointerdown",()=>this.interact());for(let e of["pointerenter","pointerleave","focusin","focusout"])this.listen(this.el,e,()=>this.tick());this.own(()=>{clearTimeout(this.scrollTimer),clearInterval(this.playTimer)}),this.refresh(),this.tick()}onMount(){this.align(!1)}settle(){let t=this.stride();if(!t||this.destroyed)return;let e=h(Math.round(Math.abs(this.track.scrollLeft)/t),0,this.last);e!==this.index&&this.set(e)}stride(){let[t,e]=this.items;return e?Math.abs(e.el.offsetLeft-t.el.offsetLeft):0}align(t){if(this.config.transition==="fade")return;let e=getComputedStyle(this.track).direction==="rtl"?-1:1;this.track.style.scrollBehavior=t?"":"auto",this.track.scrollLeft=e*this.index*this.stride()}set(t){let e=this.index;this.index=t,this.config.active=t,this.refresh(),this.emit("change",t,e)}refresh(){if(this.destroyed)return;let t=this.items.length;this.index=h(this.index,0,this.last),this.items.forEach((s,r)=>{s.el.setAttribute("role","group"),s.el.setAttribute("aria-roledescription","slide"),s.el.setAttribute("aria-label",n("carouselSlide",{n:r+1,total:t})),s.el.toggleAttribute("inert",r<this.index||r>=this.index+this.perView),s.el.classList.toggle("is-active",r===this.index)});let e=this.config.captions?.[this.index]??"";this.captionEl.textContent=e,this.captionEl.hidden=!e;let o=t>this.perView,a=this.config.dots!==!1&&o;this.dotsEl.hidden=!a,a&&this.dotsEl.children.length!==this.last+1&&this.dotsEl.replaceChildren(...Array.from({length:this.last+1},(s,r)=>{let f=i("button","op-carousel__dot",{type:"button","aria-label":n("carouselGo",{n:r+1})});return this.listen(f,"click",()=>{this.interact(),this.goTo(r)}),f})),[...this.dotsEl.children].forEach((s,r)=>r===this.index?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current"));let p=this.config.arrows!==!1&&o;this.prevBtn.hidden=this.nextBtn.hidden=!p;let l=!!this.config.loop;this.prevBtn.disabled=!l&&this.index===0,this.nextBtn.disabled=!l&&this.index===this.last,this.el.classList.toggle("is-first",this.index===0),this.el.classList.toggle("is-last",this.index===this.last),this.toggleBtn.hidden=!this.config.autoplay||!o;let c=this.isPlaying();this.el.classList.toggle("is-playing",c),this.toggleBtn.replaceChildren(u(c?"pause":"play")),this.toggleBtn.setAttribute("aria-label",n(c?"carouselPause":"carouselPlay")),this.track.setAttribute("aria-live",c?"off":"polite")}setCaptions(t){this.config.captions=t,this.rendered&&this.refresh()}getActive(){return this.index}goTo(t){t=h(t,0,this.last),!(t===this.index||this.emit("before-change",t)===!1)&&(this.set(t),this.rendered&&this.align(!0))}setActive(t){this.goTo(t)}step(t){let e=this.index+t;this.goTo(this.config.loop?e<0?this.last:e>this.last?0:e:e)}next(){this.step(1)}prev(){this.step(-1)}isPlaying(){return!!this.config.autoplay&&!this.stopped&&!this.reduced()}reduced(){return!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}play(){this.stopped=!1,this.refresh(),this.tick()}pause(){this.stopped=!0,this.refresh(),this.tick()}interact(){this.stopped||this.pause()}tick(){clearInterval(this.playTimer),this.playTimer=void 0,!(!this.isPlaying()||this.el.matches(":hover, :focus-within")||this.items.length<=this.perView)&&(this.playTimer=setInterval(()=>this.goTo(this.index>=this.last?0:this.index+1),this.config.autoplay))}};m("carousel",g);export{g as a};
|
|
2
|
+
//# sourceMappingURL=chunk-GPEA3UWY.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/layout/carousel/carousel.ts"],
|
|
4
|
+
"sourcesContent": ["import { Container, type ContainerConfig } from '../../../core/container';\nimport { register } from '../../../core/registry';\nimport { h, clamp, px } from '../../../core/dom';\nimport { t, addMessages } from '../../../core/i18n';\nimport { iconEl, registerIcons } from '../../base/icon/icon';\n\nregisterIcons({ play: '<path d=\"m6 3 14 9-14 9z\"/>', pause: '<rect x=\"14\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\"/><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\"/>' });\n\naddMessages('en', { carousel: 'Carousel', carouselSlide: '{n} of {total}', carouselGo: 'Go to {n}', carouselPrev: 'Previous', carouselNext: 'Next', carouselPause: 'Pause', carouselPlay: 'Play' });\naddMessages('pt-BR', { carousel: 'Carrossel', carouselSlide: '{n} de {total}', carouselGo: 'Ir para {n}', carouselPrev: 'Anterior', carouselNext: 'Pr\u00F3ximo', carouselPlay: 'Tocar', carouselPause: 'Pausar' });\n\nexport interface CarouselConfig extends ContainerConfig {\n /** Items shown together. Default 1. */\n perView?: number;\n /** Space between items (px or CSS length). */\n gap?: number | string;\n /** Past the last item goes to the first (and the other way). */\n loop?: boolean;\n /** ms between items; 0 (default) is off. */\n autoplay?: number;\n /** Default `true`. */\n dots?: boolean;\n /** Default `true`. */\n arrows?: boolean;\n active?: number;\n /** `slide` (default) scrolls the row; `fade` stacks the items and cross-fades them (one at a time, no swipe). */\n transition?: 'slide' | 'fade';\n /** Puts the dots, the play button and the caption over the bottom of the content, on a scrim. */\n overlay?: boolean;\n /** One caption per item, shown for the active one. */\n captions?: string[];\n}\n\n/** Pages through its items on a scroll-snap row: images, cards or any component. */\nexport class Carousel extends Container<CarouselConfig> {\n protected override baseCls = 'op-carousel';\n private track!: HTMLElement;\n private prevBtn!: HTMLButtonElement;\n private nextBtn!: HTMLButtonElement;\n private dotsEl!: HTMLElement;\n private toggleBtn!: HTMLButtonElement;\n private captionEl!: HTMLElement;\n private index = 0;\n private stopped = false;\n private scrollTimer?: ReturnType<typeof setTimeout>;\n private playTimer?: ReturnType<typeof setInterval>;\n\n private get perView() {\n return this.config.transition === 'fade' ? 1 : Math.max(1, this.config.perView ?? 1);\n }\n /** Positions the row can rest on: it moves one item at a time. */\n private get last() {\n return Math.max(0, this.items.length - this.perView);\n }\n\n protected override build(): HTMLElement {\n const btn = (cls: string, icon: string, key: string, fn: () => void) => {\n const b = h('button', `op-carousel__${cls}`, { type: 'button', 'aria-label': t(key) }, iconEl(icon));\n this.listen(b, 'click', () => {\n this.interact();\n fn();\n });\n return b;\n };\n this.prevBtn = btn('prev', 'chevron-left', 'carouselPrev', () => this.prev());\n this.nextBtn = btn('next', 'chevron-right', 'carouselNext', () => this.next());\n this.toggleBtn = btn('toggle', 'pause', 'carouselPause', () => (this.isPlaying() ? this.pause() : this.play()));\n this.track = h('div', 'op-carousel__track', { tabindex: 0 });\n this.dotsEl = h('div', 'op-carousel__dots');\n this.captionEl = h('div', 'op-carousel__caption');\n return h('div', this.baseCls, { role: 'region', 'aria-roledescription': 'carousel' },\n h('div', 'op-carousel__viewport', {}, this.track, this.prevBtn, this.nextBtn),\n h('div', 'op-carousel__footer', {}, this.captionEl, h('div', 'op-carousel__bar', {}, this.dotsEl, this.toggleBtn)));\n }\n\n override getBody(): HTMLElement {\n return this.track;\n }\n\n protected override onRender() {\n const c = this.config;\n this.el.setAttribute('aria-label', c.ariaLabel ?? t('carousel'));\n this.track.setAttribute('aria-label', c.ariaLabel ?? t('carousel'));\n this.el.classList.toggle('op-carousel--fade', c.transition === 'fade');\n this.el.classList.toggle('op-carousel--overlay', !!c.overlay);\n this.el.style.setProperty('--op-carousel-per-view', String(this.perView));\n if (c.gap != null) this.el.style.setProperty('--op-carousel-gap', px(c.gap));\n super.onRender();\n this.index = clamp(c.active ?? 0, 0, this.last);\n this.on('add', () => this.refresh());\n this.on('remove', () => this.refresh());\n this.listen(this.track, 'scroll', () => {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = setTimeout(() => this.settle(), 90);\n });\n this.listen(this.el, 'keydown', (e: KeyboardEvent) => {\n const el = e.target as HTMLElement;\n if (el !== this.track && !el.closest('.op-carousel__prev, .op-carousel__next, .op-carousel__dots, .op-carousel__toggle')) return;\n const keys: Record<string, () => void> = { ArrowLeft: () => this.step(-1), ArrowRight: () => this.step(1), Home: () => this.goTo(0), End: () => this.goTo(this.last) };\n if (!keys[e.key]) return;\n e.preventDefault();\n this.interact();\n keys[e.key]();\n });\n this.listen(this.track, 'pointerdown', () => this.interact());\n for (const ev of ['pointerenter', 'pointerleave', 'focusin', 'focusout']) this.listen(this.el, ev, () => this.tick());\n this.own(() => {\n clearTimeout(this.scrollTimer);\n clearInterval(this.playTimer);\n });\n this.refresh();\n this.tick();\n }\n\n protected override onMount() {\n this.align(false);\n }\n\n /** Reads the item at the left edge from the scroll position (after a swipe or a trackpad scroll). */\n private settle() {\n const stride = this.stride();\n if (!stride || this.destroyed) return;\n const i = clamp(Math.round(Math.abs(this.track.scrollLeft) / stride), 0, this.last);\n if (i !== this.index) this.set(i);\n }\n\n private stride(): number {\n const [a, b] = this.items;\n return b ? Math.abs(b.el.offsetLeft - a.el.offsetLeft) : 0;\n }\n\n private align(smooth: boolean) {\n if (this.config.transition === 'fade') return;\n const sign = getComputedStyle(this.track).direction === 'rtl' ? -1 : 1;\n this.track.style.scrollBehavior = smooth ? '' : 'auto';\n this.track.scrollLeft = sign * this.index * this.stride();\n }\n\n private set(i: number) {\n const old = this.index;\n this.index = i;\n this.config.active = i;\n this.refresh();\n this.emit('change', i, old);\n }\n\n /** Slides, dots, arrows: everything that follows the item count or the active one. */\n private refresh() {\n if (this.destroyed) return;\n const n = this.items.length;\n this.index = clamp(this.index, 0, this.last);\n this.items.forEach((c, i) => {\n c.el.setAttribute('role', 'group');\n c.el.setAttribute('aria-roledescription', 'slide');\n c.el.setAttribute('aria-label', t('carouselSlide', { n: i + 1, total: n }));\n c.el.toggleAttribute('inert', i < this.index || i >= this.index + this.perView);\n c.el.classList.toggle('is-active', i === this.index);\n });\n const caption = this.config.captions?.[this.index] ?? '';\n this.captionEl.textContent = caption;\n this.captionEl.hidden = !caption;\n const paged = n > this.perView;\n const dots = this.config.dots !== false && paged;\n this.dotsEl.hidden = !dots;\n if (dots && this.dotsEl.children.length !== this.last + 1) {\n this.dotsEl.replaceChildren(...Array.from({ length: this.last + 1 }, (_, i) => {\n const d = h('button', 'op-carousel__dot', { type: 'button', 'aria-label': t('carouselGo', { n: i + 1 }) });\n this.listen(d, 'click', () => {\n this.interact();\n this.goTo(i);\n });\n return d;\n }));\n }\n [...this.dotsEl.children].forEach((d, i) => (i === this.index ? d.setAttribute('aria-current', 'true') : d.removeAttribute('aria-current')));\n const arrows = this.config.arrows !== false && paged;\n this.prevBtn.hidden = this.nextBtn.hidden = !arrows;\n const loop = !!this.config.loop;\n this.prevBtn.disabled = !loop && this.index === 0;\n this.nextBtn.disabled = !loop && this.index === this.last;\n this.el.classList.toggle('is-first', this.index === 0);\n this.el.classList.toggle('is-last', this.index === this.last);\n this.toggleBtn.hidden = !this.config.autoplay || !paged;\n const playing = this.isPlaying();\n this.el.classList.toggle('is-playing', playing);\n this.toggleBtn.replaceChildren(iconEl(playing ? 'pause' : 'play'));\n this.toggleBtn.setAttribute('aria-label', t(playing ? 'carouselPause' : 'carouselPlay'));\n this.track.setAttribute('aria-live', playing ? 'off' : 'polite');\n }\n\n setCaptions(captions: string[]): void {\n this.config.captions = captions;\n if (this.rendered) this.refresh();\n }\n\n getActive(): number {\n return this.index;\n }\n\n /** Goes to item `i` (kept between 0 and the last position). `before-change` can cancel. */\n goTo(i: number): void {\n i = clamp(i, 0, this.last);\n if (i === this.index || this.emit('before-change', i) === false) return;\n this.set(i);\n if (this.rendered) this.align(true);\n }\n setActive(i: number): void {\n this.goTo(i);\n }\n private step(d: 1 | -1) {\n const to = this.index + d;\n this.goTo(this.config.loop ? (to < 0 ? this.last : to > this.last ? 0 : to) : to);\n }\n next(): void {\n this.step(1);\n }\n prev(): void {\n this.step(-1);\n }\n\n // ---- autoplay -----------------------------------------------------------------------------\n\n isPlaying(): boolean {\n return !!this.config.autoplay && !this.stopped && !this.reduced();\n }\n private reduced(): boolean {\n return !!window.matchMedia?.('(prefers-reduced-motion: reduce)').matches;\n }\n play(): void {\n this.stopped = false;\n this.refresh();\n this.tick();\n }\n pause(): void {\n this.stopped = true;\n this.refresh();\n this.tick();\n }\n /** Any use of the controls ends autoplay for good (WCAG 2.2.2). */\n private interact() {\n if (!this.stopped) this.pause();\n }\n /** Runs the timer only while playing and nothing holds the pointer or the focus. */\n private tick() {\n clearInterval(this.playTimer);\n this.playTimer = undefined;\n if (!this.isPlaying() || this.el.matches(':hover, :focus-within') || this.items.length <= this.perView) return;\n this.playTimer = setInterval(() => this.goTo(this.index >= this.last ? 0 : this.index + 1), this.config.autoplay);\n }\n}\nregister('carousel', Carousel);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["registerIcons", "addMessages", "Carousel", "Container", "btn", "cls", "icon", "key", "fn", "b", "h", "t", "iconEl", "c", "px", "clamp", "el", "keys", "ev", "stride", "i", "a", "smooth", "sign", "old", "n", "caption", "paged", "dots", "_", "d", "arrows", "loop", "playing", "captions", "to", "register"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as d}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as d}from"./chunk-QT5JRZZJ.js";import{c as r}from"./chunk-U5RENLU4.js";import{a as n}from"./chunk-TIPK3SCJ.js";import{b as i,c as o}from"./chunk-PZSHOSOS.js";import{f as l}from"./chunk-S4QD5NID.js";var s=class extends r{baseCls="op-fieldset";tag="fieldset";legend;bodyEl;toggleBtn;descEl;getBody(){return this.bodyEl}build(){let e=super.build();return this.legend=i("legend","op-fieldset__legend"),this.descEl=i("p","op-fieldset__desc",{id:o("op-fs-desc")}),this.bodyEl=i("div","op-fieldset__body"),e.append(this.legend,this.descEl,this.bodyEl),e}onRender(){this.config.layout??=this.config.columns?{type:"grid",columns:this.config.columns}:{type:"vbox"},super.onRender(),this.setVariant(this.config.variant??"box"),this.setDescription(this.config.description??""),this.config.collapsible&&(this.toggleBtn=i("button","op-fieldset__toggle",{type:"button"},d("chevron-up")),this.listen(this.toggleBtn,"click",()=>this.toggle()),this.legend.prepend(this.toggleBtn)),this.setTitle(this.config.title??""),this.setCollapsed(!!this.config.collapsed)}setTitle(e){if(this.config.title=e,!this.rendered)return;let t=this.legend.querySelector(".op-fieldset__title");t||(this.legend.append(t=i("span","op-fieldset__title")),this.config.collapsible&&this.listen(t,"click",()=>this.toggle())),t.textContent=e,this.legend.hidden=!e&&!this.config.collapsible}setDescription(e){this.config.description=e,this.rendered&&(this.descEl.textContent=e,this.descEl.hidden=!e,e?this.el.setAttribute("aria-describedby",this.descEl.id):this.el.removeAttribute("aria-describedby"))}setVariant(e){if(this.config.variant=e,!!this.rendered)for(let t of["box","line","plain"])this.el.classList.toggle(`op-fieldset--${t}`,t===e)}setCollapsed(e){this.config.collapsed=e,this.rendered&&(this.el.classList.toggle("is-collapsed",e),this.bodyEl.hidden=e,e?this.descEl.hidden=!0:this.descEl.hidden=!this.config.description,this.toggleBtn?.setAttribute("aria-expanded",String(!e)),this.toggleBtn?.setAttribute("aria-label",l(e?"expand":"collapse")))}collapse(){this.config.collapsed||this.emit("before-collapse")===!1||(this.setCollapsed(!0),this.emit("collapse"))}expand(){!this.config.collapsed||this.emit("before-expand")===!1||(this.setCollapsed(!1),this.emit("expand"))}toggle(){this.config.collapsed?this.expand():this.collapse()}};n("fieldset",s);export{s as a};
|
|
2
|
+
//# sourceMappingURL=chunk-GX32KEG2.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as n}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as n}from"./chunk-RI62AESU.js";import{a as r}from"./chunk-TIPK3SCJ.js";import{b as e}from"./chunk-PZSHOSOS.js";var s=class extends n{baseCls="op-field op-radiogroup";group;inputs=[];emptyValue(){return null}createControl(){return this.group=e("div","op-radiogroup__options",{role:"radiogroup","aria-labelledby":`${this.id}-label`}),this.listen(this.group,"change",t=>{let i=this.inputs.indexOf(t.target);if(!(i<0)){if(this.config.readonly)return this.applyValue(this.value);this.commit(this.opts()[i].value),this.paintChecked()}}),this.buildOptions(),this.inputEl=this.inputs[0]??this.group,this.group}opts(){return(this.config.options??[]).map(t=>typeof t=="object"?t:{value:t,label:t,disabled:!1})}buildOptions(){this.inputs=[],this.group.replaceChildren(...this.opts().map(t=>{let i=e("input","op-radio__input",{type:"radio",name:this.id,value:String(t.value),disabled:!!t.disabled});return this.inputs.push(i),e("label","op-radio",{},i,e("span","op-radio__dot"),e("span","op-radio__text",{},t.label))})),this.group.classList.toggle("op-radiogroup__options--horizontal",this.config.direction==="horizontal")}onRender(){super.onRender(),this.el.querySelector(".op-field__label").id=`${this.id}-label`}applyValue(t){let i=this.opts();this.inputs.forEach((o,p)=>o.checked=t!=null&&i[p].value===t),this.paintChecked()}paintChecked(){for(let t of this.inputs)t.closest("label").classList.toggle("is-checked",t.checked)}getDisplayText(){let t=this.getValue();return this.opts().find(i=>i.value===t)?.label??""}onDisabled(t){this.inputs.forEach((i,o)=>i.disabled=t||!!this.opts()[o].disabled)}setOptions(t){this.config.options=t,this.rendered&&(this.buildOptions(),this.inputEl=this.inputs[0]??this.group,this.applyValue(this.value),this.onDisabled(!!this.config.disabled))}};r("radiogroup",s);export{s as a};
|
|
2
|
+
//# sourceMappingURL=chunk-GYGX4VYF.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as r}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as r}from"./chunk-U5RENLU4.js";import{a as o}from"./chunk-TIPK3SCJ.js";import{b as t,c as i}from"./chunk-PZSHOSOS.js";var s=class extends r{baseCls="op-formsection";tag="section";titleEl;descEl;bodyEl;getBody(){return this.bodyEl}build(){let e=super.build();return this.titleEl=t("h3","op-formsection__title",{id:i("op-fsec")}),this.descEl=t("p","op-formsection__desc",{id:i("op-fsec-desc")}),this.bodyEl=t("div","op-formsection__body"),e.append(t("div","op-formsection__aside",{},this.titleEl,this.descEl),this.bodyEl),e.setAttribute("aria-labelledby",this.titleEl.id),e}onRender(){let e=this.config;e.layout??=e.columns?{type:"grid",columns:e.columns}:{type:"vbox"},super.onRender(),this.el.classList.toggle("op-formsection--divided",e.divider!==!1),this.setTitle(e.title??""),this.setDescription(e.description??""),this.setAside(e.aside!==!1)}setTitle(e){this.config.title=e,this.rendered&&(this.titleEl.textContent=e,this.titleEl.hidden=!e)}setDescription(e){this.config.description=e,this.rendered&&(this.descEl.textContent=e,this.descEl.hidden=!e,e?this.el.setAttribute("aria-describedby",this.descEl.id):this.el.removeAttribute("aria-describedby"))}setAside(e){this.config.aside=e,this.rendered&&this.el.classList.toggle("op-formsection--stacked",!e)}};o("formsection",s);export{s as a};
|
|
2
|
+
//# sourceMappingURL=chunk-H2EC3QP4.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as e}from"./chunk-QT5JRZZJ.js";import{e as r}from"./chunk-S4QD5NID.js";e({refresh:'<path d="M21 12a9 9 0 1 1-2.64-6.36M21 3v6h-6"/>'});r("en",{reload:"Reload"});r("pt-BR",{reload:"Recarregar"});
|
|
2
|
+
//# sourceMappingURL=chunk-H2KFAM7L.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as h}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as h}from"./chunk-QT5JRZZJ.js";import{a as f}from"./chunk-RI62AESU.js";import{a as u}from"./chunk-TIPK3SCJ.js";import{b as o}from"./chunk-PZSHOSOS.js";import{e as c,f as m}from"./chunk-S4QD5NID.js";c("en",{imgDrop:"Drop an image here or click to choose",imgType:"{name} is not an accepted image type",imgSize:"{name} is larger than {max}",imgCount:"At most {n} images",imgRemove:"Remove {name}"});c("pt-BR",{imgDrop:"Solte uma imagem aqui ou clique para escolher",imgType:"{name} n\xE3o \xE9 um tipo de imagem aceito",imgSize:"{name} \xE9 maior que {max}",imgCount:"No m\xE1ximo {n} imagens",imgRemove:"Remover {name}"});var d=l=>typeof l=="string"?l.split(/[?#]/)[0].split("/").pop()??l:l.name,g=class extends f{baseCls="op-field op-imagefield";zone;picker;list;urls=[];emptyValue(){return this.config.multiple?[]:null}isEmpty(e){return!this.itemsOf(e).length}isEqual(e,i){let s=this.itemsOf(e),t=this.itemsOf(i);return s.length===t.length&&s.every((r,p)=>r===t[p])}itemsOf(e){return e==null?[]:Array.isArray(e)?e:[e]}items(){return this.itemsOf(this.value)}createControl(){return this.zone=o("button","op-imagefield__zone",{type:"button"},h("image"),o("span","op-imagefield__hint")),this.inputEl=this.zone,this.picker=o("input","op-imagefield__picker",{type:"file",tabindex:-1,"aria-hidden":"true"}),this.list=o("div","op-imagefield__list",{role:"list"}),this.listen(this.zone,"click",()=>this.open()),this.listen(this.picker,"change",()=>{this.add(Array.from(this.picker.files??[])),this.picker.value=""}),this.listen(this.zone,"dragover",e=>{e.preventDefault(),this.el.classList.add("is-dragover")}),this.listen(this.zone,"dragleave",()=>this.el.classList.remove("is-dragover")),this.listen(this.zone,"drop",e=>{e.preventDefault(),this.el.classList.remove("is-dragover"),this.add(Array.from(e.dataTransfer?.files??[]))}),this.listen(this.list,"click",e=>{let i=e.target.closest(".op-imagefield__remove");i&&this.remove(Number(i.dataset.i))}),this.own(()=>this.revoke()),o("div","op-imagefield__box",{},this.zone,this.picker,this.list)}onRender(){this.picker.accept=this.config.accept??"image/*",this.picker.multiple=!!this.config.multiple,this.zone.querySelector(".op-imagefield__hint").textContent=this.config.placeholder??m("imgDrop"),super.onRender()}applyValue(e){this.revoke(),this.list.replaceChildren(...this.itemsOf(e).map((i,s)=>{let t=typeof i=="string"?i:this.url(i);return o("div","op-imagefield__item",{role:"listitem"},o("img","op-imagefield__img",{src:t,alt:""}),o("span","op-imagefield__name",{},d(i)),o("button","op-imagefield__remove",{type:"button","data-i":s,"aria-label":m("imgRemove",{name:d(i)})},h("x")))})),this.sync()}url(e){let i=URL.createObjectURL(e);return this.urls.push(i),i}revoke(){for(let e of this.urls.splice(0))URL.revokeObjectURL(e)}sync(){let e=this.config,i=this.items().length,s=e.multiple?!!e.maxFiles&&i>=e.maxFiles:i>0;this.zone.hidden=s||!!e.readonly,this.zone.disabled=this.picker.disabled=!!e.disabled;for(let t of this.list.querySelectorAll(".op-imagefield__remove"))t.hidden=!!e.readonly,t.disabled=!!e.disabled}onDisabled(){this.sync()}onReadonly(){this.sync()}open(){!this.config.disabled&&!this.config.readonly&&this.picker.click()}accepts(e){let i=(this.config.accept??"image/*").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean),s=e.name.toLowerCase();return i.some(t=>t.startsWith(".")?s.endsWith(t):t.endsWith("/*")?e.type.startsWith(t.slice(0,-1)):e.type===t)}add(e){let i=this.config;if(i.disabled||i.readonly)return;let s=this.holdsFocus(),t=[],r="",p=i.multiple?(i.maxFiles??1/0)-this.items().length:1;for(let n of e){let a="";if(this.accepts(n)?i.maxSize!=null&&n.size>i.maxSize?a="size":(t.length>=p||!i.multiple&&t.length)&&(a="count"):a="type",!a){t.push(n);continue}let v=i.maxSize!=null?i.maxSize>=1048576?`${+(i.maxSize/1048576).toFixed(1)} MB`:`${+(i.maxSize/1024).toFixed(1)} KB`:"";r=m(`img${a[0].toUpperCase()}${a.slice(1)}`,{name:n.name,max:v,n:i.maxFiles??1}),this.emit("reject",n,a)}t.length&&this.commit(i.multiple?[...this.items(),...t]:t[0]),r?this.setError(r):t.length&&this.clearError(),s&&this.refocus()}remove(e){if(this.config.disabled||this.config.readonly)return;let i=this.holdsFocus(),s=this.items().filter((t,r)=>r!==e);this.commit(this.config.multiple?s:null),i&&this.refocus()}commit(e){super.commit(e),this.applyValue(e)}holdsFocus(){return this.el.contains(document.activeElement)}refocus(){(this.zone.hidden?this.list.querySelector(".op-imagefield__remove"):this.zone)?.focus()}getDisplayText(){return this.items().map(d).join(", ")}};u("imagefield",g);export{g as a};
|
|
2
|
+
//# sourceMappingURL=chunk-HHOSKOO6.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as f}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as f}from"./chunk-YRCR5ELY.js";import{a as p,c as g,d as m,e as k}from"./chunk-R52OSARY.js";import{a as h}from"./chunk-EQ4IWYLW.js";import{c}from"./chunk-QT5JRZZJ.js";import{a as u}from"./chunk-TIPK3SCJ.js";import{b as a}from"./chunk-PZSHOSOS.js";import{e as l,f as n}from"./chunk-S4QD5NID.js";l("en",{lookupOpen:"Open search",lookupSelect:"Select"});l("pt-BR",{lookupOpen:"Abrir pesquisa",lookupSelect:"Selecionar"});var d=class extends f{baseCls="op-field op-textfield op-picker op-suggest op-lookup";def;suggestStore;win;constructor(e){let t=g(e.lookup);super({...e,icon:!1,valueField:t.valueField??"id",displayField:t.displayField??"name",query:o=>this.suggest(o)}),this.def=t}async suggest(e){let t=this.suggestStore??=m(this.def),o=this.def.queryField??(this.def.filters?.[0]&&p(this.def.filters[0]).name)??this.config.displayField,i=this.def.filters?.map(p).find(s=>s.name===o)?.field??o;return await t.filter({field:i,op:"contains",value:e}),t.getData()}createControl(){let e=super.createControl(),t=a("button","op-picker__trigger op-lookup__btn",{type:"button",tabindex:-1,"aria-label":n("lookupOpen"),"aria-haspopup":"dialog"},c("search"));return this.listen(t,"mousedown",o=>o.preventDefault()),this.listen(t,"click",()=>this.openDialog()),e.append(t),this.own(()=>this.win?.destroy()),e}onKey(e){e.key==="F4"||e.altKey&&e.key==="ArrowDown"?(e.preventDefault(),this.openDialog()):super.onKey(e)}onDisabled(e){super.onDisabled(e),this.el.querySelector(".op-lookup__btn").disabled=e}openDialog(){if(this.win||this.config.disabled||this.config.readonly||!this.rendered)return;this.close();let e=this.def,t=new k({lookup:e,flex:1}),o=this.typed?this.input.value:"";t.on("confirm",r=>i(r));let i=r=>{r[0]&&this.pickRecord(r[0]),s.close()},s=this.win=new h({title:e.title??n("search"),width:e.width??720,height:e.height??520,layout:"fit",items:[t],buttons:[{text:n("cancel"),handler:()=>s.close()},{text:n("lookupSelect"),variant:"primary",handler:()=>i(t.getSelection())}]});s.on("destroy",()=>{this.win=void 0,this.rendered&&this.input.focus()}),s.show(),o&&t.search(o)}pickRecord(e){let{valueField:t,displayField:o}=this.config,i={value:e.get(t),label:String(e.get(o)??e.get(t)??""),raw:e.data};this.pick(i)}};u("lookupfield",d);export{d as a};
|
|
2
|
+
//# sourceMappingURL=chunk-I5KHVFJ4.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a}from"./chunk-JF4WPGJQ.js";import{a as h}from"./chunk-NBR5IRZT.js";import{a as d}from"./chunk-SQTM4QFP.js";import{c as l}from"./chunk-QT5JRZZJ.js";import{b as n}from"./chunk-PZSHOSOS.js";import{a as r}from"./chunk-V5G5JECN.js";var p=class extends d{baseCls="op-field op-textfield op-picker";items=[];selection;typed=!1;list;dd;triggerEl;idEl;wrapEl;buffer="";bufferTimer;editable(){return!0}hasTrigger(){return!0}onType(t){}toItem(t){if(typeof t!="object")return{value:t,label:String(t)};let e=this.config.valueField??"value",i=this.config.displayField??"label";return{value:t[e],label:String(t[i]??t[e]??""),disabled:!!t.disabled,raw:t,hint:this.config.showValue?String(t[e]):void 0}}loadItems(){let t=this.config;this.items=t.store?t.store.getData().map(e=>this.toItem(e)):(t.options??[]).map(e=>this.toItem(e))}setOptions(t){this.config.options=t,this.loadItems(),this.refreshList(),this.rendered&&this.applyValue(this.value)}setStore(t){this.config.store=t,this.bindStore(),this.loadItems(),this.refreshList()}offStore;bindStore(){this.offStore?.(),this.offStore=this.config.store?.subscribe(()=>{this.loadItems(),this.refreshList(),this.rendered&&this.applyValue(this.value)})}findItem(t){return this.items.find(e=>e.value===t)??(this.selection?.value===t?this.selection:void 0)}getSelection(){return this.selection}setValue(t,e=!1){let i=t;i&&typeof i=="object"&&"value"in i&&"label"in i?this.setSelection({value:i.value,label:String(i.label)},e):super.setValue(t,e)}fillFrom(t){let e=this.config.displayFrom?r(t,this.config.displayFrom):void 0,i=this.name?r(t,this.name):void 0;e!=null&&i!=null?this.setSelection({value:i,label:String(e)},!0):super.fillFrom(t)}setSelection(t,e=!1){this.selection=t,this.setValue(t?t.value:this.emptyValue(),e)}visibleItems(){return this.items}refreshList(){if(!this.list)return;let t=this.visibleItems();this.list.setItems(t),this.list.setSelected(this.value);let e=t.findIndex(i=>i.value===this.value&&!i.disabled);this.list.setActive(this.typed||e<0?t.findIndex(i=>!i.disabled):e),this.syncActive()}syncActive(){if(!this.rendered)return;let t=this.list.getActiveId();t&&this.dd.isOpen()?this.input.setAttribute("aria-activedescendant",t):this.input.removeAttribute("aria-activedescendant")}createControl(){let t=super.createControl(),e=this.input;return this.wrapEl=t,this.config.showValue&&(this.idEl=n("span","op-picker__id"),this.idEl.hidden=!0,t.prepend(this.idEl)),this.list=new a({emptyText:this.config.emptyText,maxHeight:this.config.maxHeight,highlight:""}),e.setAttribute("role","combobox"),e.setAttribute("aria-haspopup","listbox"),e.setAttribute("aria-expanded","false"),e.setAttribute("aria-autocomplete",this.editable()?"list":"none"),e.setAttribute("aria-controls",this.list.id),e.autocomplete="off",this.hasTrigger()&&(this.triggerEl=n("button","op-picker__trigger",{type:"button",tabindex:-1,"aria-hidden":"true"},l("chevron-down")),this.listen(this.triggerEl,"mousedown",i=>i.preventDefault()),this.listen(this.triggerEl,"click",()=>{this.config.disabled||this.config.readonly||(e.focus(),this.toggle())}),t.append(this.triggerEl)),this.dd=new h({anchor:t,content:this.list,matchWidth:!0,role:"presentation"}),this.dd.on("open",()=>{e.setAttribute("aria-expanded","true"),this.el.classList.add("is-open"),this.list.refresh(),this.syncActive(),this.emit("expand")}),this.dd.on("close",()=>{e.setAttribute("aria-expanded","false"),this.el.classList.remove("is-open"),e.removeAttribute("aria-activedescendant"),this.emit("collapse")}),this.list.on("select",i=>this.pick(i)),this.list.on("active-change",()=>this.syncActive()),this.own(()=>{this.offStore?.(),this.dd.destroy()}),t}onRender(){this.bindStore(),this.loadItems(),super.onRender(),this.editable()?this.config.openOnFocus&&this.listen(this.input,"focus",()=>this.open()):(this.input.readOnly=!0,this.listen(this.input,"click",()=>this.toggle())),this.on("blur",()=>this.settle()),this.refreshList()}onReadonly(t){this.input.readOnly=t||!this.editable(),t&&this.dd?.close()}onDisabled(t){super.onDisabled(t),this.triggerEl&&(this.triggerEl.disabled=t),t&&this.dd?.close()}applyValue(t){let e=this.findItem(t);e?this.selection=e:this.selection&&this.selection.value!==t&&(this.selection=void 0),this.typed=!1,this.input.value=e?e.label:this.display(t),this.el.classList.toggle("has-value",!!this.input.value),this.list?.setSelected(t),this.paintId()}paintId(){let t=this.idEl;if(!t)return;let e=this.selection;t.hidden=!e||this.typed||this.isEmpty(this.value),t.textContent=t.hidden?"":String(e.value),this.wrapEl.style.setProperty("--op-picker-id-width",t.hidden?"0px":`${t.offsetWidth}px`),this.wrapEl.classList.toggle("has-id",!t.hidden)}getDisplayText(){return this.rendered?this.input.value:this.findItem(this.value)?.label??this.display(this.value)}open(){this.config.disabled||this.config.readonly||!this.rendered||(this.typed||this.refreshList(),this.dd.open())}close(){this.dd?.close()}toggle(){this.dd.isOpen()?this.close():this.open()}expand(){this.open()}collapse(){this.close()}pick(t){t.disabled||(this.selection=t,this.typed=!1,this.input.value=t.label,this.el.classList.add("has-value"),this.commit(t.value),this.paintId(),this.close(),this.emit("select",t))}settle(){if(this.close(),!this.editable()||!this.typed)return;this.typed=!1;let t=this.input.value;!t&&this.config.forceSelection!==!1?(this.selection=void 0,this.commit(this.emptyValue())):this.config.forceSelection===!1?(this.selection=void 0,this.commit(t)):this.input.value=this.selection?.label??"",this.el.classList.toggle("has-value",!!this.input.value),this.paintId(),this.refreshList()}onInput(){this.el.classList.toggle("has-value",!!this.input.value),this.editable()&&(this.typed=!0,this.paintId(),this.config.forceSelection===!1&&this.commit(this.input.value),this.onType(this.input.value))}onKey(t){let e=this.dd.isOpen();switch(t.key){case"ArrowDown":case"ArrowUp":{if(t.preventDefault(),!e)return this.open();this.list.moveActive(t.key==="ArrowDown"?1:-1);return}case"Enter":e?(t.preventDefault(),this.list.getActive()?this.list.activate():this.close()):super.onKey(t);return;case"Home":case"End":e&&!this.editable()&&(t.preventDefault(),this.list.setActive(t.key==="Home"?this.items.findIndex(i=>!i.disabled):this.items.length-1-[...this.items].reverse().findIndex(i=>!i.disabled)));return;case"Tab":e&&this.typed&&this.config.forceSelection!==!1&&this.list.getActive()&&this.list.activate();return;case" ":this.editable()||(t.preventDefault(),e&&this.list.getActive()?this.list.activate():this.open());return;default:!this.editable()&&t.key.length===1&&!t.ctrlKey&&!t.metaKey&&!t.altKey?this.typeahead(t.key):super.onKey(t)}}typeahead(t){clearTimeout(this.bufferTimer),this.buffer+=t.toLowerCase(),this.bufferTimer=setTimeout(()=>this.buffer="",600),this.own(()=>clearTimeout(this.bufferTimer));let e=this.visibleItems(),i=this.dd.isOpen()?this.list.getActiveIndex():e.findIndex(s=>s.value===this.value),o=[...e.keys()].map((s,c)=>(i+(this.buffer.length>1?0:1)+c)%e.length).find(s=>!e[s].disabled&&e[s].label.toLowerCase().startsWith(this.buffer));o!=null&&(this.dd.isOpen()?this.list.setActive(o):this.pick(e[o]))}setEmptyText(t){this.config.emptyText=t,this.list?.setEmptyText(t)}};export{p as a};
|
|
2
|
+
//# sourceMappingURL=chunk-IB5T27PW.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as d}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as d}from"./chunk-EQ4IWYLW.js";import{a as m}from"./chunk-SQTM4QFP.js";import{a as x}from"./chunk-OVEQUN4V.js";import{d as p}from"./chunk-QT5JRZZJ.js";import{c}from"./chunk-U5RENLU4.js";import{f as r}from"./chunk-S4QD5NID.js";function s(t){return new Promise(e=>{let a=!1,l=o=>{a||(a=!0,e(o))},i=t.input?new m({value:t.input.value??"",placeholder:t.input.placeholder,validators:t.input.validators,ariaLabel:t.text}):void 0,u=new x({text:t.text,flex:1}),n=new d({title:t.title,cls:"op-messagebox",closeAction:"destroy",mask:t.mask??!1,autoFocus:!!t.input?.autoFocus,items:[new c({layout:{type:"hbox",gap:12,align:"flex-start"},items:[...t.icon?[new p({name:t.icon,cls:"op-messagebox__icon"})]:[],new c({layout:{type:"vbox"},flex:1,items:[u,...i?[i]:[]]})]})],buttons:t.buttons.map(o=>({text:o.text,variant:o.variant??"default",handler:()=>{t.beforeClose?.(o.id,n,i)!==!1&&(l(o.id),n.close())}}))});n.el.setAttribute("role",t.input?"dialog":"alertdialog"),n.el.setAttribute("aria-describedby",u.id),n.on("close",()=>l(t.cancelId??t.buttons[t.buttons.length-1].id));let g=t.buttons.find(o=>o.variant==="primary"||o.variant==="danger");i?.on("enter",()=>n.el.querySelectorAll(".op-panel__footer button")[t.buttons.indexOf(g??t.buttons[0])].click()),n.show(),i||n.el.querySelector(".op-panel__footer .op-button--primary, .op-panel__footer .op-button--danger")?.focus()})}var b={show:s,async alert(t,e={}){await s({text:t,title:e.title,mask:e.mask,icon:e.icon??"info",buttons:[{id:"ok",text:e.okText??r("ok"),variant:"primary"}],cancelId:"ok"})},async confirm(t,e={}){return await s({text:t,title:e.title,mask:e.mask,icon:e.icon??(e.danger?"alert":"info"),buttons:[{id:"cancel",text:e.cancelText??r("cancel")},{id:"ok",text:e.okText??r("ok"),variant:e.danger?"danger":"primary"}],cancelId:"cancel"})==="ok"},async prompt(t,e={}){let a=null;return await s({text:t,title:e.title,mask:e.mask,input:{value:e.value,placeholder:e.placeholder,validators:e.validators,autoFocus:e.autoFocus},buttons:[{id:"cancel",text:e.cancelText??r("cancel")},{id:"ok",text:e.okText??r("ok"),variant:"primary"}],cancelId:"cancel",beforeClose:(i,u,n)=>{if(i==="ok"){if(!n.validate())return!1;a=n.getValue()}}})==="ok"?a:null}};d.ask=(t,e)=>b.confirm(t,{danger:!0,...e});export{b as a};
|
|
2
|
+
//# sourceMappingURL=chunk-IE7KRNFJ.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as s}from"./chunk-XFDNXSU5.js";function f(e,a){let r=a.data[e.field];return e.renderer?e.renderer(r,a,e):e.format?s(e.format,r):r==null?"":String(r)}var l=e=>typeof e=="number"?e:Number(e),u=e=>e instanceof Date?+e:typeof e=="string"&&/^\d{4}-\d{2}-\d{2}/.test(e)?Date.parse(e):NaN;function g(e,a){let r=a.map(n=>n.data[e.field]),i=r.filter(n=>n!=null&&n!==""&&!isNaN(l(n))).map(l),t=e.summary;if(typeof t=="function")return t(r,a);if(t==="count")return r.filter(n=>n!=null&&n!=="").length;if(!i.length){let n=t==="min"||t==="max"?r.filter(o=>!isNaN(u(o))):[];return n.length?n.reduce((o,m)=>(t==="min"?u(m)<u(o):u(m)>u(o))?m:o):null}return t==="sum"?i.reduce((n,o)=>n+o,0):t==="avg"?i.reduce((n,o)=>n+o,0)/i.length:t==="min"?Math.min(...i):Math.max(...i)}export{f as a,g as b};
|
|
2
|
+
//# sourceMappingURL=chunk-IODSL7KU.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/data/column.ts"],
|
|
4
|
+
"sourcesContent": ["import { format, type Formatter } from './format';\nimport type { Model } from './model';\n\n/** A grid/table column. `T` is the record shape: `field` then autocompletes its keys (any string still works). */\nexport interface Column<T extends Record<string, any> = any> {\n field: Extract<keyof T, string> | (string & {});\n header?: string;\n /** Fixed width in px. */\n width?: number;\n /** Share of the free space (like CSS `fr`). Default 1 when there is no `width`. */\n flex?: number;\n /** A label that groups columns (\"Identification\", \"Values\"...): a band over the header and sections in the column menu. */\n group?: string;\n minWidth?: number;\n /** Upper bound when the user resizes it. */\n maxWidth?: number;\n /** `false` keeps a column's width fixed even when the grid has `resizableColumns`. */\n resizable?: boolean;\n align?: 'left' | 'center' | 'right';\n sortable?: boolean;\n hidden?: boolean;\n /** Pinned to the start or the end while the body scrolls sideways (give it a `width`; default 140). The columns of one edge stay together. */\n locked?: 'start' | 'end';\n /** With `grouping()` or `columnTotals()`: what the total shows. Numbers: `sum`, `avg`, `min`, `max`, `count`; dates: `min` (earliest), `max` (latest), `count`; or your own function of the values. */\n summary?: 'sum' | 'avg' | 'min' | 'max' | 'count' | ((values: any[], recs: Model<T>[]) => unknown);\n /** Text for the total of this column (default: the column's `format`, else the plain value). */\n summaryRenderer?: (value: any, col: Column<T>) => string | Node;\n /** Left out while `setPermissionResolver` denies it. */\n permission?: string;\n /** Name registered with `registerFormat` (`money`, `date`, `number`, `percent`, `bool`, `duration`: minutes as `7h 30m`) or a function. */\n format?: string | Formatter;\n /** Full control over the cell content. Text is escaped; return a Node for markup. */\n renderer?: (value: any, rec: Model<T>, col: Column<T>) => string | Node;\n cls?: string;\n /** With the `cellEditing()` grid plugin: `true` (an editor for the value's type), a field type (`'select'`) or a field config. */\n editor?: boolean | string | Record<string, any>;\n /** With `cellEditing()`: whether this record's cell can be edited (default: every record, when `editor` is set). */\n editable?: (rec: Model<T>) => boolean;\n}\n\n/** Cell content for a record: `renderer` first, then `format`, then the plain value. */\nexport function cellContent<T extends Record<string, any>>(col: Column<T>, rec: Model<T>): string | Node {\n const v = rec.data[col.field];\n if (col.renderer) return col.renderer(v, rec, col);\n if (col.format) return format(col.format, v);\n return v == null ? '' : String(v);\n}\n\nconst num = (v: unknown) => (typeof v === 'number' ? v : Number(v));\nconst time = (v: unknown) => (v instanceof Date ? +v : typeof v === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(v) ? Date.parse(v) : NaN);\n\n/** The value of a column's `summary` over some records. */\nexport function summarize(col: Column, recs: Model[]): unknown {\n const values = recs.map((r) => r.data[col.field]);\n const nums = values.filter((v) => v != null && v !== '' && !isNaN(num(v))).map(num);\n const s = col.summary;\n if (typeof s === 'function') return s(values, recs);\n if (s === 'count') return values.filter((v) => v != null && v !== '').length;\n if (!nums.length) {\n // dates have no sum: min/max give the earliest and the latest, as the value the record holds\n const dates = s === 'min' || s === 'max' ? values.filter((v) => !isNaN(time(v))) : [];\n return dates.length ? dates.reduce((a, b) => ((s === 'min' ? time(b) < time(a) : time(b) > time(a)) ? b : a)) : null;\n }\n if (s === 'sum') return nums.reduce((a, b) => a + b, 0);\n if (s === 'avg') return nums.reduce((a, b) => a + b, 0) / nums.length;\n return s === 'min' ? Math.min(...nums) : Math.max(...nums);\n}\n"],
|
|
5
|
+
"mappings": "wCAyCO,SAASA,EAA2CC,EAAgBC,EAA8B,CACvG,IAAMC,EAAID,EAAI,KAAKD,EAAI,KAAK,EAC5B,OAAIA,EAAI,SAAiBA,EAAI,SAASE,EAAGD,EAAKD,CAAG,EAC7CA,EAAI,OAAeG,EAAOH,EAAI,OAAQE,CAAC,EACpCA,GAAK,KAAO,GAAK,OAAOA,CAAC,CAClC,CAEA,IAAME,EAAOF,GAAgB,OAAOA,GAAM,SAAWA,EAAI,OAAOA,CAAC,EAC3DG,EAAQH,GAAgBA,aAAa,KAAO,CAACA,EAAI,OAAOA,GAAM,UAAY,qBAAqB,KAAKA,CAAC,EAAI,KAAK,MAAMA,CAAC,EAAI,IAGxH,SAASI,EAAUN,EAAaO,EAAwB,CAC7D,IAAMC,EAASD,EAAK,IAAKE,GAAMA,EAAE,KAAKT,EAAI,KAAK,CAAC,EAC1CU,EAAOF,EAAO,OAAQN,GAAMA,GAAK,MAAQA,IAAM,IAAM,CAAC,MAAME,EAAIF,CAAC,CAAC,CAAC,EAAE,IAAIE,CAAG,EAC5EO,EAAIX,EAAI,QACd,GAAI,OAAOW,GAAM,WAAY,OAAOA,EAAEH,EAAQD,CAAI,EAClD,GAAII,IAAM,QAAS,OAAOH,EAAO,OAAQN,GAAMA,GAAK,MAAQA,IAAM,EAAE,EAAE,OACtE,GAAI,CAACQ,EAAK,OAAQ,CAEhB,IAAME,EAAQD,IAAM,OAASA,IAAM,MAAQH,EAAO,OAAQN,GAAM,CAAC,MAAMG,EAAKH,CAAC,CAAC,CAAC,EAAI,CAAC,EACpF,OAAOU,EAAM,OAASA,EAAM,OAAO,CAACC,EAAGC,KAAQH,IAAM,MAAQN,EAAKS,CAAC,EAAIT,EAAKQ,CAAC,EAAIR,EAAKS,CAAC,EAAIT,EAAKQ,CAAC,GAAKC,EAAID,CAAE,EAAI,IAClH,CACA,OAAIF,IAAM,MAAcD,EAAK,OAAO,CAACG,EAAGC,IAAMD,EAAIC,EAAG,CAAC,EAClDH,IAAM,MAAcD,EAAK,OAAO,CAACG,EAAGC,IAAMD,EAAIC,EAAG,CAAC,EAAIJ,EAAK,OACxDC,IAAM,MAAQ,KAAK,IAAI,GAAGD,CAAI,EAAI,KAAK,IAAI,GAAGA,CAAI,CAC3D",
|
|
6
|
+
"names": ["cellContent", "col", "rec", "v", "format", "num", "time", "summarize", "recs", "values", "r", "nums", "s", "dates", "a", "b"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as i}from"./chunk-TIPK3SCJ.js";import{f as o}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as i}from"./chunk-TIPK3SCJ.js";import{f as o}from"./chunk-KMBTJ5AG.js";import{f as r}from"./chunk-S4QD5NID.js";var e=class extends o{baseCls="op-spinner";tag="span";onRender(){this.el.setAttribute("role","progressbar"),this.setLabel(this.config.label??r("loading"))}setLabel(t){this.config.label=t,this.rendered&&this.el.setAttribute("aria-label",t)}};i("spinner",e);export{e as a};
|
|
2
|
+
//# sourceMappingURL=chunk-J2YP2YD3.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as d}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as d}from"./chunk-U5RENLU4.js";import{a as r}from"./chunk-RI62AESU.js";import{a as m}from"./chunk-TIPK3SCJ.js";import{e as u}from"./chunk-PZSHOSOS.js";import{b as c}from"./chunk-V5G5JECN.js";var h=class extends d{baseCls="op-form";tag="form";ruledOut=new Set;dirty=!1;constructor(t={}){let e=[...t.items??[]];t.tabs&&e.push({type:"tabs",flex:1,items:t.tabs.map(i=>({type:"container",title:i.title,icon:i.icon,cls:"op-form__tab",layout:i.layout??{type:"grid",columns:2,gap:12},items:i.items}))}),super({...t,items:e})}build(){let t=super.build();return t.setAttribute("novalidate",""),t}onRender(){if(this.config.layout??=this.config.columns?{type:"grid",columns:this.config.columns}:{type:"vbox"},this.config.labelWidth!=null&&this.setLabelWidth(this.config.labelWidth),this.config.labelPos)for(let t of this.getFields())t.config.labelPos??=this.config.labelPos;super.onRender(),this.config.readonly&&this.setReadonly(!0);for(let t of this.getFields())for(let e of["invalid","valid","dirty-change","change"])t.on(e,()=>this.syncTabs());for(let t of this.getFields())t.on("change",()=>this.changed());for(let t of this.getFields())t.on("dirty-change",()=>this.changed());this.applyRules(),this.listen(this.el,"submit",t=>{t.preventDefault(),this.submit()}),this.listen(this.el,"keydown",t=>{let e=t.target;t.key==="Enter"&&e instanceof HTMLInputElement&&!t.defaultPrevented&&e.type!=="button"&&(t.preventDefault(),this.submit())})}getFields(){return this.query(t=>t instanceof r)}getField(t){return this.getFields().find(e=>e.name===t)}getValues(t={}){let e={};for(let i of this.counted())i.name&&(!t.dirtyOnly||i.isDirty())&&c(e,i.name,i.getValue());return e}counted(){return this.getFields().filter(t=>{for(let e=t;e&&e!==this;e=e.parent)if(this.ruledOut.has(e))return!1;return!0})}changed(){this.applyRules();let t=this.isDirty();t!==this.dirty&&this.emit("dirty-change",this.dirty=t)}applyRules(){let t={};for(let e of this.getFields())e.name&&c(t,e.name,e.getValue());for(let e of this.query(i=>!!(i.config.showIf||i.config.enableIf))){let{showIf:i,enableIf:s}=e.config;if(i){let a=!!i(t);if(a===this.ruledOut.has(e))if(a)this.ruledOut.delete(e),e.show();else{this.ruledOut.add(e),e.hide();for(let l of e instanceof r?[e]:e instanceof d?e.query(o=>o instanceof r):[])l.clearError()}}s&&e.setDisabled(!s(t))}}focusField(t){this.reveal(t),t.focus()}setValues(t){for(let e of this.getFields())e.fillFrom(t)}load(t){this.setValues("data"in t&&"get"in t?t.data:t),this.markClean(),this.clearErrors(),this.emit("load",t)}reveal(t){let e=t;for(;e.parent;){let i=e.parent;i.items?.includes(e)&&(typeof i.setActive=="function"?i.setActive(e):i.layout?.activate&&i.layout.activate(i,e)),e=i}}syncTabs(){for(let t of this.query(e=>typeof e.setTabState=="function"))for(let e of t.items){let i=e instanceof d?e.query(s=>s instanceof r):[];t.setTabState(e,{errors:i.filter(s=>s.getError()).length,dirty:i.some(s=>s.isDirty())})}}updateRecord(t){let e=this.getValues(),i=new Set(this.getFields().filter(s=>s.name&&s.isDirty()).map(s=>s.name.split(".")[0]));for(let s of i)t.set(s,e[s])}markClean(){this.getFields().forEach(t=>t.markClean()),this.syncTabs()}reset(){this.getFields().forEach(t=>t.reset()),this.syncTabs()}isDirty(){return this.getFields().some(t=>t.isDirty())}isValid(){return this.counted().every(t=>t.config.disabled||t.isValid())}clearErrors(){this.getFields().forEach(t=>t.clearError()),this.syncTabs()}validate(){let t=this.counted().filter(i=>!i.config.disabled);for(let i of this.getFields())t.includes(i)||i.clearError();let e=t.filter(i=>!i.validate());return this.syncTabs(),e.length&&(this.reveal(e[0]),e[0].focus(),this.emit("invalid",e)),this.el.classList.toggle("is-invalid",!!e.length),!e.length}setErrors(t){this.clearErrors();let e=[],i;for(let[s,a]of Object.entries(t)){let l=this.getFields().filter(n=>n.name),o=l.find(n=>n.name===s)??l.filter(n=>s.startsWith(n.name+".")).sort((n,g)=>g.name.length-n.name.length)[0];o&&o.render();let f=o?.name===s?o:o?.fieldAt?.(s.slice(o.name.length+1));f?(f.setError(a),i??={host:o,target:f}):e.push(s)}return this.syncTabs(),i&&(this.el.classList.add("is-invalid"),this.emit("invalid",this.getFields().filter(s=>s.getError())),this.reveal(i.host),i.target.focus()),e}submit(){return this.emit("before-submit")===!1||!this.validate()?!1:(this.emit("submit",this.getValues()),!0)}setLabelWidth(t){this.config.labelWidth=t,this.rendered&&this.el.style.setProperty("--op-field-label-width",u(t))}setReadonly(t){this.config.readonly=t,this.getFields().forEach(e=>e.setReadonly(t))}};m("form",h);export{h as a};
|
|
2
|
+
//# sourceMappingURL=chunk-J6D4T4WY.js.map
|