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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as d}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as d}from"./chunk-U5RENLU4.js";import{a as r}from"./chunk-RI62AESU.js";import{a as m}from"./chunk-TIPK3SCJ.js";import{e as u}from"./chunk-PZSHOSOS.js";import{b as c}from"./chunk-V5G5JECN.js";var h=class extends d{baseCls="op-form";tag="form";ruledOut=new Set;dirty=!1;constructor(t={}){let e=[...t.items??[]];t.tabs&&e.push({type:"tabs",flex:1,items:t.tabs.map(i=>({type:"container",title:i.title,icon:i.icon,cls:"op-form__tab",layout:i.layout??{type:"grid",columns:2,gap:12},items:i.items}))}),super({...t,items:e})}build(){let t=super.build();return t.setAttribute("novalidate",""),t}onRender(){if(this.config.layout??=this.config.columns?{type:"grid",columns:this.config.columns}:{type:"vbox"},this.config.labelWidth!=null&&this.setLabelWidth(this.config.labelWidth),this.config.labelPos)for(let t of this.getFields())t.config.labelPos??=this.config.labelPos;super.onRender(),this.config.readonly&&this.setReadonly(!0);for(let t of this.getFields())for(let e of["invalid","valid","dirty-change","change"])t.on(e,()=>this.syncTabs());for(let t of this.getFields())t.on("change",()=>this.changed());for(let t of this.getFields())t.on("dirty-change",()=>this.changed());this.applyRules(),this.listen(this.el,"submit",t=>{t.preventDefault(),this.submit()}),this.listen(this.el,"keydown",t=>{let e=t.target;t.key==="Enter"&&e instanceof HTMLInputElement&&!t.defaultPrevented&&e.type!=="button"&&(t.preventDefault(),this.submit())})}getFields(){return this.query(t=>t instanceof r)}getField(t){return this.getFields().find(e=>e.name===t)}getValues(t={}){let e={};for(let i of this.counted())i.name&&(!t.dirtyOnly||i.isDirty())&&c(e,i.name,i.getValue());return e}counted(){return this.getFields().filter(t=>{for(let e=t;e&&e!==this;e=e.parent)if(this.ruledOut.has(e))return!1;return!0})}changed(){this.applyRules();let t=this.isDirty();t!==this.dirty&&this.emit("dirty-change",this.dirty=t)}applyRules(){let t={};for(let e of this.getFields())e.name&&c(t,e.name,e.getValue());for(let e of this.query(i=>!!(i.config.showIf||i.config.enableIf))){let{showIf:i,enableIf:s}=e.config;if(i){let a=!!i(t);if(a===this.ruledOut.has(e))if(a)this.ruledOut.delete(e),e.show();else{this.ruledOut.add(e),e.hide();for(let l of e instanceof r?[e]:e instanceof d?e.query(o=>o instanceof r):[])l.clearError()}}s&&e.setDisabled(!s(t))}}focusField(t){this.reveal(t),t.focus()}setValues(t){for(let e of this.getFields())e.fillFrom(t)}load(t){this.setValues("data"in t&&"get"in t?t.data:t),this.markClean(),this.clearErrors(),this.emit("load",t)}reveal(t){let e=t;for(;e.parent;){let i=e.parent;i.items?.includes(e)&&(typeof i.setActive=="function"?i.setActive(e):i.layout?.activate&&i.layout.activate(i,e)),e=i}}syncTabs(){for(let t of this.query(e=>typeof e.setTabState=="function"))for(let e of t.items){let i=e instanceof d?e.query(s=>s instanceof r):[];t.setTabState(e,{errors:i.filter(s=>s.getError()).length,dirty:i.some(s=>s.isDirty())})}}updateRecord(t){let e=this.getValues(),i=new Set(this.getFields().filter(s=>s.name&&s.isDirty()).map(s=>s.name.split(".")[0]));for(let s of i)t.set(s,e[s])}markClean(){this.getFields().forEach(t=>t.markClean()),this.syncTabs()}reset(){this.getFields().forEach(t=>t.reset()),this.syncTabs()}isDirty(){return this.getFields().some(t=>t.isDirty())}isValid(){return this.counted().every(t=>t.config.disabled||t.isValid())}clearErrors(){this.getFields().forEach(t=>t.clearError()),this.syncTabs()}validate(){let t=this.counted().filter(i=>!i.config.disabled);for(let i of this.getFields())t.includes(i)||i.clearError();let e=t.filter(i=>!i.validate());return this.syncTabs(),e.length&&(this.reveal(e[0]),e[0].focus(),this.emit("invalid",e)),this.el.classList.toggle("is-invalid",!!e.length),!e.length}setErrors(t){this.clearErrors();let e=[],i;for(let[s,a]of Object.entries(t)){let l=this.getFields().filter(n=>n.name),o=l.find(n=>n.name===s)??l.filter(n=>s.startsWith(n.name+".")).sort((n,g)=>g.name.length-n.name.length)[0];o&&o.render();let f=o?.name===s?o:o?.fieldAt?.(s.slice(o.name.length+1));f?(f.setError(a),i??={host:o,target:f}):e.push(s)}return this.syncTabs(),i&&(this.el.classList.add("is-invalid"),this.emit("invalid",this.getFields().filter(s=>s.getError())),this.reveal(i.host),i.target.focus()),e}submit(){return this.emit("before-submit")===!1||!this.validate()?!1:(this.emit("submit",this.getValues()),!0)}setLabelWidth(t){this.config.labelWidth=t,this.rendered&&this.el.style.setProperty("--op-field-label-width",u(t))}setReadonly(t){this.config.readonly=t,this.getFields().forEach(e=>e.setReadonly(t))}};m("form",h);export{h as a};
|
|
2
|
+
//# sourceMappingURL=chunk-J6D4T4WY.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as g,b as o}from"./chunk-OWEQT2HN.js";import{a as d}from"./chunk-TIPK3SCJ.js";import{f as c}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as g,b as o}from"./chunk-OWEQT2HN.js";import{a as d}from"./chunk-TIPK3SCJ.js";import{f as c}from"./chunk-KMBTJ5AG.js";import{b as n}from"./chunk-PZSHOSOS.js";import{f as m}from"./chunk-S4QD5NID.js";var p="var(--op-listbox-row-height, var(--op-row-height))",a=class extends c{baseCls="op-listbox";items;active=-1;v;emptyEl;constructor(t={}){super(t),this.items=t.items??[]}build(){let t=n("div","op-listbox",{role:"listbox",tabindex:-1});return this.config.maxHeight!=null&&(t.style.maxHeight=typeof this.config.maxHeight=="number"?`${this.config.maxHeight}px`:this.config.maxHeight),this.emptyEl=n("div","op-listbox__empty"),t.append(this.emptyEl),t}onRender(){this.v=g({scroller:this.el,count:this.items.length,rowHeight:o(this.el,p)||32,render:(t,e)=>this.renderRow(t,e),rowCls:"op-listbox__item"}),this.own(()=>this.v?.destroy()),this.setEmptyText(this.config.emptyText??m("noResults")),this.listen(this.el,"mousedown",t=>t.preventDefault()),this.listen(this.el,"click",t=>{let e=this.indexOf(t.target);e>=0&&this.activate(e)}),this.listen(this.el,"mousemove",t=>{let e=this.indexOf(t.target);e>=0&&e!==this.active&&!this.items[e].disabled&&this.setActive(e,!1)}),this.updateEmpty()}indexOf(t){let e=t.closest(".op-listbox__item");return e?Number(e.dataset.i):-1}renderRow(t,e){let i=this.items[e],s=this.config;t.id=`${this.id}-opt-${e}`,t.dataset.i=String(e),t.setAttribute("role","option"),t.setAttribute("aria-selected",String(this.isSelected(i))),i.disabled?t.setAttribute("aria-disabled","true"):t.removeAttribute("aria-disabled"),t.classList.toggle("is-active",e===this.active),t.classList.toggle("is-selected",this.isSelected(i)),t.classList.toggle("is-disabled",!!i.disabled);let l=i.hint?[n("span","op-listbox__hint",{},i.hint)]:[];if(s.renderer)return t.replaceChildren(s.renderer(i),...l);let h=s.highlight?.trim(),r=h?i.label.toLowerCase().indexOf(h.toLowerCase()):-1;if(r<0)return t.replaceChildren(i.label,...l);t.replaceChildren(i.label.slice(0,r),n("mark","op-listbox__mark",{},i.label.slice(r,r+h.length)),i.label.slice(r+h.length),...l)}isSelected(t){return this.config.selected!==void 0&&t.value===this.config.selected}updateEmpty(){this.emptyEl.hidden=this.items.length>0}getItems(){return this.items}setItems(t){this.items=t,this.config.items=t,this.active=-1,this.rendered&&(this.v.setCount(t.length),this.updateEmpty())}setSelected(t){this.config.selected=t,this.v?.refresh()}setHighlight(t){this.config.highlight=t,this.v?.refresh()}setEmptyText(t){this.config.emptyText=t,this.rendered&&(this.emptyEl.textContent=t)}refresh(){if(!this.rendered)return;let t=o(this.el,p);t?this.v.setRowHeight(t):this.v.refresh()}setActive(t,e=!0){let i=this.items[t];t<-1||t>=this.items.length||i&&i.disabled||(this.active=t,e&&t>=0&&this.v?.scrollTo(t),this.v?.refresh(),this.emit("active-change",i,t))}moveActive(t){let e=this.items.length;if(!e)return;let i=this.active;for(let s=0;s<e;s++)if(i=(i+t+e)%e,i<0&&(i+=e),!this.items[i].disabled)return this.setActive(i)}getActive(){return this.items[this.active]}getActiveIndex(){return this.active}getActiveId(){return this.active>=0?`${this.id}-opt-${this.active}`:""}activate(t=this.active){let e=this.items[t];e&&!e.disabled&&this.emit("select",e,t)}scrollTo(t){this.v?.scrollTo(t)}};d("listbox",a);export{a};
|
|
2
|
+
//# sourceMappingURL=chunk-JF4WPGJQ.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as n,c as
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{b as n,c as f,d as r,e as o}from"./chunk-PZSHOSOS.js";import{a as u}from"./chunk-3VDLX7ET.js";import{f as p}from"./chunk-S4QD5NID.js";var d,l="hide";function b(s){d=s}function v(s){l=s}var a=s=>!s||!d||d(s),m=()=>l;function c(s){return s?.flatMap(e=>{let t=e.items;return a(e.permission)?[t?{...e,items:c(t)}:e]:l==="hide"?[]:[{...e,disabled:t?()=>!0:!0}]})}var g=class s extends u{static type;static onCreate;config;id;parent;rendered=!1;mounted=!1;destroyed=!1;baseCls="op-component";tag="div";_el;disposers=[];mask;constructor(e={}){super(),this.config={...e,type:e.type??new.target.type},this.id=e.id??f("op"),s.onCreate?.(this);for(let t in e.listeners)this.on(t,e.listeners[t]);e.renderTo&&queueMicrotask(()=>!this.mounted&&!this.destroyed&&!this.parent&&this.mount(e.renderTo))}get el(){return this._el??this.render()}build(){return n(this.tag,this.baseCls)}onRender(){}onMount(){}onDestroy(){}render(){if(this._el)return this._el;let e=this._el=this.build();this.rendered=!0;let t=this.config;if(e.id=this.id,t.cls&&e.classList.add(...t.cls.split(/\s+/).filter(Boolean)),typeof t.style=="string")e.style.cssText+=t.style;else if(t.style)for(let i in t.style)e.style.setProperty(r(i),String(t.style[i]));return t.width!=null&&(e.style.width=o(t.width)),t.height!=null&&(e.style.height=o(t.height)),t.flex!=null&&(e.style.flex=String(t.flex)),t.ariaLabel&&e.setAttribute("aria-label",t.ariaLabel),this.setStableSize(t.stableSize!==!1),(t.hidden||this.denied("hide"))&&(e.hidden=!0),t.tooltip&&(e.dataset.opTip=t.tooltip),t.theme&&this.setTheme(t.theme),this.onRender(),(t.disabled||this.denied("disable"))&&this.setDisabled(!0),t.loading&&this.setLoading(t.loading),e}mount(e=document.body){let t=typeof e=="string"?document.querySelector(e):e;if(!t)throw new Error(`Optikos: mount target not found: ${String(e)}`);return t.appendChild(this.el),this.notifyMount(),this}notifyMount(){this.mounted||this.destroyed||(this.mounted=!0,this.onMount(),this.emit("mount"))}destroy(){if(!this.destroyed){this.destroyed=!0,this.onDestroy();for(let e of this.disposers.splice(0).reverse())e();this.parent?.remove(this,!1),this.parent=void 0,this._el?.remove(),this.emit("destroy"),this.clearListeners()}}own(e){return this.disposers.push(e),e}listen(e,t,i,h){return e.addEventListener(t,i,h),this.own(()=>e.removeEventListener(t,i,h))}later(e,t){let i=setTimeout(e,t);return this.own(()=>clearTimeout(i))}onDisabled(e){}setDisabled(e){this.config.disabled=e||this.denied("disable"),e=!!this.config.disabled,this.rendered&&(this.el.classList.toggle("is-disabled",e),this.onDisabled(e))}denied(e){return!a(this.config.permission)&&(this.config.permissionMode??m())===e}show(){this.denied("hide")||(this.config.hidden=!1,this.rendered&&(this.el.hidden=!1),this.emit("show"))}hide(){this.config.hidden=!0,this.rendered&&(this.el.hidden=!0),this.emit("hide")}isHidden(){return!!this.config.hidden}addCls(e){this.el.classList.add(e)}removeCls(e){this.el.classList.remove(e)}toggleCls(e,t){this.el.classList.toggle(e,t)}setWidth(e){this.config.width=e,this.rendered&&(this.el.style.width=o(e))}setHeight(e){this.config.height=e,this.rendered&&(this.el.style.height=o(e))}setFlex(e){this.config.flex=e,this.rendered&&(this.el.style.flex=String(e))}setStableSize(e){this.config.stableSize=e,this.rendered&&this.el.classList.toggle("op-stable",e)}setTooltip(e){this.config.tooltip=e,this.rendered&&(e?this.el.dataset.opTip=e:delete this.el.dataset.opTip)}setTheme(e){if(typeof e=="string")return void(e?this.el.setAttribute("data-op-theme",e):this.el.removeAttribute("data-op-theme"));let t="--"+this.baseCls+"-";for(let i in e)this.el.style.setProperty(i.startsWith("--")?i:t+r(i),String(e[i]))}setLoading(e){if(this.config.loading=e,!this.rendered)return;let t=this.el;this.mask?.remove(),this.mask=void 0,t.classList.toggle("is-loading",!!e),e?t.setAttribute("aria-busy","true"):t.removeAttribute("aria-busy"),e&&(this.mask=n("div","op-mask",{},n("span","op-spinner",{role:"progressbar","aria-label":p("loading")}),typeof e=="string"?n("div","op-mask__text",{},e):null),t.append(this.mask));for(let i of Array.from(t.children))i!==this.mask&&i.toggleAttribute("inert",!!e)}focusEl(){return this.el}focus(){this.focusEl().focus()}};export{b as a,v as b,a as c,m as d,c as e,g as f};
|
|
2
|
+
//# sourceMappingURL=chunk-KMBTJ5AG.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/core/permission.ts", "../src/core/component.ts"],
|
|
4
|
+
"sourcesContent": ["export type PermissionMode = 'hide' | 'disable';\n\nlet resolver: ((permission: string) => boolean) | undefined;\nlet mode: PermissionMode = 'hide';\n\n/** The app's answer to \"may the user do this?\". Without one, every `permission` is granted. */\nexport function setPermissionResolver(fn: ((permission: string) => boolean) | undefined): void {\n resolver = fn;\n}\n\n/** What a component without access does by default: `hide` (default) or `disable`. A component's `permissionMode` wins. */\nexport function setPermissionMode(m: PermissionMode): void {\n mode = m;\n}\n\nexport const allowed = (permission?: string): boolean => !permission || !resolver || resolver(permission);\nexport const permissionMode = (): PermissionMode => mode;\n\n/** Applies each item's `permission` to a list: denied items are dropped (`hide`) or come back `disabled` (`disable`). Nested `items` too. */\nexport function gate<T extends { permission?: string }>(list: T[] | undefined): T[] | undefined {\n return list?.flatMap((i) => {\n const sub = (i as { items?: T[] }).items;\n if (allowed(i.permission)) return [sub ? { ...i, items: gate(sub) } : i];\n return mode === 'hide' ? [] : [{ ...i, disabled: sub ? () => true : true }];\n });\n}\n", "import { Emitter, type Handler } from './emitter';\nimport { h, uid, kebab, px } from './dom';\nimport { t } from './i18n';\nimport { allowed, permissionMode } from './permission';\n\nexport interface ComponentConfig {\n type?: string;\n id?: string;\n cls?: string;\n style?: string | Record<string, string | number>;\n hidden?: boolean;\n disabled?: boolean;\n width?: number | string;\n height?: number | string;\n flex?: number | string;\n tooltip?: string;\n /** Inside a Form: shown only while this returns true (given the form values). A field hidden this way neither validates nor goes into `getValues`. */\n showIf?: (values: Record<string, any>) => boolean;\n /** Inside a Form: enabled only while this returns true (given the form values). */\n enableIf?: (values: Record<string, any>) => boolean;\n /** A permission name: without it (per `setPermissionResolver`) the component is hidden, or disabled with `permissionMode: 'disable'`. */\n permission?: string;\n permissionMode?: 'hide' | 'disable';\n /**\n * Component-scoped tokens: `{ radius: '0' }` on a button sets `--op-button-radius` (keys starting with `--` are used as is).\n * A string names themes for this component and everything inside it: `'dark'`, `'dark tenant-dark'` (the `data-op-theme` attribute).\n */\n theme?: string | Record<string, string | number>;\n /**\n * Default `true`: the component keeps its size when only its *state* changes (loading, searching, invalid).\n * The CSS reserves room for the state's extra content instead of growing. `false` lets it fit the content.\n * Does not apply to new *content* (`setText` with a longer text).\n */\n stableSize?: boolean;\n /** `true` or a text: shows a mask with a spinner over the component. */\n loading?: boolean | string;\n ariaLabel?: string;\n /** Layout `border`: where the item goes. */\n region?: 'north' | 'south' | 'west' | 'east' | 'center';\n /** Layout `grid`: columns spanned; `'full'` takes the whole row. */\n colspan?: number | 'full';\n listeners?: Record<string, Handler>;\n renderTo?: string | HTMLElement;\n /** Free slot for application data. */\n data?: unknown;\n}\n\n/** Anything that owns children (Container) and accepts being asked to drop one. */\nexport interface Parent {\n remove(child: Component, destroy?: boolean): unknown;\n}\n\nexport class Component<C extends ComponentConfig = ComponentConfig> extends Emitter {\n static type?: string;\n /** Called with every new component, config in hand: `optikos/dev` uses it to warn about options nobody reads. */\n static onCreate?: (c: Component<any>) => void;\n config: C;\n readonly id: string;\n parent?: Component & Parent;\n rendered = false;\n mounted = false;\n destroyed = false;\n protected baseCls = 'op-component';\n protected tag: keyof HTMLElementTagNameMap = 'div';\n private _el?: HTMLElement;\n private disposers: Array<() => void> = [];\n private mask?: HTMLElement;\n\n constructor(config: C = {} as C) {\n super();\n this.config = { ...config, type: config.type ?? (new.target as typeof Component).type };\n this.id = config.id ?? uid('op');\n Component.onCreate?.(this);\n for (const k in config.listeners) this.on(k, config.listeners[k]);\n // `new` and `create` must agree: a microtask, because the subclass constructor has not finished yet. `create` mounts first.\n if (config.renderTo) queueMicrotask(() => !this.mounted && !this.destroyed && !this.parent && this.mount(config.renderTo));\n }\n\n /** The root element. Built on first access. */\n get el(): HTMLElement {\n return this._el ?? this.render();\n }\n\n // ---- lifecycle (template method) ----------------------------------------------------------\n\n /** Builds the root element. Subclasses override to create their own DOM. */\n protected build(): HTMLElement {\n return h(this.tag, this.baseCls);\n }\n protected onRender(): void {}\n protected onMount(): void {}\n protected onDestroy(): void {}\n\n /** Builds the DOM once. Safe to call repeatedly. */\n render(): HTMLElement {\n if (this._el) return this._el;\n const el = (this._el = this.build());\n this.rendered = true;\n const c = this.config;\n el.id = this.id;\n if (c.cls) el.classList.add(...c.cls.split(/\\s+/).filter(Boolean));\n if (typeof c.style === 'string') el.style.cssText += c.style;\n else if (c.style) for (const k in c.style) el.style.setProperty(kebab(k), String(c.style[k]));\n if (c.width != null) el.style.width = px(c.width);\n if (c.height != null) el.style.height = px(c.height);\n if (c.flex != null) el.style.flex = String(c.flex);\n if (c.ariaLabel) el.setAttribute('aria-label', c.ariaLabel);\n this.setStableSize(c.stableSize !== false);\n if (c.hidden || this.denied('hide')) el.hidden = true;\n if (c.tooltip) el.dataset.opTip = c.tooltip;\n if (c.theme) this.setTheme(c.theme);\n this.onRender();\n if (c.disabled || this.denied('disable')) this.setDisabled(true);\n if (c.loading) this.setLoading(c.loading);\n return el;\n }\n\n /** Appends to a target (default `document.body`) and fires `onMount` for the whole subtree. */\n mount(target: string | HTMLElement = document.body): this {\n const parent = typeof target === 'string' ? document.querySelector<HTMLElement>(target) : target;\n if (!parent) throw new Error(`Optikos: mount target not found: ${String(target)}`);\n parent.appendChild(this.el);\n this.notifyMount();\n return this;\n }\n\n /** Called when the element becomes part of a mounted tree. Containers override to reach children. */\n notifyMount(): void {\n if (this.mounted || this.destroyed) return;\n this.mounted = true;\n this.onMount();\n this.emit('mount');\n }\n\n destroy(): void {\n if (this.destroyed) return;\n this.destroyed = true;\n this.onDestroy();\n for (const d of this.disposers.splice(0).reverse()) d();\n this.parent?.remove(this, false);\n this.parent = undefined;\n this._el?.remove();\n this.emit('destroy');\n this.clearListeners();\n }\n\n // ---- resources released on destroy --------------------------------------------------------\n\n /** Registers a function to run on `destroy` (listeners, timers, effects). Returns it. */\n own<F extends () => void>(fn: F): F {\n this.disposers.push(fn);\n return fn;\n }\n\n /** Adds a DOM listener released on `destroy`. */\n listen(target: EventTarget, type: string, fn: (e: any) => void, opts?: AddEventListenerOptions | boolean): () => void {\n target.addEventListener(type, fn, opts);\n return this.own(() => target.removeEventListener(type, fn, opts));\n }\n\n /** `setTimeout` released on `destroy`; returns the cancel function. */\n later(fn: () => void, ms: number): () => void {\n const id = setTimeout(fn, ms);\n return this.own(() => clearTimeout(id));\n }\n\n // ---- common state / setters ---------------------------------------------------------------\n\n protected onDisabled(_disabled: boolean): void {}\n\n setDisabled(disabled: boolean): void {\n this.config.disabled = disabled || this.denied('disable');\n disabled = !!this.config.disabled;\n if (!this.rendered) return;\n this.el.classList.toggle('is-disabled', disabled);\n this.onDisabled(disabled);\n }\n\n /** The user lacks `config.permission` and the way to deal with it is `mode`. */\n private denied(mode: 'hide' | 'disable'): boolean {\n return !allowed(this.config.permission) && (this.config.permissionMode ?? permissionMode()) === mode;\n }\n\n show(): void {\n if (this.denied('hide')) return;\n this.config.hidden = false;\n if (this.rendered) this.el.hidden = false;\n this.emit('show');\n }\n hide(): void {\n this.config.hidden = true;\n if (this.rendered) this.el.hidden = true;\n this.emit('hide');\n }\n isHidden(): boolean {\n return !!this.config.hidden;\n }\n\n addCls(name: string): void {\n this.el.classList.add(name);\n }\n removeCls(name: string): void {\n this.el.classList.remove(name);\n }\n toggleCls(name: string, on?: boolean): void {\n this.el.classList.toggle(name, on);\n }\n\n setWidth(v: number | string): void {\n this.config.width = v;\n if (this.rendered) this.el.style.width = px(v);\n }\n setHeight(v: number | string): void {\n this.config.height = v;\n if (this.rendered) this.el.style.height = px(v);\n }\n setFlex(v: number | string): void {\n this.config.flex = v;\n if (this.rendered) this.el.style.flex = String(v);\n }\n\n setStableSize(stable: boolean): void {\n this.config.stableSize = stable;\n if (this.rendered) this.el.classList.toggle('op-stable', stable);\n }\n\n setTooltip(text: string): void {\n this.config.tooltip = text;\n if (!this.rendered) return;\n if (text) this.el.dataset.opTip = text;\n else delete this.el.dataset.opTip;\n }\n\n setTheme(theme: string | Record<string, string | number>): void {\n if (typeof theme === 'string') return void (theme ? this.el.setAttribute('data-op-theme', theme) : this.el.removeAttribute('data-op-theme'));\n const prefix = '--' + this.baseCls + '-';\n for (const k in theme) this.el.style.setProperty(k.startsWith('--') ? k : prefix + kebab(k), String(theme[k]));\n }\n\n /** Shows (or removes) a loading mask. A string is shown as text under the spinner. */\n setLoading(loading: boolean | string): void {\n this.config.loading = loading;\n if (!this.rendered) return;\n const el = this.el;\n this.mask?.remove();\n this.mask = undefined;\n el.classList.toggle('is-loading', !!loading);\n if (loading) el.setAttribute('aria-busy', 'true');\n else el.removeAttribute('aria-busy');\n if (loading) {\n this.mask = h('div', 'op-mask', {}, h('span', 'op-spinner', { role: 'progressbar', 'aria-label': t('loading') }), typeof loading === 'string' ? h('div', 'op-mask__text', {}, loading) : null);\n el.append(this.mask);\n }\n for (const child of Array.from(el.children)) if (child !== this.mask) child.toggleAttribute('inert', !!loading);\n }\n\n /** The element that receives focus on `focus()`. */\n protected focusEl(): HTMLElement {\n return this.el;\n }\n focus(): void {\n this.focusEl().focus();\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["resolver", "mode", "setPermissionResolver", "fn", "setPermissionMode", "m", "allowed", "permission", "permissionMode", "gate", "list", "i", "sub", "Component", "_Component", "Emitter", "config", "uid", "k", "h", "el", "c", "kebab", "px", "target", "parent", "d", "fn", "type", "opts", "ms", "id", "_disabled", "disabled", "mode", "allowed", "permissionMode", "name", "on", "v", "stable", "text", "theme", "prefix", "loading", "t", "child"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as n}from"./chunk-QT5JRZZJ.js";import{a as l}from"./chunk-TIPK3SCJ.js";import{f as r}from"./chunk-KMBTJ5AG.js";import{b as i}from"./chunk-PZSHOSOS.js";import{f as s}from"./chunk-S4QD5NID.js";var c={info:"info",success:"success",warning:"alert",danger:"error"},o=class extends r{baseCls="op-alert";titleEl=i("div","op-alert__title");textEl=i("div","op-alert__text");iconEl=i("span","op-alert__icon",{"aria-hidden":"true"});onRender(){let t=i("div","op-alert__body",{},this.titleEl,this.textEl);if(this.el.append(this.iconEl,t),this.config.closable){let e=i("button","op-alert__close",{type:"button","aria-label":s("close")},n("x"));this.listen(e,"click",()=>this.close()),this.el.append(e)}this.setTone(this.config.tone??"info"),this.setTitle(this.config.title??""),this.setText(this.config.text??"")}setTone(t){if(this.config.tone=t,!!this.rendered){for(let e of Object.keys(c))this.el.classList.toggle(`op-alert--${e}`,e===t);this.el.setAttribute("role",this.config.role??(t==="danger"||t==="warning"?"alert":"status")),this.setIcon(this.config.icon)}}setIcon(t){if(this.config.icon=t,!this.rendered)return;let e=t===void 0?c[this.config.tone??"info"]:t;this.iconEl.replaceChildren(...e?[n(e)]:[]),this.iconEl.hidden=!e}setTitle(t){this.config.title=t,this.rendered&&(this.titleEl.textContent=t,this.titleEl.hidden=!t)}setText(t){this.config.text=t,this.rendered&&(this.textEl.textContent=t,this.textEl.hidden=!t)}close(){this.hide(),this.emit("close")}};l("alert",o);export{o as a};
|
|
2
|
+
//# sourceMappingURL=chunk-KNWO4NXX.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/feedback/alert/alert.ts"],
|
|
4
|
+
"sourcesContent": ["import { Component, type ComponentConfig } from '../../../core/component';\nimport { register } from '../../../core/registry';\nimport { h } from '../../../core/dom';\nimport { t } from '../../../core/i18n';\nimport { iconEl } from '../../base/icon/icon';\n\nexport type AlertTone = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface AlertConfig extends ComponentConfig {\n /** Default `info`. */\n tone?: AlertTone;\n title?: string;\n text?: string;\n /** Default by tone; `false` leaves it out. */\n icon?: string | false;\n /** A close button: hides the alert and fires `close`. */\n closable?: boolean;\n /** Default `alert` for `warning` and `danger` (read at once), `status` for the others (read when idle). */\n role?: 'alert' | 'status' | 'note';\n}\n\nconst ICON: Record<AlertTone, string> = { info: 'info', success: 'success', warning: 'alert', danger: 'error' };\n\n/** A message in the page, not over it: a form error, \"nothing here yet\", a notice. */\nexport class Alert extends Component<AlertConfig> {\n protected override baseCls = 'op-alert';\n private titleEl = h('div', 'op-alert__title');\n private textEl = h('div', 'op-alert__text');\n private iconEl = h('span', 'op-alert__icon', { 'aria-hidden': 'true' });\n\n protected override onRender() {\n const body = h('div', 'op-alert__body', {}, this.titleEl, this.textEl);\n this.el.append(this.iconEl, body);\n if (this.config.closable) {\n const x = h('button', 'op-alert__close', { type: 'button', 'aria-label': t('close') }, iconEl('x'));\n this.listen(x, 'click', () => this.close());\n this.el.append(x);\n }\n this.setTone(this.config.tone ?? 'info');\n this.setTitle(this.config.title ?? '');\n this.setText(this.config.text ?? '');\n }\n\n setTone(tone: AlertTone) {\n this.config.tone = tone;\n if (!this.rendered) return;\n for (const k of Object.keys(ICON)) this.el.classList.toggle(`op-alert--${k}`, k === tone);\n this.el.setAttribute('role', this.config.role ?? (tone === 'danger' || tone === 'warning' ? 'alert' : 'status'));\n this.setIcon(this.config.icon);\n }\n\n setIcon(icon: string | false | undefined) {\n this.config.icon = icon;\n if (!this.rendered) return;\n const name = icon === undefined ? ICON[this.config.tone ?? 'info'] : icon;\n this.iconEl.replaceChildren(...(name ? [iconEl(name)] : []));\n this.iconEl.hidden = !name;\n }\n\n setTitle(title: string) {\n this.config.title = title;\n if (!this.rendered) return;\n this.titleEl.textContent = title;\n this.titleEl.hidden = !title;\n }\n\n setText(text: string) {\n this.config.text = text;\n if (!this.rendered) return;\n this.textEl.textContent = text;\n this.textEl.hidden = !text;\n }\n\n /** Hides it and fires `close`; `show()` brings it back. */\n close() {\n this.hide();\n this.emit('close');\n }\n}\nregister('alert', Alert);\n"],
|
|
5
|
+
"mappings": "wMAqBA,IAAMA,EAAkC,CAAE,KAAM,OAAQ,QAAS,UAAW,QAAS,QAAS,OAAQ,OAAQ,EAGjGC,EAAN,cAAoBC,CAAuB,CAC7B,QAAU,WACrB,QAAUC,EAAE,MAAO,iBAAiB,EACpC,OAASA,EAAE,MAAO,gBAAgB,EAClC,OAASA,EAAE,OAAQ,iBAAkB,CAAE,cAAe,MAAO,CAAC,EAEnD,UAAW,CAC5B,IAAMC,EAAOD,EAAE,MAAO,iBAAkB,CAAC,EAAG,KAAK,QAAS,KAAK,MAAM,EAErE,GADA,KAAK,GAAG,OAAO,KAAK,OAAQC,CAAI,EAC5B,KAAK,OAAO,SAAU,CACxB,IAAMC,EAAIF,EAAE,SAAU,kBAAmB,CAAE,KAAM,SAAU,aAAcG,EAAE,OAAO,CAAE,EAAGC,EAAO,GAAG,CAAC,EAClG,KAAK,OAAOF,EAAG,QAAS,IAAM,KAAK,MAAM,CAAC,EAC1C,KAAK,GAAG,OAAOA,CAAC,CAClB,CACA,KAAK,QAAQ,KAAK,OAAO,MAAQ,MAAM,EACvC,KAAK,SAAS,KAAK,OAAO,OAAS,EAAE,EACrC,KAAK,QAAQ,KAAK,OAAO,MAAQ,EAAE,CACrC,CAEA,QAAQG,EAAiB,CAEvB,GADA,KAAK,OAAO,KAAOA,EACf,EAAC,KAAK,SACV,SAAWC,KAAK,OAAO,KAAKT,CAAI,EAAG,KAAK,GAAG,UAAU,OAAO,aAAaS,CAAC,GAAIA,IAAMD,CAAI,EACxF,KAAK,GAAG,aAAa,OAAQ,KAAK,OAAO,OAASA,IAAS,UAAYA,IAAS,UAAY,QAAU,SAAS,EAC/G,KAAK,QAAQ,KAAK,OAAO,IAAI,EAC/B,CAEA,QAAQE,EAAkC,CAExC,GADA,KAAK,OAAO,KAAOA,EACf,CAAC,KAAK,SAAU,OACpB,IAAMC,EAAOD,IAAS,OAAYV,EAAK,KAAK,OAAO,MAAQ,MAAM,EAAIU,EACrE,KAAK,OAAO,gBAAgB,GAAIC,EAAO,CAACJ,EAAOI,CAAI,CAAC,EAAI,CAAC,CAAE,EAC3D,KAAK,OAAO,OAAS,CAACA,CACxB,CAEA,SAASC,EAAe,CACtB,KAAK,OAAO,MAAQA,EACf,KAAK,WACV,KAAK,QAAQ,YAAcA,EAC3B,KAAK,QAAQ,OAAS,CAACA,EACzB,CAEA,QAAQC,EAAc,CACpB,KAAK,OAAO,KAAOA,EACd,KAAK,WACV,KAAK,OAAO,YAAcA,EAC1B,KAAK,OAAO,OAAS,CAACA,EACxB,CAGA,OAAQ,CACN,KAAK,KAAK,EACV,KAAK,KAAK,OAAO,CACnB,CACF,EACAC,EAAS,QAASb,CAAK",
|
|
6
|
+
"names": ["ICON", "Alert", "Component", "h", "body", "x", "t", "iconEl", "tone", "k", "icon", "name", "title", "text", "register"]
|
|
7
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as S}from"./chunk-
|
|
1
|
+
import{a as S}from"./chunk-RRGAJ7T4.js";import{a as F}from"./chunk-J6D4T4WY.js";import{a as w}from"./chunk-TJXH3F7Z.js";import{a as f}from"./chunk-KVUELLYF.js";import{c as d}from"./chunk-U5RENLU4.js";import{a as x}from"./chunk-RI62AESU.js";import{a as y}from"./chunk-TIPK3SCJ.js";import{f as b}from"./chunk-KMBTJ5AG.js";import{b as h}from"./chunk-PZSHOSOS.js";import{e as c,f as l}from"./chunk-S4QD5NID.js";c("en",{stepBack:"Back",stepNext:"Next",stepFinish:"Finish",stepReview:"Review"});c("pt-BR",{stepBack:"Voltar",stepNext:"Pr\xF3ximo",stepFinish:"Concluir",stepReview:"Revis\xE3o"});var u=class extends b{baseCls="op-stepform__review";setContent(e){this.el.replaceChildren(...e)}},m=class extends F{baseCls="op-form op-stepform";stepper;body;pane;backBtn;nextBtn;finishBtn;index=0;pending;notes=[];noteEl;constructor(e){let n,t=e.steps??[],i=e.review?new u:void 0,s=new S({steps:[...t.map(({title:a,description:_,icon:k,optional:R})=>({title:a,description:_,icon:k,optional:R})),...i?[{title:e.reviewTitle??l("stepReview")}]:[]]}),r=[...t.map(a=>({type:"container",title:a.title,cls:"op-stepform__step",layout:a.layout??{type:"grid",columns:2,gap:12},items:a.items})),...i?[{type:"container",title:e.reviewTitle??l("stepReview"),cls:"op-stepform__step",items:[i]}]:[]],o=new d({cls:"op-stepform__body",flex:1,layout:{type:"card"},items:r}),p=new f({text:e.backText??l("stepBack"),handler:()=>n.back()}),g=new f({text:e.nextText??l("stepNext"),variant:"primary",handler:()=>n.next()}),v=new f({text:e.finishText??l("stepFinish"),variant:"primary",htmlType:"submit"}),B=e.cancelText?[new f({text:e.cancelText,variant:"ghost",handler:()=>n.emit("cancel")})]:[],T=new w({cls:"op-stepform__footer",items:[...B,"->",p,g,v]});super({...e,layout:{type:"vbox"},items:[s,o,T]}),n=this,Object.assign(this,{stepper:s,body:o,pane:i,backBtn:p,nextBtn:g,finishBtn:v}),s.on("before-select",a=>(n.goTo(a),!1)),o.on("activate",()=>n.onActivate()),this.own(()=>this.stop())}cfg(){return this.config}count(){return this.body.items.length}real(){return this.count()-(this.pane?1:0)}getStep(){return this.index}getStepCount(){return this.count()}getStepper(){return this.stepper}stepFields(e){let n=this.body.items[e];return n instanceof d?n.query(t=>t instanceof x):[]}validateStep(e){if(e>=this.real())return!0;let n=this.stepFields(e).filter(t=>!t.validate());return this.stepper.setStepState(e,n.length?"error":"done"),!n.length}note(e,n){this.notes[e]=n,e===this.index&&this.showNote()}showNote(){if(!this.rendered)return;let e=this.notes[this.index]??"";if(!this.noteEl){if(!e)return;this.body.el.before(this.noteEl=h("div","op-stepform__note",{role:"alert"}))}this.noteEl.textContent=e,this.noteEl.hidden=!e}busy(e){this.el.classList.toggle("is-validating",e),this.nextBtn.setLoading(e),this.finishBtn.setLoading(e)}stop(){this.pending&&(this.pending.abort(),this.pending=void 0,this.busy(!1))}async check(e){let n=this.cfg().steps[e]?.validate;if(!n)return!0;this.stop();let t=this.pending=new AbortController;this.busy(!0);let i;try{i=await n(this.getValues(),this,t.signal)}catch(r){i=String(r?.message??r)}if(t.signal.aborted)return!1;this.pending=void 0,this.busy(!1);let s=i===!0||i==null;if(this.note(e,typeof i=="string"?i:""),!s&&typeof i=="object")for(let[r,o]of Object.entries(i))this.getField(r)?.setError(o);return s||this.stepper.setStepState(e,"error"),s}goTo(e){if(e<0||e>=this.count()||e===this.index||this.pending&&e>this.index||(this.stop(),this.emit("before-step-change",this.index,e)===!1))return Promise.resolve(!1);let n=this.index,t=s=>this.index!==n?!1:(s!==this.index&&this.body.setActiveItem(s),s!==e&&this.stepFields(s).find(r=>r.getError())?.focus(),s===e);if(this.cfg().linear===!1||e<n)return Promise.resolve(t(e));let i=s=>{for(;s<e;s++){if(!this.validateStep(s))return t(s);if(this.cfg().steps[s]?.validate)return this.check(s).then(r=>r?i(s+1):t(s))}return t(e)};return Promise.resolve(i(n))}next(){return this.goTo(this.index+1)}back(){return this.goTo(this.index-1)}onActivate(){let e=this.body.items.indexOf(this.body.getActiveItem());if(e<0)return;let n=this.index;this.index=e,this.stepper.setActive(e);let t=this.count()-1;this.backBtn.config.hidden=e===0,this.nextBtn.config.hidden=e===t,this.finishBtn.config.hidden=e!==t;for(let[i,s]of[[this.backBtn,e===0],[this.nextBtn,e===t],[this.finishBtn,e!==t]])i.rendered&&(i.el.hidden=s);if(this.pane&&e===t&&this.refreshReview(),this.showNote(),e!==n&&(this.emit("step-change",e,n),this.rendered&&this.el.isConnected&&!this.stepFields(e).some(i=>i.getError()))){let i=this.body.items[e]?.el;this.config.autoFocus?this.stepFields(e)[0]?.focus():i&&(i.tabIndex=-1,i.focus())}}refreshReview(){let e=this.getValues(),n=this.cfg().review;if(typeof n=="function")return this.pane.setContent([n(e,this)]);let t=[];for(let i=0;i<this.real();i++){let s=this.stepFields(i).filter(r=>r.name);s.length&&(t.push(h("h3","op-stepform__review-title",{},String(this.body.items[i].config.title??""))),t.push(h("dl","op-stepform__review-list",{},...s.flatMap(r=>[h("dt","",{},r.config.label??r.config.boxLabel??r.name),h("dd","",{},this.show_(r))]))))}this.pane.setContent(t)}show_(e){let n=e;if(n.getRows)return n.getRows().map((r,o)=>n.getRowFields(o).map(p=>this.show_(p)).filter(p=>p!=="\u2014").join(" \xB7 ")).join(`
|
|
2
2
|
`)||"\u2014";let t=e.getValue();if(typeof t=="boolean")return t?"\u2713":"\u2014";if(e.config.inputType==="password")return t?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":"\u2014";let i=e.getDisplayText();if(i)return i;let s=r=>Array.isArray(r)?r.map(s).join(", "):r&&typeof r=="object"?Object.values(r).map(s).join(" \u2013 "):`${r??""}`;return s(t)||"\u2014"}submit(){if(this.index<this.count()-1)return this.next(),!1;let e=()=>{for(let t=0;t<this.real();t++)this.stepper.setStepState(t,this.stepFields(t).some(i=>i.getError())?"error":"done")};if(this.cfg().steps.some(t=>t.validate)){if(this.pending||this.emit("before-submit")===!1||!this.validate())return e(),!1;let t=this.index;return(async()=>{for(let s=0;s<this.real();s++)if(!await this.check(s)){if(this.index!==t||this.destroyed)return;s!==t&&this.body.setActiveItem(s),this.stepFields(s).find(r=>r.getError())?.focus();return}e();let i=this.getValues();this.emit("submit",i),this.emit("finish",i)})(),!1}let n=super.submit();return e(),n&&this.emit("finish",this.getValues()),n}reset(){this.stop(),this.notes=[],super.reset(),this.clearErrors();for(let e=0;e<this.count();e++)this.stepper.setStepState(e,"pending");this.index!==0&&this.body.setActiveItem(0),this.showNote()}};y("stepform",m);export{m as a};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
//# sourceMappingURL=chunk-KP7O5MVL.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as l}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as l}from"./chunk-QT5JRZZJ.js";import{a as n}from"./chunk-TIPK3SCJ.js";import{f as o}from"./chunk-KMBTJ5AG.js";import{b as i}from"./chunk-PZSHOSOS.js";import{g as r}from"./chunk-4AA4FQEM.js";var s=class extends o{baseCls="op-button";tag="button";textEl;busyTextEl;iconHost;build(){let t=this.config,e=i("button","op-button",{type:t.htmlType??"button"});return this.iconHost=i("span","op-button__icon"),this.textEl=i("span","op-button__text"),this.busyTextEl=i("span","op-button__busy-text"),e.append(i("span","op-button__face",{},this.iconHost,this.textEl),i("span","op-button__busy",{},i("span","op-spinner op-button__spinner",{"aria-hidden":"true"}),this.busyTextEl)),e}onRender(){let t=this.config;this.setText(t.text??""),this.setIcon(t.icon??""),this.setVariant(t.variant??"default"),this.setPressed(!!t.pressed),!t.text&&!t.ariaLabel&&!t.tooltip&&console.warn("Optikos: icon-only Button needs ariaLabel"),this.listen(this.el,"click",e=>{if(t.disabled||t.loading||(t.toggle&&(this.setPressed(!t.pressed),this.emit("toggle",t.pressed)),this.emit("click",e)===!1))return e.preventDefault();t.handler?.(this,e)})}onDisabled(t){this.el.disabled=t}setText(t){this.config.text=t,this.rendered&&(this.textEl.textContent=t,this.textEl.hidden=!t,this.busyTextEl.textContent=this.config.loadingText??t)}setIcon(t){this.config.icon=t,this.rendered&&(this.iconHost.replaceChildren(...t?[l(t)]:[]),this.iconHost.hidden=!t,this.el.classList.toggle("op-button--icon-right",this.config.iconPos==="right"))}setVariant(t){if(this.config.variant=t,!!this.rendered)for(let e of["default","primary","danger","ghost"])this.el.classList.toggle(`op-button--${e}`,e===t)}setPressed(t){this.config.pressed=t,this.rendered&&(this.el.classList.toggle("is-pressed",t),this.config.toggle&&this.el.setAttribute("aria-pressed",String(t)))}setLoading(t){if(this.config.loading=t,typeof t=="string"&&this.setLoadingText(t),!!this.rendered){this.el.classList.toggle("is-loading",!!t);for(let e of["aria-busy","aria-disabled"])t?this.el.setAttribute(e,"true"):this.el.removeAttribute(e)}}setLoadingText(t){this.config.loadingText=t,this.rendered&&(this.busyTextEl.textContent=t)}pulse(){r(this.el)}click(){this.el.click()}};n("button",s);export{s as a};
|
|
2
|
+
//# sourceMappingURL=chunk-KVUELLYF.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as n}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as n}from"./chunk-IB5T27PW.js";import{a as o}from"./chunk-TIPK3SCJ.js";var s=class extends n{baseCls="op-field op-textfield op-picker op-combobox";term="";emptyValue(){return null}isEmpty(t){return t==null||t===""}visibleItems(){let t=this.typed?this.term.trim().toLowerCase():"";if(!t)return this.items;let i=this.config.filter??"contains",p=typeof i=="function"?i:i==="startsWith"?(e,r)=>e.label.toLowerCase().startsWith(r):(e,r)=>e.label.toLowerCase().includes(r);return this.items.filter(e=>p(e,t))}onType(t){this.term=t,this.refreshList(),this.list.setHighlight(t),this.open()}pick(t){this.term="",super.pick(t),this.list.setHighlight("")}settle(){super.settle(),this.term="",this.list.setHighlight("")}};o("combobox",s);export{s as a};
|
|
2
|
+
//# sourceMappingURL=chunk-LRUKKIYA.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as w}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as w}from"./chunk-QT5JRZZJ.js";import{c as y}from"./chunk-U5RENLU4.js";import{a as m}from"./chunk-RI62AESU.js";import{a as g}from"./chunk-TIPK3SCJ.js";import{f as p}from"./chunk-KMBTJ5AG.js";import{b as n}from"./chunk-PZSHOSOS.js";import{e as c,f as l}from"./chunk-S4QD5NID.js";import{b as v}from"./chunk-V5G5JECN.js";c("en",{flAdd:"Add",flRemove:"Remove {row}",flUp:"Move {row} up",flDown:"Move {row} down",flEmpty:"Nothing added yet",flMin:"Add at least {n}",flMax:"At most {n}"});c("pt-BR",{flAdd:"Adicionar",flRemove:"Remover {row}",flUp:"Subir {row}",flDown:"Descer {row}",flEmpty:"Nada adicionado ainda",flMin:"Adicione pelo menos {n}",flMax:"No m\xE1ximo {n}"});var u=class extends m{baseCls="op-field op-fieldlist";rowsEl;addBtn;emptyEl;rows=[];syncing=!1;emptyValue(){return[]}isEmpty(t){return!t?.length}createControl(){return this.rowsEl=n("div","op-fieldlist__rows",{role:"group"}),this.emptyEl=n("div","op-fieldlist__empty",{},l("flEmpty")),this.addBtn=n("button","op-fieldlist__add",{type:"button"},w("plus"),n("span","",{},this.config.addText??l("flAdd"))),this.listen(this.addBtn,"click",()=>this.addRow()),this.inputEl=this.addBtn,n("div","op-fieldlist__box",{},this.rowsEl,this.emptyEl,this.addBtn)}onRender(){super.onRender(),this.rowsEl.setAttribute("aria-labelledby",this.el.querySelector(".op-field__label").id||=`${this.id}-label`)}label(t){return`${this.config.label??""} ${t+1}`.trim()}makeRow(t){let e=s=>{let i=s instanceof p?s.config:s,r={...i,...Array.isArray(i.items)?{items:i.items.map(e)}:{}};return s instanceof p?new s.constructor(r):r},o=new y({cls:"op-fieldlist__row",layout:this.config.rowLayout??{type:"hbox",align:"flex-start"},items:(this.config.items??[]).map(e)});for(let s of o.items)s.config.width!=null&&s.config.flex==null&&(s.config.flex="none");for(let s of this.rowFields(o))s.fillFrom(t),s.on("change",()=>this.syncing||this.commitRows());return o}rowFields(t){return t.query(e=>e instanceof m)}collect(){return this.rows.map(t=>{let e={};for(let o of this.rowFields(t))o.name&&v(e,o.name,o.getValue());return e})}commitRows(){this.commit(this.collect()),this.paintRows(),this.getError()&&this.validate()}paintRows(){if(!this.rendered)return;let{min:t=0,max:e=1/0,reorderable:o=!0}=this.config;this.rowsEl.replaceChildren(...this.rows.map((s,i)=>{let r=s.el;r.setAttribute("role","group"),r.setAttribute("aria-label",this.label(i)),r.classList.toggle("is-first",i===0),r.querySelector(":scope > .op-fieldlist__tools")?.remove();let a=(b,h,R,E)=>{let f=n("button","op-fieldlist__tool",{type:"button","data-act":h,"aria-label":l(h,{row:this.label(i)}),"data-op-tip":l(h,{row:this.label(i)})},w(b));return f.disabled=R||!!this.config.disabled||!!this.config.readonly,f.addEventListener("click",E),f},d=n("div","op-fieldlist__tools");return o&&d.append(a("chevron-up","flUp",i===0,()=>this.moveRow(i,i-1)),a("chevron-down","flDown",i===this.rows.length-1,()=>this.moveRow(i,i+1))),d.append(a("trash","flRemove",this.rows.length<=t,()=>this.removeRow(i))),r.append(d),r})),this.emptyEl.hidden=this.rows.length>0,this.el.classList.toggle("is-empty",!this.rows.length),this.addBtn.disabled=this.rows.length>=e||!!this.config.disabled||!!this.config.readonly}applyValue(t){this.syncing=!0,this.rows.forEach(o=>o.destroy()),this.rows=(t??[]).map(o=>this.makeRow(o)),this.syncing=!1;let e=this.isEqual(this.original,t);this.value=this.collect(),e&&(this.original=this.value),this.paintRows()}addRow(t){let e=this.config.max??1/0;if(this.rows.length>=e)return;let o=this.config.newRow;this.rows.push(this.makeRow(t??(typeof o=="function"?o():{...o}))),this.commitRows(),this.emit("add",this.rows.length-1),this.rowFields(this.rows[this.rows.length-1])[0]?.focus()}removeRow(t){if(!this.rows[t]||this.rows.length<=(this.config.min??0)||this.emit("before-remove",t)===!1)return;let[e]=this.rows.splice(t,1);e.destroy(),this.commitRows(),this.emit("remove",t);let o=this.rows[Math.min(t,this.rows.length-1)];o?this.rowFields(o)[0]?.focus():this.rendered&&this.addBtn.focus()}moveRow(t,e){if(!this.rows[t]||e<0||e>=this.rows.length||t===e)return;let[o]=this.rows.splice(t,1);this.rows.splice(e,0,o),this.commitRows(),this.emit("move",t,e);let s=["flUp","flDown"].map(i=>o.el.querySelector(`[data-act="${i}"]`));(e<t?s:s.reverse()).find(i=>i&&!i.disabled)?.focus()}getRows(){return this.rows}getRowFields(t){return this.rows[t]?this.rowFields(this.rows[t]):[]}fieldAt(t){let[e,...o]=t.split(".");return this.getRowFields(Number(e)).find(s=>s.name===o.join("."))}setAddText(t){this.config.addText=t,this.rendered&&(this.addBtn.lastElementChild.textContent=t)}setMin(t){this.config.min=t,this.paintRows()}setMax(t){this.config.max=t,this.paintRows()}check(){let t=this.value?.length??0,{min:e=0,max:o=1/0}=this.config;return t&&t<e?l("flMin",{n:e}):t>o?l("flMax",{n:o}):super.check()}validate(){let t=this.rows.flatMap(e=>this.rowFields(e)).map(e=>e.validate()).every(Boolean);return super.validate()&&t}isValid(){return super.isValid()&&this.rows.every(t=>this.rowFields(t).every(e=>e.isValid()))}focus(){let t=this.rows.flatMap(e=>this.rowFields(e)).find(e=>e.getError());t?t.focus():this.addBtn?.focus()}onDisabled(t){this.rows.forEach(e=>e.setDisabled(t)),this.paintRows()}onReadonly(t){this.rows.forEach(e=>this.rowFields(e).forEach(o=>o.setReadonly(t))),this.paintRows()}onDestroy(){this.rows.forEach(t=>t.destroy()),super.onDestroy()}};g("fieldlist",u);export{u as a};
|
|
2
|
+
//# sourceMappingURL=chunk-M2XOIEPY.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as p}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as p}from"./chunk-SQTM4QFP.js";import{b as a}from"./chunk-OWEQT2HN.js";import{a as s}from"./chunk-TIPK3SCJ.js";import{b as i,f as n}from"./chunk-PZSHOSOS.js";var o=class extends p{baseCls="op-field op-textfield op-textarea";createInput(){return i("textarea","op-textfield__input op-textarea__input",{rows:this.config.rows??3})}onKey(e){if(e.key==="Enter"){(e.ctrlKey||e.metaKey)&&this.emit("enter",this.getValue());return}super.onKey(e)}onInput(){super.onInput(),this.grow()}applyValue(e){super.applyValue(e),this.grow()}notifyMount(){super.notifyMount(),this.grow()}grow(){let e=this.config;if(!e.autoGrow||!this.rendered)return;let t=this.input;t.style.height="auto";let r=t.scrollHeight;if(e.maxRows){let l=a(t,"1lh")||t.scrollHeight/(t.rows||1);r=Math.min(r,l*e.maxRows)}r&&(t.style.height=`${n(r,0,1/0)}px`)}setRows(e){this.config.rows=e,this.rendered&&(this.input.rows=e)}};s("textarea",o);export{o as a};
|
|
2
|
+
//# sourceMappingURL=chunk-MBRCE5A7.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as o}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as o}from"./chunk-IB5T27PW.js";import{a as t}from"./chunk-TIPK3SCJ.js";var e=class extends o{baseCls="op-field op-textfield op-picker op-select";editable(){return!1}emptyValue(){return null}isEmpty(r){return r==null||r===""}};t("select",e);export{e as a};
|
|
2
|
+
//# sourceMappingURL=chunk-MMPPDQ2E.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as n}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as n}from"./chunk-QT5JRZZJ.js";import{a as l}from"./chunk-RI62AESU.js";import{a as r}from"./chunk-TIPK3SCJ.js";import{b as o}from"./chunk-PZSHOSOS.js";var p=class extends l{baseCls="op-field op-checkboxgroup";group;inputs=[];emptyValue(){return[]}isEmpty(e){return!e?.length}isEqual(e,t){return(e??[]).length===(t??[]).length&&(e??[]).every((i,s)=>i===t[s])}createControl(){return this.group=o("div","op-checkboxgroup__options",{role:"group","aria-labelledby":`${this.id}-label`}),this.listen(this.group,"change",e=>{if(!this.inputs.includes(e.target))return;if(this.config.readonly)return this.applyValue(this.value);let t=this.opts();this.commit(this.inputs.flatMap((i,s)=>i.checked?[t[s].value]:[])),this.paint()}),this.buildOptions(),this.inputEl=this.inputs[0]??this.group,this.group}opts(){return(this.config.options??[]).map(e=>typeof e=="object"?e:{value:e,label:e,disabled:!1})}buildOptions(){this.inputs=[],this.group.replaceChildren(...this.opts().map(e=>{let t=o("input","op-checkbox__input",{type:"checkbox",value:String(e.value),disabled:!!e.disabled});return this.inputs.push(t),o("label","op-checkbox op-checkbox__label",{},t,o("span","op-checkbox__box",{},n("check")),o("span","op-checkbox__text",{},e.label))})),this.group.classList.toggle("op-checkboxgroup__options--horizontal",this.config.direction==="horizontal")}onRender(){super.onRender(),this.el.querySelector(".op-field__label").id=`${this.id}-label`}applyValue(e){let t=this.opts();this.inputs.forEach((i,s)=>i.checked=(e??[]).includes(t[s].value)),this.paint()}paint(){for(let e of this.inputs)e.closest("label").classList.toggle("is-checked",e.checked)}getDisplayText(){let e=this.getValue()??[];return this.opts().filter(t=>e.includes(t.value)).map(t=>t.label).join(", ")}onDisabled(e){this.inputs.forEach((t,i)=>t.disabled=e||!!this.opts()[i].disabled)}setOptions(e){this.config.options=e,this.rendered&&(this.buildOptions(),this.inputEl=this.inputs[0]??this.group,this.applyValue(this.value),this.onDisabled(!!this.config.disabled))}};r("checkboxgroup",p);export{p as a};
|
|
2
|
+
//# sourceMappingURL=chunk-MRDX3RVJ.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as C}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as C}from"./chunk-RI62AESU.js";import{a as E}from"./chunk-TIPK3SCJ.js";import{b as l}from"./chunk-PZSHOSOS.js";import{c as S}from"./chunk-6NCXO5ZP.js";import{c as m}from"./chunk-2UPUC4RK.js";var _=.35,w=y=>(String(y).split(".")[1]??"").length,x=class extends C{baseCls="op-field op-dial";face;tape;needle;readout;cache;pos=0;angle=0;shown="";stopGlide;constructor(t={}){super(t),this.value=this.original=this.normalize(this.value)}get isCircle(){return this.config.shape==="circle"}get items(){return this.cache??=this.buildItems()}fmt(t){return this.config.format?this.config.format(t):String(t)}buildItems(){let t=this.config,e;if(t.options)e=t.options.map(a=>typeof a=="object"?a:{value:a});else{let a=t.min??0,h=t.step||1,p=Math.max(1,Math.floor(((t.max??100)-a)/h+1e-9)+1),c=Math.max(w(h),w(a));e=Array.from({length:p},(D,f)=>({value:Number((a+f*h).toFixed(c))}))}let s=t.snap??(t.options?1:10),i=(a,h)=>s===!1?!1:Array.isArray(s)?s.includes(a):t.options?h%s===0:Math.abs(a/s-Math.round(a/s))<1e-9;return e.map((a,h)=>({value:a.value,label:a.label??this.fmt(a.value),major:i(a.value,h)}))}emptyValue(){let t=this.config.options?.[0];return t===void 0?this.config.min??0:typeof t=="object"?t.value:t}isEmpty(){return!1}indexOf(t){let e=this.items;if(this.config.options)return Math.max(0,e.findIndex(i=>i.value===t));let s=Math.round((t-(this.config.min??0))/(this.config.step||1));return Math.max(0,Math.min(e.length-1,Number.isFinite(s)?s:0))}normalize(t){return this.items[this.indexOf(t)].value}get index(){return this.indexOf(this.value)}createControl(){return this.readout=l("div","op-dial__readout",{"aria-hidden":"true"}),this.tape=l("div","op-dial__tape"),this.needle=l("div","op-dial__needle"),this.face=l("div","op-dial__face",{role:"slider",tabindex:0,"aria-orientation":"horizontal"},l("div","op-dial__window",{},this.tape),this.needle),this.listen(this.face,"pointerdown",t=>this.onDown(t)),this.listen(this.face,"keydown",t=>this.onKey(t)),this.paintTicks(),this.inputEl=this.face,l("div","op-dial__box",{},this.readout,this.face)}onRender(){super.onRender();let t=this.el.querySelector(".op-field__label");t.id=`${this.id}-label`,this.config.ariaLabel||this.face.setAttribute("aria-labelledby",t.id)}paintTicks(){let t=this.items,e=this.config.labels??"snap";this.rendered&&(this.el.classList.toggle("op-dial--circle",this.isCircle),this.el.classList.toggle("op-dial--list",!!this.config.options)),this.tape.replaceChildren(...t.map((s,i)=>{let a=l("span",`op-dial__tick${s.major?" is-major":""}`,{"data-i":i});return a.style.setProperty("--i",String(i)),a.style.setProperty("--a",`${i*360/t.length}deg`),(e==="all"||e==="snap"&&s.major)&&a.append(l("span","op-dial__tick-label",{},s.label)),a}))}build(){let t=super.build();return t.classList.toggle("op-dial--circle",this.isCircle),t.classList.toggle("op-dial--list",!!this.config.options),t}spacing(){let[t,e]=this.tape.children;return e&&t&&e.offsetLeft-t.offsetLeft||12}place(){this.needle.style.transform=this.isCircle?`translateX(-50%) rotate(${this.angle}deg)`:"",this.tape.style.setProperty("--pos",String(this.isCircle?0:this.pos))}aim(t){let e=t*360/this.items.length;this.angle+=((e-this.angle)%360+540)%360-180}applyValue(t){let e=this.indexOf(t);this.pos=e,this.aim(e),this.place(),this.paintState(e)}paintState(t){let e=this.items,s=e[t],i=this.face,a=!!this.config.options;i.setAttribute("aria-valuemin",String(a?0:e[0].value)),i.setAttribute("aria-valuemax",String(a?e.length-1:e[e.length-1].value)),i.setAttribute("aria-valuenow",String(a?t:s.value)),i.setAttribute("aria-valuetext",s.label),this.tape.querySelector(".is-current")?.classList.remove("is-current"),this.tape.children[t]?.classList.add("is-current"),this.paintReadout(s.label)}paintReadout(t){let e=this.shown;if(t===e)return;this.shown=t;let s=i=>i.replace(/\d/g,"0");if(e&&s(e)===s(t)){[...t].forEach((i,a)=>/\d/.test(i)&&this.readout.children[a].firstElementChild.setAttribute("style",`--d:${i}`));return}if(this.readout.replaceChildren(...[...t].map(i=>/\d/.test(i)?l("span","op-dial__digit",{},l("span","op-dial__reel",{style:`--d:${i}`},..."0123456789".split("").map(a=>l("span","",{},a)))):l("span","",{},i))),e&&m.isOn()&&typeof this.readout.animate=="function"){let i=this.items.findIndex(a=>a.label===t)>=this.items.findIndex(a=>a.label===e);this.readout.animate([{translate:`0 ${i?35:-35}%`,opacity:0},{translate:"0 0",opacity:1}],{duration:m.ms("swap"),easing:m.easing("enter")})}}choose(t){let e=this.items;t=Math.max(0,Math.min(e.length-1,t)),this.pos=t,this.aim(t),this.place(),this.paintState(t),this.commit(e[t].value)}get locked(){return!!(this.config.disabled||this.config.readonly)}onKey(t){if(this.locked)return;let e=this.index,s=this.items.length,i={ArrowRight:e+1,ArrowUp:e+1,ArrowLeft:e-1,ArrowDown:e-1,PageUp:this.snapFrom(e,1),PageDown:this.snapFrom(e,-1),Home:0,End:s-1};t.key in i&&(t.preventDefault(),this.choose(i[t.key]),this.flushSettled(),this.emit("slide-end",this.value))}snapFrom(t,e){let s=this.items;for(let i=t+e;i>=0&&i<s.length;i+=e)if(s[i].major)return i;return e>0?s.length-1:0}angleAt(t){let e=this.face.getBoundingClientRect();return(Math.atan2(t.clientX-(e.left+e.width/2),e.top+e.height/2-t.clientY)*180/Math.PI+360)%360}onDown(t){if(this.locked||t.button)return;t.preventDefault(),this.stopGlide?.();let e=this.face;e.focus(),e.setPointerCapture?.(t.pointerId);let s=this.items.length,i=this.spacing(),a=t.clientX,h=this.pos,p=!1,c=[{x:t.clientX,t:t.timeStamp}];this.el.classList.add("is-dragging"),this.emit("slide-start");let D=n=>{if(this.isCircle){let d=this.angleAt(n);return this.angle+=((d-this.angle)%360+540)%360-180,this.place(),Math.round(d/360*s)%s}let r=h-(n.clientX-a)/i,o=r<0?r:r>s-1?r-(s-1):0;return this.pos=o?r-o+Math.sign(o)*S(Math.abs(o)*i,i*2)/i:r,this.place(),Math.round(Math.max(0,Math.min(s-1,r)))},f=n=>{(Math.abs(n.clientX-a)>3||this.isCircle)&&(p=!0),c=[...c.filter(o=>n.timeStamp-o.t<100),{x:n.clientX,t:n.timeStamp}];let r=D(n);r!==this.index&&(this.paintState(r),this.commit(this.items[r].value))},L=()=>{e.removeEventListener("pointermove",f),e.removeEventListener("pointerup",g),e.removeEventListener("pointercancel",g)},g=n=>{if(L(),this.el.classList.remove("is-dragging"),n.type==="pointercancel")return this.rest(this.index);if(this.isCircle)return this.rest(p?this.index:Math.round(this.angleAt(n)/360*s)%s);if(!p){let v=e.getBoundingClientRect();return this.rest(Math.round(this.pos+(n.clientX-(v.left+v.width/2))/i))}let r=c[0],o=(n.clientX-r.x)/Math.max(1,n.timeStamp-r.t);if(Math.abs(o)<_)return this.rest(Math.round(Math.max(0,Math.min(s-1,this.pos))));let d=o<0?1:-1,M=this.pos+d*Math.abs(o)*260/i,u=-1;this.items.forEach((v,b)=>v.major&&(d>0?b>this.pos:b<this.pos)&&(u<0||Math.abs(b-M)<Math.abs(u-M))&&(u=b)),this.rest(u>=0?u:Math.round(Math.max(0,Math.min(s-1,M))),!0)};e.addEventListener("pointermove",f),e.addEventListener("pointerup",g),e.addEventListener("pointercancel",g),this.own(L)}rest(t,e=!1){let s=this.pos;this.choose(t);let i=()=>{this.stopGlide=void 0,this.el.classList.remove("is-gliding"),this.tape.style.transitionDuration="",this.flushSettled(),this.emit("slide-end",this.value)};if(!e||!m.isOn())return i();let a=Math.min(900,280+Math.abs(this.pos-s)*this.spacing()*.9);this.el.classList.add("is-gliding"),this.tape.style.transitionDuration=`${a}ms`,this.stopGlide=this.later(i,a)}next(t=1){this.setValue(this.items[Math.max(0,Math.min(this.items.length-1,this.index+t))].value)}prev(t=1){this.next(-t)}nextSnap(){this.setValue(this.items[this.snapFrom(this.index,1)].value)}prevSnap(){this.setValue(this.items[this.snapFrom(this.index,-1)].value)}getDisplayText(){return this.items[this.index].label}rebuild(t){Object.assign(this.config,t),this.cache=void 0,this.value=this.normalize(this.value),this.rendered&&(this.paintTicks(),this.shown="",this.readout.replaceChildren(),this.applyValue(this.value))}setMin(t){this.rebuild({min:t})}setMax(t){this.rebuild({max:t})}setStep(t){this.rebuild({step:t})}setOptions(t){this.rebuild({options:t})}setSnap(t){this.rebuild({snap:t})}setShape(t){this.rebuild({shape:t})}setFormat(t){this.rebuild({format:t})}onDisabled(t){this.face.tabIndex=t?-1:0,this.face.setAttribute("aria-disabled",String(t))}onReadonly(t){this.face.setAttribute("aria-readonly",String(t))}};E("dial",x);export{x as a};
|
|
2
|
+
//# sourceMappingURL=chunk-NAWQBQ57.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as m,b as u}from"./chunk-E4VNLYO2.js";import{b as f}from"./chunk-676AKAGF.js";import{a as g}from"./chunk-VV7CFMPZ.js";import{a as d,c as p}from"./chunk-TIPK3SCJ.js";import{f as n}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as m,b as u}from"./chunk-E4VNLYO2.js";import{b as f}from"./chunk-676AKAGF.js";import{a as g}from"./chunk-VV7CFMPZ.js";import{a as d,c as p}from"./chunk-TIPK3SCJ.js";import{f as n}from"./chunk-KMBTJ5AG.js";import{b as h,c as l}from"./chunk-PZSHOSOS.js";import{b,c as v}from"./chunk-4AA4FQEM.js";var o=[],s=class extends n{baseCls="op-dropdown";content;open_=!1;release=[];leaving=0;build(){let e=h("div","op-dropdown",{role:this.config.role??"dialog"});e.hidden=!0;let t=this.config.content;return t&&(this.content=t instanceof HTMLElement||t instanceof n?t:p(t),e.append(this.content instanceof n?this.content.el:this.content)),e}getAnchor(){let e=this.config.anchor;return e instanceof n?e.el:e instanceof HTMLElement?e:void 0}isOpen(){return this.open_}open(){if(this.open_||this.destroyed||this.emit("before-open")===!1)return;let e=this.getAnchor();f(this.el,e),e&&this.el.getAttribute("role")==="dialog"&&!this.el.hasAttribute("aria-label")&&!this.el.hasAttribute("aria-labelledby")&&(e.id||=l(),this.el.setAttribute("aria-labelledby",e.id)),this.leaving++,this.el.getAnimations?.().forEach(i=>i.cancel()),this.el.hidden=!1,this.open_=!0,o.push(this),this.el.classList.add("is-open"),this.content instanceof n&&this.content.notifyMount(),this.reposition(),b(this.el,e??this.config.anchor,"dropdown"),e?.setAttribute("aria-expanded","true");let t=this.config,r=i=>{let a=i.target;t.closeOnOutside!==!1&&!this.el.contains(a)&&!e?.contains(a)&&this.close()},c=i=>{i.key==="Escape"&&t.closeOnEsc!==!1&&o[o.length-1]===this&&(i.stopPropagation(),this.close(),(e?.querySelector("input,button")??e)?.focus?.())};document.addEventListener("pointerdown",r,!0),document.addEventListener("keydown",c,!0),this.release=[()=>document.removeEventListener("pointerdown",r,!0),()=>document.removeEventListener("keydown",c,!0),u(()=>this.reposition())],t.autoFocus&&g(this.el)[0]?.focus(),this.emit("open")}close(){if(!this.open_||this.emit("before-close")===!1)return;this.open_=!1,o.splice(o.indexOf(this),1),this.el.classList.remove("is-open");let e=v(this.el,this.getAnchor()??this.config.anchor,"dropdown");if(e){let t=++this.leaving;e.then(()=>t===this.leaving&&!this.open_&&(this.el.hidden=!0))}else this.el.hidden=!0;this.getAnchor()?.setAttribute("aria-expanded","false"),this.release.splice(0).forEach(t=>t()),this.emit("close")}toggle(){this.open_?this.close():this.open()}reposition(){let e=this.getAnchor()??this.config.anchor;if(!this.open_||!e||e instanceof n)return;let t=this.config;m(this.el,e,{placement:t.placement??"bottom-start",offset:t.offset,flip:t.flip,matchWidth:t.matchWidth})}setAnchor(e){this.config.anchor=e,this.reposition()}setPlacement(e){this.config.placement=e,this.reposition()}setContent(e){this.content instanceof n&&this.content!==e&&this.content.destroy(),this.config.content=e,this.content=e,this.el.replaceChildren(e instanceof n?e.el:e),this.reposition()}onDestroy(){this.open_&&o.splice(o.indexOf(this),1),this.open_=!1,this.release.splice(0).forEach(e=>e()),this.getAnchor()?.setAttribute("aria-expanded","false"),this.content instanceof n&&this.content.destroy()}};d("dropdown",s);export{s as a};
|
|
2
|
+
//# sourceMappingURL=chunk-NBR5IRZT.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as m}from"./chunk-DY3ZYMXD.js";import{a as f}from"./chunk-SQTM4QFP.js";import{b as p}from"./chunk-PZSHOSOS.js";import{e as c,f as l}from"./chunk-S4QD5NID.js";c("en",{qsSearch:"Search\u2026",qsLabel:"Search the grid"});c("pt-BR",{qsSearch:"Buscar\u2026",qsLabel:"Buscar na grid"});function F(i){return{init(n){let t=n.getStore(),e,a,r=new f({placeholder:i.placeholder??l("qsSearch"),ariaLabel:l("qsLabel"),clearable:!0,cls:"op-quicksearch"}),d=p("div","op-quicksearch__group op-footer-group");r.mount(d);let h=()=>{let o=(r.getValue()??"").trim(),u=t.getFilters().filter(s=>s!==e);e=o?{op:"or",filters:i.fields.map(s=>({field:s,op:"contains",value:o}))}:void 0,t.filter(e?[...u,e]:u)};r.on("change",()=>{clearTimeout(a),a=setTimeout(h,i.delay??250)});let g=t.subscribe(o=>{o.type==="filter"&&e&&!t.getFilters().includes(e)&&(e=void 0,r.setValue("",!0))}),y=m(n,d);return()=>{clearTimeout(a),g(),y(),r.destroy()}}}}export{F as a};
|
|
2
|
+
//# sourceMappingURL=chunk-NSUAVAWO.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/data/quicksearch/quicksearch.ts"],
|
|
4
|
+
"sourcesContent": ["import { h } from '../../../core/dom';\nimport { t, addMessages } from '../../../core/i18n';\nimport type { FilterNode } from '../../../data/proxy';\nimport { TextField } from '../../fields/textfield/textfield';\nimport { addFooterGroup } from '../grid/footer';\nimport type { Grid, GridPlugin } from '../grid/grid';\n\naddMessages('en', { qsSearch: 'Search\u2026', qsLabel: 'Search the grid' });\naddMessages('pt-BR', { qsSearch: 'Buscar\u2026', qsLabel: 'Buscar na grid' });\n\nexport interface QuickSearchOptions {\n /** The record fields the text is looked for in (any of them matching keeps the row). */\n fields: string[];\n /** ms after the last key before filtering. Default 250. */\n delay?: number;\n placeholder?: string;\n}\n\n/**\n * A search box inside the grid, in the row with the pager: what is typed keeps the rows where any of `fields` contains\n * it. Other filters (a FilterBuilder) keep working beside it; a filter that replaces them clears the box.\n */\nexport function quickSearch(options: QuickSearchOptions): GridPlugin {\n return {\n init(grid: Grid) {\n const store = grid.getStore();\n let mine: FilterNode | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const box = new TextField({ placeholder: options.placeholder ?? t('qsSearch'), ariaLabel: t('qsLabel'), clearable: true, cls: 'op-quicksearch' });\n const group = h('div', 'op-quicksearch__group op-footer-group');\n box.mount(group);\n const apply = () => {\n const text = (box.getValue() ?? '').trim();\n const others = store.getFilters().filter((f) => f !== mine);\n mine = text ? { op: 'or', filters: options.fields.map((field) => ({ field, op: 'contains', value: text })) } : undefined;\n void store.filter(mine ? [...others, mine] : others);\n };\n box.on('change', () => {\n clearTimeout(timer);\n timer = setTimeout(apply, options.delay ?? 250);\n });\n const off = store.subscribe((c) => {\n if (c.type === 'filter' && mine && !store.getFilters().includes(mine)) {\n mine = undefined;\n box.setValue('', true);\n }\n });\n const leave = addFooterGroup(grid, group);\n return () => {\n clearTimeout(timer);\n off();\n leave();\n box.destroy();\n };\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "uKAOAA,EAAY,KAAM,CAAE,SAAU,eAAW,QAAS,iBAAkB,CAAC,EACrEA,EAAY,QAAS,CAAE,SAAU,eAAW,QAAS,gBAAiB,CAAC,EAchE,SAASC,EAAYC,EAAyC,CACnE,MAAO,CACL,KAAKC,EAAY,CACf,IAAMC,EAAQD,EAAK,SAAS,EACxBE,EACAC,EACEC,EAAM,IAAIC,EAAU,CAAE,YAAaN,EAAQ,aAAeO,EAAE,UAAU,EAAG,UAAWA,EAAE,SAAS,EAAG,UAAW,GAAM,IAAK,gBAAiB,CAAC,EAC1IC,EAAQC,EAAE,MAAO,uCAAuC,EAC9DJ,EAAI,MAAMG,CAAK,EACf,IAAME,EAAQ,IAAM,CAClB,IAAMC,GAAQN,EAAI,SAAS,GAAK,IAAI,KAAK,EACnCO,EAASV,EAAM,WAAW,EAAE,OAAQW,GAAMA,IAAMV,CAAI,EAC1DA,EAAOQ,EAAO,CAAE,GAAI,KAAM,QAASX,EAAQ,OAAO,IAAKc,IAAW,CAAE,MAAAA,EAAO,GAAI,WAAY,MAAOH,CAAK,EAAE,CAAE,EAAI,OAC1GT,EAAM,OAAOC,EAAO,CAAC,GAAGS,EAAQT,CAAI,EAAIS,CAAM,CACrD,EACAP,EAAI,GAAG,SAAU,IAAM,CACrB,aAAaD,CAAK,EAClBA,EAAQ,WAAWM,EAAOV,EAAQ,OAAS,GAAG,CAChD,CAAC,EACD,IAAMe,EAAMb,EAAM,UAAWc,GAAM,CAC7BA,EAAE,OAAS,UAAYb,GAAQ,CAACD,EAAM,WAAW,EAAE,SAASC,CAAI,IAClEA,EAAO,OACPE,EAAI,SAAS,GAAI,EAAI,EAEzB,CAAC,EACKY,EAAQC,EAAejB,EAAMO,CAAK,EACxC,MAAO,IAAM,CACX,aAAaJ,CAAK,EAClBW,EAAI,EACJE,EAAM,EACNZ,EAAI,QAAQ,CACd,CACF,CACF,CACF",
|
|
6
|
+
"names": ["addMessages", "quickSearch", "options", "grid", "store", "mine", "timer", "box", "TextField", "t", "group", "h", "apply", "text", "others", "f", "field", "off", "c", "leave", "addFooterGroup"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as g}from"./chunk-SQTM4QFP.js";import{a as d}from"./chunk-TIPK3SCJ.js";import{e as p,f as c}from"./chunk-S4QD5NID.js";p("en",{maskIncomplete:"Complete the format {mask}",maskStored:"Saved. Press Enter or type to replace it, Esc to keep it."});p("pt-BR",{maskIncomplete:"Complete o formato {mask}",maskStored:"Salvo. Pressione Enter ou digite para trocar, Esc para manter."});var m={0:/\d/,A:/\p{L}/u,"*":/./su};function f(l){let t=[];for(let e=0;e<l.length;e++){let i=l[e];i==="\\"&&e+1<l.length?t.push({lit:l[++e]}):t.push(i in m?{kind:i}:{lit:i})}return t}var h=l=>l.filter(t=>"kind"in t).length,u=class extends g{baseCls="op-field op-textfield op-maskfield";masks=[];keeping;constructor(t){super(t),this.keeping=!!t.stored}compiled(){let t=this.config.mask;return this.masks=(Array.isArray(t)?t:[t]).map(f).sort((e,i)=>h(e)-h(i))}extract(t){let e=this.masks.length?this.masks:this.compiled(),i=new Set(e.flatMap(n=>n.flatMap(o=>"lit"in o?[o.lit]:[]))),s=e.some(n=>n.some(o=>"kind"in o&&o.kind==="*")),r="";for(let n of t)i.has(n)&&(!s||!/[\p{L}\d]/u.test(n))||(r+=n);return r}pick(t){let e=this.masks.length?this.masks:this.compiled();return e.find(i=>h(i)>=t.length)??e[e.length-1]}format(t,e=this.pick(t)){let i="",s=0;for(let r of e){if(s>=t.length)break;if("lit"in r){i+=r.lit;continue}for(;s<t.length&&!m[r.kind].test(t[s]);)s++;s<t.length&&(i+=t[s++])}return i}norm(t){let e=this.format(this.extract(t??""));return this.config.raw?this.extract(e):e}display(t){return this.format(this.extract(t??""))}isEmpty(t){return!this.keeping&&super.isEmpty(t)}getValue(){return this.keeping?null:super.getValue()}setValue(t,e=!1){super.setValue(this.norm(t),e)}isStored(){return this.keeping}keepStored(){!this.config.stored||this.keeping||(this.keeping=!0,this.showStored(),this.el.classList.add("is-stored","has-value"),this.emit("change",null,this.value))}replaceStored(){this.keeping&&(this.keeping=!1,this.input.readOnly=!!this.config.readonly,this.input.removeAttribute("aria-description"),this.el.classList.remove("is-stored"),this.input.value="",this.el.classList.remove("has-value"),this.setValue(""),this.input.focus())}showStored(){this.input.readOnly=!0,this.input.value=this.config.stored??"",this.input.setAttribute("aria-description",c("maskStored"))}applyValue(t){if(this.keeping)return this.showStored();super.applyValue(t)}onRender(){super.onRender(),this.el.classList.toggle("is-stored",this.keeping),this.keeping&&this.el.classList.add("has-value")}createControl(){let t=super.createControl(),e=this.compiled()[0];return this.config.placeholder||(this.input.placeholder=e.map(i=>"lit"in i?i.lit:"_").join("")),this.masks.every(i=>i.every(s=>"lit"in s||s.kind==="0"))&&this.input.setAttribute("inputmode","numeric"),this.keeping&&this.showStored(),this.listen(this.input,"click",()=>this.replaceStored()),this.listen(this.input,"keydown",i=>{if(this.keeping&&(i.key==="Enter"||i.key===" "))return i.preventDefault(),this.replaceStored();i.key==="Escape"&&!this.keeping&&this.config.stored&&!this.input.value&&this.keepStored()}),t}onInput(){let t=this.input,e=t.selectionStart??t.value.length,i=this.extract(t.value.slice(0,e)).length,s=this.extract(t.value),r=this.format(s),n=e>=t.value.length;if(t.value=r,!n&&document.activeElement===t){let o=0,a=0;for(;a<r.length&&o<i;)this.extract(r[a++]).length&&o++;t.setSelectionRange(a,a)}this.el.classList.toggle("has-value",!!r),this.commit(this.config.raw?this.extract(r):r),this.error&&this.validate()}check(){if(this.keeping)return"";let t=super.check(),e=this.extract(this.value??"");if(t||!e)return t;let i=this.pick(e);return e.length<h(i)?c("maskIncomplete",{mask:i.map(s=>"lit"in s?s.lit:"_").join("")}):""}setMask(t){this.config.mask=t,this.compiled(),this.rendered&&this.setValue(this.value,!0)}};d("maskfield",u);export{u as a};
|
|
2
|
+
//# sourceMappingURL=chunk-NYXRPWIB.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/fields/maskfield/maskfield.ts"],
|
|
4
|
+
"sourcesContent": ["import { TextField, type TextFieldConfig } from '../textfield/textfield';\nimport { register } from '../../../core/registry';\nimport { t, addMessages } from '../../../core/i18n';\n\naddMessages('en', { maskIncomplete: 'Complete the format {mask}', maskStored: 'Saved. Press Enter or type to replace it, Esc to keep it.' });\naddMessages('pt-BR', { maskIncomplete: 'Complete o formato {mask}', maskStored: 'Salvo. Pressione Enter ou digite para trocar, Esc para manter.' });\n\nexport interface MaskFieldConfig extends TextFieldConfig<string | null> {\n /**\n * The pattern: `0` a digit, `A` a letter, `*` any character, `\\` makes the next character a literal. A list picks the\n * pattern by length: `['000.000.000-00', '00.000.000/0000-00']` is a CPF until the 12th digit, then a CNPJ.\n * The core knows no country: formats like these belong to the app.\n */\n mask: string | string[];\n /** The value is only what was typed into the slots (`12345678900`), not the formatted text (`123.456.789-00`). Default false. */\n raw?: boolean;\n /**\n * A value the app already holds but only shows masked (`'***.***.***-12'`): it is displayed read-only, `getValue()` is\n * `null` while untouched (keep what is saved), and typing (or Enter) replaces it. Esc on an empty replacement keeps it.\n */\n stored?: string;\n}\n\ntype Slot = { kind: '0' | 'A' | '*' } | { lit: string };\nconst KINDS: Record<string, RegExp> = { 0: /\\d/, A: /\\p{L}/u, '*': /./su };\n\nfunction compile(mask: string): Slot[] {\n const out: Slot[] = [];\n for (let i = 0; i < mask.length; i++) {\n const ch = mask[i];\n if (ch === '\\\\' && i + 1 < mask.length) out.push({ lit: mask[++i] });\n else out.push(ch in KINDS ? { kind: ch as '0' | 'A' | '*' } : { lit: ch });\n }\n return out;\n}\nconst slots = (m: Slot[]) => m.filter((s) => 'kind' in s).length;\n\n/** A text field that formats what is typed into a pattern (phone, tax id, postal code, plate...). */\nexport class MaskField extends TextField<string | null, MaskFieldConfig> {\n protected override baseCls = 'op-field op-textfield op-maskfield';\n private masks: Slot[][] = [];\n private keeping: boolean;\n\n constructor(config: MaskFieldConfig) {\n super(config);\n this.keeping = !!config.stored;\n }\n\n private compiled(): Slot[][] {\n const m = this.config.mask;\n return (this.masks = (Array.isArray(m) ? m : [m]).map(compile).sort((a, b) => slots(a) - slots(b)));\n }\n\n /** What was typed into the slots: the literals of the patterns are dropped (with a `*` slot, only where the text repeats one). */\n private extract(text: string): string {\n const masks = this.masks.length ? this.masks : this.compiled();\n const lits = new Set(masks.flatMap((m) => m.flatMap((s) => ('lit' in s ? [s.lit] : []))));\n const wild = masks.some((m) => m.some((s) => 'kind' in s && s.kind === '*'));\n let out = '';\n for (const ch of text) if (!(lits.has(ch) && (!wild || !/[\\p{L}\\d]/u.test(ch)))) out += ch;\n return out;\n }\n\n private pick(raw: string): Slot[] {\n const masks = this.masks.length ? this.masks : this.compiled();\n return masks.find((m) => slots(m) >= raw.length) ?? masks[masks.length - 1];\n }\n\n private format(raw: string, mask = this.pick(raw)): string {\n let out = '';\n let i = 0;\n for (const s of mask) {\n if (i >= raw.length) break;\n if ('lit' in s) {\n out += s.lit;\n continue;\n }\n while (i < raw.length && !KINDS[s.kind].test(raw[i])) i++;\n if (i < raw.length) out += raw[i++];\n }\n return out;\n }\n\n private norm(v: string | null): string {\n const text = this.format(this.extract(v ?? ''));\n return this.config.raw ? this.extract(text) : text;\n }\n\n protected override display(v: string | null): string {\n return this.format(this.extract(v ?? ''));\n }\n\n /** A saved value that was not touched counts as filled in (so `required` is satisfied). */\n protected override isEmpty(v: string | null) {\n return !this.keeping && super.isEmpty(v);\n }\n\n override getValue(): string | null {\n return this.keeping ? null : super.getValue();\n }\n\n override setValue(v: string | null, silent = false): void {\n super.setValue(this.norm(v), silent);\n }\n\n /** `true` while the saved value is shown and nothing has replaced it. */\n isStored(): boolean {\n return this.keeping;\n }\n\n /** Back to the saved value (what Esc does on an empty replacement). */\n keepStored(): void {\n if (!this.config.stored || this.keeping) return;\n this.keeping = true;\n this.showStored();\n this.el.classList.add('is-stored', 'has-value');\n this.emit('change', null, this.value);\n }\n\n /** Opens the field for a new value. */\n replaceStored(): void {\n if (!this.keeping) return;\n this.keeping = false;\n this.input.readOnly = !!this.config.readonly;\n this.input.removeAttribute('aria-description');\n this.el.classList.remove('is-stored');\n this.input.value = '';\n this.el.classList.remove('has-value');\n this.setValue('');\n this.input.focus();\n }\n\n private showStored() {\n this.input.readOnly = true;\n this.input.value = this.config.stored ?? '';\n this.input.setAttribute('aria-description', t('maskStored'));\n }\n\n protected override applyValue(v: string | null): void {\n if (this.keeping) return this.showStored();\n super.applyValue(v);\n }\n\n protected override onRender() {\n super.onRender();\n this.el.classList.toggle('is-stored', this.keeping);\n if (this.keeping) this.el.classList.add('has-value');\n }\n\n protected override createControl() {\n const wrap = super.createControl();\n const sample = this.compiled()[0];\n if (!this.config.placeholder) this.input.placeholder = sample.map((s) => ('lit' in s ? s.lit : '_')).join('');\n if (this.masks.every((m) => m.every((s) => 'lit' in s || s.kind === '0'))) this.input.setAttribute('inputmode', 'numeric');\n if (this.keeping) this.showStored();\n this.listen(this.input, 'click', () => this.replaceStored());\n this.listen(this.input, 'keydown', (e: KeyboardEvent) => {\n if (this.keeping && (e.key === 'Enter' || e.key === ' ')) return e.preventDefault(), this.replaceStored();\n if (e.key === 'Escape' && !this.keeping && this.config.stored && !this.input.value) this.keepStored();\n });\n return wrap;\n }\n\n protected override onInput() {\n const input = this.input;\n const caret = input.selectionStart ?? input.value.length;\n const before = this.extract(input.value.slice(0, caret)).length;\n const raw = this.extract(input.value);\n const text = this.format(raw);\n const atEnd = caret >= input.value.length;\n input.value = text;\n if (!atEnd && document.activeElement === input) {\n // the caret stays after the same number of typed characters\n let n = 0;\n let pos = 0;\n while (pos < text.length && n < before) if (this.extract(text[pos++]).length) n++;\n input.setSelectionRange(pos, pos);\n }\n this.el.classList.toggle('has-value', !!text);\n this.commit(this.config.raw ? this.extract(text) : text);\n if (this.error) this.validate();\n }\n\n protected override check(): string {\n if (this.keeping) return '';\n const base = super.check();\n const raw = this.extract(this.value ?? '');\n if (base || !raw) return base;\n const mask = this.pick(raw);\n if (raw.length < slots(mask)) return t('maskIncomplete', { mask: mask.map((s) => ('lit' in s ? s.lit : '_')).join('') });\n return '';\n }\n\n setMask(mask: string | string[]) {\n this.config.mask = mask;\n this.compiled();\n if (this.rendered) this.setValue(this.value, true);\n }\n}\nregister('maskfield', MaskField);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["addMessages", "KINDS", "compile", "mask", "out", "i", "ch", "slots", "m", "s", "MaskField", "TextField", "config", "a", "b", "text", "masks", "lits", "wild", "raw", "v", "silent", "t", "wrap", "sample", "e", "input", "caret", "before", "atEnd", "n", "pos", "base", "register"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as p}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as p}from"./chunk-QT5JRZZJ.js";import{a as l}from"./chunk-676AKAGF.js";import{a as m}from"./chunk-TIPK3SCJ.js";import{f as d}from"./chunk-KMBTJ5AG.js";import{b as i}from"./chunk-PZSHOSOS.js";import{f as h}from"./chunk-S4QD5NID.js";import{g as f,h as u}from"./chunk-4AA4FQEM.js";var n={duration:4e3,position:"top-right",max:5},g={info:"info",success:"success",warning:"alert",error:"error"};function v(e){let t=l().querySelector(`.op-toast-region[data-pos="${e}"]`);return t||(t=i("div","op-toast-region",{"data-pos":e}),l().appendChild(t)),t}var r=class extends d{baseCls="op-toast";cancelTimer;remaining=0;started=0;build(){let t=this.config,s=t.type??"info",o=i("div",`op-toast op-toast--${s}`,{role:s==="error"?"alert":"status"}),a=i("div","op-toast__body",{},t.title?i("div","op-toast__title",{},t.title):null,i("div","op-toast__text",{},t.text??""));if(o.append(i("span","op-toast__icon",{},p(g[s])),a),t.closable!==!1){let c=i("button","op-toast__close",{type:"button","aria-label":h("close")},p("x"));this.listen(c,"click",()=>this.close()),o.append(c)}return this.listen(o,"pointerenter",()=>this.pause()),this.listen(o,"pointerleave",()=>this.resume()),this.listen(o,"focusin",()=>this.pause()),this.listen(o,"focusout",()=>this.resume()),o}show(){let t=this.config.position??n.position,s=v(t);t.startsWith("bottom")?s.append(this.el):s.prepend(this.el);for(let o of Array.from(s.children).filter(a=>a!==this.el).slice(n.max-1))o.dispatchEvent(new Event("op-dismiss"));this.listen(this.el,"op-dismiss",()=>this.close()),this.remaining=this.config.duration??n.duration,this.resume(),u(this.el,{dy:10}),this.config.type==="success"&&f(this.el.querySelector(".op-toast__icon")??this.el),this.emit("show")}pause(){this.cancelTimer&&(this.cancelTimer(),this.cancelTimer=void 0,this.remaining-=Date.now()-this.started)}resume(){this.cancelTimer||this.remaining<=0||this.destroyed||(this.started=Date.now(),this.cancelTimer=this.later(()=>this.close(),this.remaining))}close(){this.destroyed||(this.emit("close"),this.destroy())}};m("toast",r);function y(e){let t=new r(typeof e=="string"?{text:e}:e);return t.show(),{close:()=>t.close()}}y.configure=e=>Object.assign(n,e);export{r as a,y as b};
|
|
2
|
+
//# sourceMappingURL=chunk-OK3SN5PN.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as h}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as h}from"./chunk-IE7KRNFJ.js";import{a as d}from"./chunk-SQTM4QFP.js";import{c as n}from"./chunk-QT5JRZZJ.js";import{a as l}from"./chunk-TIPK3SCJ.js";import{b as i}from"./chunk-PZSHOSOS.js";import{e as o,f as s}from"./chunk-S4QD5NID.js";o("en",{secretShow:"Show value",secretHide:"Hide value",secretStored:"A value is saved. It cannot be shown again.",secretReplace:"Replace",secretKeep:"Keep current",secretWarnTitle:"Replace the saved value?",secretWarn:"The saved value cannot be displayed and will be discarded as soon as you replace it. Type the new value next; it takes effect when you save."});o("pt-BR",{secretShow:"Mostrar valor",secretHide:"Ocultar valor",secretStored:"H\xE1 um valor salvo. Ele n\xE3o pode ser exibido novamente.",secretReplace:"Substituir",secretKeep:"Manter o atual",secretWarnTitle:"Substituir o valor salvo?",secretWarn:"O valor salvo n\xE3o pode ser exibido e ser\xE1 descartado assim que voc\xEA o substituir. Digite o novo valor em seguida; ele s\xF3 vale quando voc\xEA salvar."});var p="\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",a=class extends d{baseCls="op-field op-textfield op-secret";stored=!1;initialStored=!1;replacing=!1;revealed=!1;eyeBtn;replaceBtn;keepBtn;hint;constructor(e={}){super({autocomplete:"new-password",...e,inputType:"password"}),this.stored=this.initialStored=!!e.stored}emptyValue(){return null}isEmpty(e){return!this.stored&&(e==null||e==="")}createControl(){let e=super.createControl(),t=this.input;return t.spellcheck=!1,this.eyeBtn=i("button","op-secret__eye",{type:"button","aria-pressed":"false"}),this.replaceBtn=i("button","op-secret__replace",{type:"button"},s("secretReplace")),this.keepBtn=i("button","op-secret__keep",{type:"button"},s("secretKeep")),this.hint=i("div","op-secret__hint",{id:`${this.id}-hint`},i("span","op-secret__note",{},s("secretStored")),this.keepBtn),this.listen(this.eyeBtn,"mousedown",r=>r.preventDefault()),this.listen(this.eyeBtn,"click",()=>this.setRevealed(!this.revealed)),this.listen(this.replaceBtn,"click",()=>{this.replace()}),this.listen(this.keepBtn,"click",()=>this.keep()),this.listen(t,"click",()=>this.stored&&void this.replace()),this.listen(t,"keydown",r=>{this.stored&&(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),this.replace())}),this.on("blur",()=>this.config.autoHide!==!1&&this.setRevealed(!1)),e.append(this.eyeBtn,this.replaceBtn),i("div","op-secret__box",{},e,this.hint)}onRender(){super.onRender(),this.paint()}isStored(){return this.stored}isReplacing(){return this.replacing}isRevealed(){return this.revealed}setStored(e){this.stored=e,this.replacing=!1,this.revealed=!1,super.setValue(null,!0),this.paint(),this.emit("stored-change",e)}setValue(e,t=!1){if(e===!0)return this.setStored(!0);e===!1&&(e=null),this.stored&&e!=null&&(this.stored=!1,this.replacing=!0),super.setValue(e,t),this.paint()}markClean(){super.markClean(),this.initialStored=this.stored}reset(){this.setStored(this.initialStored),super.reset()}async replace(){return!this.stored||this.config.readonly||this.config.disabled||this.emit("before-replace")===!1||this.config.confirmReplace!==!1&&!await h.confirm(this.config.replaceText??s("secretWarn"),{danger:!0,title:this.config.replaceTitle??s("secretWarnTitle"),okText:s("secretReplace")})?!1:(this.stored=!1,this.replacing=!0,super.setValue("",!1),this.paint(),this.input.focus(),this.emit("replace"),!0)}keep(){this.replacing&&(this.stored=!0,this.replacing=!1,this.revealed=!1,super.setValue(null,!1),this.paint(),this.emit("keep"))}setRevealed(e){this.stored&&(e=!1),this.revealed=e,this.paint()}getDisplayText(){return this.stored||(this.value??"")!==""?p:""}paint(){if(!this.rendered)return;let e=this.input,t=this.revealed&&!this.stored;e.type=t?"text":"password",e.readOnly=this.stored||!!this.config.readonly,e.placeholder=this.stored?p:this.config.placeholder??"",this.stored&&(e.value=""),e.setAttribute("aria-describedby",this.stored||this.replacing?this.hint.id:""),!this.stored&&!this.replacing&&e.removeAttribute("aria-describedby"),this.eyeBtn.hidden=this.stored,this.eyeBtn.setAttribute("aria-pressed",String(t)),this.eyeBtn.setAttribute("aria-label",s(t?"secretHide":"secretShow")),this.eyeBtn.replaceChildren(n(t?"eye-off":"eye")),this.replaceBtn.hidden=!this.stored,this.hint.hidden=!this.stored&&!this.replacing,this.hint.querySelector(".op-secret__note").hidden=!this.stored,this.keepBtn.hidden=!this.replacing,this.el.classList.toggle("is-stored",this.stored),this.el.classList.toggle("is-replacing",this.replacing),this.el.classList.toggle("is-revealed",t),this.el.classList.toggle("has-value",this.stored||!!e.value)}};l("secretfield",a);export{a};
|
|
2
|
+
//# sourceMappingURL=chunk-OQFQDTLL.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as l}from"./chunk-QT5JRZZJ.js";import{a}from"./chunk-TIPK3SCJ.js";import{f as r}from"./chunk-KMBTJ5AG.js";import{b as s}from"./chunk-PZSHOSOS.js";var n=class extends r{baseCls="op-label";build(){let t=document.createElement(this.config.for?"label":this.config.tag??"span");return t.className="op-label",this.config.for&&(t.htmlFor=this.config.for),t}onRender(){this.paint(),this.setVariant(this.config.variant??"default")}paint(){let{src:t,alt:e,icon:o,text:f}=this.config,i=t?s("img","op-label__image",{src:t,alt:e??""}):o?l(o):null;this.el.classList.toggle("op-label--media",!!i),this.el.replaceChildren(...i?[i]:[],f??"")}setText(t){this.config.text=t,this.rendered&&this.paint()}setIcon(t){this.config.icon=t,this.rendered&&this.paint()}setImage(t,e){Object.assign(this.config,{src:t,alt:e}),this.rendered&&this.paint()}setVariant(t){if(this.config.variant=t,!!this.rendered)for(let e of["default","muted","title"])this.el.classList.toggle(`op-label--${e}`,e===t)}};a("label",n);export{n as a};
|
|
2
|
+
//# sourceMappingURL=chunk-OVEQUN4V.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/base/label/label.ts"],
|
|
4
|
+
"sourcesContent": ["import { Component, type ComponentConfig } from '../../../core/component';\nimport { register } from '../../../core/registry';\nimport { h } from '../../../core/dom';\nimport { iconEl } from '../icon/icon';\n\nexport interface LabelConfig extends ComponentConfig {\n text?: string;\n /** Id of the field this label names (renders a `<label for>`). */\n for?: string;\n variant?: 'default' | 'muted' | 'title';\n /** The element: `h1`\u2026`h6` make it a heading, `p` a paragraph. Default `span` (`label` with `for`). */\n tag?: 'span' | 'div' | 'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n /** An icon before the text. */\n icon?: string;\n /** An image before the text (a logo): `alt` names it (empty for a decorative one). */\n src?: string;\n alt?: string;\n}\n\nexport class Label extends Component<LabelConfig> {\n protected override baseCls = 'op-label';\n protected override build() {\n const el = document.createElement(this.config.for ? 'label' : (this.config.tag ?? 'span'));\n el.className = 'op-label';\n if (this.config.for) (el as HTMLLabelElement).htmlFor = this.config.for;\n return el;\n }\n protected override onRender() {\n this.paint();\n this.setVariant(this.config.variant ?? 'default');\n }\n private paint() {\n const { src, alt, icon, text } = this.config;\n const media = src ? h('img', 'op-label__image', { src, alt: alt ?? '' }) : icon ? iconEl(icon) : null;\n this.el.classList.toggle('op-label--media', !!media);\n this.el.replaceChildren(...(media ? [media] : []), text ?? '');\n }\n setText(text: string) {\n this.config.text = text;\n if (this.rendered) this.paint();\n }\n setIcon(icon: string | undefined) {\n this.config.icon = icon;\n if (this.rendered) this.paint();\n }\n setImage(src: string | undefined, alt?: string) {\n Object.assign(this.config, { src, alt });\n if (this.rendered) this.paint();\n }\n setVariant(variant: NonNullable<LabelConfig['variant']>) {\n this.config.variant = variant;\n if (!this.rendered) return;\n for (const v of ['default', 'muted', 'title']) this.el.classList.toggle(`op-label--${v}`, v === variant);\n }\n}\nregister('label', Label);\n"],
|
|
5
|
+
"mappings": "2JAmBO,IAAMA,EAAN,cAAoBC,CAAuB,CAC7B,QAAU,WACV,OAAQ,CACzB,IAAMC,EAAK,SAAS,cAAc,KAAK,OAAO,IAAM,QAAW,KAAK,OAAO,KAAO,MAAO,EACzF,OAAAA,EAAG,UAAY,WACX,KAAK,OAAO,MAAMA,EAAwB,QAAU,KAAK,OAAO,KAC7DA,CACT,CACmB,UAAW,CAC5B,KAAK,MAAM,EACX,KAAK,WAAW,KAAK,OAAO,SAAW,SAAS,CAClD,CACQ,OAAQ,CACd,GAAM,CAAE,IAAAC,EAAK,IAAAC,EAAK,KAAAC,EAAM,KAAAC,CAAK,EAAI,KAAK,OAChCC,EAAQJ,EAAMK,EAAE,MAAO,kBAAmB,CAAE,IAAAL,EAAK,IAAKC,GAAO,EAAG,CAAC,EAAIC,EAAOI,EAAOJ,CAAI,EAAI,KACjG,KAAK,GAAG,UAAU,OAAO,kBAAmB,CAAC,CAACE,CAAK,EACnD,KAAK,GAAG,gBAAgB,GAAIA,EAAQ,CAACA,CAAK,EAAI,CAAC,EAAID,GAAQ,EAAE,CAC/D,CACA,QAAQA,EAAc,CACpB,KAAK,OAAO,KAAOA,EACf,KAAK,UAAU,KAAK,MAAM,CAChC,CACA,QAAQD,EAA0B,CAChC,KAAK,OAAO,KAAOA,EACf,KAAK,UAAU,KAAK,MAAM,CAChC,CACA,SAASF,EAAyBC,EAAc,CAC9C,OAAO,OAAO,KAAK,OAAQ,CAAE,IAAAD,EAAK,IAAAC,CAAI,CAAC,EACnC,KAAK,UAAU,KAAK,MAAM,CAChC,CACA,WAAWM,EAA8C,CAEvD,GADA,KAAK,OAAO,QAAUA,EAClB,EAAC,KAAK,SACV,QAAWC,IAAK,CAAC,UAAW,QAAS,OAAO,EAAG,KAAK,GAAG,UAAU,OAAO,aAAaA,CAAC,GAAIA,IAAMD,CAAO,CACzG,CACF,EACAE,EAAS,QAASZ,CAAK",
|
|
6
|
+
"names": ["Label", "Component", "el", "src", "alt", "icon", "text", "media", "h", "iconEl", "variant", "v", "register"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as o}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as o}from"./chunk-KVUELLYF.js";import{a as c}from"./chunk-TIPK3SCJ.js";import{f as l}from"./chunk-KMBTJ5AG.js";import{b as i}from"./chunk-PZSHOSOS.js";import{e as a,f as n}from"./chunk-S4QD5NID.js";a("en",{faSave:"Save",faDirty:"Unsaved changes"});a("pt-BR",{faSave:"Salvar",faDirty:"Altera\xE7\xF5es n\xE3o salvas"});var r=class extends l{baseCls="op-formactions";statusEl;buttonsEl;form;save;cancel;extra=[];build(){return this.statusEl=i("span","op-formactions__status",{"aria-live":"polite"}),this.buttonsEl=i("div","op-formactions__buttons"),i("div","op-formactions",{},this.statusEl,this.buttonsEl)}onRender(){let t=this.config,e=this.parent;for(;e&&!("focusField"in e&&"getFields"in e);)e=e.parent;this.form=e,this.extra=(t.buttons??[]).map(s=>new o(s)),this.save=new o({text:t.submitText??n("faSave"),variant:"primary",htmlType:"submit"}),this.buttonsEl.append(...this.extra.map(s=>s.el),this.save.el),this.setCancelText(t.cancelText??n("cancel")),this.setSticky(!!t.sticky),this.form?.on("dirty-change",()=>this.paint()),this.own(()=>[...this.extra,this.save,this.cancel].forEach(s=>s?.destroy())),this.paint()}paint(){let t=!!this.form?.isDirty();this.el.classList.toggle("is-dirty",t),this.statusEl.textContent=t&&this.config.status!==!1?n("faDirty"):"",this.save.setDisabled(!!this.config.requireChanges&&!t)}getForm(){return this.form}setSubmitText(t){this.config.submitText=t,this.save?.setText(t)}setCancelText(t){if(this.config.cancelText=t,!!this.rendered){if(t===!1)return this.cancel?.destroy(),void(this.cancel=void 0);if(this.cancel)return this.cancel.setText(t);this.cancel=new o({text:t,handler:()=>this.emit("cancel")!==!1&&this.form?.reset()}),this.buttonsEl.insertBefore(this.cancel.el,this.save.el)}}setSticky(t){this.config.sticky=t,this.rendered&&this.el.classList.toggle("is-sticky",t)}};c("formactions",r);export{r as a};
|
|
2
|
+
//# sourceMappingURL=chunk-PMIIQMVH.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as h}from"./chunk-TIPK3SCJ.js";import{f as l}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as h}from"./chunk-TIPK3SCJ.js";import{f as l}from"./chunk-KMBTJ5AG.js";import{b as M}from"./chunk-PZSHOSOS.js";var e=r=>`<path d="${r}"/>`,n={"chevron-down":e("m6 9 6 6 6-6"),"chevron-up":e("m18 15-6-6-6 6"),"chevron-left":e("m15 18-6-6 6-6"),"chevron-right":e("m9 18 6-6-6-6"),"chevrons-left":e("m11 17-5-5 5-5M18 17l-5-5 5-5"),"chevrons-right":e("m6 17 5-5-5-5M13 17l5-5-5-5"),x:e("M18 6 6 18M6 6l12 12"),check:e("M20 6 9 17l-5-5"),plus:e("M5 12h14M12 5v14"),minus:e("M5 12h14"),search:'<circle cx="11" cy="11" r="8"/>'+e("m21 21-4.3-4.3"),calendar:'<rect x="3" y="4" width="18" height="18" rx="2"/>'+e("M16 2v4M8 2v4M3 10h18"),info:'<circle cx="12" cy="12" r="10"/>'+e("M12 16v-4M12 8h.01"),alert:e("m21.7 18-8-14a2 2 0 0 0-3.5 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.7-3ZM12 9v4M12 17h.01"),error:'<circle cx="12" cy="12" r="10"/>'+e("m15 9-6 6M9 9l6 6"),success:'<circle cx="12" cy="12" r="10"/>'+e("m9 12 2 2 4-4"),menu:e("M4 6h16M4 12h16M4 18h16"),"arrow-up":e("m5 12 7-7 7 7M12 19V5"),"arrow-down":e("M12 5v14M19 12l-7 7-7-7"),columns:'<rect x="3" y="3" width="18" height="18" rx="2"/>'+e("M9 3v18M15 3v18"),filter:e("M22 3H2l8 9.5V19l4 2v-8.5z"),send:e("m22 2-7 20-4-9-9-4zM22 2 11 13"),sparkles:e("M12 3l1.9 5.6L19.5 10.5l-5.6 1.9L12 18l-1.9-5.6L4.5 10.5l5.6-1.9zM19 3v4M21 5h-4M5 17v4M7 19H3"),file:e("M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6M8 13h8M8 17h8"),box:e("M21 8 12 3 3 8v8l9 5 9-5zM3 8l9 5 9-5M12 13v8"),truck:e("M1 3h15v13H1zM16 8h4l3 3v5h-7")+'<circle cx="5.5" cy="18.5" r="2.5"/><circle cx="18.5" cy="18.5" r="2.5"/>',clock:'<circle cx="12" cy="12" r="10"/>'+e("M12 6v6l4 2"),shield:e("M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"),list:e("M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"),eye:e("M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z")+'<circle cx="12" cy="12" r="3"/>',"eye-off":e("M17.9 17.9A10.1 10.1 0 0 1 12 19c-6.4 0-10-7-10-7a18.5 18.5 0 0 1 5.1-5.9M9.9 5.2A9.7 9.7 0 0 1 12 5c6.4 0 10 7 10 7a18.5 18.5 0 0 1-2.2 3.2M14.1 14.1a3 3 0 1 1-4.2-4.2M2 2l20 20"),heart:e("M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1-1.1a5.5 5.5 0 0 0-7.8 7.8l1 1.1L12 21l7.8-7.5 1-1.1a5.5 5.5 0 0 0 0-7.8z"),image:'<rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="9" cy="9" r="2"/>'+e("m21 15-5-5L5 21"),cloud:e("M18 10h-1.3A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"),folder:e("M4 4h5l2 3h9a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z"),share:e("M4 12v7a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-7M16 6l-4-4-4 4M12 2v14"),message:e("M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"),more:'<circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/>',user:e("M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2")+'<circle cx="12" cy="7" r="4"/>',home:e("m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zM9 22V12h6v10"),trash:e("M3 6h18M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6M10 11v6M14 11v6M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"),edit:e("M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z"),sun:'<circle cx="12" cy="12" r="4"/>'+e("M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"),moon:e("M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"),bell:e("M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9M10.3 21a1.9 1.9 0 0 0 3.4 0"),chart:e("M3 3v18h18M19 9l-5 5-4-4-3 3"),settings:'<circle cx="12" cy="12" r="3"/>'+e("M12 2v3M12 19v3M2 12h3M19 12h3M4.9 4.9 7 7M17 17l2.1 2.1M4.9 19.1 7 17M17 7l2.1-2.1"),users:e("M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2M23 21v-2a4 4 0 0 0-3-3.9M16 3.1a4 4 0 0 1 0 7.8")+'<circle cx="9" cy="7" r="4"/>'};function m(r){Object.assign(n,r)}var d=r=>r in n;function x(r,c){let t=M("span","op-icon");return i(t,r,c),t}function i(r,c,t){c&&!(c in n)&&console.warn(`Optikos: unknown icon "${c}" (register it with registerIcons)`);let o=n[c]??"";r.innerHTML=o.startsWith("<svg")?o:`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${o}</svg>`,t?(r.setAttribute("role","img"),r.setAttribute("aria-label",t),r.removeAttribute("aria-hidden")):(r.setAttribute("aria-hidden","true"),r.removeAttribute("role"),r.removeAttribute("aria-label"))}var s=class extends l{baseCls="op-icon";tag="span";onRender(){i(this.el,this.config.name??"",this.config.label)}setName(c){this.config.name=c,this.rendered&&i(this.el,c,this.config.label)}setLabel(c){this.config.label=c,this.rendered&&i(this.el,this.config.name??"",c)}};h("icon",s);export{m as a,d as b,x as c,s as d};
|
|
2
|
+
//# sourceMappingURL=chunk-QT5JRZZJ.js.map
|