optikos 0.5.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 +19 -0
- package/dist/build.js +1 -1
- package/dist/{chunk-EO777UIN.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-5G5PHOZJ.js → chunk-5H533QXN.js} +2 -2
- package/dist/{chunk-632LUU52.js → chunk-5KJ5Y4GY.js} +2 -2
- package/dist/{chunk-LXWCTCZV.js → chunk-5WE2JOBY.js} +2 -2
- package/dist/{chunk-SEW5OCQF.js → chunk-6IXVTWFH.js} +2 -2
- package/dist/{chunk-MM2OC66E.js → chunk-6S4BKUGD.js} +2 -2
- package/dist/{chunk-CWIE74NX.js → chunk-6VWSTY32.js} +2 -2
- package/dist/{chunk-NWHH3CYH.js → chunk-72ESP5DB.js} +2 -2
- package/dist/{chunk-2CVMT3IW.js → chunk-74IVU356.js} +2 -2
- package/dist/{chunk-UUAGMZD2.js → chunk-76A4MY7P.js} +2 -2
- package/dist/{chunk-3BG75P7T.js → chunk-7SE4B4TC.js} +2 -2
- package/dist/{chunk-PGVLRMTQ.js → chunk-A5N2AJCE.js} +2 -2
- package/dist/{chunk-ZEIE2OCQ.js → chunk-ALNUVKDT.js} +2 -2
- package/dist/{chunk-37PYJAA2.js → chunk-ANR27GED.js} +2 -2
- package/dist/{chunk-J2TCHWYD.js → chunk-AZUWS2C5.js} +2 -2
- package/dist/{chunk-S3ILIWSW.js → chunk-BHKI2SU3.js} +2 -2
- package/dist/{chunk-GZIDE5K2.js → chunk-BIQX75P2.js} +2 -2
- package/dist/{chunk-MQEALOU3.js → chunk-BPCD37A2.js} +2 -2
- package/dist/{chunk-GLAY4RJF.js → chunk-CGSCBLG2.js} +2 -2
- package/dist/{chunk-T5OGUCY2.js → chunk-DHUBCB4H.js} +2 -2
- package/dist/{chunk-2I4Y7I7C.js → chunk-EKRWJJ65.js} +2 -2
- package/dist/chunk-EO2IXU2W.js +2 -0
- package/dist/chunk-EO2IXU2W.js.map +7 -0
- package/dist/{chunk-Z6HZY2YG.js → chunk-EQ4IWYLW.js} +2 -2
- package/dist/{chunk-5PYJ6FJK.js → chunk-EXBGOHG7.js} +2 -2
- package/dist/{chunk-U25QSLAH.js → chunk-FTZMF2QX.js} +2 -2
- package/dist/{chunk-XNRZJP4E.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-G26R2F3W.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-6PPRYSLN.js → chunk-HHOSKOO6.js} +2 -2
- package/dist/{chunk-3OA3P37P.js → chunk-I5KHVFJ4.js} +2 -2
- package/dist/{chunk-L6DOWGBO.js → chunk-IB5T27PW.js} +2 -2
- package/dist/{chunk-JBOKM5YA.js → chunk-IE7KRNFJ.js} +2 -2
- package/dist/{chunk-3FK52VQX.js → chunk-J2YP2YD3.js} +2 -2
- package/dist/{chunk-OADWLPSF.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-NEVDHDJ4.js → chunk-KP7O5MVL.js} +2 -2
- package/dist/{chunk-ESRS5ZQV.js → chunk-KVUELLYF.js} +2 -2
- package/dist/{chunk-AJN66F32.js → chunk-LRUKKIYA.js} +2 -2
- package/dist/{chunk-A36JFIA3.js → chunk-M2XOIEPY.js} +2 -2
- package/dist/{chunk-SEUIIPHS.js → chunk-MBRCE5A7.js} +2 -2
- package/dist/{chunk-ADHKL2GM.js → chunk-MMPPDQ2E.js} +2 -2
- package/dist/{chunk-BTGJ3MP4.js → chunk-MRDX3RVJ.js} +2 -2
- package/dist/{chunk-FSR6BDVO.js → chunk-NAWQBQ57.js} +2 -2
- package/dist/{chunk-6NP4AEV4.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-MGSCSS7X.js → chunk-OK3SN5PN.js} +2 -2
- package/dist/{chunk-6TZJO2G2.js → chunk-OQFQDTLL.js} +2 -2
- package/dist/chunk-OVEQUN4V.js +2 -0
- package/dist/chunk-OVEQUN4V.js.map +7 -0
- package/dist/{chunk-RMATRKXV.js → chunk-PMIIQMVH.js} +2 -2
- package/dist/{chunk-DIOJGTUN.js → chunk-QT5JRZZJ.js} +2 -2
- package/dist/{chunk-J5BZAKC6.js → chunk-R52OSARY.js} +2 -2
- package/dist/{chunk-QVBDBGS4.js → chunk-RI62AESU.js} +2 -2
- package/dist/{chunk-6BOM5KZR.js → chunk-RRGAJ7T4.js} +2 -2
- package/dist/{chunk-LHWY6G6Q.js → chunk-SQTM4QFP.js} +2 -2
- package/dist/{chunk-M7HLHGQV.js → chunk-TAFHKT6O.js} +2 -2
- package/dist/{chunk-3TCITFUU.js → chunk-TBM35UV6.js} +2 -2
- package/dist/{chunk-FNZI6MFG.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-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-BRGT4O6Q.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-OB3VIRQR.js → chunk-VOCGAAG7.js} +2 -2
- package/dist/{chunk-CXZKCBQE.js → chunk-WHWPLMIG.js} +2 -2
- package/dist/{chunk-5GCTM37D.js → chunk-WVJSNE6Q.js} +2 -2
- package/dist/{chunk-UCWICDYG.js → chunk-WWETTEUZ.js} +2 -2
- package/dist/{chunk-2I7HDIOU.js → chunk-XI4IBUE3.js} +2 -2
- package/dist/{chunk-ZLYZFHEN.js → chunk-YAKKOVRI.js} +2 -2
- package/dist/{chunk-HG7OOHGD.js → chunk-YF5GWNM7.js} +2 -2
- package/dist/{chunk-QOSTS5I3.js → chunk-YRCR5ELY.js} +2 -2
- package/dist/{chunk-UL364TLO.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 +1 -1
- 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 +1 -1
- 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/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/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/label.css +14 -0
- package/dist/css/quicksearch.css +13 -0
- package/dist/css/stat.css +14 -0
- 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 +163 -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/data/quicksearch/quicksearch.d.ts +13 -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/core/component.d.ts +6 -3
- package/dist/types/core/container.d.ts +2 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/layout/layout.d.ts +5 -0
- package/dist/ui.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-AQ3RTHG5.js +0 -2
- package/dist/chunk-AQ3RTHG5.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-DLRGB5NY.js +0 -2
- package/dist/chunk-DLRGB5NY.js.map +0 -7
- package/dist/chunk-GNKVLJ5H.js +0 -2
- package/dist/chunk-GNKVLJ5H.js.map +0 -7
- package/dist/chunk-NAUSRVB6.js +0 -2
- package/dist/chunk-NAUSRVB6.js.map +0 -7
- package/dist/chunk-TVO3Z2BM.js +0 -2
- package/dist/chunk-TVO3Z2BM.js.map +0 -7
- package/dist/chunk-UDXO3KM3.js.map +0 -7
- package/dist/chunk-YJTUFK4P.js +0 -2
- /package/dist/{chunk-EO777UIN.js.map → chunk-4DW5WBZB.js.map} +0 -0
- /package/dist/{chunk-I5A74NMJ.js.map → chunk-4Z4E3BZ2.js.map} +0 -0
- /package/dist/{chunk-5G5PHOZJ.js.map → chunk-5H533QXN.js.map} +0 -0
- /package/dist/{chunk-632LUU52.js.map → chunk-5KJ5Y4GY.js.map} +0 -0
- /package/dist/{chunk-LXWCTCZV.js.map → chunk-5WE2JOBY.js.map} +0 -0
- /package/dist/{chunk-SEW5OCQF.js.map → chunk-6IXVTWFH.js.map} +0 -0
- /package/dist/{chunk-MM2OC66E.js.map → chunk-6S4BKUGD.js.map} +0 -0
- /package/dist/{chunk-CWIE74NX.js.map → chunk-6VWSTY32.js.map} +0 -0
- /package/dist/{chunk-NWHH3CYH.js.map → chunk-72ESP5DB.js.map} +0 -0
- /package/dist/{chunk-2CVMT3IW.js.map → chunk-74IVU356.js.map} +0 -0
- /package/dist/{chunk-UUAGMZD2.js.map → chunk-76A4MY7P.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-ZEIE2OCQ.js.map → chunk-ALNUVKDT.js.map} +0 -0
- /package/dist/{chunk-37PYJAA2.js.map → chunk-ANR27GED.js.map} +0 -0
- /package/dist/{chunk-J2TCHWYD.js.map → chunk-AZUWS2C5.js.map} +0 -0
- /package/dist/{chunk-S3ILIWSW.js.map → chunk-BHKI2SU3.js.map} +0 -0
- /package/dist/{chunk-GZIDE5K2.js.map → chunk-BIQX75P2.js.map} +0 -0
- /package/dist/{chunk-MQEALOU3.js.map → chunk-BPCD37A2.js.map} +0 -0
- /package/dist/{chunk-GLAY4RJF.js.map → chunk-CGSCBLG2.js.map} +0 -0
- /package/dist/{chunk-T5OGUCY2.js.map → chunk-DHUBCB4H.js.map} +0 -0
- /package/dist/{chunk-2I4Y7I7C.js.map → chunk-EKRWJJ65.js.map} +0 -0
- /package/dist/{chunk-Z6HZY2YG.js.map → chunk-EQ4IWYLW.js.map} +0 -0
- /package/dist/{chunk-5PYJ6FJK.js.map → chunk-EXBGOHG7.js.map} +0 -0
- /package/dist/{chunk-U25QSLAH.js.map → chunk-FTZMF2QX.js.map} +0 -0
- /package/dist/{chunk-XNRZJP4E.js.map → chunk-G7NNOLOG.js.map} +0 -0
- /package/dist/{chunk-4OB2IM5L.js.map → chunk-GX32KEG2.js.map} +0 -0
- /package/dist/{chunk-G26R2F3W.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-6PPRYSLN.js.map → chunk-HHOSKOO6.js.map} +0 -0
- /package/dist/{chunk-3OA3P37P.js.map → chunk-I5KHVFJ4.js.map} +0 -0
- /package/dist/{chunk-L6DOWGBO.js.map → chunk-IB5T27PW.js.map} +0 -0
- /package/dist/{chunk-JBOKM5YA.js.map → chunk-IE7KRNFJ.js.map} +0 -0
- /package/dist/{chunk-3FK52VQX.js.map → chunk-J2YP2YD3.js.map} +0 -0
- /package/dist/{chunk-OADWLPSF.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-NEVDHDJ4.js.map → chunk-KP7O5MVL.js.map} +0 -0
- /package/dist/{chunk-ESRS5ZQV.js.map → chunk-KVUELLYF.js.map} +0 -0
- /package/dist/{chunk-AJN66F32.js.map → chunk-LRUKKIYA.js.map} +0 -0
- /package/dist/{chunk-A36JFIA3.js.map → chunk-M2XOIEPY.js.map} +0 -0
- /package/dist/{chunk-SEUIIPHS.js.map → chunk-MBRCE5A7.js.map} +0 -0
- /package/dist/{chunk-ADHKL2GM.js.map → chunk-MMPPDQ2E.js.map} +0 -0
- /package/dist/{chunk-BTGJ3MP4.js.map → chunk-MRDX3RVJ.js.map} +0 -0
- /package/dist/{chunk-FSR6BDVO.js.map → chunk-NAWQBQ57.js.map} +0 -0
- /package/dist/{chunk-6NP4AEV4.js.map → chunk-NBR5IRZT.js.map} +0 -0
- /package/dist/{chunk-MGSCSS7X.js.map → chunk-OK3SN5PN.js.map} +0 -0
- /package/dist/{chunk-6TZJO2G2.js.map → chunk-OQFQDTLL.js.map} +0 -0
- /package/dist/{chunk-RMATRKXV.js.map → chunk-PMIIQMVH.js.map} +0 -0
- /package/dist/{chunk-DIOJGTUN.js.map → chunk-QT5JRZZJ.js.map} +0 -0
- /package/dist/{chunk-J5BZAKC6.js.map → chunk-R52OSARY.js.map} +0 -0
- /package/dist/{chunk-QVBDBGS4.js.map → chunk-RI62AESU.js.map} +0 -0
- /package/dist/{chunk-6BOM5KZR.js.map → chunk-RRGAJ7T4.js.map} +0 -0
- /package/dist/{chunk-LHWY6G6Q.js.map → chunk-SQTM4QFP.js.map} +0 -0
- /package/dist/{chunk-M7HLHGQV.js.map → chunk-TAFHKT6O.js.map} +0 -0
- /package/dist/{chunk-3TCITFUU.js.map → chunk-TBM35UV6.js.map} +0 -0
- /package/dist/{chunk-FNZI6MFG.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-BRGT4O6Q.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-OB3VIRQR.js.map → chunk-VOCGAAG7.js.map} +0 -0
- /package/dist/{chunk-CXZKCBQE.js.map → chunk-WHWPLMIG.js.map} +0 -0
- /package/dist/{chunk-5GCTM37D.js.map → chunk-WVJSNE6Q.js.map} +0 -0
- /package/dist/{chunk-UCWICDYG.js.map → chunk-WWETTEUZ.js.map} +0 -0
- /package/dist/{chunk-2I7HDIOU.js.map → chunk-XI4IBUE3.js.map} +0 -0
- /package/dist/{chunk-ZLYZFHEN.js.map → chunk-YAKKOVRI.js.map} +0 -0
- /package/dist/{chunk-HG7OOHGD.js.map → chunk-YF5GWNM7.js.map} +0 -0
- /package/dist/{chunk-QOSTS5I3.js.map → chunk-YRCR5ELY.js.map} +0 -0
- /package/dist/{chunk-UL364TLO.js.map → chunk-YVEGWCYD.js.map} +0 -0
- /package/dist/{chunk-MQ5BYGFY.js.map → chunk-ZYHMTPW4.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,25 @@ and the project uses [Semantic Versioning](https://semver.org/). Until 1.0, mino
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.5.1] - 2026-11-11
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Alert (`alert`): a message in the page with `tone`, `title`, `text`, an icon by tone, `closable` and `role=alert` for warning and danger.
|
|
13
|
+
- Carousel `transition: 'fade'`, `overlay` (dots, play button and caption over the content) and `captions`.
|
|
14
|
+
- Label `tag` (`h1`…`h6`, `p`, `div`), `icon` and `src` / `alt` (a logo before the text).
|
|
15
|
+
- Stat `href` and `handler`: the tile becomes a link or a button (focusable, hover, named "label: value").
|
|
16
|
+
- NavMenu `railWidth`: the parent container takes it while collapsed and gives its width back on expand.
|
|
17
|
+
- `quickSearch()` (a Grid plugin): a search box in the grid's footer row, over several fields, combined with other filters.
|
|
18
|
+
- MaskField `stored`: a value held by the app but shown masked (`***.***.***-12`) is read-only, `null` until replaced.
|
|
19
|
+
- DateTimeField `defaultTime` (`'23:59'` for an end date).
|
|
20
|
+
- `theme` also takes a string (`'dark tenant-dark'`) on any component: it sets `data-op-theme` on it.
|
|
21
|
+
- Container `narrowBelow` shortcut, and typed common layout options (`narrowBelow`, `gap`, `columns`, `open`).
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- `MaskField` is typed `string | null` (its `getValue()` is `null` while a `stored` value is untouched), like `SecretField`.
|
|
26
|
+
|
|
8
27
|
## [0.5.0] - 2026-11-11
|
|
9
28
|
|
|
10
29
|
### Added
|
package/dist/build.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e}from"./chunk-5KJ5Y4GY.js";import"./chunk-GX32KEG2.js";import"./chunk-WWETTEUZ.js";import"./chunk-VADYSXHY.js";import"./chunk-J6D4T4WY.js";import"./chunk-GYGX4VYF.js";import"./chunk-OQFQDTLL.js";import"./chunk-MMPPDQ2E.js";import"./chunk-XI4IBUE3.js";import"./chunk-MBRCE5A7.js";import"./chunk-EO2IXU2W.js";import"./chunk-4DW5WBZB.js";import"./chunk-NAWQBQ57.js";import"./chunk-I5KHVFJ4.js";import"./chunk-YRCR5ELY.js";import"./chunk-NYXRPWIB.js";import"./chunk-BHKI2SU3.js";import"./chunk-MRDX3RVJ.js";import"./chunk-LRUKKIYA.js";import"./chunk-IB5T27PW.js";import"./chunk-JF4WPGJQ.js";import"./chunk-WVJSNE6Q.js";import"./chunk-R52OSARY.js";import"./chunk-DHUBCB4H.js";import"./chunk-VOCGAAG7.js";import"./chunk-TJJL2GSJ.js";import"./chunk-5WE2JOBY.js";import"./chunk-IE7KRNFJ.js";import"./chunk-EQ4IWYLW.js";import"./chunk-FTZMF2QX.js";import"./chunk-H2KFAM7L.js";import"./chunk-TJXH3F7Z.js";import"./chunk-6IXVTWFH.js";import"./chunk-BPCD37A2.js";import"./chunk-NBR5IRZT.js";import"./chunk-SQTM4QFP.js";import"./chunk-OVEQUN4V.js";import"./chunk-VCYCNSJY.js";import"./chunk-KVUELLYF.js";import"./chunk-QT5JRZZJ.js";import"./chunk-2GKIF7A6.js";import"./chunk-OWEQT2HN.js";import"./chunk-U5RENLU4.js";import"./chunk-E4VNLYO2.js";import"./chunk-676AKAGF.js";import"./chunk-VV7CFMPZ.js";import"./chunk-RI62AESU.js";import"./chunk-TIPK3SCJ.js";import"./chunk-KMBTJ5AG.js";import"./chunk-PZSHOSOS.js";import"./chunk-IODSL7KU.js";import"./chunk-XFDNXSU5.js";import"./chunk-L5SQQFO7.js";import"./chunk-3VDLX7ET.js";import"./chunk-S4QD5NID.js";import"./chunk-6NCXO5ZP.js";import"./chunk-4AA4FQEM.js";import"./chunk-2UPUC4RK.js";import"./chunk-V5G5JECN.js";import"./chunk-4C666HHU.js";export{a as buildColumns,b as buildFields,c as buildFilterFields,e as buildForm,d as buildGrid};
|
|
2
2
|
//# sourceMappingURL=build.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as d}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as d}from"./chunk-SQTM4QFP.js";import{a as c}from"./chunk-TIPK3SCJ.js";import{e as l,f as s}from"./chunk-S4QD5NID.js";l("en",{time:"Enter a time like 09:30"});l("pt-BR",{time:"Informe uma hora, como 09:30"});var p=1440,u=n=>String(n).padStart(2,"0"),a=n=>Number(n.slice(0,2))*60+Number(n.slice(3)),f=n=>`${u(Math.floor(n/60))}:${u(n%60)}`,m=class extends d{baseCls="op-field op-textfield op-timefield";garbage=!1;emptyValue(){return null}isEmpty(e){return e==null}parse(e){this.garbage=!1;let t=e.trim();if(!t)return null;let r=/^(\d{1,2})(?::?(\d{2}))?$/.exec(t)??/^(\d)(\d{2})$/.exec(t),i=r&&Number(r[1]),o=r&&Number(r[2]??0);return!r||i>23||o>59?(this.garbage=!0,null):`${u(i)}:${u(o)}`}createControl(){let e=super.createControl();return this.input.setAttribute("inputmode","numeric"),this.listen(this.input,"blur",()=>{this.garbage||(this.input.value=this.display(this.value))}),e}onInput(){super.onInput(),this.garbage?this.setError(s("time")):this.error&&this.validate()}applyValue(e){super.applyValue(e),this.garbage=!1}check(){if(this.garbage)return s("time");let e=super.check(),t=this.value,{min:r,max:i}=this.config;return e||t==null?e:r&&i&&(t<r||t>i)?s("range",{min:r,max:i}):r&&t<r?s("min",{n:r}):i&&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?60:this.config.step??1))):super.onKey(e)}bump(e){let{min:t,max:r}=this.config,i=(this.value?a(this.value):t?a(t):0)+e,o=t?a(t):0,g=r?a(r):p-1;this.setValue(f(t||r?Math.min(g,Math.max(o,i)):(i+p)%p))}setMin(e){this.config.min=e}setMax(e){this.config.max=e}};c("timefield",m);export{m as a};
|
|
2
|
+
//# sourceMappingURL=chunk-4DW5WBZB.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as g}from"./chunk-BPCD37A2.js";import{c}from"./chunk-QT5JRZZJ.js";import{a as v}from"./chunk-TIPK3SCJ.js";import{e as p,f as u}from"./chunk-KMBTJ5AG.js";import{b as a,e as f}from"./chunk-PZSHOSOS.js";var m=class extends u{baseCls="op-navmenu";tag="nav";items=[];open=new Set;active;query="";focusId;root;flyout;flyoutOf;hoverTimer;parentWidth;onRender(){let t=this.config;this.items=p(t.items)??[],this.active=t.active;let e=i=>i.forEach(s=>(s.expanded&&this.open.add(s.id),s.items&&e(s.items)));e(this.items),this.active&&this.openParents(this.active),this.root=a("ul","op-navmenu__tree",{role:"tree","aria-label":t.ariaLabel??null}),this.el.append(this.root),this.fit(),this.listen(this.root,"click",i=>{let s=i.target.closest(".op-navmenu__item");s&&this.activate(s.dataset.id)}),this.listen(this.root,"keydown",i=>this.onKey(i)),this.listen(this.root,"pointerover",i=>{let s=i.target.closest(".op-navmenu__item.is-group");this.hoverTimer?.(),!(!this.config.collapsed||!s||s.dataset.id===this.flyoutOf)&&(this.hoverTimer=this.later(()=>this.openFlyout(s.dataset.id,!1),200))}),this.listen(this.root,"pointerleave",()=>this.hoverTimer?.()),this.own(()=>this.flyout?.destroy()),this.listen(this.root,"focusin",i=>{let s=i.target.closest(".op-navmenu__item");s&&(this.focusId=s.dataset.id)}),this.paint()}getItem(t,e=this.items){for(let i of e){if(i.id===t)return i;let s=i.items&&this.getItem(t,i.items);if(s)return s}}parentsOf(t,e=this.items,i=[]){for(let s of e){if(s.id===t)return i;let n=s.items&&this.parentsOf(t,s.items,[...i,s]);if(n)return n}}openParents(t){for(let e of this.parentsOf(t)??[])this.open.add(e.id)}matches(t,e){return t.text.toLowerCase().includes(e)||!!t.items?.some(i=>this.matches(i,e))}visible(t){return t.hidden||this.query&&!this.matches(t,this.query)?!1:!t.items||t.items.some(e=>this.visible(e))}isOpen(t){return this.config.collapsed?!1:this.query?!0:this.open.has(t.id)}paint(){this.el.classList.toggle("is-rail",!!this.config.collapsed),this.root.replaceChildren(...this.items.filter(i=>this.visible(i)).map(i=>this.node(i,1)));let e=this.focusId&&this.root.querySelector(`[data-id="${CSS.escape(this.focusId)}"]`)||this.root.querySelector(".op-navmenu__item.is-active")||this.root.querySelector(".op-navmenu__item");this.root.querySelectorAll(".op-navmenu__item").forEach(i=>i.tabIndex=i===e?0:-1)}node(t,e){let i=!!t.items,s=i&&this.isOpen(t),n=!!this.config.collapsed,r=a("li","op-navmenu__node",{role:"none"}),l=i&&!!this.active&&!!this.parentsOf(this.active)?.some(d=>d.id===t.id),o=n&&i,h=a("div",`op-navmenu__item${i?" is-group":""}${s?" is-expanded":""}${t.id===this.active?" is-active":""}${l&&n?" has-active":""}${t.disabled?" is-disabled":""}`,{role:"treeitem","data-id":t.id,"aria-level":e,"aria-expanded":i?String(o?this.flyoutOf===t.id:s):null,"aria-current":t.id===this.active?"page":null,"aria-haspopup":o?"menu":null,"aria-disabled":t.disabled?"true":null,title:n?t.text:null,tabindex:-1});return h.style.setProperty("--_level",String(e-1)),h.append(a("span","op-navmenu__icon",{},t.icon?c(t.icon):o?t.text.charAt(0).toUpperCase():""),a("span","op-navmenu__text",{},t.text)),t.badge!=null&&t.badge!==""&&h.append(a("span","op-navmenu__badge",{},String(t.badge))),i&&h.append(a("span","op-navmenu__chevron",{"aria-hidden":"true"},c("chevron-down"))),r.append(h),i&&s&&r.append(a("ul","op-navmenu__group",{role:"group"},...t.items.filter(d=>this.visible(d)).map(d=>this.node(d,e+1)))),r}activate(t){let e=this.getItem(t);if(!(!e||e.disabled)){if(e.items&&this.config.collapsed)return this.openFlyout(t,!0);if(e.items)return this.toggle(t);this.select(t)}}select(t){let e=this.getItem(t);!e||e.disabled||this.emit("before-select",e)===!1||(this.setActive(t),this.emit("select",e))}setActive(t){this.active=t,this.config.active=t,t&&(this.openParents(t),this.focusId=t),this.rendered&&this.paint()}getActive(){return this.active?this.getItem(this.active):void 0}expand(t){let e=this.getItem(t);if(!(!e?.items||this.open.has(t))){if(this.config.accordion)for(let i of this.siblings(t))this.open.delete(i.id);this.open.add(t),this.rendered&&this.paint(),this.emit("expand",e)}}collapse(t){let e=this.getItem(t);!e?.items||!this.open.delete(t)||(this.rendered&&this.paint(),this.emit("collapse",e))}toggle(t){this.open.has(t)?this.collapse(t):this.expand(t)}siblings(t){let e=this.parentsOf(t)??[];return(e.length?e[e.length-1].items:this.items).filter(s=>s.id!==t&&s.items)}expandAll(){let t=e=>e.forEach(i=>i.items&&(this.open.add(i.id),t(i.items)));t(this.items),this.rendered&&this.paint()}collapseAll(){this.open.clear(),this.active&&this.openParents(this.active),this.rendered&&this.paint()}setItems(t){this.items=p(t)??[],this.config.items=t,this.rendered&&this.paint()}updateItem(t,e){let i=this.getItem(t);i&&(Object.assign(i,e),this.rendered&&this.paint())}openFlyout(t,e){let i=this.getItem(t),s=this.root.querySelector(`[data-id="${CSS.escape(t)}"]`);if(!i?.items||!s)return;let n=(r,l)=>r.filter(o=>this.visible(o)).map(o=>({text:o.text,icon:o.icon,badge:o.badge,disabled:o.disabled,group:l?i.text:void 0,items:o.items?n(o.items,!1):void 0,handler:o.items?void 0:()=>this.select(o.id)}));this.flyout||(this.flyout=new g({cls:"op-navmenu__flyout"}),this.flyout.on("hide",()=>{let r=this.flyoutOf;this.flyoutOf=void 0,r&&this.root.querySelector(`[data-id="${CSS.escape(r)}"]`)?.setAttribute("aria-expanded","false")}),this.listen(this.flyout.el,"keydown",r=>r.key==="ArrowLeft"&&!r.target.closest('.op-menu__item[aria-expanded="true"]')&&this.flyout.hide())),this.flyout.hide(),this.flyoutOf=t,this.flyout.setItems(n(i.items,!0)),s.setAttribute("aria-expanded","true"),this.flyout.showBy(s,"right-start",e)}setCollapsed(t){this.config.collapsed=t,t||this.flyout?.hide(),this.rendered&&(this.fit(),this.paint())}fit(){let t=this.parent?.el,e=this.config.railWidth;!t||e==null||(this.config.collapsed?(this.parentWidth??=t.style.inlineSize,t.style.inlineSize=f(e)):this.parentWidth!==void 0&&(t.style.inlineSize=this.parentWidth,this.parentWidth=void 0))}filter(t){this.query=t.trim().toLowerCase(),this.rendered&&this.paint()}rows(){return Array.from(this.root.querySelectorAll(".op-navmenu__item"))}focusRow(t){t&&(this.rows().forEach(e=>e.tabIndex=e===t?0:-1),t.focus())}onKey(t){let e=t.target.closest(".op-navmenu__item");if(!e)return;let i=this.rows(),s=i.indexOf(e),n=this.getItem(e.dataset.id),r=e.getAttribute("aria-expanded")==="true";switch(t.key){case"ArrowDown":this.focusRow(i[s+1]);break;case"ArrowUp":this.focusRow(i[s-1]);break;case"Home":this.focusRow(i[0]);break;case"End":this.focusRow(i[i.length-1]);break;case"ArrowRight":n.items&&this.config.collapsed?this.openFlyout(n.id,!0):n.items&&!r?this.expand(n.id):n.items&&this.focusRow(i[s+1]);break;case"ArrowLeft":if(n.items&&r)this.collapse(n.id);else{let o=this.parentsOf(n.id)?.pop();o&&this.focusRow(this.root.querySelector(`[data-id="${CSS.escape(o.id)}"]`)??void 0)}break;case"Enter":case" ":this.activate(n.id);break;default:return}if(t.preventDefault(),this.flyout?.el.contains(document.activeElement))return;this.focusId=document.activeElement?.dataset?.id??n.id;let l=this.root.querySelector(`[data-id="${CSS.escape(this.focusId)}"]`);l&&document.activeElement!==l&&this.focusRow(l)}};v("navmenu",m);export{m as a};
|
|
2
|
+
//# sourceMappingURL=chunk-4QAHVGGE.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/navigation/navmenu/navmenu.ts"],
|
|
4
|
+
"sourcesContent": ["import { Component, type ComponentConfig } from '../../../core/component';\nimport { register } from '../../../core/registry';\nimport { h, px } from '../../../core/dom';\nimport { gate } from '../../../core/permission';\nimport { iconEl } from '../../base/icon/icon';\nimport { Menu, type MenuEntry } from '../../overlays/menu/menu';\n\nexport interface NavItem {\n id: string;\n text: string;\n icon?: string;\n badge?: string | number;\n items?: NavItem[];\n disabled?: boolean;\n hidden?: boolean;\n /** Hidden (or disabled) while `setPermissionResolver` denies it. */\n permission?: string;\n /** Groups: start open. */\n expanded?: boolean;\n data?: unknown;\n}\n\nexport interface NavMenuConfig extends ComponentConfig {\n items?: NavItem[];\n /** id of the active leaf. */\n active?: string;\n /** Rail: icons only. */\n collapsed?: boolean;\n /** Width (px or CSS) the parent container takes while collapsed, and gives back on expand: the sidebar follows the rail. */\n railWidth?: number | string;\n /** Opening a group closes the others at its level. */\n accordion?: boolean;\n}\n\n/** Sidebar tree: groups that open and close, one active leaf, badges, rail mode, filter and the APG tree keyboard model. */\nexport class NavMenu extends Component<NavMenuConfig> {\n protected override baseCls = 'op-navmenu';\n protected override tag = 'nav' as const;\n private items: NavItem[] = [];\n private open = new Set<string>();\n private active?: string;\n private query = '';\n private focusId?: string;\n private root!: HTMLElement;\n /** Rail mode: the floating menu of a group, and the group it belongs to. */\n private flyout?: Menu;\n private flyoutOf?: string;\n private hoverTimer?: () => void;\n private parentWidth?: string;\n\n protected override onRender() {\n const c = this.config;\n this.items = gate(c.items) ?? [];\n this.active = c.active;\n const seed = (list: NavItem[]) => list.forEach((i) => (i.expanded && this.open.add(i.id), i.items && seed(i.items)));\n seed(this.items);\n if (this.active) this.openParents(this.active);\n this.root = h('ul', 'op-navmenu__tree', { role: 'tree', 'aria-label': c.ariaLabel ?? null });\n this.el.append(this.root);\n this.fit();\n this.listen(this.root, 'click', (e: Event) => {\n const row = (e.target as HTMLElement).closest<HTMLElement>('.op-navmenu__item');\n if (row) this.activate(row.dataset.id!);\n });\n this.listen(this.root, 'keydown', (e: KeyboardEvent) => this.onKey(e));\n // rail: hovering a group's icon opens its menu (after a short pause, so passing over the rail does not)\n this.listen(this.root, 'pointerover', (e: Event) => {\n const row = (e.target as HTMLElement).closest<HTMLElement>('.op-navmenu__item.is-group');\n this.hoverTimer?.();\n if (!this.config.collapsed || !row || row.dataset.id === this.flyoutOf) return;\n this.hoverTimer = this.later(() => this.openFlyout(row.dataset.id!, false), 200);\n });\n this.listen(this.root, 'pointerleave', () => this.hoverTimer?.());\n this.own(() => this.flyout?.destroy());\n this.listen(this.root, 'focusin', (e: Event) => {\n const row = (e.target as HTMLElement).closest<HTMLElement>('.op-navmenu__item');\n if (row) this.focusId = row.dataset.id;\n });\n this.paint();\n }\n\n // ---- model -----------------------------------------------------------------------------------\n\n getItem(id: string, list = this.items): NavItem | undefined {\n for (const i of list) {\n if (i.id === id) return i;\n const hit = i.items && this.getItem(id, i.items);\n if (hit) return hit;\n }\n }\n private parentsOf(id: string, list = this.items, trail: NavItem[] = []): NavItem[] | undefined {\n for (const i of list) {\n if (i.id === id) return trail;\n const hit = i.items && this.parentsOf(id, i.items, [...trail, i]);\n if (hit) return hit;\n }\n }\n private openParents(id: string) {\n for (const p of this.parentsOf(id) ?? []) this.open.add(p.id);\n }\n private matches(i: NavItem, q: string): boolean {\n return i.text.toLowerCase().includes(q) || !!i.items?.some((c) => this.matches(c, q));\n }\n /** Visible = not hidden, matches the filter, and a group has at least one visible child. */\n private visible(i: NavItem): boolean {\n if (i.hidden) return false;\n if (this.query && !this.matches(i, this.query)) return false;\n return !i.items || i.items.some((c) => this.visible(c));\n }\n private isOpen(i: NavItem): boolean {\n if (this.config.collapsed) return false; // rail: a group's children live in its floating menu\n return this.query ? true : this.open.has(i.id);\n }\n\n // ---- rendering -------------------------------------------------------------------------------\n\n private paint() {\n this.el.classList.toggle('is-rail', !!this.config.collapsed);\n this.root.replaceChildren(...this.items.filter((i) => this.visible(i)).map((i) => this.node(i, 1)));\n const f = this.focusId && this.root.querySelector<HTMLElement>(`[data-id=\"${CSS.escape(this.focusId)}\"]`);\n const first = f || this.root.querySelector<HTMLElement>('.op-navmenu__item.is-active') || this.root.querySelector<HTMLElement>('.op-navmenu__item');\n this.root.querySelectorAll<HTMLElement>('.op-navmenu__item').forEach((r) => (r.tabIndex = r === first ? 0 : -1));\n }\n\n private node(i: NavItem, level: number): HTMLElement {\n const group = !!i.items;\n const open = group && this.isOpen(i);\n const rail = !!this.config.collapsed;\n const li = h('li', 'op-navmenu__node', { role: 'none' });\n const holdsActive = group && !!this.active && !!this.parentsOf(this.active)?.some((p) => p.id === i.id);\n const flying = rail && group;\n const row = h('div', `op-navmenu__item${group ? ' is-group' : ''}${open ? ' is-expanded' : ''}${i.id === this.active ? ' is-active' : ''}${holdsActive && rail ? ' has-active' : ''}${i.disabled ? ' is-disabled' : ''}`, {\n role: 'treeitem', 'data-id': i.id, 'aria-level': level, 'aria-expanded': group ? String(flying ? this.flyoutOf === i.id : open) : null, 'aria-current': i.id === this.active ? 'page' : null,\n 'aria-haspopup': flying ? 'menu' : null, 'aria-disabled': i.disabled ? 'true' : null, title: rail ? i.text : null, tabindex: -1,\n });\n row.style.setProperty('--_level', String(level - 1));\n // in the rail a group shows its icon (or its initial) and opens a floating menu\n row.append(h('span', 'op-navmenu__icon', {}, i.icon ? iconEl(i.icon) : flying ? i.text.charAt(0).toUpperCase() : ''), h('span', 'op-navmenu__text', {}, i.text));\n if (i.badge != null && i.badge !== '') row.append(h('span', 'op-navmenu__badge', {}, String(i.badge)));\n if (group) row.append(h('span', 'op-navmenu__chevron', { 'aria-hidden': 'true' }, iconEl('chevron-down')));\n li.append(row);\n if (group && open) li.append(h('ul', 'op-navmenu__group', { role: 'group' }, ...i.items!.filter((c) => this.visible(c)).map((c) => this.node(c, level + 1))));\n return li;\n }\n\n // ---- behavior --------------------------------------------------------------------------------\n\n private activate(id: string) {\n const i = this.getItem(id);\n if (!i || i.disabled) return;\n if (i.items && this.config.collapsed) return this.openFlyout(id, true);\n if (i.items) return this.toggle(id);\n this.select(id);\n }\n\n private select(id: string) {\n const i = this.getItem(id);\n if (!i || i.disabled || this.emit('before-select', i) === false) return;\n this.setActive(id);\n this.emit('select', i);\n }\n\n /** Marks a leaf as the active page (and opens its parents). Does not emit `select`. */\n setActive(id: string | undefined) {\n this.active = id;\n this.config.active = id;\n if (id) {\n this.openParents(id);\n this.focusId = id;\n }\n if (this.rendered) this.paint();\n }\n getActive(): NavItem | undefined {\n return this.active ? this.getItem(this.active) : undefined;\n }\n\n expand(id: string) {\n const i = this.getItem(id);\n if (!i?.items || this.open.has(id)) return;\n if (this.config.accordion) for (const sib of this.siblings(id)) this.open.delete(sib.id);\n this.open.add(id);\n this.rendered && this.paint();\n this.emit('expand', i);\n }\n collapse(id: string) {\n const i = this.getItem(id);\n if (!i?.items || !this.open.delete(id)) return;\n this.rendered && this.paint();\n this.emit('collapse', i);\n }\n toggle(id: string) {\n if (this.open.has(id)) this.collapse(id);\n else this.expand(id);\n }\n private siblings(id: string): NavItem[] {\n const parents = this.parentsOf(id) ?? [];\n const list = parents.length ? parents[parents.length - 1].items! : this.items;\n return list.filter((x) => x.id !== id && x.items);\n }\n expandAll() {\n const walk = (l: NavItem[]) => l.forEach((i) => i.items && (this.open.add(i.id), walk(i.items)));\n walk(this.items);\n this.rendered && this.paint();\n }\n collapseAll() {\n this.open.clear();\n if (this.active) this.openParents(this.active);\n this.rendered && this.paint();\n }\n\n setItems(items: NavItem[]) {\n this.items = gate(items) ?? [];\n this.config.items = items;\n if (this.rendered) this.paint();\n }\n /** Changes an item in place (a badge, a label, disabled...). */\n updateItem(id: string, patch: Partial<NavItem>) {\n const i = this.getItem(id);\n if (!i) return;\n Object.assign(i, patch);\n if (this.rendered) this.paint();\n }\n /** Rail mode: a group's children in a Menu beside its icon (title as the header, badges kept). */\n private openFlyout(id: string, focus: boolean) {\n const group = this.getItem(id);\n const row = this.root.querySelector<HTMLElement>(`[data-id=\"${CSS.escape(id)}\"]`);\n if (!group?.items || !row) return;\n const entries = (list: NavItem[], top: boolean): MenuEntry[] =>\n list.filter((c) => this.visible(c)).map((c) => ({\n text: c.text, icon: c.icon, badge: c.badge, disabled: c.disabled, group: top ? group.text : undefined,\n items: c.items ? entries(c.items, false) : undefined,\n handler: c.items ? undefined : () => this.select(c.id),\n }));\n if (!this.flyout) {\n this.flyout = new Menu({ cls: 'op-navmenu__flyout' });\n this.flyout.on('hide', () => {\n const was = this.flyoutOf;\n this.flyoutOf = undefined;\n if (was) this.root.querySelector(`[data-id=\"${CSS.escape(was)}\"]`)?.setAttribute('aria-expanded', 'false');\n });\n // \u2190 closes it (the Menu only does that for submenus) and gives the focus back to the icon\n this.listen(this.flyout.el, 'keydown', (e: KeyboardEvent) => e.key === 'ArrowLeft' && !(e.target as HTMLElement).closest('.op-menu__item[aria-expanded=\"true\"]') && this.flyout!.hide());\n }\n this.flyout.hide();\n this.flyoutOf = id;\n this.flyout.setItems(entries(group.items, true));\n row.setAttribute('aria-expanded', 'true');\n this.flyout.showBy(row, 'right-start', focus);\n }\n\n setCollapsed(collapsed: boolean) {\n this.config.collapsed = collapsed;\n if (!collapsed) this.flyout?.hide();\n if (this.rendered) (this.fit(), this.paint());\n }\n\n private fit() {\n const box = this.parent?.el;\n const rail = this.config.railWidth;\n if (!box || rail == null) return;\n if (this.config.collapsed) {\n this.parentWidth ??= box.style.inlineSize;\n box.style.inlineSize = px(rail);\n } else if (this.parentWidth !== undefined) {\n box.style.inlineSize = this.parentWidth;\n this.parentWidth = undefined;\n }\n }\n /** Hides what does not match and opens the groups that have a match; empty text clears the filter. */\n filter(text: string) {\n this.query = text.trim().toLowerCase();\n if (this.rendered) this.paint();\n }\n\n // ---- keyboard (APG tree) ---------------------------------------------------------------------\n\n private rows(): HTMLElement[] {\n return Array.from(this.root.querySelectorAll<HTMLElement>('.op-navmenu__item'));\n }\n private focusRow(row?: HTMLElement) {\n if (!row) return;\n this.rows().forEach((r) => (r.tabIndex = r === row ? 0 : -1));\n row.focus();\n }\n\n private onKey(e: KeyboardEvent) {\n const row = (e.target as HTMLElement).closest<HTMLElement>('.op-navmenu__item');\n if (!row) return;\n const rows = this.rows();\n const i = rows.indexOf(row);\n const item = this.getItem(row.dataset.id!)!;\n const open = row.getAttribute('aria-expanded') === 'true';\n switch (e.key) {\n case 'ArrowDown': this.focusRow(rows[i + 1]); break;\n case 'ArrowUp': this.focusRow(rows[i - 1]); break;\n case 'Home': this.focusRow(rows[0]); break;\n case 'End': this.focusRow(rows[rows.length - 1]); break;\n case 'ArrowRight':\n if (item.items && this.config.collapsed) this.openFlyout(item.id, true);\n else if (item.items && !open) this.expand(item.id);\n else if (item.items) this.focusRow(rows[i + 1]);\n break;\n case 'ArrowLeft':\n if (item.items && open) this.collapse(item.id);\n else {\n const parent = this.parentsOf(item.id)?.pop();\n if (parent) this.focusRow(this.root.querySelector<HTMLElement>(`[data-id=\"${CSS.escape(parent.id)}\"]`) ?? undefined);\n }\n break;\n case 'Enter':\n case ' ': this.activate(item.id); break;\n default: return;\n }\n e.preventDefault();\n if (this.flyout?.el.contains(document.activeElement)) return; // the focus went to the rail's floating menu: leave it there\n this.focusId = (document.activeElement as HTMLElement | null)?.dataset?.id ?? item.id;\n // a repaint (expand/collapse/select) rebuilt the rows: put the focus back on the one the user is on\n const again = this.root.querySelector<HTMLElement>(`[data-id=\"${CSS.escape(this.focusId)}\"]`);\n if (again && document.activeElement !== again) this.focusRow(again);\n }\n}\nregister('navmenu', NavMenu);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["NavMenu", "Component", "c", "gate", "seed", "list", "i", "h", "e", "row", "id", "hit", "trail", "p", "q", "first", "r", "level", "group", "open", "rail", "li", "holdsActive", "flying", "iconEl", "sib", "parents", "x", "walk", "l", "items", "patch", "focus", "entries", "top", "Menu", "was", "collapsed", "box", "px", "text", "rows", "item", "parent", "again", "register"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as g}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as g}from"./chunk-QT5JRZZJ.js";import{a as n}from"./chunk-TIPK3SCJ.js";import{f as a}from"./chunk-KMBTJ5AG.js";import{b as t}from"./chunk-PZSHOSOS.js";var s=class extends a{baseCls="op-image";img;ph;build(){return this.ph=t("div","op-image__fallback",{"aria-hidden":"true"}),t("div",this.baseCls,{},this.ph)}onRender(){let e=this.config;e.ratio&&(this.el.style.aspectRatio=e.ratio),this.el.classList.add(`op-image--${e.fit??"cover"}`),this.el.classList.toggle("op-image--rounded",!!e.rounded),this.setSrc(e.src)}setSrc(e,r=!1){if(r||(this.config.src=e),!this.rendered)return;this.img?.remove(),this.img=void 0,this.el.classList.toggle("has-image",!1);let o=this.config.fallback??"image";if(this.ph.replaceChildren(/[/.]/.test(o)?"":g(o)),!e)return;let i=this.img=t("img","op-image__img",{src:e,alt:this.config.alt??"",draggable:"false",loading:this.config.eager?"eager":"lazy",decoding:"async"});i.addEventListener("load",()=>this.el.classList.add("has-image")),i.addEventListener("error",()=>{i.remove(),this.img=void 0,!r&&/[/.]/.test(this.config.fallback??"")&&this.setSrc(this.config.fallback,!0),this.emit("error")}),this.el.append(i)}setAlt(e){this.config.alt=e,this.img&&(this.img.alt=e)}setRatio(e){this.config.ratio=e,this.rendered&&(this.el.style.aspectRatio=e)}};n("image",s);export{s as a};
|
|
2
|
+
//# sourceMappingURL=chunk-4Z4E3BZ2.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as I}from"./chunk-DY3ZYMXD.js";import{a as D}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as I}from"./chunk-DY3ZYMXD.js";import{a as D}from"./chunk-BPCD37A2.js";import{a as S}from"./chunk-KVUELLYF.js";import{a as B,c as T}from"./chunk-QT5JRZZJ.js";import{b as x}from"./chunk-PZSHOSOS.js";import{b as R}from"./chunk-IODSL7KU.js";import{b as L}from"./chunk-XFDNXSU5.js";import{e as v,f}from"./chunk-S4QD5NID.js";v("en",{gcExpand:"Expand all",gcCollapse:"Collapse all",gcBy:"Group by",gcNone:"No grouping",gcActions:"Groups"});v("pt-BR",{gcExpand:"Expandir tudo",gcCollapse:"Recolher tudo",gcBy:"Agrupar por",gcNone:"Sem agrupamento",gcActions:"Grupos"});B({expand:'<path d="m7 15 5 5 5-5M7 9l5-5 5 5"/>',collapse:'<path d="m7 20 5-5 5 5M7 4l5 5 5-5"/>'});function N(i,n,c){let a=new Map,E=x("div","op-groupcontrols op-footer-group",{role:"group","aria-label":f("gcActions")}),y=(d,u,g,w,_)=>{let k=new S({icon:u,variant:"ghost",ariaLabel:g,tooltip:g,hidden:!w,handler:()=>_(k)});k.mount(E),a.set(d,k)};y("expand","expand",f("gcExpand"),c.expand!==!1,()=>n.expandAll()),y("collapse","collapse",f("gcCollapse"),c.collapse!==!1,()=>n.collapseAll());let h=c.current?c.choices.findIndex(d=>d.field===c.current):-1,b=new D({});y("by","list",f("gcBy"),c.by!==!1&&c.choices.length>0,d=>{b.setItems([...c.choices.map((u,g)=>({text:u.text,checked:h===g,handler:()=>(h=g,n.setGroupBy(u.field??u.by))})),"-",{text:f("gcNone"),handler:()=>(h=-1,n.setGroupBy(null))}]),b.showBy(d.el)});let M=I(i,E);return{set:(d,u)=>a.get(d)?.[u?"show":"hide"](),disable:(d,u)=>a.get(d)?.setDisabled(u),destroy(){M(),b.destroy(),a.forEach(d=>d.destroy())}}}v("en",{groupTotal:"Total",groupCount:"{n}",groupToggle:"Toggle group"});v("pt-BR",{groupTotal:"Total",groupCount:"{n}",groupToggle:"Alternar grupo"});function X(i={}){let n,c=i.by??(i.field?o=>o.data[i.field]:void 0),a=new Set,E=!!i.collapsed,y=[],h=[],b,M=i.summary??"group",d=o=>o.filter(t=>!t.classList.contains("op-grid__selcell")&&!t.classList.contains("op-grid__actcell"));function u(o,t,s){return{cls:`op-grid__row--total ${s}`,paint(p,G){G.setAttribute("aria-label",o);let e=n.getColumns();d(p).forEach((r,m)=>{let l=e[m];if(!l)return;let A=l.summary?(C=>l.summaryRenderer?l.summaryRenderer(C,l):C==null?"":l.format?L(l.format,C):String(C))(R(l,t)):m===0?o:"";r.replaceChildren(A),r.classList.toggle("op-grid__cell--right",l.align==="right")})}}}function g(){let t=n.getStore().getRange();if(!c)return n.setRowLayout(void 0);let s=new Map;for(let e of t){let r=c(e);s.set(r,[...s.get(r)??[],e])}if(y=[...s.keys()],E){for(let e of y)a.add(String(e));E=!1}let p=[],G=n.getColumns().some(e=>e.summary);for(let[e,r]of s){let m=!a.has(String(e));if(p.push({level:1,expanded:m,cls:"op-grid__row--group",paint(l,A){let[C]=d(l);C.classList.add("is-group-label"),C.replaceChildren(x("span","op-grid__twist",{"aria-hidden":"true"},T("chevron-down")),x("span","op-grid__group-name",{},i.label?i.label(e,r):String(e??"\u2014")),x("span","op-grid__group-count",{},f("groupCount",{n:r.length}))),A.dataset.group=String(e)}}),!!m){for(let l of r)p.push({rec:l,level:2,cls:"is-grouped"});G&&M!=="grand"&&p.push(u(f("groupTotal"),r,"is-group-total"))}}G&&M!=="group"&&p.push(u(f("groupTotal"),t,"is-grand-total")),n.setRowLayout(p)}function w(o,t){let s=String(o),p=t??a.has(s);p!==!a.has(s)&&(p?a.delete(s):a.add(s),g(),n.emit("group-toggle",o,p))}let _=o=>{let t=o?.closest(".op-grid__row--group");return t?y.find(s=>String(s)===t.dataset.group):void 0},k={init(o){n=o;let t=o.el,s=t.querySelector("[role=grid]"),p=e=>{let r=_(e.target);(r!==void 0||e.target.closest(".op-grid__row--group"))&&w(r)},G=e=>{if(e.target!==s)return;let r=n.getRowEntry(n.getActive());if(!r||r.rec||r.level!==1)return;let m=_(document.getElementById(`${n.id}-r${n.getActive()}`)),l=r.expanded;if(e.key==="Enter"||e.key===" ")w(m);else if(e.key==="ArrowRight"&&!l)w(m,!0);else if(e.key==="ArrowLeft"&&l)w(m,!1);else return;e.preventDefault(),e.stopPropagation()};if(t.addEventListener("click",p),t.addEventListener("keydown",G,!0),h=[H(o),()=>t.removeEventListener("click",p),()=>t.removeEventListener("keydown",G,!0),()=>n.setRowLayout(void 0)],g(),i.controls){let e=i.controls===!0?{}:i.controls;b=N(o,k,{...e,choices:i.choices??[],current:i.field}),h.push(b.destroy)}return()=>h.forEach(e=>e())},expandAll(){a.clear(),g()},collapseAll(){for(let o of y)a.add(String(o));g()},toggle:w,setControlVisible:(o,t)=>b?.set(o,t),setControlDisabled:(o,t)=>b?.disable(o,t),setGroupBy(o){c=o===null?void 0:typeof o=="string"?t=>t.data[o]:o,a.clear(),g()}};return k;function H(o){return o.getStore().subscribe(t=>queueMicrotask(()=>!o.destroyed&&g()))}}export{X as a};
|
|
2
|
+
//# sourceMappingURL=chunk-5H533QXN.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as s}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as s}from"./chunk-GX32KEG2.js";import{a as o}from"./chunk-WWETTEUZ.js";import{a as c}from"./chunk-J6D4T4WY.js";import{a as p}from"./chunk-5WE2JOBY.js";var C=r=>{let e=r.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").toLowerCase();return e.charAt(0).toUpperCase()+e.slice(1)},d=r=>r.label??C(r.name),m=(r,e)=>r.filter(t=>!t.hide?.includes(e));function f(r){return m(r,"grid").map(e=>{let t={field:e.name,header:d(e),sortable:!0,width:e.width,group:e.group,summary:e.summary};return e.type==="number"?t.align="right":e.type==="duration"?Object.assign(t,{format:"duration",align:"right"}):e.type==="money"?Object.assign(t,{format:"money",align:"right"}):e.type==="date"||e.type==="datetime"?t.format="date":e.type==="bool"&&Object.assign(t,{format:"bool",align:"center"}),{...t,...e.column}})}function y(r){return m(r,"form").map(e=>{let t={required:e.required||void 0,readonly:e.readonly||void 0,...e.field},n=d(e);if(e.lookup)return o.lookup(e.name,n,e.lookup,t);switch(e.type){case"email":return o.email(e.name,n,t);case"area":return o.area(e.name,n,{colspan:"full",...t});case"number":return o.number(e.name,n,t);case"duration":return o.number(e.name,n,{min:0,...t});case"money":return o.number(e.name,n,{decimals:2,min:0,...t});case"date":return o.date(e.name,n,t);case"datetime":return o.datetime(e.name,n,t);case"select":return o.select(e.name,n,e.options??[],t);case"bool":return o.check(e.name,n,t);default:return o.text(e.name,n,t)}})}function h(r){return m(r,"filter").map(e=>{let t=e.type==="number"||e.type==="money"||e.type==="duration"?"number":e.type==="date"||e.type==="datetime"?"date":e.type==="select"||e.type==="bool"?"select":"text",n=e.type==="bool"?[{value:"true",label:"Yes"},{value:"false",label:"No"}]:e.type==="select"?e.options:void 0;return{name:e.name,label:d(e),type:t,group:e.group,options:n,...e.filter}})}var w=(r,e={})=>new p({columns:f(r),...e});function x(r,e={}){let t=e.columns??2,n=m(r,"form"),b=y(r),u=[],l=new Map;b.forEach((i,F)=>{let a=n[F].group;if(!a)return void u.push(i);l.has(a)||(l.set(a,[]),u.push(a)),l.get(a).push(i)});let g=u.map(i=>typeof i=="string"?new s({title:i,columns:t,items:l.get(i)}):i);return new c({...e,columns:l.size?void 0:t,items:g})}export{f as a,y as b,h as c,w as d,x as e};
|
|
2
|
+
//# sourceMappingURL=chunk-5KJ5Y4GY.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as R}from"./chunk-LHWY6G6Q.js";import{a as G}from"./chunk-MQEALOU3.js";import{a as $}from"./chunk-6NP4AEV4.js";import{a as z}from"./chunk-BCVOUMJJ.js";import{a as b}from"./chunk-ESRS5ZQV.js";import{c as C}from"./chunk-DIOJGTUN.js";import{a as x,b as L}from"./chunk-OWEQT2HN.js";import{a as _}from"./chunk-TIPK3SCJ.js";import{c as S,e as E,f as T}from"./chunk-UDXO3KM3.js";import{b as d}from"./chunk-PZSHOSOS.js";import{a as H}from"./chunk-IODSL7KU.js";import{c as A}from"./chunk-L5SQQFO7.js";import{e as w,f as g}from"./chunk-S4QD5NID.js";w("en",{gridSelected:"{n} selected",gridSelectAll:"Select all {n}",gridClearSel:"Clear selection",gridSelectRow:"Select row",gridSelectPage:"Select all rows",gridRowActions:"Row actions",gridColumns:"Columns",gridResize:"Resize column",gridGroupAll:"All",gridOtherCols:"Other",gridGroups:"Column groups",gridColumnSearch:"Search columns",gridNoColumns:"No matching columns"});w("pt-BR",{gridSelected:"{n} selecionado(s)",gridSelectAll:"Selecionar todos os {n}",gridClearSel:"Limpar sele\xE7\xE3o",gridSelectRow:"Selecionar linha",gridSelectPage:"Selecionar todas as linhas",gridRowActions:"A\xE7\xF5es da linha",gridColumns:"Colunas",gridResize:"Redimensionar coluna",gridGroupAll:"Todas",gridOtherCols:"Outras",gridGroups:"Grupos de colunas",gridColumnSearch:"Buscar colunas",gridNoColumns:"Nenhuma coluna encontrada"});var v="__select",m="__actions",K={field:v,width:44,align:"center",cls:"op-grid__selcell",locked:"start"},P={field:m,width:44,align:"center",cls:"op-grid__actcell",locked:"end"},B="var(--op-grid-row-height, var(--op-row-height))",k=class extends T{baseCls="op-grid";store;offStore;headEl;headRow;viewport;emptyEl;table;pager;v;entries;lockEdge=[-1,-1];selected=new Set;active=-1;anchor=-1;justDragged=!1;cv=0;selAll;barEl;bulkEl;bulkCount;bulkBtns=[];selectAllBtn;rowMenu;colDd;colList;colSearch;colChips;colGroup="";cols(){let e=this.config;return[...e.checkboxSelection?[K]:[],...this.userCols(),...e.rowActions?.length?[P]:[]]}userCols(){let e=(this.config.columns??[]).filter(t=>!t.hidden);return[...e.filter(t=>t.locked==="start"),...e.filter(t=>!t.locked),...e.filter(t=>t.locked==="end")]}visibleActions(){return this.config.rowActionsMode==="visible"&&!!this.config.rowActions?.length}mode(){return this.config.checkboxSelection?"multi":this.config.selection??"single"}build(){let e=this.config;e.rowActions=E(e.rowActions),e.bulkActions=E(e.bulkActions),e.columns=e.columns.filter(i=>S(i.permission));let t=d("div",this.baseCls);return this.headRow=d("div","op-grid__row op-grid__header-row",{role:"row"}),this.headEl=d("div","op-grid__header",{},this.headRow),this.viewport=d("div","op-grid__viewport"),this.emptyEl=d("div","op-grid__empty"),(e.columnMenu||e.bulkActions?.length)&&(this.bulkEl=d("div","op-grid__bulk"),this.bulkEl.hidden=!0,this.barEl=d("div","op-grid__bar",{},this.bulkEl),t.append(this.barEl)),this.table=d("div","op-grid__table",{role:"grid",tabindex:0,"aria-multiselectable":e.selection==="multi"||e.checkboxSelection?"true":null},this.headEl,this.viewport,this.emptyEl),t.append(this.table),t.classList.toggle("op-grid--striped",!!e.striped),e.paging&&(this.pager=new z({cls:"op-grid__pager"}),t.append(this.pager.el)),t}onRender(){let e=this.config;if(this.bindStore(e.store??new A({data:e.data??[]})),this.buildHeader(),this.buildBar(),this.v=x({scroller:this.viewport,count:this.count(),rowHeight:e.rowHeight??(L(this.el,B)||36),render:(t,i)=>this.renderRow(t,i),rowCls:"op-grid__row op-grid__body-row"}),this.own(()=>this.v.destroy()),this.sync(),this.listen(this.viewport,"scroll",()=>this.onScrollX(),{passive:!0}),this.listen(this.viewport,"click",t=>this.onRowEvent(t,"row-click")),this.listen(this.viewport,"dblclick",t=>this.onRowEvent(t,"row-dblclick")),this.listen(this.el,"keydown",t=>this.onKey(t)),this.listen(this.headRow,"change",t=>{t.target===this.selAll&&(this.selAll.checked?this.store.each(i=>this.selected.add(i)):this.config.keepSelection?this.store.each(i=>this.selected.delete(i)):this.selected.clear(),this.changed())}),e.reorderableColumns&&this.initColumnDrag(),e.resizableColumns&&this.initColumnResize(),this.listen(this.headRow,"click",t=>{if(this.justDragged||t.target.closest(".op-grid__resizer"))return;let i=t.target.closest("[data-field]"),s=i&&this.userCols().find(r=>r.field===i.dataset.field);s&&(this.emit("column-click",s),s.sortable&&this.sortBy(s))}),typeof ResizeObserver<"u"){let t=new ResizeObserver(()=>this.layout());t.observe(this.viewport),this.own(()=>t.disconnect())}this.pager&&(this.pager.setStore(this.store),this.store.pageSize||this.store.setPageSize(e.pageSize??20)),this.own(()=>this.pager?.destroy());for(let t of e.plugins??[]){let i=t.init(this);i&&this.own(i),t.destroy&&this.own(()=>t.destroy())}}cellAt(e){let t=e?.closest?.(".op-grid__body-row .op-grid__cell"),i=Number(t?.parentElement?.dataset.i),s=t&&this.cols()[Number(t.getAttribute("aria-colindex"))-1],r=t&&this.recAt(i);return s&&r&&![v,m].includes(s.field)?{index:i,record:r,column:s,el:t}:void 0}getCell(e,t){let i=this.cols().findIndex(s=>s.field===t);return document.getElementById(`${this.id}-r${e}`)?.querySelector(`[aria-colindex="${i+1}"]`)??void 0}getColumns(){return this.userCols()}getActive(){return this.active}notifyMount(){super.notifyMount(),this.layout(),this.pager?.notifyMount()}onScrollX(){let e=this.viewport,t=Math.max(0,e.scrollWidth-e.clientWidth-e.scrollLeft);this.headEl.scrollLeft=e.scrollLeft,this.el.style.setProperty("--op-grid-scroll-x",`${e.scrollLeft}px`),this.el.style.setProperty("--op-grid-scroll-end",`${t}px`),this.el.classList.toggle("is-scrolled-start",e.scrollLeft>0),this.el.classList.toggle("is-scrolled-end",t>0)}layout(){if(this.rendered){if(!this.config.rowHeight){let e=L(this.el,B);e&&this.v.setRowHeight(e)}this.headEl.style.paddingInlineEnd=`${this.viewport.offsetWidth-this.viewport.clientWidth}px`,this.v.refresh(),this.onScrollX()}}bindStore(e){this.offStore?.(),this.store=e;let t=e.subscribe(s=>{this.rendered&&(this.sync(),s.type==="sort"&&this.paintSort())}),i=e.on("loading",s=>this.setLoading(s));this.offStore=()=>(t(),i()),this.own(()=>this.offStore?.())}sync(){let e=this.selected.size;if(!this.config.keepSelection)for(let t of this.selected)this.store.indexOf(t)<0&&this.selected.delete(t);this.active=Math.min(this.active,this.count()-1),this.v.setCount(this.count()),this.table.setAttribute("aria-rowcount",String(this.store.totalCount+1)),this.emptyEl.textContent=this.config.emptyText??g("empty"),this.emptyEl.hidden=this.count()>0||!!this.config.loading,this.el.classList.toggle("is-empty",this.count()===0),this.updateActiveDescendant(),this.paintSelection(),this.selected.size!==e&&this.emit("select",this.getSelection())}setStore(e){this.config.store=e,this.selected.clear(),this.active=this.anchor=-1,this.rendered&&(this.bindStore(e),this.pager?.setStore(e),this.paintSort(),this.sync())}getStore(){return this.render(),this.store}count(){return this.entries?this.entries.length:this.store.count}recAt(e){return this.entries?this.entries[e]?.rec:this.store.getAt(e)}setRowLayout(e){this.entries=e,this.rendered&&this.sync()}getRowEntry(e){return this.entries?this.entries[e]:(t=>t&&{rec:t})(this.store.getAt(e))}getRowCount(){return this.count()}layoutColumns(){let e=this.cols(),t=this.visibleActions()?this.config.rowActions.length:1,i=n=>n.field===m?`calc(${t} * var(--op-grid-action-size) + ${t+1} * var(--op-grid-action-gap))`:`${n.width}px`,s=n=>n.field===m?i(n):`${n.width??140}px`,r=e.map(n=>n.locked?s(n):n.width?`${n.width}px`:`minmax(${n.minWidth??96}px, ${n.flex??1}fr)`).join(" "),o=n=>n.reduce((c,[a,h])=>(this.el.style.setProperty(`--op-grid-lock-${a}`,c.length?`calc(${c.join(" + ")})`:"0px"),[...c,s(h)]),[]),l=e.map((n,c)=>[c,n]);o(l.filter(([,n])=>n.locked==="start")),o(l.filter(([,n])=>n.locked==="end").reverse()),this.lockEdge=[e.map(n=>n.locked).lastIndexOf("start"),e.findIndex(n=>n.locked==="end")],this.el.style.setProperty("--op-grid-cols",r),this.el.style.setProperty("--op-grid-min-width",`${e.reduce((n,c)=>n+(c.field===m?t*36:c.width??(c.locked?140:c.minWidth??96)),0)}px`)}lock(e,t,i){t.locked&&(e.classList.add("is-locked",`is-locked-${t.locked}`),e.classList.toggle("is-lock-edge",this.lockEdge[t.locked==="start"?0:1]===i),e.style.setProperty("--_lock",`var(--op-grid-lock-${i})`))}buildHeader(){let e=this.cols();this.layoutColumns(),this.el.classList.toggle("op-grid--actions-visible",this.visibleActions()),this.el.classList.toggle("op-grid--reorderable",!!this.config.reorderableColumns),this.el.classList.toggle("op-grid--resizable",!!this.config.resizableColumns),this.table.setAttribute("aria-colcount",String(e.length)),this.selAll=void 0,this.headRow.replaceChildren(...e.map((i,s)=>{let r=i.header??i.field,o=d("div",`op-grid__cell op-grid__hcell${i.align?` op-grid__cell--${i.align}`:""}${i.sortable?" is-sortable":""}`,{role:"columnheader","aria-colindex":s+1,"data-field":i.field});this.lock(o,i,s),i.field===v?o.append(this.selAll=d("input","op-grid__check",{type:"checkbox","aria-label":g("gridSelectPage")})):i.field===m?o.append(d("span","op-sr-only",{},g("gridRowActions"))):i.sortable?o.append(d("button","op-grid__sort",{type:"button"},d("span","op-grid__label",{},r),d("span","op-grid__arrow",{"aria-hidden":"true"},C("arrow-up")))):o.append(d("span","op-grid__label",{},r));let l=i.field!==v&&i.field!==m;return this.config.reorderableColumns&&l&&o.classList.add("is-reorderable"),this.canResize(i)&&o.append(d("span","op-grid__resizer",{role:"separator","aria-orientation":"vertical","aria-label":`${g("gridResize")} ${r}`})),l&&!i.sortable&&(this.config.reorderableColumns||this.canResize(i))&&(o.tabIndex=0),o}));let t=this.groupBand(e);this.headEl.replaceChildren(...t?[t]:[],this.headRow),this.paintSort(),this.emit("header-paint")}groupBand(e){if(this.config.groupHeaders===!1||!e.some(s=>s.group))return null;let t=[],i=0;for(;i<e.length;){let s=e[i].group??"",r=1;for(;i+r<e.length&&(e[i+r].group??"")===s;)r++;let o=d("div",`op-grid__gcell${s?"":" is-empty"}`,{role:"columnheader","aria-colindex":i+1,"aria-colspan":r},s);o.style.gridColumn=`span ${r}`,t.push(o),i+=r}return d("div","op-grid__row op-grid__group-row",{role:"row"},...t)}getColumnGroups(){return[...new Set(this.config.columns.map(e=>e.group).filter(e=>!!e))]}setColumnGroupVisible(e,t){let i=this.config.columns.filter(s=>(s.group??"")===e);if(i.length){for(let s of i)s.hidden=!t;this.config.columns.some(s=>!s.hidden)||(i[0].hidden=!1),this.setColumns(this.config.columns),this.emit("columns-change",this.getColumnState())}}setColumnLocked(e,t){let i=this.config.columns.find(s=>s.field===e);!i||i.locked===(t??void 0)||(this.setColumns(this.config.columns.map(s=>s===i?{...s,locked:t??void 0}:s)),this.emit("columns-change",this.getColumnState()))}setColumns(e){this.config.columns=e,this.rendered&&(this.cv++,this.buildHeader(),this.paintSelection(),this.v.refresh())}getColumnState(){return this.config.columns.map(e=>({field:e.field,hidden:!!e.hidden,width:e.width,locked:e.locked}))}setColumnState(e){let t=new Map(this.config.columns.map(s=>[s.field,s])),i=e.flatMap(s=>{let r=t.get(s.field);return t.delete(s.field),r?[{...r,hidden:s.hidden,width:s.width??r.width,locked:"locked"in s?s.locked:r.locked}]:[]});this.setColumns([...i,...t.values()]),this.emit("columns-change",this.getColumnState())}canResize(e){return!!this.config.resizableColumns&&e.field!==v&&e.field!==m&&e.resizable!==!1}setColumnWidth(e,t){let i=this.config.columns.find(s=>s.field===e);i&&(i.width=t==null?void 0:Math.round(Math.max(i.minWidth??48,Math.min(t,i.maxWidth??1/0))),this.layoutColumns(),this.emit("column-resize",e,i.width),this.emit("columns-change",this.getColumnState()))}initColumnResize(){let e=this.headRow;this.listen(e,"pointerdown",t=>{let i=t.target.closest(".op-grid__resizer");if(!i||t.button)return;t.preventDefault();let s=i.parentElement,r=s.dataset.field,o=this.config.columns.find(u=>u.field===r),l=t.clientX,n=s.getBoundingClientRect().width||o.width||96;this.el.classList.add("is-resizing");let c=o.width,a=u=>{let p=Math.round(Math.max(o.minWidth??48,Math.min(n+(u.clientX-l)*(this.dir()==="rtl"?-1:1),o.maxWidth??1/0)));o.width=c=p,this.layoutColumns()},h=()=>{document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h),this.el.classList.remove("is-resizing"),this.justDragged=!0,setTimeout(()=>this.justDragged=!1),c!==void 0&&(this.emit("column-resize",r,c),this.emit("columns-change",this.getColumnState()))};document.addEventListener("pointermove",a),document.addEventListener("pointerup",h),this.own(()=>(document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h)))}),this.listen(e,"dblclick",t=>{let i=t.target.closest(".op-grid__resizer");i&&this.setColumnWidth(i.parentElement.dataset.field,void 0)}),this.listen(e,"keydown",t=>{if(!(t.altKey&&t.shiftKey)||t.key!=="ArrowLeft"&&t.key!=="ArrowRight")return;let i=t.target.closest(".op-grid__hcell"),s=i&&this.config.columns.find(o=>o.field===i.dataset.field);if(!i||!s||!this.canResize(s))return;t.preventDefault();let r=i.getBoundingClientRect().width||s.width||96;this.setColumnWidth(s.field,r+(t.key==="ArrowRight"?16:-16))})}dir(){return getComputedStyle(this.el).direction}moveColumn(e,t){let i=this.config.columns,s=i.find(h=>h.field===e);if(!s||e===t)return;let r=this.userCols(),o=r.indexOf(s),l=[...i.filter(h=>h!==s)],n=t==null?void 0:l.find(h=>h.field===t),c=r.filter(h=>h!==s).pop(),a=n?l.indexOf(n):c?l.indexOf(c)+1:l.length;l.splice(a,0,s),!l.every((h,u)=>h===i[u])&&(this.setColumns(l),this.emit("column-move",e,o,this.userCols().indexOf(s)),this.emit("columns-change",this.getColumnState()))}initColumnDrag(){let e=this.headRow,t=()=>Array.from(e.querySelectorAll(".is-reorderable"));this.listen(e,"pointerdown",i=>{let s=i.target.closest(".is-reorderable");if(!s||i.button||i.target.closest(".op-grid__resizer"))return;let r=s.dataset.field,o=i.clientX,l,n,c=null,a=u=>{if(!l){if(Math.abs(u.clientX-o)<6)return;l=d("div","op-grid__ghost",{},s.textContent??""),n=d("div","op-grid__drop"),this.el.append(l),this.headEl.append(n),s.classList.add("is-dragging-col")}l.style.left=`${u.clientX}px`,l.style.top=`${u.clientY}px`;let p=t(),f=p.find(O=>{let M=O.getBoundingClientRect();return u.clientX<M.left+M.width/2});c=f?f.dataset.field:null;let y=(f??p[p.length-1])?.getBoundingClientRect(),D=this.headEl.getBoundingClientRect();y&&n&&(n.style.left=`${(f?y.left:y.right)-D.left+this.headEl.scrollLeft}px`)},h=()=>{document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h),l&&(l.remove(),n?.remove(),s.classList.remove("is-dragging-col"),this.justDragged=!0,setTimeout(()=>this.justDragged=!1),this.moveColumn(r,c))};document.addEventListener("pointermove",a),document.addEventListener("pointerup",h),this.own(()=>(document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h)))}),this.listen(e,"keydown",i=>{if(!i.altKey||i.shiftKey||i.key!=="ArrowLeft"&&i.key!=="ArrowRight")return;let s=i.target.closest(".is-reorderable");if(!s)return;i.preventDefault();let r=this.userCols(),o=r.findIndex(c=>c.field===s.dataset.field),l=i.key==="ArrowLeft"?o-1:o+1;if(l<0||l>=r.length)return;this.moveColumn(r[o].field,i.key==="ArrowLeft"?r[l].field:r[l+1]?.field??null);let n=e.querySelector(`[data-field="${CSS.escape(r[o].field)}"]`);(n?.querySelector("button")??n)?.focus()})}paintSort(){let e=this.store.getSorters()[0];for(let t of Array.from(this.headRow.children)){let i=!!e&&t.dataset.field===e.field;t.classList.toggle("is-sorted-asc",i&&e.dir==="asc"),t.classList.toggle("is-sorted-desc",i&&e.dir==="desc"),t.classList.contains("is-sortable")&&t.setAttribute("aria-sort",i?e.dir==="asc"?"ascending":"descending":"none")}}sortBy(e){let t=this.store.getSorters()[0],i=t?.field===e.field?t.dir==="asc"?"desc":null:"asc";this.emit("before-sort",e.field,i)!==!1&&(this.store.sort(i?e.field:null,i??void 0),this.emit("sort",e.field,i))}rowIndexOffset(){return this.store.pageSize?(this.store.page-1)*this.store.pageSize:0}renderRow(e,t){let i=this.getRowEntry(t);if(!i)return;let s=i.rec,r=this.cols();e.id=`${this.id}-r${t}`,e.dataset.i=String(t),e.setAttribute("role","row"),e.setAttribute("aria-rowindex",String(this.rowIndexOffset()+t+2));let o=!!s&&this.selected.has(s);e.dataset.ec&&e.classList.remove(...e.dataset.ec.split(" ")),e.dataset.ec=i.cls??"",i.cls&&e.classList.add(...i.cls.split(" "));for(let[n,c]of[["aria-level",i.level],["aria-expanded",i.expanded]])c==null?e.removeAttribute(n):e.setAttribute(n,String(c));e.setAttribute("aria-selected",this.mode()==="none"||!s?"false":String(o)),e.classList.toggle("is-selected",o),e.classList.toggle("is-active",t===this.active),e.classList.toggle("is-odd",t%2===1),(e.dataset.cv!==String(this.cv)||e.dataset.cn!==String(r.length))&&(e.dataset.cv=String(this.cv),e.dataset.cn=String(r.length),e.replaceChildren(...r.map((n,c)=>{let a=d("div",`op-grid__cell${n.align?` op-grid__cell--${n.align}`:""}${n.cls?` ${n.cls}`:""}`,{role:"gridcell","aria-colindex":c+1});return this.lock(a,n,c),a})));let l=Array.from(e.children).filter(n=>n.classList.contains("op-grid__cell"));if(!s){for(let n of l)n.replaceChildren();return i.paint?.(l,e)}r.forEach((n,c)=>{let a=e.children[c];if(a.classList.contains("is-editing"))return;if(n.field===v){let u=a.firstElementChild??a.appendChild(d("input","op-grid__check",{type:"checkbox",tabindex:-1,"aria-label":g("gridSelectRow")}));u.checked=o;return}if(n.field===m){let u=this.config.rowActions??[];if(!this.visibleActions()){a.firstChild||a.append(d("button","op-grid__actbtn",{type:"button",tabindex:-1,"aria-label":g("gridRowActions"),"aria-haspopup":"menu"},C("more")));return}(a.children.length!==u.length||a.firstElementChild?.dataset.a==null)&&a.replaceChildren(...u.map((p,f)=>d("button",`op-grid__actbtn${p.variant==="danger"?" is-danger":""}`,{type:"button",tabindex:-1,"data-a":f,"aria-label":p.text,title:p.text},p.icon?C(p.icon):p.text))),u.forEach((p,f)=>a.children[f].disabled=!!p.disabled?.(s));return}let h=H(n,s);typeof h=="string"?a.textContent=h:a.replaceChildren(h)}),i.paint?.(l,e)}indexOfEvent(e){let t=e.target.closest(".op-grid__body-row");return t?Number(t.dataset.i):-1}onRowEvent(e,t){let i=this.indexOfEvent(e),s=this.recAt(i);if(s){if(t==="row-click"){let r=e.target.closest(".op-grid__actbtn");if(r){if(r.dataset.a==null)return this.openRowMenu(s,r);r.disabled||this.config.rowActions[Number(r.dataset.a)].handler(s,this);return}this.setActive(i,!1),this.pick(i,e)}this.emit(t,s,i,e)}}getSelection(){return[...this.selected]}select(e,t={}){let i=typeof e=="number"?this.recAt(e):e,s=this.mode();!i||s==="none"||((s==="single"||!t.add)&&this.selected.clear(),this.selected.add(i),this.changed())}deselectAll(){this.selected.size&&(this.selected.clear(),this.changed())}changed(){this.v?.refresh(),this.paintSelection(),this.emit("select",this.getSelection())}selectAllFiltered(){if(this.mode()==="multi"){for(let e of this.store.getFiltered())this.selected.add(e);this.changed()}}pick(e,t){let i=this.mode(),s=this.recAt(e);if(!(!s||i==="none")){if(i==="multi"&&t.shiftKey&&this.anchor>=0){this.config.checkboxSelection||this.selected.clear();for(let r=Math.min(this.anchor,e);r<=Math.max(this.anchor,e);r++){let o=this.recAt(r);o&&this.selected.add(o)}}else i==="multi"&&(t.ctrlKey||t.metaKey||this.config.checkboxSelection)?(this.selected.delete(s)||this.selected.add(s),this.anchor=e):(this.selected.clear(),this.selected.add(s),this.anchor=e);this.changed()}}setActive(e,t=!0){this.active=e,t&&e>=0&&this.v.scrollTo(e),this.v.refresh(),this.updateActiveDescendant()}updateActiveDescendant(){this.active>=0&&this.active<this.count()?this.table.setAttribute("aria-activedescendant",`${this.id}-r${this.active}`):this.table.removeAttribute("aria-activedescendant")}focusRow(e){this.render(),this.setActive(Math.max(0,Math.min(e,this.count()-1))),this.table.focus()}focusEl(){return this.table}scrollToRow(e){this.v?.scrollTo(e)}onKey(e){let t=e.target;if(t.closest(".op-grid__header")||t!==this.table&&t.matches("input:not([type=checkbox]),textarea,select,[contenteditable]"))return;let i=this.count();if(!i)return;if((e.key==="ContextMenu"||e.shiftKey&&e.key==="F10")&&this.active>=0&&this.config.rowActions?.length){e.preventDefault();let n=this.recAt(this.active);return n?this.openRowMenu(n,document.getElementById(`${this.id}-r${this.active}`)??this.el):void 0}let s=Math.max(1,Math.floor((this.viewport.clientHeight||400)/this.config.rowHeight||10)),r=this.active<0?0:this.active,o=this.mode(),l={ArrowDown:Math.min(i-1,this.active<0?0:r+1),ArrowUp:Math.max(0,r-1),Home:0,End:i-1,PageDown:Math.min(i-1,r+s),PageUp:Math.max(0,r-s)};if(e.key in l){e.preventDefault();let n=l[e.key];this.setActive(n),(o==="single"||o==="multi"&&!e.ctrlKey&&!e.metaKey&&!this.config.checkboxSelection)&&this.pick(n,e)}else e.key===" "&&this.active>=0?(e.preventDefault(),o==="multi"?this.pick(this.active,{ctrlKey:!0}):this.pick(this.active,e)):e.key==="Enter"&&this.active>=0?this.emit("row-activate",this.recAt(this.active),this.active):(e.key==="a"||e.key==="A")&&(e.ctrlKey||e.metaKey)&&o==="multi"&&(e.preventDefault(),this.store.each(n=>this.selected.add(n)),this.changed())}refresh(){this.v?.refresh()}buildBar(){let e=this.config;if(!this.barEl)return;this.bulkCount=d("span","op-grid__count",{"aria-live":"polite"}),this.selectAllBtn=new b({text:"",variant:"ghost",handler:()=>this.selectAllFiltered()}),this.bulkBtns=(e.bulkActions??[]).map(i=>new b({text:i.text,icon:i.icon,variant:i.variant==="danger"?"danger":"default",handler:()=>i.handler(this.getSelection(),this)}));let t=new b({text:g("gridClearSel"),variant:"ghost",handler:()=>this.deselectAll()});this.bulkEl.append(this.bulkCount,this.selectAllBtn.el,...this.bulkBtns.map(i=>i.el),t.el),this.own(()=>[this.selectAllBtn,...this.bulkBtns,t].forEach(i=>i?.destroy())),e.columnMenu&&this.buildColumnMenu(),this.paintSelection()}paintSelection(){if(!this.rendered)return;let e=this.store.count,t=0;if(this.store.each(r=>this.selected.has(r)&&t++),this.selAll&&(this.selAll.checked=e>0&&t===e,this.selAll.indeterminate=t>0&&t<e),!this.bulkEl)return;let i=this.selected.size;if(this.bulkEl.hidden=!i||!this.config.bulkActions?.length,this.bulkEl.hidden)return;this.bulkCount.textContent=g("gridSelected",{n:i});let s=this.store.getFiltered().length;this.selectAllBtn.el.hidden=!(this.mode()==="multi"&&t===e&&s>e&&i<s),this.selectAllBtn.setText(g("gridSelectAll",{n:s}))}openRowMenu(e,t){this.rowMenu??=new G({}),this.rowMenu.setItems((this.config.rowActions??[]).map(i=>({text:i.text,icon:i.icon,disabled:!!i.disabled?.(e),handler:()=>i.handler(e,this)}))),this.rowMenu.showBy(t)}buildColumnMenu(){let e=new b({text:g("gridColumns"),icon:"columns",variant:"ghost"});this.colSearch=new R({placeholder:g("gridColumnSearch"),clearable:!0}),this.colChips=d("div","op-grid__colchips",{role:"group","aria-label":g("gridGroups")}),this.colList=d("div","op-grid__collist",{role:"group","aria-label":g("gridColumns")});let t=d("div","op-grid__colempty",{},g("gridNoColumns"));t.hidden=!0;let i=d("div","op-grid__colmenu",{},this.colSearch.el,this.colChips,this.colList,t);this.colDd=new $({anchor:e.el,content:i,placement:"bottom-end",role:"dialog",autoFocus:!1}),this.barEl.append(e.el),this.own(()=>e.destroy());let s=()=>{let r=(this.colSearch.getValue()??"").toLowerCase(),o=0,l,n=0,c=()=>l&&(l.hidden=n===0);for(let a of Array.from(this.colList.children)){if(a.classList.contains("op-grid__colgroup")){c(),l=a,n=0;continue}let h=a.dataset.group??"",u=!this.colGroup||h===this.colGroup,p=!r||h.toLowerCase().includes(r)||a.textContent.toLowerCase().includes(r);a.hidden=!(u&&p),a.hidden||(o++,n++)}c(),t.hidden=o>0};this.colSearch.on("change",s),this.listen(this.colChips,"click",r=>{let o=r.target.closest("[data-g]");o&&(this.colGroup=o.dataset.g,this.paintColumnList(),s())}),e.on("click",()=>{if(this.colDd.isOpen())return this.colDd.close();this.colSearch.setValue(""),this.colGroup="",this.paintColumnList(),this.colDd.open(),this.colList.querySelector("input")?.focus()}),this.listen(this.colList,"change",r=>{let o=r.target;if(o.dataset.groupToggle!=null)this.setColumnGroupVisible(o.dataset.groupToggle,o.checked);else{let l=this.config.columns.find(n=>n.field===o.value);if(!l)return;l.hidden=!o.checked,this.setColumns(this.config.columns),this.emit("columns-change",this.getColumnState())}this.paintColumnList(),s()})}paintColumnList(){let e=this.config.columns,t=this.getColumnGroups(),i=this.userCols().length===1?this.userCols()[0]:null,s=o=>{let l=d("input","op-grid__check",{type:"checkbox",value:o.field});return l.checked=!o.hidden,l.disabled=o===i,d("label","op-grid__colitem",{"data-group":o.group??""},l,d("span","",{},o.header??o.field))};if(this.colChips.hidden=t.length<2,this.colChips.replaceChildren(...[["",g("gridGroupAll")],...t.map(o=>[o,o])].map(([o,l])=>d("button",`op-grid__colchip${this.colGroup===o?" is-on":""}`,{type:"button","data-g":o,"aria-pressed":String(this.colGroup===o)},l))),!t.length)return this.colList.replaceChildren(...e.map(s));let r=[];for(let o of[...t,""]){let l=e.filter(a=>(a.group??"")===o);if(!l.length)continue;let n=l.filter(a=>!a.hidden).length,c=d("input","op-grid__check",{type:"checkbox","data-group-toggle":o,"aria-label":o||g("gridOtherCols")});c.checked=n===l.length,c.indeterminate=n>0&&n<l.length,r.push(d("div","op-grid__colgroup",{"data-group":o},d("label","",{},c,d("span","",{},o||g("gridOtherCols"))),d("span","op-grid__colcount",{},`${n}/${l.length}`)),...l.map(s))}this.colList.replaceChildren(...r)}onDestroy(){this.pager?.destroy(),this.rowMenu?.destroy(),this.colDd?.destroy(),this.colSearch?.destroy()}};_("grid",k);export{k as a};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as G}from"./chunk-BPCD37A2.js";import{a as $}from"./chunk-NBR5IRZT.js";import{a as R}from"./chunk-SQTM4QFP.js";import{a as z}from"./chunk-VCYCNSJY.js";import{a as b}from"./chunk-KVUELLYF.js";import{c as C}from"./chunk-QT5JRZZJ.js";import{a as x,b as L}from"./chunk-OWEQT2HN.js";import{a as _}from"./chunk-TIPK3SCJ.js";import{c as S,e as E,f as T}from"./chunk-KMBTJ5AG.js";import{b as d}from"./chunk-PZSHOSOS.js";import{a as H}from"./chunk-IODSL7KU.js";import{c as A}from"./chunk-L5SQQFO7.js";import{e as w,f as g}from"./chunk-S4QD5NID.js";w("en",{gridSelected:"{n} selected",gridSelectAll:"Select all {n}",gridClearSel:"Clear selection",gridSelectRow:"Select row",gridSelectPage:"Select all rows",gridRowActions:"Row actions",gridColumns:"Columns",gridResize:"Resize column",gridGroupAll:"All",gridOtherCols:"Other",gridGroups:"Column groups",gridColumnSearch:"Search columns",gridNoColumns:"No matching columns"});w("pt-BR",{gridSelected:"{n} selecionado(s)",gridSelectAll:"Selecionar todos os {n}",gridClearSel:"Limpar sele\xE7\xE3o",gridSelectRow:"Selecionar linha",gridSelectPage:"Selecionar todas as linhas",gridRowActions:"A\xE7\xF5es da linha",gridColumns:"Colunas",gridResize:"Redimensionar coluna",gridGroupAll:"Todas",gridOtherCols:"Outras",gridGroups:"Grupos de colunas",gridColumnSearch:"Buscar colunas",gridNoColumns:"Nenhuma coluna encontrada"});var v="__select",m="__actions",K={field:v,width:44,align:"center",cls:"op-grid__selcell",locked:"start"},P={field:m,width:44,align:"center",cls:"op-grid__actcell",locked:"end"},B="var(--op-grid-row-height, var(--op-row-height))",k=class extends T{baseCls="op-grid";store;offStore;headEl;headRow;viewport;emptyEl;table;pager;v;entries;lockEdge=[-1,-1];selected=new Set;active=-1;anchor=-1;justDragged=!1;cv=0;selAll;barEl;bulkEl;bulkCount;bulkBtns=[];selectAllBtn;rowMenu;colDd;colList;colSearch;colChips;colGroup="";cols(){let e=this.config;return[...e.checkboxSelection?[K]:[],...this.userCols(),...e.rowActions?.length?[P]:[]]}userCols(){let e=(this.config.columns??[]).filter(t=>!t.hidden);return[...e.filter(t=>t.locked==="start"),...e.filter(t=>!t.locked),...e.filter(t=>t.locked==="end")]}visibleActions(){return this.config.rowActionsMode==="visible"&&!!this.config.rowActions?.length}mode(){return this.config.checkboxSelection?"multi":this.config.selection??"single"}build(){let e=this.config;e.rowActions=E(e.rowActions),e.bulkActions=E(e.bulkActions),e.columns=e.columns.filter(i=>S(i.permission));let t=d("div",this.baseCls);return this.headRow=d("div","op-grid__row op-grid__header-row",{role:"row"}),this.headEl=d("div","op-grid__header",{},this.headRow),this.viewport=d("div","op-grid__viewport"),this.emptyEl=d("div","op-grid__empty"),(e.columnMenu||e.bulkActions?.length)&&(this.bulkEl=d("div","op-grid__bulk"),this.bulkEl.hidden=!0,this.barEl=d("div","op-grid__bar",{},this.bulkEl),t.append(this.barEl)),this.table=d("div","op-grid__table",{role:"grid",tabindex:0,"aria-multiselectable":e.selection==="multi"||e.checkboxSelection?"true":null},this.headEl,this.viewport,this.emptyEl),t.append(this.table),t.classList.toggle("op-grid--striped",!!e.striped),e.paging&&(this.pager=new z({cls:"op-grid__pager"}),t.append(this.pager.el)),t}onRender(){let e=this.config;if(this.bindStore(e.store??new A({data:e.data??[]})),this.buildHeader(),this.buildBar(),this.v=x({scroller:this.viewport,count:this.count(),rowHeight:e.rowHeight??(L(this.el,B)||36),render:(t,i)=>this.renderRow(t,i),rowCls:"op-grid__row op-grid__body-row"}),this.own(()=>this.v.destroy()),this.sync(),this.listen(this.viewport,"scroll",()=>this.onScrollX(),{passive:!0}),this.listen(this.viewport,"click",t=>this.onRowEvent(t,"row-click")),this.listen(this.viewport,"dblclick",t=>this.onRowEvent(t,"row-dblclick")),this.listen(this.el,"keydown",t=>this.onKey(t)),this.listen(this.headRow,"change",t=>{t.target===this.selAll&&(this.selAll.checked?this.store.each(i=>this.selected.add(i)):this.config.keepSelection?this.store.each(i=>this.selected.delete(i)):this.selected.clear(),this.changed())}),e.reorderableColumns&&this.initColumnDrag(),e.resizableColumns&&this.initColumnResize(),this.listen(this.headRow,"click",t=>{if(this.justDragged||t.target.closest(".op-grid__resizer"))return;let i=t.target.closest("[data-field]"),s=i&&this.userCols().find(r=>r.field===i.dataset.field);s&&(this.emit("column-click",s),s.sortable&&this.sortBy(s))}),typeof ResizeObserver<"u"){let t=new ResizeObserver(()=>this.layout());t.observe(this.viewport),this.own(()=>t.disconnect())}this.pager&&(this.pager.setStore(this.store),this.store.pageSize||this.store.setPageSize(e.pageSize??20)),this.own(()=>this.pager?.destroy());for(let t of e.plugins??[]){let i=t.init(this);i&&this.own(i),t.destroy&&this.own(()=>t.destroy())}}cellAt(e){let t=e?.closest?.(".op-grid__body-row .op-grid__cell"),i=Number(t?.parentElement?.dataset.i),s=t&&this.cols()[Number(t.getAttribute("aria-colindex"))-1],r=t&&this.recAt(i);return s&&r&&![v,m].includes(s.field)?{index:i,record:r,column:s,el:t}:void 0}getCell(e,t){let i=this.cols().findIndex(s=>s.field===t);return document.getElementById(`${this.id}-r${e}`)?.querySelector(`[aria-colindex="${i+1}"]`)??void 0}getColumns(){return this.userCols()}getActive(){return this.active}notifyMount(){super.notifyMount(),this.layout(),this.pager?.notifyMount()}onScrollX(){let e=this.viewport,t=Math.max(0,e.scrollWidth-e.clientWidth-e.scrollLeft);this.headEl.scrollLeft=e.scrollLeft,this.el.style.setProperty("--op-grid-scroll-x",`${e.scrollLeft}px`),this.el.style.setProperty("--op-grid-scroll-end",`${t}px`),this.el.classList.toggle("is-scrolled-start",e.scrollLeft>0),this.el.classList.toggle("is-scrolled-end",t>0)}layout(){if(this.rendered){if(!this.config.rowHeight){let e=L(this.el,B);e&&this.v.setRowHeight(e)}this.headEl.style.paddingInlineEnd=`${this.viewport.offsetWidth-this.viewport.clientWidth}px`,this.v.refresh(),this.onScrollX()}}bindStore(e){this.offStore?.(),this.store=e;let t=e.subscribe(s=>{this.rendered&&(this.sync(),s.type==="sort"&&this.paintSort())}),i=e.on("loading",s=>this.setLoading(s));this.offStore=()=>(t(),i()),this.own(()=>this.offStore?.())}sync(){let e=this.selected.size;if(!this.config.keepSelection)for(let t of this.selected)this.store.indexOf(t)<0&&this.selected.delete(t);this.active=Math.min(this.active,this.count()-1),this.v.setCount(this.count()),this.table.setAttribute("aria-rowcount",String(this.store.totalCount+1)),this.emptyEl.textContent=this.config.emptyText??g("empty"),this.emptyEl.hidden=this.count()>0||!!this.config.loading,this.el.classList.toggle("is-empty",this.count()===0),this.updateActiveDescendant(),this.paintSelection(),this.selected.size!==e&&this.emit("select",this.getSelection())}setStore(e){this.config.store=e,this.selected.clear(),this.active=this.anchor=-1,this.rendered&&(this.bindStore(e),this.pager?.setStore(e),this.paintSort(),this.sync())}getStore(){return this.render(),this.store}count(){return this.entries?this.entries.length:this.store.count}recAt(e){return this.entries?this.entries[e]?.rec:this.store.getAt(e)}setRowLayout(e){this.entries=e,this.rendered&&this.sync()}getRowEntry(e){return this.entries?this.entries[e]:(t=>t&&{rec:t})(this.store.getAt(e))}getRowCount(){return this.count()}layoutColumns(){let e=this.cols(),t=this.visibleActions()?this.config.rowActions.length:1,i=n=>n.field===m?`calc(${t} * var(--op-grid-action-size) + ${t+1} * var(--op-grid-action-gap))`:`${n.width}px`,s=n=>n.field===m?i(n):`${n.width??140}px`,r=e.map(n=>n.locked?s(n):n.width?`${n.width}px`:`minmax(${n.minWidth??96}px, ${n.flex??1}fr)`).join(" "),o=n=>n.reduce((c,[a,h])=>(this.el.style.setProperty(`--op-grid-lock-${a}`,c.length?`calc(${c.join(" + ")})`:"0px"),[...c,s(h)]),[]),l=e.map((n,c)=>[c,n]);o(l.filter(([,n])=>n.locked==="start")),o(l.filter(([,n])=>n.locked==="end").reverse()),this.lockEdge=[e.map(n=>n.locked).lastIndexOf("start"),e.findIndex(n=>n.locked==="end")],this.el.style.setProperty("--op-grid-cols",r),this.el.style.setProperty("--op-grid-min-width",`${e.reduce((n,c)=>n+(c.field===m?t*36:c.width??(c.locked?140:c.minWidth??96)),0)}px`)}lock(e,t,i){t.locked&&(e.classList.add("is-locked",`is-locked-${t.locked}`),e.classList.toggle("is-lock-edge",this.lockEdge[t.locked==="start"?0:1]===i),e.style.setProperty("--_lock",`var(--op-grid-lock-${i})`))}buildHeader(){let e=this.cols();this.layoutColumns(),this.el.classList.toggle("op-grid--actions-visible",this.visibleActions()),this.el.classList.toggle("op-grid--reorderable",!!this.config.reorderableColumns),this.el.classList.toggle("op-grid--resizable",!!this.config.resizableColumns),this.table.setAttribute("aria-colcount",String(e.length)),this.selAll=void 0,this.headRow.replaceChildren(...e.map((i,s)=>{let r=i.header??i.field,o=d("div",`op-grid__cell op-grid__hcell${i.align?` op-grid__cell--${i.align}`:""}${i.sortable?" is-sortable":""}`,{role:"columnheader","aria-colindex":s+1,"data-field":i.field});this.lock(o,i,s),i.field===v?o.append(this.selAll=d("input","op-grid__check",{type:"checkbox","aria-label":g("gridSelectPage")})):i.field===m?o.append(d("span","op-sr-only",{},g("gridRowActions"))):i.sortable?o.append(d("button","op-grid__sort",{type:"button"},d("span","op-grid__label",{},r),d("span","op-grid__arrow",{"aria-hidden":"true"},C("arrow-up")))):o.append(d("span","op-grid__label",{},r));let l=i.field!==v&&i.field!==m;return this.config.reorderableColumns&&l&&o.classList.add("is-reorderable"),this.canResize(i)&&o.append(d("span","op-grid__resizer",{role:"separator","aria-orientation":"vertical","aria-label":`${g("gridResize")} ${r}`})),l&&!i.sortable&&(this.config.reorderableColumns||this.canResize(i))&&(o.tabIndex=0),o}));let t=this.groupBand(e);this.headEl.replaceChildren(...t?[t]:[],this.headRow),this.paintSort(),this.emit("header-paint")}groupBand(e){if(this.config.groupHeaders===!1||!e.some(s=>s.group))return null;let t=[],i=0;for(;i<e.length;){let s=e[i].group??"",r=1;for(;i+r<e.length&&(e[i+r].group??"")===s;)r++;let o=d("div",`op-grid__gcell${s?"":" is-empty"}`,{role:"columnheader","aria-colindex":i+1,"aria-colspan":r},s);o.style.gridColumn=`span ${r}`,t.push(o),i+=r}return d("div","op-grid__row op-grid__group-row",{role:"row"},...t)}getColumnGroups(){return[...new Set(this.config.columns.map(e=>e.group).filter(e=>!!e))]}setColumnGroupVisible(e,t){let i=this.config.columns.filter(s=>(s.group??"")===e);if(i.length){for(let s of i)s.hidden=!t;this.config.columns.some(s=>!s.hidden)||(i[0].hidden=!1),this.setColumns(this.config.columns),this.emit("columns-change",this.getColumnState())}}setColumnLocked(e,t){let i=this.config.columns.find(s=>s.field===e);!i||i.locked===(t??void 0)||(this.setColumns(this.config.columns.map(s=>s===i?{...s,locked:t??void 0}:s)),this.emit("columns-change",this.getColumnState()))}setColumns(e){this.config.columns=e,this.rendered&&(this.cv++,this.buildHeader(),this.paintSelection(),this.v.refresh())}getColumnState(){return this.config.columns.map(e=>({field:e.field,hidden:!!e.hidden,width:e.width,locked:e.locked}))}setColumnState(e){let t=new Map(this.config.columns.map(s=>[s.field,s])),i=e.flatMap(s=>{let r=t.get(s.field);return t.delete(s.field),r?[{...r,hidden:s.hidden,width:s.width??r.width,locked:"locked"in s?s.locked:r.locked}]:[]});this.setColumns([...i,...t.values()]),this.emit("columns-change",this.getColumnState())}canResize(e){return!!this.config.resizableColumns&&e.field!==v&&e.field!==m&&e.resizable!==!1}setColumnWidth(e,t){let i=this.config.columns.find(s=>s.field===e);i&&(i.width=t==null?void 0:Math.round(Math.max(i.minWidth??48,Math.min(t,i.maxWidth??1/0))),this.layoutColumns(),this.emit("column-resize",e,i.width),this.emit("columns-change",this.getColumnState()))}initColumnResize(){let e=this.headRow;this.listen(e,"pointerdown",t=>{let i=t.target.closest(".op-grid__resizer");if(!i||t.button)return;t.preventDefault();let s=i.parentElement,r=s.dataset.field,o=this.config.columns.find(u=>u.field===r),l=t.clientX,n=s.getBoundingClientRect().width||o.width||96;this.el.classList.add("is-resizing");let c=o.width,a=u=>{let p=Math.round(Math.max(o.minWidth??48,Math.min(n+(u.clientX-l)*(this.dir()==="rtl"?-1:1),o.maxWidth??1/0)));o.width=c=p,this.layoutColumns()},h=()=>{document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h),this.el.classList.remove("is-resizing"),this.justDragged=!0,setTimeout(()=>this.justDragged=!1),c!==void 0&&(this.emit("column-resize",r,c),this.emit("columns-change",this.getColumnState()))};document.addEventListener("pointermove",a),document.addEventListener("pointerup",h),this.own(()=>(document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h)))}),this.listen(e,"dblclick",t=>{let i=t.target.closest(".op-grid__resizer");i&&this.setColumnWidth(i.parentElement.dataset.field,void 0)}),this.listen(e,"keydown",t=>{if(!(t.altKey&&t.shiftKey)||t.key!=="ArrowLeft"&&t.key!=="ArrowRight")return;let i=t.target.closest(".op-grid__hcell"),s=i&&this.config.columns.find(o=>o.field===i.dataset.field);if(!i||!s||!this.canResize(s))return;t.preventDefault();let r=i.getBoundingClientRect().width||s.width||96;this.setColumnWidth(s.field,r+(t.key==="ArrowRight"?16:-16))})}dir(){return getComputedStyle(this.el).direction}moveColumn(e,t){let i=this.config.columns,s=i.find(h=>h.field===e);if(!s||e===t)return;let r=this.userCols(),o=r.indexOf(s),l=[...i.filter(h=>h!==s)],n=t==null?void 0:l.find(h=>h.field===t),c=r.filter(h=>h!==s).pop(),a=n?l.indexOf(n):c?l.indexOf(c)+1:l.length;l.splice(a,0,s),!l.every((h,u)=>h===i[u])&&(this.setColumns(l),this.emit("column-move",e,o,this.userCols().indexOf(s)),this.emit("columns-change",this.getColumnState()))}initColumnDrag(){let e=this.headRow,t=()=>Array.from(e.querySelectorAll(".is-reorderable"));this.listen(e,"pointerdown",i=>{let s=i.target.closest(".is-reorderable");if(!s||i.button||i.target.closest(".op-grid__resizer"))return;let r=s.dataset.field,o=i.clientX,l,n,c=null,a=u=>{if(!l){if(Math.abs(u.clientX-o)<6)return;l=d("div","op-grid__ghost",{},s.textContent??""),n=d("div","op-grid__drop"),this.el.append(l),this.headEl.append(n),s.classList.add("is-dragging-col")}l.style.left=`${u.clientX}px`,l.style.top=`${u.clientY}px`;let p=t(),f=p.find(O=>{let M=O.getBoundingClientRect();return u.clientX<M.left+M.width/2});c=f?f.dataset.field:null;let y=(f??p[p.length-1])?.getBoundingClientRect(),D=this.headEl.getBoundingClientRect();y&&n&&(n.style.left=`${(f?y.left:y.right)-D.left+this.headEl.scrollLeft}px`)},h=()=>{document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h),l&&(l.remove(),n?.remove(),s.classList.remove("is-dragging-col"),this.justDragged=!0,setTimeout(()=>this.justDragged=!1),this.moveColumn(r,c))};document.addEventListener("pointermove",a),document.addEventListener("pointerup",h),this.own(()=>(document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h)))}),this.listen(e,"keydown",i=>{if(!i.altKey||i.shiftKey||i.key!=="ArrowLeft"&&i.key!=="ArrowRight")return;let s=i.target.closest(".is-reorderable");if(!s)return;i.preventDefault();let r=this.userCols(),o=r.findIndex(c=>c.field===s.dataset.field),l=i.key==="ArrowLeft"?o-1:o+1;if(l<0||l>=r.length)return;this.moveColumn(r[o].field,i.key==="ArrowLeft"?r[l].field:r[l+1]?.field??null);let n=e.querySelector(`[data-field="${CSS.escape(r[o].field)}"]`);(n?.querySelector("button")??n)?.focus()})}paintSort(){let e=this.store.getSorters()[0];for(let t of Array.from(this.headRow.children)){let i=!!e&&t.dataset.field===e.field;t.classList.toggle("is-sorted-asc",i&&e.dir==="asc"),t.classList.toggle("is-sorted-desc",i&&e.dir==="desc"),t.classList.contains("is-sortable")&&t.setAttribute("aria-sort",i?e.dir==="asc"?"ascending":"descending":"none")}}sortBy(e){let t=this.store.getSorters()[0],i=t?.field===e.field?t.dir==="asc"?"desc":null:"asc";this.emit("before-sort",e.field,i)!==!1&&(this.store.sort(i?e.field:null,i??void 0),this.emit("sort",e.field,i))}rowIndexOffset(){return this.store.pageSize?(this.store.page-1)*this.store.pageSize:0}renderRow(e,t){let i=this.getRowEntry(t);if(!i)return;let s=i.rec,r=this.cols();e.id=`${this.id}-r${t}`,e.dataset.i=String(t),e.setAttribute("role","row"),e.setAttribute("aria-rowindex",String(this.rowIndexOffset()+t+2));let o=!!s&&this.selected.has(s);e.dataset.ec&&e.classList.remove(...e.dataset.ec.split(" ")),e.dataset.ec=i.cls??"",i.cls&&e.classList.add(...i.cls.split(" "));for(let[n,c]of[["aria-level",i.level],["aria-expanded",i.expanded]])c==null?e.removeAttribute(n):e.setAttribute(n,String(c));e.setAttribute("aria-selected",this.mode()==="none"||!s?"false":String(o)),e.classList.toggle("is-selected",o),e.classList.toggle("is-active",t===this.active),e.classList.toggle("is-odd",t%2===1),(e.dataset.cv!==String(this.cv)||e.dataset.cn!==String(r.length))&&(e.dataset.cv=String(this.cv),e.dataset.cn=String(r.length),e.replaceChildren(...r.map((n,c)=>{let a=d("div",`op-grid__cell${n.align?` op-grid__cell--${n.align}`:""}${n.cls?` ${n.cls}`:""}`,{role:"gridcell","aria-colindex":c+1});return this.lock(a,n,c),a})));let l=Array.from(e.children).filter(n=>n.classList.contains("op-grid__cell"));if(!s){for(let n of l)n.replaceChildren();return i.paint?.(l,e)}r.forEach((n,c)=>{let a=e.children[c];if(a.classList.contains("is-editing"))return;if(n.field===v){let u=a.firstElementChild??a.appendChild(d("input","op-grid__check",{type:"checkbox",tabindex:-1,"aria-label":g("gridSelectRow")}));u.checked=o;return}if(n.field===m){let u=this.config.rowActions??[];if(!this.visibleActions()){a.firstChild||a.append(d("button","op-grid__actbtn",{type:"button",tabindex:-1,"aria-label":g("gridRowActions"),"aria-haspopup":"menu"},C("more")));return}(a.children.length!==u.length||a.firstElementChild?.dataset.a==null)&&a.replaceChildren(...u.map((p,f)=>d("button",`op-grid__actbtn${p.variant==="danger"?" is-danger":""}`,{type:"button",tabindex:-1,"data-a":f,"aria-label":p.text,title:p.text},p.icon?C(p.icon):p.text))),u.forEach((p,f)=>a.children[f].disabled=!!p.disabled?.(s));return}let h=H(n,s);typeof h=="string"?a.textContent=h:a.replaceChildren(h)}),i.paint?.(l,e)}indexOfEvent(e){let t=e.target.closest(".op-grid__body-row");return t?Number(t.dataset.i):-1}onRowEvent(e,t){let i=this.indexOfEvent(e),s=this.recAt(i);if(s){if(t==="row-click"){let r=e.target.closest(".op-grid__actbtn");if(r){if(r.dataset.a==null)return this.openRowMenu(s,r);r.disabled||this.config.rowActions[Number(r.dataset.a)].handler(s,this);return}this.setActive(i,!1),this.pick(i,e)}this.emit(t,s,i,e)}}getSelection(){return[...this.selected]}select(e,t={}){let i=typeof e=="number"?this.recAt(e):e,s=this.mode();!i||s==="none"||((s==="single"||!t.add)&&this.selected.clear(),this.selected.add(i),this.changed())}deselectAll(){this.selected.size&&(this.selected.clear(),this.changed())}changed(){this.v?.refresh(),this.paintSelection(),this.emit("select",this.getSelection())}selectAllFiltered(){if(this.mode()==="multi"){for(let e of this.store.getFiltered())this.selected.add(e);this.changed()}}pick(e,t){let i=this.mode(),s=this.recAt(e);if(!(!s||i==="none")){if(i==="multi"&&t.shiftKey&&this.anchor>=0){this.config.checkboxSelection||this.selected.clear();for(let r=Math.min(this.anchor,e);r<=Math.max(this.anchor,e);r++){let o=this.recAt(r);o&&this.selected.add(o)}}else i==="multi"&&(t.ctrlKey||t.metaKey||this.config.checkboxSelection)?(this.selected.delete(s)||this.selected.add(s),this.anchor=e):(this.selected.clear(),this.selected.add(s),this.anchor=e);this.changed()}}setActive(e,t=!0){this.active=e,t&&e>=0&&this.v.scrollTo(e),this.v.refresh(),this.updateActiveDescendant()}updateActiveDescendant(){this.active>=0&&this.active<this.count()?this.table.setAttribute("aria-activedescendant",`${this.id}-r${this.active}`):this.table.removeAttribute("aria-activedescendant")}focusRow(e){this.render(),this.setActive(Math.max(0,Math.min(e,this.count()-1))),this.table.focus()}focusEl(){return this.table}scrollToRow(e){this.v?.scrollTo(e)}onKey(e){let t=e.target;if(t.closest(".op-grid__header")||t!==this.table&&t.matches("input:not([type=checkbox]),textarea,select,[contenteditable]"))return;let i=this.count();if(!i)return;if((e.key==="ContextMenu"||e.shiftKey&&e.key==="F10")&&this.active>=0&&this.config.rowActions?.length){e.preventDefault();let n=this.recAt(this.active);return n?this.openRowMenu(n,document.getElementById(`${this.id}-r${this.active}`)??this.el):void 0}let s=Math.max(1,Math.floor((this.viewport.clientHeight||400)/this.config.rowHeight||10)),r=this.active<0?0:this.active,o=this.mode(),l={ArrowDown:Math.min(i-1,this.active<0?0:r+1),ArrowUp:Math.max(0,r-1),Home:0,End:i-1,PageDown:Math.min(i-1,r+s),PageUp:Math.max(0,r-s)};if(e.key in l){e.preventDefault();let n=l[e.key];this.setActive(n),(o==="single"||o==="multi"&&!e.ctrlKey&&!e.metaKey&&!this.config.checkboxSelection)&&this.pick(n,e)}else e.key===" "&&this.active>=0?(e.preventDefault(),o==="multi"?this.pick(this.active,{ctrlKey:!0}):this.pick(this.active,e)):e.key==="Enter"&&this.active>=0?this.emit("row-activate",this.recAt(this.active),this.active):(e.key==="a"||e.key==="A")&&(e.ctrlKey||e.metaKey)&&o==="multi"&&(e.preventDefault(),this.store.each(n=>this.selected.add(n)),this.changed())}refresh(){this.v?.refresh()}buildBar(){let e=this.config;if(!this.barEl)return;this.bulkCount=d("span","op-grid__count",{"aria-live":"polite"}),this.selectAllBtn=new b({text:"",variant:"ghost",handler:()=>this.selectAllFiltered()}),this.bulkBtns=(e.bulkActions??[]).map(i=>new b({text:i.text,icon:i.icon,variant:i.variant==="danger"?"danger":"default",handler:()=>i.handler(this.getSelection(),this)}));let t=new b({text:g("gridClearSel"),variant:"ghost",handler:()=>this.deselectAll()});this.bulkEl.append(this.bulkCount,this.selectAllBtn.el,...this.bulkBtns.map(i=>i.el),t.el),this.own(()=>[this.selectAllBtn,...this.bulkBtns,t].forEach(i=>i?.destroy())),e.columnMenu&&this.buildColumnMenu(),this.paintSelection()}paintSelection(){if(!this.rendered)return;let e=this.store.count,t=0;if(this.store.each(r=>this.selected.has(r)&&t++),this.selAll&&(this.selAll.checked=e>0&&t===e,this.selAll.indeterminate=t>0&&t<e),!this.bulkEl)return;let i=this.selected.size;if(this.bulkEl.hidden=!i||!this.config.bulkActions?.length,this.bulkEl.hidden)return;this.bulkCount.textContent=g("gridSelected",{n:i});let s=this.store.getFiltered().length;this.selectAllBtn.el.hidden=!(this.mode()==="multi"&&t===e&&s>e&&i<s),this.selectAllBtn.setText(g("gridSelectAll",{n:s}))}openRowMenu(e,t){this.rowMenu??=new G({}),this.rowMenu.setItems((this.config.rowActions??[]).map(i=>({text:i.text,icon:i.icon,disabled:!!i.disabled?.(e),handler:()=>i.handler(e,this)}))),this.rowMenu.showBy(t)}buildColumnMenu(){let e=new b({text:g("gridColumns"),icon:"columns",variant:"ghost"});this.colSearch=new R({placeholder:g("gridColumnSearch"),clearable:!0}),this.colChips=d("div","op-grid__colchips",{role:"group","aria-label":g("gridGroups")}),this.colList=d("div","op-grid__collist",{role:"group","aria-label":g("gridColumns")});let t=d("div","op-grid__colempty",{},g("gridNoColumns"));t.hidden=!0;let i=d("div","op-grid__colmenu",{},this.colSearch.el,this.colChips,this.colList,t);this.colDd=new $({anchor:e.el,content:i,placement:"bottom-end",role:"dialog",autoFocus:!1}),this.barEl.append(e.el),this.own(()=>e.destroy());let s=()=>{let r=(this.colSearch.getValue()??"").toLowerCase(),o=0,l,n=0,c=()=>l&&(l.hidden=n===0);for(let a of Array.from(this.colList.children)){if(a.classList.contains("op-grid__colgroup")){c(),l=a,n=0;continue}let h=a.dataset.group??"",u=!this.colGroup||h===this.colGroup,p=!r||h.toLowerCase().includes(r)||a.textContent.toLowerCase().includes(r);a.hidden=!(u&&p),a.hidden||(o++,n++)}c(),t.hidden=o>0};this.colSearch.on("change",s),this.listen(this.colChips,"click",r=>{let o=r.target.closest("[data-g]");o&&(this.colGroup=o.dataset.g,this.paintColumnList(),s())}),e.on("click",()=>{if(this.colDd.isOpen())return this.colDd.close();this.colSearch.setValue(""),this.colGroup="",this.paintColumnList(),this.colDd.open(),this.colList.querySelector("input")?.focus()}),this.listen(this.colList,"change",r=>{let o=r.target;if(o.dataset.groupToggle!=null)this.setColumnGroupVisible(o.dataset.groupToggle,o.checked);else{let l=this.config.columns.find(n=>n.field===o.value);if(!l)return;l.hidden=!o.checked,this.setColumns(this.config.columns),this.emit("columns-change",this.getColumnState())}this.paintColumnList(),s()})}paintColumnList(){let e=this.config.columns,t=this.getColumnGroups(),i=this.userCols().length===1?this.userCols()[0]:null,s=o=>{let l=d("input","op-grid__check",{type:"checkbox",value:o.field});return l.checked=!o.hidden,l.disabled=o===i,d("label","op-grid__colitem",{"data-group":o.group??""},l,d("span","",{},o.header??o.field))};if(this.colChips.hidden=t.length<2,this.colChips.replaceChildren(...[["",g("gridGroupAll")],...t.map(o=>[o,o])].map(([o,l])=>d("button",`op-grid__colchip${this.colGroup===o?" is-on":""}`,{type:"button","data-g":o,"aria-pressed":String(this.colGroup===o)},l))),!t.length)return this.colList.replaceChildren(...e.map(s));let r=[];for(let o of[...t,""]){let l=e.filter(a=>(a.group??"")===o);if(!l.length)continue;let n=l.filter(a=>!a.hidden).length,c=d("input","op-grid__check",{type:"checkbox","data-group-toggle":o,"aria-label":o||g("gridOtherCols")});c.checked=n===l.length,c.indeterminate=n>0&&n<l.length,r.push(d("div","op-grid__colgroup",{"data-group":o},d("label","",{},c,d("span","",{},o||g("gridOtherCols"))),d("span","op-grid__colcount",{},`${n}/${l.length}`)),...l.map(s))}this.colList.replaceChildren(...r)}onDestroy(){this.pager?.destroy(),this.rowMenu?.destroy(),this.colDd?.destroy(),this.colSearch?.destroy()}};_("grid",k);export{k as a};
|
|
2
|
+
//# sourceMappingURL=chunk-5WE2JOBY.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as o}from"./chunk-TIPK3SCJ.js";import{f as i}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as o}from"./chunk-TIPK3SCJ.js";import{f as i}from"./chunk-KMBTJ5AG.js";var t=class extends i{baseCls="op-spacer";tag="span";onRender(){let e=this.config;e.width==null&&e.flex==null&&!e.line&&(this.el.style.flex="1"),this.setLine(!!e.line)}setLine(e){this.config.line=e,this.rendered&&(this.el.classList.toggle("op-spacer--line",e),e?this.el.setAttribute("role","separator"):this.el.setAttribute("aria-hidden","true"),e&&this.el.removeAttribute("aria-hidden"))}};o("spacer",t);export{t as a};
|
|
2
|
+
//# sourceMappingURL=chunk-6IXVTWFH.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as b}from"./chunk-
|
|
1
|
+
import{a as b}from"./chunk-KVUELLYF.js";import{a as m}from"./chunk-TIPK3SCJ.js";import{f}from"./chunk-KMBTJ5AG.js";import{b as r}from"./chunk-PZSHOSOS.js";import{e as g,f as p}from"./chunk-S4QD5NID.js";g("en",{codeCopy:"Copy",codeCopied:"Copied"});g("pt-BR",{codeCopy:"Copiar",codeCopied:"Copiado"});var w={ts:"TypeScript",js:"JavaScript",json:"JSON",css:"CSS",html:"HTML",sh:"Shell",text:"Text"},y="import|from|export|default|function|return|const|let|var|new|await|async|if|else|for|of|in|while|do|switch|case|break|continue|throw|try|catch|finally|class|extends|implements|interface|type|enum|as|typeof|instanceof|keyof|readonly|public|private|protected|static|this|void|true|false|null|undefined",c=`'(?:[^'\\\\\\n]|\\\\.)*'|"(?:[^"\\\\\\n]|\\\\.)*"`,l={ts:[new RegExp(`(\\/\\/[^\\n]*|\\/\\*[\\s\\S]*?\\*\\/)|(${c}|\`(?:[^\`\\\\]|\\\\.)*\`)|\\b(${y})\\b|\\b(\\d+(?:\\.\\d+)?)\\b`,"g"),["comment","string","keyword","number"]],js:[/./g,[]],json:[new RegExp(`("(?:[^"\\\\\\n]|\\\\.)*")(?=\\s*:)|(${c})|\\b(true|false|null)\\b|(-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)`,"g"),["property","string","keyword","number"]],css:[new RegExp(`(\\/\\*[\\s\\S]*?\\*\\/)|(${c})|(@[\\w-]+)|([\\w-]+)(?=\\s*:[^:{;]*[;}\\n])|(#[0-9a-fA-F]{3,8}\\b|-?\\d*\\.?\\d+(?:%|[a-z]+)?)`,"g"),["comment","string","keyword","property","number"]],html:[new RegExp(`(<!--[\\s\\S]*?-->)|(<\\/?[\\w-]+|\\/?>)|([\\w:-]+)(?==)|(${c})`,"g"),["comment","tag","attr","string"]],sh:[new RegExp(`(#[^\\n]*)|(${c})|\\b(if|then|else|fi|for|in|do|done|case|esac|while|function|export|return|sudo)\\b|(\\$\\{?[\\w]+\\}?|--?[\\w-]+)`,"g"),["comment","string","keyword","attr"]]};l.js=l.ts;function x(s,e="ts"){if(e==="text"||!l[e])return[["",s]];let[t,a]=l[e],i=[],n=0;for(let o of s.matchAll(t))o.index>n&&i.push(["",s.slice(n,o.index)]),i.push([a[o.slice(1).findIndex(d=>d!==void 0)]??"",o[0]]),n=o.index+o[0].length;return n<s.length&&i.push(["",s.slice(n)]),i}var v=s=>{if(Array.isArray(s))return new Set(s);let e=new Set;for(let t of(s??"").split(",")){let[a,i]=t.split("-").map(n=>Number(n.trim()));if(Number.isFinite(a))for(let n=a;n<=(Number.isFinite(i)?i:a);n++)e.add(n)}return e},u=class extends f{baseCls="op-codeviewer";titleEl;bar;pre;codeEl;status;copyBtn;build(){return this.titleEl=r("span","op-codeviewer__title"),this.copyBtn=new b({text:p("codeCopy"),icon:"file",variant:"ghost",handler:()=>{this.copy()}}),this.status=r("span","op-sr-only op-codeviewer__status",{"aria-live":"polite"}),this.bar=r("div","op-codeviewer__bar",{},this.titleEl,this.copyBtn.el,this.status),this.codeEl=r("code","op-codeviewer__code"),this.pre=r("pre","op-codeviewer__pre",{tabindex:0},this.codeEl),r("div","op-codeviewer",{},this.bar,this.pre)}onRender(){this.own(()=>this.copyBtn.destroy()),this.paintBar(),this.paintCode(),this.setWrap(!!this.config.wrap),this.setMaxHeight(this.config.maxHeight)}get language(){return this.config.language??"ts"}paintBar(){let e=this.config,t=e.title??w[this.language]??this.language;this.titleEl.textContent=t,this.pre.setAttribute("aria-label",t),this.bar.hidden=e.bar===!1,this.copyBtn.el.hidden=e.copyable===!1}paintCode(){let e=this.config,t=e.startLine??1,a=v(e.highlight),i=[r("span","op-codeviewer__line")];for(let[o,d]of x(e.code??"",this.language))d.split(`
|
|
2
2
|
`).forEach((h,C)=>{C&&i.push(r("span","op-codeviewer__line")),h&&i[i.length-1].append(o?r("span",`op-codeviewer__tok--${o}`,{},h):h)});i.forEach((o,d)=>{a.has(t+d)&&o.classList.add("is-marked"),d<i.length-1&&o.append(`
|
|
3
3
|
`)}),this.codeEl.replaceChildren(...i);let n=e.lineNumbers!==!1;this.el.classList.toggle("has-numbers",n),this.codeEl.style.counterReset=`op-codeline ${t-1}`,this.codeEl.style.setProperty("--op-codeviewer-gutter",`${String(t+i.length-1).length}ch`)}getCode(){return this.config.code??""}async copy(){let e=this.getCode();try{await navigator.clipboard.writeText(e)}catch{let t=document.createRange();return t.selectNodeContents(this.codeEl),getSelection()?.removeAllRanges(),getSelection()?.addRange(t),!1}return this.copyBtn.setText(p("codeCopied")),this.copyBtn.setIcon("check"),this.status.textContent=p("codeCopied"),this.later(()=>{this.copyBtn.setText(p("codeCopy")),this.copyBtn.setIcon("file"),this.status.textContent=""},1600),this.emit("copy",e),!0}update(e,t=!1){Object.assign(this.config,e),this.rendered&&(t&&this.paintBar(),this.paintCode())}setCode(e){this.update({code:e})}setLanguage(e){this.update({language:e},!0)}setTitle(e){this.update({title:e},!0)}setLineNumbers(e){this.update({lineNumbers:e})}setStartLine(e){this.update({startLine:e})}setHighlight(e){this.update({highlight:e})}setWrap(e){this.config.wrap=e,this.rendered&&this.el.classList.toggle("is-wrapped",e)}setMaxHeight(e){this.config.maxHeight=e,this.rendered&&(this.pre.style.maxBlockSize=e==null?"":typeof e=="number"?`${e}px`:e)}};m("codeviewer",u);export{x as a,u as b};
|
|
4
|
-
//# sourceMappingURL=chunk-
|
|
4
|
+
//# sourceMappingURL=chunk-6S4BKUGD.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as t}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as t}from"./chunk-U5RENLU4.js";import{a as o}from"./chunk-TIPK3SCJ.js";var e,r=class extends t{baseCls="op-viewport";constructor(n={}){if(super(n),e&&!e.destroyed)throw new Error("Optikos: only one Viewport can exist at a time");e=this}onRender(){this.config.layout??="fit",super.onRender()}};o("viewport",r);export{r as a};
|
|
2
|
+
//# sourceMappingURL=chunk-6VWSTY32.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as x}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as x}from"./chunk-QT5JRZZJ.js";import{c as d}from"./chunk-U5RENLU4.js";import{a as c}from"./chunk-RI62AESU.js";import{a as l}from"./chunk-TIPK3SCJ.js";import{b as n}from"./chunk-PZSHOSOS.js";var a=class extends d{baseCls="op-inputgroup";affixes=[];getField(){return this.query(i=>i instanceof c)[0]}onRender(){super.onRender(),this.paint();for(let i of["invalid","valid"])this.getField()?.on(i,()=>this.describe())}describe(){let i=this.getField()?.el.querySelector("[aria-invalid]");if(!i)return;let t=[...(i.getAttribute("aria-describedby")??"").split(" ").filter(r=>r&&!r.startsWith(`${this.id}-`)),...this.affixes.filter(r=>r.tagName==="SPAN").map(r=>r.id)];t.length?i.setAttribute("aria-describedby",t.join(" ")):i.removeAttribute("aria-describedby")}paint(){let i=this.getField();if(!i)return;this.affixes.forEach(e=>e.remove()),this.affixes=[];let o=i.el.querySelector(".op-field__control"),t=o.querySelector(":scope > .op-inputgroup__row");t||(t=n("div","op-inputgroup__row"),t.append(...Array.from(o.childNodes)),o.append(t));let r=(e,p)=>{if(typeof e=="string")return n("span",`op-inputgroup__affix op-inputgroup__affix--${p}`,{id:`${this.id}-${p}`},e);let u=n("button",`op-inputgroup__affix op-inputgroup__btn op-inputgroup__affix--${p}`,{type:"button","aria-label":e.ariaLabel??null},e.icon?x(e.icon):"",e.text?n("span","",{},e.text):"");return this.listen(u,"click",()=>e.handler?.(i)),u},{prefix:f,suffix:s}=this.config;f!=null&&t.prepend(this.track(r(f,"prefix"))),s!=null&&t.append(this.track(r(s,"suffix"))),i.el.classList.toggle("has-prefix",f!=null),i.el.classList.toggle("has-suffix",s!=null),this.describe()}track(i){return this.affixes.push(i),i}setPrefix(i){this.config.prefix=i,this.rendered&&this.paint()}setSuffix(i){this.config.suffix=i,this.rendered&&this.paint()}};l("inputgroup",a);export{a};
|
|
2
|
+
//# sourceMappingURL=chunk-72ESP5DB.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{b as S}from"./chunk-
|
|
1
|
+
import{b as S}from"./chunk-OK3SN5PN.js";import{a as A}from"./chunk-IE7KRNFJ.js";import{a as E}from"./chunk-BPCD37A2.js";import{c as T}from"./chunk-QT5JRZZJ.js";import{b as d}from"./chunk-PZSHOSOS.js";import{b as _}from"./chunk-IODSL7KU.js";import{b as L}from"./chunk-XFDNXSU5.js";import{e as h,f as c}from"./chunk-S4QD5NID.js";h("en",{ctActions:"Column actions: {col}",ctNone:"No total",ctSum:"Sum",ctAvg:"Average",ctMin:"Minimum",ctMax:"Maximum",ctCount:"Count",ctEarliest:"Earliest",ctLatest:"Latest",ctTotals:"Totals",ctResult:"{op} of {col}: {value}",ctRows:"{n} rows"});h("pt-BR",{ctActions:"A\xE7\xF5es da coluna: {col}",ctNone:"Sem total",ctSum:"Soma",ctAvg:"M\xE9dia",ctMin:"M\xEDnimo",ctMax:"M\xE1ximo",ctCount:"Contagem",ctEarliest:"Mais antiga",ctLatest:"Mais recente",ctTotals:"Totais",ctResult:"{op} de {col}: {value}",ctRows:"{n} linhas"});var O=["sum","avg","min","max","count"],k={sum:"ctSum",avg:"ctAvg",min:"ctMin",max:"ctMax",count:"ctCount"},I={number:O,date:["min","max","count"],text:["count"]},q=(i,s)=>{let n=s.map(m=>m.data[i.field]).find(m=>m!=null&&m!=="");return n instanceof Date||typeof n=="string"&&/^\d{4}-\d{2}-\d{2}/.test(n)?"date":typeof n=="number"||typeof n=="string"&&n.trim()!==""&&!isNaN(Number(n))?"number":"text"};function D(i={}){return{init(s){let n=d("div","op-columntotals",{role:"group","aria-label":c("ctTotals")});n.hidden=!0;let m=new E({}),g=s.getStore(),f=()=>g.getFiltered(),v=i.operations??[],b=t=>typeof t.summary=="function"?v.find(l=>l.run===t.summary)?.text:t.summary&&c(k[t.summary]),x=(t,l)=>{let e=_(t,l);return t.summaryRenderer?t.summaryRenderer(e,t):e==null?"":t.format&&typeof t.summary!="function"&&t.summary!=="count"?L(t.format,e):String(e)};function R(t,l){let e=f(),o={...t,summary:l},a=x(o,e),u=c("ctResult",{op:b(o)??"",col:t.header??t.field,value:typeof a=="string"?a:a.textContent??""}),r=c("ctRows",{n:e.length});i.show==="toast"?S({type:"info",title:u,text:r}):A.alert(`${u}
|
|
2
2
|
${r}`,{title:c("ctTotals"),icon:"info"})}function p(){let t=s.getColumns();if(n.hidden=(i.show??"bar")!=="bar"||!t.some(o=>o.summary),n.hidden)return;let l=f(),e=o=>{let a=d("div","op-columntotals__cell"+(o?.align?` op-columntotals__cell--${o.align}`:""),C?{role:"gridcell"}:{});return o?.summary&&a.append(d("span","op-columntotals__op",{},b(o)??""),x(o,l)),a};n.replaceChildren(...s.config.checkboxSelection?[e()]:[],...t.map(e),...s.config.rowActions?.length?[e()]:[])}function N(t,l){let e=q(t,f()),o=i.show===void 0||i.show==="bar",a=r=>{if(!o)return R(t,r);t.summary=t.summary===r?void 0:r,p()},u=r=>o?t.summary===r:void 0;m.setItems([...I[e].map(r=>({text:e==="date"&&r!=="count"?c(r==="min"?"ctEarliest":"ctLatest"):c(k[r]),checked:u(r),handler:()=>a(r)})),...v.map(r=>({text:r.text,checked:u(r.run),handler:()=>a(r.run)})),...o?["-",{text:c("ctNone"),disabled:!t.summary,handler:()=>a(t.summary)}]:[]]),m.showBy(l)}function M(){let t=s.getColumns();for(let l of Array.from(s.el.querySelectorAll(".op-grid__hcell[data-field]"))){let e=t.find(a=>a.field===l.dataset.field);if(!e)continue;let o=d("button","op-columntotals__btn",{type:"button","aria-haspopup":"menu","aria-label":c("ctActions",{col:e.header??e.field})},T("more"));for(let a of["click","pointerdown","keydown"])o.addEventListener(a,u=>u.stopPropagation());o.addEventListener("click",()=>N(e,o)),l.append(o)}p()}let C=i.position==="top";C?(n.classList.add("op-columntotals--top"),n.setAttribute("role","row"),s.el.querySelector(".op-grid__header").after(n)):s.el.querySelector(".op-grid__table").after(n);let y=s.el.querySelector(".op-grid__viewport"),w=()=>n.scrollLeft=y.scrollLeft;y.addEventListener("scroll",w);let B=[s.on("header-paint",M),g.subscribe(p)];return M(),()=>{B.forEach(t=>t()),y.removeEventListener("scroll",w),m.destroy(),n.remove()}}}}export{D as a};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
//# sourceMappingURL=chunk-74IVU356.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as s,b as f}from"./chunk-34KVSA2V.js";import{a as E}from"./chunk-DY3ZYMXD.js";import{a as m}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as s,b as f}from"./chunk-34KVSA2V.js";import{a as E}from"./chunk-DY3ZYMXD.js";import{a as m}from"./chunk-KVUELLYF.js";import{a as g}from"./chunk-QT5JRZZJ.js";import{b as d}from"./chunk-PZSHOSOS.js";import{e as p,f as a}from"./chunk-S4QD5NID.js";p("en",{ebCsv:"Export CSV",ebXlsx:"Export Excel",ebPage:"Export this page (CSV)",ebPrint:"Print",ebActions:"Export and print"});p("pt-BR",{ebCsv:"Exportar CSV",ebXlsx:"Exportar Excel",ebPage:"Exportar esta p\xE1gina (CSV)",ebPrint:"Imprimir",ebActions:"Exportar e imprimir"});g({download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3"/>',printer:'<path d="M6 9V2h12v7M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2M6 14h12v8H6z"/>',table:'<rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M3 15h18M9 3v18"/>'});var u={csv:"download",xlsx:"table",page:"file",print:"printer"},B={csv:"ebCsv",xlsx:"ebXlsx",page:"ebPage",print:"ebPrint"},P={csv:"CSV",xlsx:"Excel",page:"1",print:""};function G(n={}){let r=new Map,l=()=>{};return{init(e){let o=n.filename??"export",c={csv:()=>s(e,{filename:o}),xlsx:()=>s(e,{format:"xlsx",filename:o}),page:()=>s(e,{scope:"page",filename:o}),print:()=>f(e,{title:n.title})},x=d("div","op-exportbar op-footer-group",{role:"group","aria-label":a("ebActions")});for(let t of Object.keys(c)){let h=n[t]??(t!=="page"||!!e.config.paging),b=a(B[t]),i=new m({icon:u[t],variant:"ghost",ariaLabel:b,tooltip:b,hidden:!h,text:n.labels?t==="page"?a("ebPage"):t==="print"?a("ebPrint"):P[t]:void 0,handler:async()=>{i.setDisabled(!0);try{await c[t]()}finally{i.setDisabled(!1)}}});i.mount(x),r.set(t,i)}let v=E(e,x);return l=()=>{v(),r.forEach(t=>t.destroy()),r.clear()},()=>l()},setVisible:(e,o)=>r.get(e)?.[o?"show":"hide"](),setDisabled:(e,o)=>r.get(e)?.setDisabled(o)}}export{G as a};
|
|
2
|
+
//# sourceMappingURL=chunk-76A4MY7P.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as o}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as o}from"./chunk-QT5JRZZJ.js";import{a as l}from"./chunk-TIPK3SCJ.js";import{f as h}from"./chunk-KMBTJ5AG.js";import{b as i}from"./chunk-PZSHOSOS.js";import{e as s,f as r}from"./chunk-S4QD5NID.js";s("en",{chipRemove:"Remove {text}"});s("pt-BR",{chipRemove:"Remover {text}"});var n=class extends h{baseCls="op-chip";tag="span";main;textEl;removeBtn;onRender(){let e=this.config;this.textEl=i("span","op-chip__text"),this.main=i("button","op-chip__main",{type:"button"},e.icon?o(e.icon):"",this.textEl),this.el.append(this.main),this.listen(this.main,"click",()=>{this.config.disabled||(this.config.selectable&&this.setSelected(!this.config.selected,!0),this.config.handler?.(this),this.emit("click",this))}),e.removable&&(this.removeBtn=i("button","op-chip__remove",{type:"button"},o("x")),this.el.append(this.removeBtn),this.listen(this.removeBtn,"click",()=>!this.config.disabled&&this.emit("remove",this)),this.listen(this.main,"keydown",t=>{(t.key==="Delete"||t.key==="Backspace")&&!this.config.disabled&&this.emit("remove",this)})),this.setText(e.text??""),this.setSelected(!!e.selected),this.setDisabled(!!e.disabled)}setText(e){this.config.text=e,this.rendered&&(this.textEl.textContent=e,this.removeBtn?.setAttribute("aria-label",r("chipRemove",{text:e})))}setSelected(e,t=!1){this.config.selected=e,this.rendered&&(this.el.classList.toggle("is-selected",e),this.config.selectable&&this.main.setAttribute("aria-pressed",String(e)),t&&this.emit("change",e))}isSelected(){return!!this.config.selected}setDisabled(e){super.setDisabled(e),this.rendered&&(this.main.disabled=e,this.removeBtn&&(this.removeBtn.disabled=e))}focusEl(){return this.main}};l("chip",n);export{n as a};
|
|
2
|
+
//# sourceMappingURL=chunk-7SE4B4TC.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as r}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as r}from"./chunk-QT5JRZZJ.js";import{a as i}from"./chunk-TIPK3SCJ.js";import{f as o}from"./chunk-KMBTJ5AG.js";import{b as t}from"./chunk-PZSHOSOS.js";var n=class extends o{baseCls="op-badge";tag="span";textEl;onRender(){let e=this.config;e.dot&&this.el.append(t("span","op-badge__dot",{"aria-hidden":"true"})),e.icon&&this.el.append(r(e.icon)),this.textEl=this.el.appendChild(t("span","op-badge__text")),this.setText(e.text??""),this.setTone(e.tone??"neutral")}setText(e){this.config.text=e,this.rendered&&(this.textEl.textContent=String(e))}setTone(e){this.config.tone=e,this.rendered&&(this.el.className=this.el.className.replace(/\bop-badge--\w+/g,"").trim(),this.el.classList.add(`op-badge--${e}`))}};i("badge",n);export{n as a};
|
|
2
|
+
//# sourceMappingURL=chunk-A5N2AJCE.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as V}from"./chunk-TIPK3SCJ.js";import{f as O}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as V}from"./chunk-TIPK3SCJ.js";import{f as O}from"./chunk-KMBTJ5AG.js";import{b as c}from"./chunk-PZSHOSOS.js";import{b as D}from"./chunk-XFDNXSU5.js";import{e as R,f as A}from"./chunk-S4QD5NID.js";R("en",{chart:"Chart",chartPercent:"{n}%"});R("pt-BR",{chart:"Gr\xE1fico",chartPercent:"{n}%"});var Y="http://www.w3.org/2000/svg",W=y=>y%8?`var(--op-chart-${y%8+1})`:"var(--op-chart-1, var(--op-color-primary))";function m(y,t={},i=""){let e=document.createElementNS(Y,y);i&&e.setAttribute("class",i);for(let a in t)e.setAttribute(a,String(t[a]));return e}function Z(y,t,i=4){let a=(t-y||1)/i,s=10**Math.floor(Math.log10(a)),l=([1,2,2.5,5,10].find(r=>r*s>=a)??10)*s,o=[];for(let r=Math.floor(y/l)*l;r<t+l*.999;r+=l)o.push(Math.round(r/l)*l);return o}var F=class extends O{baseCls="op-chart";svg;plot;tip;legendEl;sr;hidden=new Set;rows=[];active=-1;geom;queued=!1;offStore;build(){return this.svg=m("svg",{role:"img",tabindex:0,preserveAspectRatio:"xMidYMid meet"},"op-chart__svg"),this.tip=c("div","op-chart__tip",{role:"status"}),this.tip.hidden=!0,this.plot=c("div","op-chart__plot",{},this.svg,this.tip),this.legendEl=c("div","op-chart__legend"),this.sr=c("table","op-sr-only"),c("div",this.baseCls,{},this.plot,this.legendEl,this.sr)}onRender(){let t=this.config;if(this.el.classList.add(`op-chart--${t.kind??"bar"}`),t.store&&this.bindStore(t.store),this.setData(t.data??[]),this.listen(this.svg,"keydown",i=>this.onKey(i)),this.listen(this.svg,"blur",()=>this.activate(-1)),this.listen(this.svg,"pointerleave",()=>this.activate(-1)),typeof ResizeObserver=="function"){let i=0,e=new ResizeObserver(()=>this.plot.clientWidth!==i&&(i=this.plot.clientWidth,this.paint()));e.observe(this.plot),this.own(()=>e.disconnect())}}bindStore(t){this.offStore?.(),this.config.store=t,this.offStore=t.subscribe(()=>{this.queued||(this.queued=!0,queueMicrotask(()=>(this.queued=!1,this.rendered&&!this.destroyed&&this.setData(t.getFiltered().map(i=>i.data)))))}),this.own(()=>this.offStore?.())}setStore(t){this.bindStore(t),this.rendered&&this.setData(t.getFiltered().map(i=>i.data))}setData(t){this.rows=t,this.rendered&&this.paint()}setKind(t){this.el.classList.remove(`op-chart--${this.config.kind??"bar"}`),this.config.kind=t,this.el.classList.add(`op-chart--${t}`),this.paint()}setSeries(t){this.config.series=t,this.hidden.clear(),this.paint()}series(){return this.config.series.map((t,i)=>{let e=typeof t=="string"?{field:t}:t;return{field:e.field,label:e.label??e.field,color:e.color??W(i),idx:i}})}fmt(t){return D(this.config.format??"number",t)}isPie(){return this.config.kind==="pie"||this.config.kind==="donut"}slices(){let t=this.series()[0].field;return this.rows.map((i,e)=>({label:String(i[this.config.x]??""),value:Math.max(0,Number(i[t])||0),color:W(e),idx:e}))}paint(){if(!this.rendered)return;let t=this.config,i=t.kind??"bar",e=i==="sparkline",a=Math.max(this.plot.clientWidth,0)||600,s=t.height??(e?36:240);this.svg.replaceChildren(),this.svg.setAttribute("viewBox",`0 0 ${a} ${s}`),this.svg.style.height=`${s}px`,this.svg.setAttribute("aria-label",t.title??A("chart")),this.geom=void 0,this.active=-1,this.tip.hidden=!0,!this.rows.length||!t.series.length?this.svg.append(Object.assign(m("text",{x:a/2,y:s/2,"text-anchor":"middle"},"op-chart__empty"),{textContent:A("empty")})):this.isPie()?this.paintPie(a,s):this.paintXY(a,s,i),this.paintLegend(),this.paintTable()}paintXY(t,i,e){let a=this.config,s=e==="sparkline",l=this.series().filter(n=>!this.hidden.has(n.idx)),o=this.rows.length,r=l.map(n=>this.rows.map(h=>Number(h[n.field])||0)),g=!!a.stacked&&(e==="bar"||e==="area"),p=r.map((n,h)=>n.map((f,v)=>g?r.slice(0,h).reduce((w,u)=>w+u[v],0):0)),d=r.map((n,h)=>n.map((f,v)=>f+p[h][v])),b=d.flat(),C=e==="line"||s?Math.min(0,...b):0,E=Math.max(...b,0),_=s?[C,E]:Z(C,E),N=_[0],I=_[_.length-1]||1,$=s?2:Math.max(..._.map(n=>this.fmt(n).length))*6.5+12,T=s?2:8,P=s?3:8,L=s?i-3:i-24,M=(t-$-T)/o,x=n=>L-(n-N)/(I-N||1)*(L-P),S=n=>$+M*(n+.5);if(this.geom={left:$,band:M,top:P,bottom:L,n:o},!s){let n=m("g",{},"op-chart__grid");for(let f of _)n.append(m("line",{x1:$,x2:t-T,y1:x(f),y2:x(f)},f===0?"op-chart__axis":"")),n.append(Object.assign(m("text",{x:$-6,y:x(f),"text-anchor":"end",dy:"0.32em"},"op-chart__tick"),{textContent:this.fmt(f)}));let h=Math.ceil(48/M);this.rows.forEach((f,v)=>v%h===0&&n.append(Object.assign(m("text",{x:S(v),y:i-7,"text-anchor":"middle"},"op-chart__tick"),{textContent:String(f[a.x]??"")}))),this.svg.append(n)}let q=m("g",{},"op-chart__marks");l.forEach((n,h)=>{let f=m("g",{style:`--op-chart-c:${n.color}`},"op-chart__series");if(e==="bar"){let v=M*.7/(g?1:l.length);r[h].forEach((w,u)=>{let k=S(u)-M*.7/2+(g?0:h*v),K=x(d[h][u]);f.append(m("rect",{x:k,y:Math.min(K,x(p[h][u])),width:Math.max(v-(g?0:1),1),height:Math.abs(x(p[h][u])-K),rx:2},"op-chart__bar"))})}else{let v=d[h].map((w,u)=>`${u?"L":"M"}${S(u).toFixed(1)} ${x(w).toFixed(1)}`).join("");if(e!=="line"){let w=g?p[h].map((u,k)=>`L${S(o-1-k).toFixed(1)} ${x(p[h][o-1-k]).toFixed(1)}`).join(""):`L${S(o-1)} ${x(0)}L${S(0)} ${x(0)}`;f.append(m("path",{d:`${v}${w}Z`},"op-chart__area"))}if(f.append(m("path",{d:v},"op-chart__line")),s||o<=40){let w=s?[o-1]:d[h].map((u,k)=>k);for(let u of w)f.append(m("circle",{cx:S(u),cy:x(d[h][u]),r:s?2.5:3},"op-chart__dot"))}}q.append(f)}),this.svg.append(q),this.svg.append(m("line",{y1:P,y2:L,x1:0,x2:0},"op-chart__guide"));let G=m("g");for(let n=0;n<o;n++){let h=m("rect",{x:$+M*n,y:0,width:M,height:i},"op-chart__hit");h.addEventListener("pointerenter",()=>this.activate(n)),h.addEventListener("pointerdown",()=>this.activate(n)),G.append(h)}this.svg.append(G)}paintPie(t,i){let e=this.slices().filter(d=>!this.hidden.has(d.idx)),a=e.reduce((d,b)=>d+b.value,0)||1,s=Math.min(t,i)/2-6,l=this.config.kind==="donut"?s*.6:0,[o,r]=[t/2,i/2],g=(d,b)=>`${(o+b*Math.sin(d)).toFixed(2)} ${(r-b*Math.cos(d)).toFixed(2)}`,p=0;for(let d of e){let b=p+Math.min(d.value/a*Math.PI*2,Math.PI*2-1e-4),C=b-p>Math.PI?1:0,E=`M${g(p,s)}A${s} ${s} 0 ${C} 1 ${g(b,s)}`+(l?`L${g(b,l)}A${l} ${l} 0 ${C} 0 ${g(p,l)}Z`:`L${o} ${r}Z`),_=m("path",{d:E,style:`--op-chart-c:${d.color}`},"op-chart__slice");_.addEventListener("pointerenter",()=>this.activate(d.idx)),this.svg.append(_),p=b}l&&this.svg.append(Object.assign(m("text",{x:o,y:r,"text-anchor":"middle",dy:"0.32em"},"op-chart__total"),{textContent:this.fmt(a)}))}paintLegend(){let t=this.config,i=this.isPie()?this.slices().map(e=>({label:e.label,color:e.color,idx:e.idx})):this.series();this.legendEl.hidden=!(t.legend??(this.isPie()||i.length>1))||t.kind==="sparkline"||!this.rows.length,this.legendEl.replaceChildren(...i.map(e=>{let a=c("button",`op-chart__key${this.hidden.has(e.idx)?" is-off":""}`,{type:"button","aria-pressed":String(!this.hidden.has(e.idx))},c("span","op-chart__swatch"),e.label);return a.style.setProperty("--op-chart-c",e.color),a.addEventListener("click",()=>(this.hidden.has(e.idx)?this.hidden.delete(e.idx):this.hidden.add(e.idx),this.paint())),a}))}paintTable(){let t=this.config,i=this.series();this.sr.replaceChildren(Object.assign(c("caption"),{textContent:t.title??""}),c("thead","",{},c("tr","",{},c("th","",{},t.x),...i.map(e=>c("th","",{},e.label)))),c("tbody","",{},...this.rows.map(e=>c("tr","",{},c("td","",{},String(e[t.x]??"")),...i.map(a=>c("td","",{},this.fmt(Number(e[a.field])||0)))))))}activate(t){this.active=t;let i=this.geom,e=this.svg.querySelector(".op-chart__guide");if(this.svg.querySelectorAll(".op-chart__slice").forEach((r,g)=>r.classList.toggle("is-active",this.slices().filter(p=>!this.hidden.has(p.idx))[g]?.idx===t)),t<0||!this.rows[t])return this.tip.hidden=!0,void e?.classList.remove("is-on");let a=this.config,s=[],l=String(this.rows[t][a.x]??""),o;if(this.isPie()){let r=this.slices()[t],g=this.slices().filter(p=>!this.hidden.has(p.idx)).reduce((p,d)=>p+d.value,0)||1;s.push([r.color,this.fmt(r.value),A("chartPercent",{n:Math.round(r.value/g*100)})]),o=this.plot.clientWidth/2}else{for(let r of this.series().filter(g=>!this.hidden.has(g.idx)))s.push([r.color,r.label,this.fmt(Number(this.rows[t][r.field])||0)]);o=i?i.left+i.band*(t+.5):0,e&&i&&(e.setAttribute("x1",String(o)),e.setAttribute("x2",String(o)),e.classList.add("is-on"))}this.tip.replaceChildren(c("div","op-chart__tip-head",{},l),...s.map(([r,g,p])=>{let d=c("div","op-chart__tip-row",{},c("span","op-chart__swatch"),c("span","",{},g),c("b","",{},p));return d.style.setProperty("--op-chart-c",r),d})),this.tip.hidden=!1,this.tip.classList.toggle("is-left",o>this.plot.clientWidth/2),this.tip.style.left=`${o}px`,this.emit("point",this.rows[t],t)}onKey(t){let i=this.rows.length,e=t.key==="ArrowRight"||t.key==="ArrowDown"?this.active+1:t.key==="ArrowLeft"||t.key==="ArrowUp"?this.active-1:t.key==="Home"?0:t.key==="End"?i-1:t.key==="Escape"?-1:void 0;e!==void 0&&(t.preventDefault(),this.activate(Math.max(-1,Math.min(i-1,e))))}};V("chart",F);export{F as a};
|
|
2
|
+
//# sourceMappingURL=chunk-ALNUVKDT.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as v}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as v}from"./chunk-IE7KRNFJ.js";import{a as m}from"./chunk-BPCD37A2.js";import{a as w}from"./chunk-KVUELLYF.js";import{a as c}from"./chunk-TIPK3SCJ.js";import{f}from"./chunk-KMBTJ5AG.js";import{b as u}from"./chunk-PZSHOSOS.js";import{e as d,f as n}from"./chunk-S4QD5NID.js";d("en",{views:"Views",viewsName:"Name for this view",viewsSave:"Save view",viewsSaveAs:"Save as new view\u2026",viewsDefault:"Open with this view",viewsDelete:"Delete view",viewsConfirmDelete:'Delete the view "{n}"?',viewsReset:"Reset to initial"});d("pt-BR",{views:"Vis\xF5es",viewsName:"Nome desta vis\xE3o",viewsSave:"Salvar vis\xE3o",viewsSaveAs:"Salvar como nova vis\xE3o\u2026",viewsDefault:"Abrir com esta vis\xE3o",viewsDelete:"Excluir vis\xE3o",viewsConfirmDelete:'Excluir a vis\xE3o "{n}"?',viewsReset:"Voltar ao inicial"});var g=()=>globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`;function M(a,e=localStorage){let t=()=>{try{let s=JSON.parse(e.getItem(a)??"[]");return Array.isArray(s)?s:[]}catch{return[]}},i=s=>e.setItem(a,JSON.stringify(s));return{list:t,save(s){let r={...s,id:s.id??g()},o=t(),h=o.findIndex(p=>p.id===r.id);return h<0?o.push(r):o[h]=r,i(o),r},remove(s){i(t().filter(r=>r.id!==s.id))}}}function P(a){let e=async(t,i="",s)=>{let r=await(a.fetch??fetch)(a.url+i,{method:t,headers:{"Content-Type":"application/json",...a.headers},body:s===void 0?void 0:JSON.stringify(s)});if(!r.ok)throw new Error(`Optikos views: ${t} ${a.url+i} \u2192 ${r.status}`);return r.status===204?void 0:r.json().catch(()=>{})};return{list:()=>e("GET"),save:t=>t.id?e("PUT",`/${encodeURIComponent(t.id)}`,t):e("POST","",t),remove:t=>e("DELETE",`/${encodeURIComponent(t.id)}`).then(()=>{})}}var l=class extends f{baseCls="op-viewmanager";btn;menu;views=[];current;initial={};build(){return this.btn=new w({text:n("views"),icon:"menu",variant:"ghost",handler:()=>this.openMenu()}),this.btn.el.setAttribute("aria-haspopup","menu"),this.own(()=>(this.btn.destroy(),this.menu?.destroy())),u("span",this.baseCls,{},this.btn.el)}onRender(){this.config.grid.render(),this.config.filters?.render(),this.initial=this.getState(),this.config.autoLoad!==!1&&this.reload()}notifyMount(){super.notifyMount(),this.btn.notifyMount()}getState(){let{grid:e,filters:t,extra:i}=this.config,s={columns:e.getColumnState(),filter:t?.getFilter()??null,sorters:[...e.getStore().getSorters()]};return i&&(s.extra=Object.fromEntries(Object.entries(i).map(([r,o])=>[r,o.get()]))),s}setState(e){let{grid:t,filters:i,extra:s}=this.config;e.columns&&t.setColumnState(e.columns);let r=e.sorters?.[0];t.getStore().sort(r?.field??null,r?.dir),i&&(i.setFilter(e.filter??null),i.apply());for(let o in e.extra)s?.[o]?.set(e.extra[o])}getViews(){return this.views}getCurrent(){return this.current}async reload(){await this.run(async()=>{this.views=await this.config.storage.list()??[],this.current=this.current&&this.views.find(t=>t.id===this.current.id);let e=this.views.find(t=>t.default);!this.current&&e&&this.config.autoLoad!==!1&&this.apply(e),this.paint()}),this.emit("load",this.views)}apply(e){let t=typeof e=="string"?this.views.find(i=>i.id===e):e;!t||this.emit("before-apply",t)===!1||(this.current=t,this.setState(t.state),this.paint(),this.emit("apply",t))}async save(){if(!this.current)return this.saveAs();await this.store({...this.current,state:this.getState()})}async saveAs(e){if(e??=await v.prompt(n("viewsName"),{title:n("viewsSaveAs")})??"",e=e.trim(),!e)return;let t=this.views.find(i=>i.name.toLowerCase()===e.toLowerCase());await this.store({...t,name:e,state:this.getState()})}async setDefault(e=!0){if(this.current){for(let t of this.views)t!==this.current&&t.default&&await this.store({...t,default:!1},!1);await this.store({...this.current,default:e})}}async remove(e=this.current){!e||!await v.confirm(n("viewsConfirmDelete",{n:e.name}),{danger:!0,okText:n("viewsDelete")})||await this.run(async()=>{await this.config.storage.remove(e),this.views=this.views.filter(t=>t!==e&&t.id!==e.id),this.current?.id===e.id&&(this.current=void 0),this.paint(),this.emit("remove",e)})}reset(){this.current=void 0,this.setState(this.initial),this.paint(),this.emit("reset")}async store(e,t=!0){await this.run(async()=>{let i=await this.config.storage.save(e)||e,s=this.views.findIndex(r=>i.id&&r.id===i.id||r===e);s<0?this.views.push(i):this.views[s]=i,t&&(this.current=i),this.paint(),this.emit("save",i)})}async run(e){try{await e()}catch(t){this.emit("error",t)}}paint(){this.btn.setText(this.current?.name??n("views"))}openMenu(){let e=this.current,t=[...this.views.map(i=>({text:i.default?`${i.name} \u2605`:i.name,checked:i===e||!!e?.id&&i.id===e.id,handler:()=>this.apply(i)})),...this.views.length?["-"]:[],{text:n("viewsSave"),handler:()=>{this.save()}},{text:n("viewsSaveAs"),handler:()=>{this.saveAs()}},...e?[{text:n("viewsDefault"),checked:!!e.default,handler:()=>{this.setDefault(!e.default)}},{text:n("viewsDelete"),handler:()=>{this.remove()}}]:[],"-",{text:n("viewsReset"),handler:()=>this.reset()}];this.menu??=new m({}),this.menu.setItems(t),this.menu.showBy(this.btn.el)}};c("viewmanager",l);export{M as a,P as b,l as c};
|
|
2
|
+
//# sourceMappingURL=chunk-ANR27GED.js.map
|