optikos 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/LICENSE +21 -0
- package/README.md +211 -2
- package/THIRD_PARTY_NOTICES.md +83 -0
- package/dist/bind.js +2 -0
- package/dist/bind.js.map +7 -0
- package/dist/chunk-2UPUC4RK.js +2 -0
- package/dist/chunk-2UPUC4RK.js.map +7 -0
- package/dist/chunk-4AA4FQEM.js +2 -0
- package/dist/chunk-4AA4FQEM.js.map +7 -0
- package/dist/chunk-4C666HHU.js +2 -0
- package/dist/chunk-4C666HHU.js.map +7 -0
- package/dist/chunk-4COBH4QJ.js +2 -0
- package/dist/chunk-4COBH4QJ.js.map +7 -0
- package/dist/chunk-4DHQKECB.js +2 -0
- package/dist/chunk-4DHQKECB.js.map +7 -0
- package/dist/chunk-4Q67QI7J.js +2 -0
- package/dist/chunk-4Q67QI7J.js.map +7 -0
- package/dist/chunk-4SUKNSCY.js +2 -0
- package/dist/chunk-4SUKNSCY.js.map +7 -0
- package/dist/chunk-5AXLYDKU.js +2 -0
- package/dist/chunk-5AXLYDKU.js.map +7 -0
- package/dist/chunk-5GNEFX6F.js +2 -0
- package/dist/chunk-5GNEFX6F.js.map +7 -0
- package/dist/chunk-5Q6Y6CM4.js +2 -0
- package/dist/chunk-5Q6Y6CM4.js.map +7 -0
- package/dist/chunk-666O2GKD.js +2 -0
- package/dist/chunk-666O2GKD.js.map +7 -0
- package/dist/chunk-676AKAGF.js +2 -0
- package/dist/chunk-676AKAGF.js.map +7 -0
- package/dist/chunk-6NCXO5ZP.js +2 -0
- package/dist/chunk-6NCXO5ZP.js.map +7 -0
- package/dist/chunk-6NJW7QFD.js +2 -0
- package/dist/chunk-6NJW7QFD.js.map +7 -0
- package/dist/chunk-6O2BXCRN.js +2 -0
- package/dist/chunk-6O2BXCRN.js.map +7 -0
- package/dist/chunk-A66MDXHL.js +2 -0
- package/dist/chunk-A66MDXHL.js.map +7 -0
- package/dist/chunk-ARCW54L2.js +2 -0
- package/dist/chunk-ARCW54L2.js.map +7 -0
- package/dist/chunk-BIYNHKSA.js +2 -0
- package/dist/chunk-BIYNHKSA.js.map +7 -0
- package/dist/chunk-BNPVRIFT.js +2 -0
- package/dist/chunk-BNPVRIFT.js.map +7 -0
- package/dist/chunk-C3N7QTQB.js +2 -0
- package/dist/chunk-C3N7QTQB.js.map +7 -0
- package/dist/chunk-CEXY5A4T.js +2 -0
- package/dist/chunk-CEXY5A4T.js.map +7 -0
- package/dist/chunk-CN7USUJR.js +2 -0
- package/dist/chunk-CN7USUJR.js.map +7 -0
- package/dist/chunk-CQRHNTEX.js +2 -0
- package/dist/chunk-CQRHNTEX.js.map +7 -0
- package/dist/chunk-CUPAPOKC.js +2 -0
- package/dist/chunk-CUPAPOKC.js.map +7 -0
- package/dist/chunk-DXO3UJKL.js +2 -0
- package/dist/chunk-DXO3UJKL.js.map +7 -0
- package/dist/chunk-GZNQPENR.js +2 -0
- package/dist/chunk-GZNQPENR.js.map +7 -0
- package/dist/chunk-HFFK6K4K.js +2 -0
- package/dist/chunk-HFFK6K4K.js.map +7 -0
- package/dist/chunk-IHAYOSBR.js +2 -0
- package/dist/chunk-IHAYOSBR.js.map +7 -0
- package/dist/chunk-IO66A6G5.js +2 -0
- package/dist/chunk-IO66A6G5.js.map +7 -0
- package/dist/chunk-IW7PK4VS.js +2 -0
- package/dist/chunk-IW7PK4VS.js.map +7 -0
- package/dist/chunk-IYPKPLCU.js +2 -0
- package/dist/chunk-IYPKPLCU.js.map +7 -0
- package/dist/chunk-JTYWZMSZ.js +2 -0
- package/dist/chunk-JTYWZMSZ.js.map +7 -0
- package/dist/chunk-JVEPKW5X.js +2 -0
- package/dist/chunk-JVEPKW5X.js.map +7 -0
- package/dist/chunk-JZNEB7A7.js +2 -0
- package/dist/chunk-JZNEB7A7.js.map +7 -0
- package/dist/chunk-K2DGY6MP.js +2 -0
- package/dist/chunk-K2DGY6MP.js.map +7 -0
- package/dist/chunk-LBCWEWPN.js +2 -0
- package/dist/chunk-LBCWEWPN.js.map +7 -0
- package/dist/chunk-LEE2FEEL.js +2 -0
- package/dist/chunk-LEE2FEEL.js.map +7 -0
- package/dist/chunk-LMGCV35W.js +2 -0
- package/dist/chunk-LMGCV35W.js.map +7 -0
- package/dist/chunk-LV6HXFHU.js +3 -0
- package/dist/chunk-LV6HXFHU.js.map +7 -0
- package/dist/chunk-MA5BJL3S.js +2 -0
- package/dist/chunk-MA5BJL3S.js.map +7 -0
- package/dist/chunk-NDBFYIL6.js +2 -0
- package/dist/chunk-NDBFYIL6.js.map +7 -0
- package/dist/chunk-NHVEP72K.js +2 -0
- package/dist/chunk-NHVEP72K.js.map +7 -0
- package/dist/chunk-NV5AIBQP.js +2 -0
- package/dist/chunk-NV5AIBQP.js.map +7 -0
- package/dist/chunk-NWTTHDIM.js +2 -0
- package/dist/chunk-NWTTHDIM.js.map +7 -0
- package/dist/chunk-O4DCHALR.js +2 -0
- package/dist/chunk-O4DCHALR.js.map +7 -0
- package/dist/chunk-ODWPBBVL.js +2 -0
- package/dist/chunk-ODWPBBVL.js.map +7 -0
- package/dist/chunk-OW2ZSMGS.js +2 -0
- package/dist/chunk-OW2ZSMGS.js.map +7 -0
- package/dist/chunk-OWEQT2HN.js +2 -0
- package/dist/chunk-OWEQT2HN.js.map +7 -0
- package/dist/chunk-PSPQH35P.js +2 -0
- package/dist/chunk-PSPQH35P.js.map +7 -0
- package/dist/chunk-PZSHOSOS.js +2 -0
- package/dist/chunk-PZSHOSOS.js.map +7 -0
- package/dist/chunk-QEQIJAAB.js +2 -0
- package/dist/chunk-QEQIJAAB.js.map +7 -0
- package/dist/chunk-SNTHW4K2.js +2 -0
- package/dist/chunk-SNTHW4K2.js.map +7 -0
- package/dist/chunk-T4OYVG2X.js +2 -0
- package/dist/chunk-T4OYVG2X.js.map +7 -0
- package/dist/chunk-TBLICXWW.js +2 -0
- package/dist/chunk-TBLICXWW.js.map +7 -0
- package/dist/chunk-TK2RC3T5.js +2 -0
- package/dist/chunk-TK2RC3T5.js.map +7 -0
- package/dist/chunk-U3X2FW6U.js +2 -0
- package/dist/chunk-U3X2FW6U.js.map +7 -0
- package/dist/chunk-UPOBGNJ5.js +2 -0
- package/dist/chunk-UPOBGNJ5.js.map +7 -0
- package/dist/chunk-VV7CFMPZ.js +2 -0
- package/dist/chunk-VV7CFMPZ.js.map +7 -0
- package/dist/chunk-X2ASKUFD.js +2 -0
- package/dist/chunk-X2ASKUFD.js.map +7 -0
- package/dist/chunk-X6AULZI4.js +1 -0
- package/dist/chunk-X6AULZI4.js.map +7 -0
- package/dist/chunk-XVIC24AW.js +2 -0
- package/dist/chunk-XVIC24AW.js.map +7 -0
- package/dist/chunk-XZ5CUZZP.js +2 -0
- package/dist/chunk-XZ5CUZZP.js.map +7 -0
- package/dist/chunk-XZEOSW3Q.js +2 -0
- package/dist/chunk-XZEOSW3Q.js.map +7 -0
- package/dist/chunk-YET5PM6F.js +2 -0
- package/dist/chunk-YET5PM6F.js.map +7 -0
- package/dist/chunk-Z25NC4CS.js +2 -0
- package/dist/chunk-Z25NC4CS.js.map +7 -0
- package/dist/chunk-ZCAAM4NH.js +2 -0
- package/dist/chunk-ZCAAM4NH.js.map +7 -0
- package/dist/chunk-ZHVSHDLH.js +2 -0
- package/dist/chunk-ZHVSHDLH.js.map +7 -0
- package/dist/chunk-ZYUXCZX7.js +2 -0
- package/dist/chunk-ZYUXCZX7.js.map +7 -0
- package/dist/components/breadcrumb.js +2 -0
- package/dist/components/breadcrumb.js.map +7 -0
- package/dist/components/button.js +2 -0
- package/dist/components/button.js.map +7 -0
- package/dist/components/calendar.js +2 -0
- package/dist/components/calendar.js.map +7 -0
- package/dist/components/chat.js +2 -0
- package/dist/components/chat.js.map +7 -0
- package/dist/components/checkbox.js +2 -0
- package/dist/components/checkbox.js.map +7 -0
- package/dist/components/combobox.js +2 -0
- package/dist/components/combobox.js.map +7 -0
- package/dist/components/commandpalette.js +2 -0
- package/dist/components/commandpalette.js.map +7 -0
- package/dist/components/container.js +2 -0
- package/dist/components/container.js.map +7 -0
- package/dist/components/dataview.js +2 -0
- package/dist/components/dataview.js.map +7 -0
- package/dist/components/datefield.js +2 -0
- package/dist/components/datefield.js.map +7 -0
- package/dist/components/daterangefield.js +2 -0
- package/dist/components/daterangefield.js.map +7 -0
- package/dist/components/dropdown.js +2 -0
- package/dist/components/dropdown.js.map +7 -0
- package/dist/components/fieldset.js +2 -0
- package/dist/components/fieldset.js.map +7 -0
- package/dist/components/filterbuilder.js +2 -0
- package/dist/components/filterbuilder.js.map +7 -0
- package/dist/components/form.js +2 -0
- package/dist/components/form.js.map +7 -0
- package/dist/components/grid.js +2 -0
- package/dist/components/grid.js.map +7 -0
- package/dist/components/icon.js +2 -0
- package/dist/components/icon.js.map +7 -0
- package/dist/components/label.js +2 -0
- package/dist/components/label.js.map +7 -0
- package/dist/components/listbox.js +2 -0
- package/dist/components/listbox.js.map +7 -0
- package/dist/components/lookupfield.js +2 -0
- package/dist/components/lookupfield.js.map +7 -0
- package/dist/components/menu.js +2 -0
- package/dist/components/menu.js.map +7 -0
- package/dist/components/messagebox.js +2 -0
- package/dist/components/messagebox.js.map +7 -0
- package/dist/components/navmenu.js +2 -0
- package/dist/components/navmenu.js.map +7 -0
- package/dist/components/numberfield.js +2 -0
- package/dist/components/numberfield.js.map +7 -0
- package/dist/components/pagination.js +2 -0
- package/dist/components/pagination.js.map +7 -0
- package/dist/components/panel.js +2 -0
- package/dist/components/panel.js.map +7 -0
- package/dist/components/pickerfield.js +2 -0
- package/dist/components/pickerfield.js.map +7 -0
- package/dist/components/radiogroup.js +2 -0
- package/dist/components/radiogroup.js.map +7 -0
- package/dist/components/searchgrid.js +2 -0
- package/dist/components/searchgrid.js.map +7 -0
- package/dist/components/secretfield.js +2 -0
- package/dist/components/secretfield.js.map +7 -0
- package/dist/components/select.js +2 -0
- package/dist/components/select.js.map +7 -0
- package/dist/components/slider.js +2 -0
- package/dist/components/slider.js.map +7 -0
- package/dist/components/spacer.js +2 -0
- package/dist/components/spacer.js.map +7 -0
- package/dist/components/spinner.js +2 -0
- package/dist/components/spinner.js.map +7 -0
- package/dist/components/stepform.js +2 -0
- package/dist/components/stepform.js.map +7 -0
- package/dist/components/stepper.js +2 -0
- package/dist/components/stepper.js.map +7 -0
- package/dist/components/suggestfield.js +2 -0
- package/dist/components/suggestfield.js.map +7 -0
- package/dist/components/table.js +2 -0
- package/dist/components/table.js.map +7 -0
- package/dist/components/tabs.js +2 -0
- package/dist/components/tabs.js.map +7 -0
- package/dist/components/textarea.js +2 -0
- package/dist/components/textarea.js.map +7 -0
- package/dist/components/textfield.js +2 -0
- package/dist/components/textfield.js.map +7 -0
- package/dist/components/toast.js +2 -0
- package/dist/components/toast.js.map +7 -0
- package/dist/components/toolbar.js +2 -0
- package/dist/components/toolbar.js.map +7 -0
- package/dist/components/tooltip.js +2 -0
- package/dist/components/tooltip.js.map +7 -0
- package/dist/components/viewmanager.js +2 -0
- package/dist/components/viewmanager.js.map +7 -0
- package/dist/components/viewport.js +2 -0
- package/dist/components/viewport.js.map +7 -0
- package/dist/components/widget.js +2 -0
- package/dist/components/widget.js.map +7 -0
- package/dist/components/window.js +2 -0
- package/dist/components/window.js.map +7 -0
- package/dist/core.js +2 -0
- package/dist/core.js.map +7 -0
- package/dist/css/base.css +160 -0
- package/dist/css/breadcrumb.css +53 -0
- package/dist/css/button.css +101 -0
- package/dist/css/calendar.css +108 -0
- package/dist/css/chat.css +233 -0
- package/dist/css/checkbox.css +64 -0
- package/dist/css/commandpalette.css +167 -0
- package/dist/css/container.css +5 -0
- package/dist/css/core.css +88 -0
- package/dist/css/dataview.css +56 -0
- package/dist/css/dropdown.css +13 -0
- package/dist/css/field.css +62 -0
- package/dist/css/fieldset.css +32 -0
- package/dist/css/filterbuilder.css +125 -0
- package/dist/css/form.css +8 -0
- package/dist/css/grid.css +367 -0
- package/dist/css/icon.css +16 -0
- package/dist/css/label.css +12 -0
- package/dist/css/layout.css +116 -0
- package/dist/css/listbox.css +50 -0
- package/dist/css/menu.css +47 -0
- package/dist/css/messagebox.css +6 -0
- package/dist/css/motion.css +29 -0
- package/dist/css/navmenu.css +115 -0
- package/dist/css/pagination.css +23 -0
- package/dist/css/panel.css +77 -0
- package/dist/css/pickerfield.css +85 -0
- package/dist/css/radiogroup.css +53 -0
- package/dist/css/searchgrid.css +37 -0
- package/dist/css/secretfield.css +73 -0
- package/dist/css/slider.css +107 -0
- package/dist/css/spacer.css +7 -0
- package/dist/css/stepform.css +46 -0
- package/dist/css/stepper.css +117 -0
- package/dist/css/table.css +36 -0
- package/dist/css/tabs.css +99 -0
- package/dist/css/textarea.css +11 -0
- package/dist/css/textfield.css +59 -0
- package/dist/css/toast.css +91 -0
- package/dist/css/toolbar.css +14 -0
- package/dist/css/tooltip.css +17 -0
- package/dist/css/viewport.css +9 -0
- package/dist/css/widget.css +77 -0
- package/dist/css/window.css +31 -0
- package/dist/data.js +2 -0
- package/dist/data.js.map +7 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +7 -0
- package/dist/motion.js +2 -0
- package/dist/motion.js.map +7 -0
- package/dist/optikos.css +3145 -0
- package/dist/themes/brand.css +240 -0
- package/dist/themes/brutal.css +100 -0
- package/dist/themes/compact.css +17 -0
- package/dist/themes/corporate.css +112 -0
- package/dist/themes/dark.css +38 -0
- package/dist/themes/editorial.css +110 -0
- package/dist/themes/soft.css +101 -0
- package/dist/themes/terminal.css +91 -0
- package/dist/types/bind/index.d.ts +23 -0
- package/dist/types/components/base/button/button.d.ts +34 -0
- package/dist/types/components/base/icon/icon.d.ts +17 -0
- package/dist/types/components/base/label/label.d.ts +14 -0
- package/dist/types/components/breadcrumb.d.ts +1 -0
- package/dist/types/components/button.d.ts +1 -0
- package/dist/types/components/calendar.d.ts +1 -0
- package/dist/types/components/chat/chat/chat.d.ts +84 -0
- package/dist/types/components/chat.d.ts +1 -0
- package/dist/types/components/checkbox.d.ts +1 -0
- package/dist/types/components/combobox.d.ts +1 -0
- package/dist/types/components/commandpalette.d.ts +1 -0
- package/dist/types/components/container.d.ts +1 -0
- package/dist/types/components/data/dataview/dataview.d.ts +61 -0
- package/dist/types/components/data/filterbuilder/filterbuilder.d.ts +71 -0
- package/dist/types/components/data/grid/grid.d.ts +151 -0
- package/dist/types/components/data/pagination/pagination.d.ts +31 -0
- package/dist/types/components/data/searchgrid/searchgrid.d.ts +63 -0
- package/dist/types/components/data/table/table.d.ts +26 -0
- package/dist/types/components/data/viewmanager/viewmanager.d.ts +86 -0
- package/dist/types/components/dataview.d.ts +1 -0
- package/dist/types/components/datefield.d.ts +1 -0
- package/dist/types/components/daterangefield.d.ts +1 -0
- package/dist/types/components/dates/calendar/calendar.d.ts +48 -0
- package/dist/types/components/dropdown.d.ts +1 -0
- package/dist/types/components/feedback/spinner/spinner.d.ts +11 -0
- package/dist/types/components/fields/checkbox/checkbox.d.ts +20 -0
- package/dist/types/components/fields/combobox/combobox.d.ts +15 -0
- package/dist/types/components/fields/datefield/datefield.d.ts +30 -0
- package/dist/types/components/fields/daterangefield/daterangefield.d.ts +32 -0
- package/dist/types/components/fields/listbox/listbox.d.ts +54 -0
- package/dist/types/components/fields/lookupfield/lookupfield.d.ts +25 -0
- package/dist/types/components/fields/numberfield/numberfield.d.ts +31 -0
- package/dist/types/components/fields/pickerfield/pickerfield.d.ts +77 -0
- package/dist/types/components/fields/radiogroup/radiogroup.d.ts +26 -0
- package/dist/types/components/fields/secretfield/secretfield.d.ts +52 -0
- package/dist/types/components/fields/select/select.d.ts +10 -0
- package/dist/types/components/fields/slider/slider.d.ts +62 -0
- package/dist/types/components/fields/suggestfield/suggestfield.d.ts +34 -0
- package/dist/types/components/fields/textarea/textarea.d.ts +16 -0
- package/dist/types/components/fields/textfield/textfield.d.ts +38 -0
- package/dist/types/components/fieldset.d.ts +1 -0
- package/dist/types/components/filterbuilder.d.ts +1 -0
- package/dist/types/components/form/form/form.d.ts +51 -0
- package/dist/types/components/form/stepform/stepform.d.ts +62 -0
- package/dist/types/components/form.d.ts +1 -0
- package/dist/types/components/grid.d.ts +1 -0
- package/dist/types/components/icon.d.ts +1 -0
- package/dist/types/components/label.d.ts +1 -0
- package/dist/types/components/layout/container/container.d.ts +1 -0
- package/dist/types/components/layout/fieldset/fieldset.d.ts +21 -0
- package/dist/types/components/layout/panel/panel.d.ts +47 -0
- package/dist/types/components/layout/spacer/spacer.d.ts +12 -0
- package/dist/types/components/layout/toolbar/toolbar.d.ts +15 -0
- package/dist/types/components/layout/viewport/viewport.d.ts +7 -0
- package/dist/types/components/listbox.d.ts +1 -0
- package/dist/types/components/lookupfield.d.ts +1 -0
- package/dist/types/components/menu.d.ts +1 -0
- package/dist/types/components/messagebox.d.ts +1 -0
- package/dist/types/components/navigation/breadcrumb/breadcrumb.d.ts +32 -0
- package/dist/types/components/navigation/navmenu/navmenu.d.ts +63 -0
- package/dist/types/components/navigation/stepper/stepper.d.ts +31 -0
- package/dist/types/components/navigation/tabs/tabs.d.ts +49 -0
- package/dist/types/components/navmenu.d.ts +1 -0
- package/dist/types/components/numberfield.d.ts +1 -0
- package/dist/types/components/overlays/commandpalette/commandpalette.d.ts +80 -0
- package/dist/types/components/overlays/dropdown/dropdown.d.ts +41 -0
- package/dist/types/components/overlays/menu/menu.d.ts +41 -0
- package/dist/types/components/overlays/messagebox/messagebox.d.ts +53 -0
- package/dist/types/components/overlays/toast/toast.d.ts +45 -0
- package/dist/types/components/overlays/tooltip/tooltip.d.ts +13 -0
- package/dist/types/components/overlays/widget/widget.d.ts +48 -0
- package/dist/types/components/overlays/window/window.d.ts +31 -0
- package/dist/types/components/pagination.d.ts +1 -0
- package/dist/types/components/panel.d.ts +1 -0
- package/dist/types/components/pickerfield.d.ts +1 -0
- package/dist/types/components/radiogroup.d.ts +1 -0
- package/dist/types/components/searchgrid.d.ts +1 -0
- package/dist/types/components/secretfield.d.ts +1 -0
- package/dist/types/components/select.d.ts +1 -0
- package/dist/types/components/slider.d.ts +1 -0
- package/dist/types/components/spacer.d.ts +1 -0
- package/dist/types/components/spinner.d.ts +1 -0
- package/dist/types/components/stepform.d.ts +1 -0
- package/dist/types/components/stepper.d.ts +1 -0
- package/dist/types/components/suggestfield.d.ts +1 -0
- package/dist/types/components/table.d.ts +1 -0
- package/dist/types/components/tabs.d.ts +1 -0
- package/dist/types/components/textarea.d.ts +1 -0
- package/dist/types/components/textfield.d.ts +1 -0
- package/dist/types/components/toast.d.ts +1 -0
- package/dist/types/components/toolbar.d.ts +1 -0
- package/dist/types/components/tooltip.d.ts +1 -0
- package/dist/types/components/viewmanager.d.ts +1 -0
- package/dist/types/components/viewport.d.ts +1 -0
- package/dist/types/components/widget.d.ts +1 -0
- package/dist/types/components/window.d.ts +1 -0
- package/dist/types/core/component.d.ts +90 -0
- package/dist/types/core/container.d.ts +43 -0
- package/dist/types/core/date.d.ts +14 -0
- package/dist/types/core/dom.d.ts +11 -0
- package/dist/types/core/emitter.d.ts +12 -0
- package/dist/types/core/field.d.ts +78 -0
- package/dist/types/core/focus.d.ts +18 -0
- package/dist/types/core/i18n.d.ts +7 -0
- package/dist/types/core/index.d.ts +15 -0
- package/dist/types/core/layer.d.ts +6 -0
- package/dist/types/core/position.d.ts +16 -0
- package/dist/types/core/registry.d.ts +12 -0
- package/dist/types/core/validators.d.ts +10 -0
- package/dist/types/core/virtual.d.ts +24 -0
- package/dist/types/data/column.d.ts +27 -0
- package/dist/types/data/format.d.ts +4 -0
- package/dist/types/data/index.d.ts +5 -0
- package/dist/types/data/model.d.ts +28 -0
- package/dist/types/data/proxy.d.ts +61 -0
- package/dist/types/data/store.d.ts +94 -0
- package/dist/types/index.d.ts +53 -0
- package/dist/types/layout/layout.d.ts +27 -0
- package/dist/types/motion/config.d.ts +83 -0
- package/dist/types/motion/core.d.ts +40 -0
- package/dist/types/motion/extras.d.ts +66 -0
- package/dist/types/motion/index.d.ts +3 -0
- package/dist/types/themes/define.d.ts +30 -0
- package/dist/types/themes/index.d.ts +1 -0
- package/dist/types/ui/enums.d.ts +88 -0
- package/dist/types/ui/index.d.ts +2 -0
- package/dist/types/ui/ui.d.ts +58 -0
- package/dist/ui.js +2 -0
- package/dist/ui.js.map +7 -0
- package/package.json +99 -4
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { TextField, type TextFieldConfig } from '../textfield/textfield.js';
|
|
2
|
+
import { Dropdown } from '../../overlays/dropdown/dropdown.js';
|
|
3
|
+
import { ListBox, type ListItem } from '../listbox/listbox.js';
|
|
4
|
+
import type { Store } from '../../../data/store.js';
|
|
5
|
+
export type { ListItem };
|
|
6
|
+
export type Option = string | number | Record<string, any>;
|
|
7
|
+
export interface PickerConfig<V = unknown> extends TextFieldConfig<V> {
|
|
8
|
+
options?: Option[];
|
|
9
|
+
store?: Store<any>;
|
|
10
|
+
valueField?: string;
|
|
11
|
+
displayField?: string;
|
|
12
|
+
/** Text that does not match an item is discarded on blur. Default true. */
|
|
13
|
+
forceSelection?: boolean;
|
|
14
|
+
emptyText?: string;
|
|
15
|
+
openOnFocus?: boolean;
|
|
16
|
+
maxHeight?: number | string;
|
|
17
|
+
/** Show the record's value (its id) as a badge inside the field and as a hint in every list row. Default false. */
|
|
18
|
+
showValue?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Shared base of Select, ComboBox and SuggestField: an input that owns a Dropdown with a ListBox,
|
|
22
|
+
* the ARIA combobox wiring and the keyboard model. Subclasses decide what typing does (`onType`)
|
|
23
|
+
* and whether the input is editable.
|
|
24
|
+
*/
|
|
25
|
+
export declare abstract class PickerField<V = unknown, C extends PickerConfig<V> = PickerConfig<V>> extends TextField<V, C> {
|
|
26
|
+
protected baseCls: string;
|
|
27
|
+
protected items: ListItem[];
|
|
28
|
+
protected selection?: ListItem;
|
|
29
|
+
/** The user typed since the last selection/blur; the input text is a search term, not the value's label. */
|
|
30
|
+
protected typed: boolean;
|
|
31
|
+
protected list: ListBox;
|
|
32
|
+
protected dd: Dropdown;
|
|
33
|
+
private triggerEl?;
|
|
34
|
+
private idEl?;
|
|
35
|
+
private wrapEl?;
|
|
36
|
+
private buffer;
|
|
37
|
+
private bufferTimer?;
|
|
38
|
+
protected editable(): boolean;
|
|
39
|
+
protected hasTrigger(): boolean;
|
|
40
|
+
/** Called when the user types in an editable picker. */
|
|
41
|
+
protected onType(_text: string): void;
|
|
42
|
+
protected toItem(o: Option): ListItem;
|
|
43
|
+
protected loadItems(): void;
|
|
44
|
+
setOptions(options: Option[]): void;
|
|
45
|
+
setStore(store: Store<any>): void;
|
|
46
|
+
private offStore?;
|
|
47
|
+
private bindStore;
|
|
48
|
+
protected findItem(value: unknown): ListItem | undefined;
|
|
49
|
+
getSelection(): ListItem | undefined;
|
|
50
|
+
/** Selects an item object directly (needed when the list does not contain it, e.g. a remote value). */
|
|
51
|
+
setSelection(item: ListItem | undefined, silent?: boolean): void;
|
|
52
|
+
/** The items to display for the current search state. Default: all. */
|
|
53
|
+
protected visibleItems(): ListItem[];
|
|
54
|
+
protected refreshList(): void;
|
|
55
|
+
private syncActive;
|
|
56
|
+
protected createControl(): HTMLDivElement;
|
|
57
|
+
protected onRender(): void;
|
|
58
|
+
protected onReadonly(readonly: boolean): void;
|
|
59
|
+
protected onDisabled(disabled: boolean): void;
|
|
60
|
+
protected applyValue(v: V): void;
|
|
61
|
+
/** The id badge (`showValue`): visible while a record is selected, and the input makes room for it. */
|
|
62
|
+
protected paintId(): void;
|
|
63
|
+
getDisplayText(): string;
|
|
64
|
+
open(): void;
|
|
65
|
+
close(): void;
|
|
66
|
+
toggle(): void;
|
|
67
|
+
expand(): void;
|
|
68
|
+
collapse(): void;
|
|
69
|
+
protected pick(item: ListItem): void;
|
|
70
|
+
/** Called on blur: commits free text or reverts to the selected label. */
|
|
71
|
+
protected settle(): void;
|
|
72
|
+
protected onInput(): void;
|
|
73
|
+
protected onKey(e: KeyboardEvent): void;
|
|
74
|
+
/** Select-style type-ahead: letters jump to the next label that starts with them. */
|
|
75
|
+
private typeahead;
|
|
76
|
+
setEmptyText(text: string): void;
|
|
77
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Field, type FieldConfig } from '../../../core/field.js';
|
|
2
|
+
export type RadioOption = string | {
|
|
3
|
+
value: string | number;
|
|
4
|
+
label: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export interface RadioGroupConfig extends FieldConfig<string | number | null> {
|
|
8
|
+
options?: RadioOption[];
|
|
9
|
+
direction?: 'vertical' | 'horizontal';
|
|
10
|
+
}
|
|
11
|
+
export declare class RadioGroup extends Field<string | number | null, RadioGroupConfig> {
|
|
12
|
+
protected baseCls: string;
|
|
13
|
+
private group;
|
|
14
|
+
private inputs;
|
|
15
|
+
protected emptyValue(): null;
|
|
16
|
+
protected createControl(): HTMLElement;
|
|
17
|
+
private opts;
|
|
18
|
+
private buildOptions;
|
|
19
|
+
protected onRender(): void;
|
|
20
|
+
protected applyValue(v: string | number | null): void;
|
|
21
|
+
/** The `is-checked` class (what the styled dot reads) mirrors the native `checked` of each option. */
|
|
22
|
+
private paintChecked;
|
|
23
|
+
getDisplayText(): string;
|
|
24
|
+
protected onDisabled(disabled: boolean): void;
|
|
25
|
+
setOptions(options: RadioOption[]): void;
|
|
26
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { TextField, type TextFieldConfig } from '../textfield/textfield.js';
|
|
2
|
+
export interface SecretFieldConfig extends TextFieldConfig<string | null> {
|
|
3
|
+
/** A secret is already saved. It can never be shown; it can only be replaced. `form.load({ key: true })` sets it too. */
|
|
4
|
+
stored?: boolean;
|
|
5
|
+
/** Ask before replacing a saved secret. Default true. */
|
|
6
|
+
confirmReplace?: boolean;
|
|
7
|
+
replaceTitle?: string;
|
|
8
|
+
replaceText?: string;
|
|
9
|
+
/** The eye hides the value again when the field loses focus. Default true. */
|
|
10
|
+
autoHide?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A field for secrets. While you type you can peek at what you typed (the eye); once a secret is saved it is shown only as a
|
|
14
|
+
* mask and can never be read back: to change it you replace it, after a warning. `getValue()` is `null` while untouched
|
|
15
|
+
* (keep what is saved), the new text once typed, `''` when replaced and left empty.
|
|
16
|
+
*/
|
|
17
|
+
export declare class SecretField extends TextField<string | null, SecretFieldConfig> {
|
|
18
|
+
protected baseCls: string;
|
|
19
|
+
private stored;
|
|
20
|
+
private initialStored;
|
|
21
|
+
private replacing;
|
|
22
|
+
private revealed;
|
|
23
|
+
private eyeBtn;
|
|
24
|
+
private replaceBtn;
|
|
25
|
+
private keepBtn;
|
|
26
|
+
private hint;
|
|
27
|
+
constructor(config?: SecretFieldConfig);
|
|
28
|
+
protected emptyValue(): string | null;
|
|
29
|
+
/** A saved secret that was not touched counts as filled in (so `required` is satisfied). */
|
|
30
|
+
protected isEmpty(v: string | null): boolean;
|
|
31
|
+
protected createControl(): HTMLDivElement;
|
|
32
|
+
protected onRender(): void;
|
|
33
|
+
isStored(): boolean;
|
|
34
|
+
/** The user chose to replace a saved secret and has not finished. */
|
|
35
|
+
isReplacing(): boolean;
|
|
36
|
+
isRevealed(): boolean;
|
|
37
|
+
/** Says whether a secret is saved (a saved secret is never given to the field, only the fact that it exists). */
|
|
38
|
+
setStored(stored: boolean): void;
|
|
39
|
+
/** `true` (what `form.load` passes for "a secret exists") means saved; a string is a new value typed or set by code. */
|
|
40
|
+
setValue(v: string | boolean | null, silent?: boolean): void;
|
|
41
|
+
markClean(): void;
|
|
42
|
+
/** Back to what was loaded: the saved secret, untouched. */
|
|
43
|
+
reset(): void;
|
|
44
|
+
/** Warns, then turns a saved secret into an empty field to type the new value in. Resolves to whether it was replaced. */
|
|
45
|
+
replace(): Promise<boolean>;
|
|
46
|
+
/** Gives up replacing: the saved secret stays as it was. */
|
|
47
|
+
keep(): void;
|
|
48
|
+
setRevealed(on: boolean): void;
|
|
49
|
+
/** Never reveals: a mask when there is something, nothing otherwise. */
|
|
50
|
+
getDisplayText(): string;
|
|
51
|
+
private paint;
|
|
52
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PickerField, type PickerConfig } from '../pickerfield/pickerfield.js';
|
|
2
|
+
export interface SelectConfig<V = unknown> extends PickerConfig<V> {
|
|
3
|
+
}
|
|
4
|
+
/** Pick one option from a closed list. The input is read-only; letters jump to matching labels. */
|
|
5
|
+
export declare class Select<V = unknown> extends PickerField<V, SelectConfig<V>> {
|
|
6
|
+
protected baseCls: string;
|
|
7
|
+
protected editable(): boolean;
|
|
8
|
+
protected emptyValue(): V;
|
|
9
|
+
protected isEmpty(v: V): boolean;
|
|
10
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Field, type FieldConfig } from '../../../core/field.js';
|
|
2
|
+
export interface SliderMark {
|
|
3
|
+
value: number;
|
|
4
|
+
label?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface SliderConfig extends FieldConfig<number | [number, number]> {
|
|
7
|
+
min?: number;
|
|
8
|
+
max?: number;
|
|
9
|
+
step?: number;
|
|
10
|
+
/** Two knobs: the value is `[low, high]`. */
|
|
11
|
+
range?: boolean;
|
|
12
|
+
marks?: boolean | SliderMark[];
|
|
13
|
+
/** When the bubble with the value shows. Default `drag` (while dragging or focused). */
|
|
14
|
+
showValue?: 'drag' | 'always' | 'never';
|
|
15
|
+
format?: (v: number) => string;
|
|
16
|
+
showScale?: boolean;
|
|
17
|
+
}
|
|
18
|
+
type V = number | [number, number];
|
|
19
|
+
/** A bar with a ball to drag: a number, or a range with two balls. */
|
|
20
|
+
export declare class Slider extends Field<V, SliderConfig> {
|
|
21
|
+
protected baseCls: string;
|
|
22
|
+
private track;
|
|
23
|
+
private fill;
|
|
24
|
+
private knobs;
|
|
25
|
+
private bubbles;
|
|
26
|
+
private marksEl;
|
|
27
|
+
private get min();
|
|
28
|
+
private get max();
|
|
29
|
+
private get step();
|
|
30
|
+
private get isRange();
|
|
31
|
+
protected emptyValue(): V;
|
|
32
|
+
protected isEmpty(): boolean;
|
|
33
|
+
private fmt;
|
|
34
|
+
private vals;
|
|
35
|
+
/** Snaps to a multiple of `step` inside [min, max] (without float noise). */
|
|
36
|
+
private snap;
|
|
37
|
+
protected createControl(): HTMLDivElement;
|
|
38
|
+
private buildKnobs;
|
|
39
|
+
protected onRender(): void;
|
|
40
|
+
private pct;
|
|
41
|
+
protected applyValue(v: V): void;
|
|
42
|
+
private paintMarks;
|
|
43
|
+
private valueAt;
|
|
44
|
+
private nearest;
|
|
45
|
+
private onTrackDown;
|
|
46
|
+
private onKnobDown;
|
|
47
|
+
/** The user moved knob `i` to `v`: update the value (knobs of a range never cross) and tell everyone. */
|
|
48
|
+
private setAt;
|
|
49
|
+
private onKey;
|
|
50
|
+
/** Where the (first) knob is, 0–100. */
|
|
51
|
+
getPercent(): number;
|
|
52
|
+
private refresh;
|
|
53
|
+
setMin(min: number): void;
|
|
54
|
+
setMax(max: number): void;
|
|
55
|
+
setStep(step: number): void;
|
|
56
|
+
private clampAll;
|
|
57
|
+
/** Switches between one knob and two; the value is converted. */
|
|
58
|
+
setRange(range: boolean): void;
|
|
59
|
+
protected onDisabled(disabled: boolean): void;
|
|
60
|
+
protected onReadonly(readonly: boolean): void;
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { PickerField, type PickerConfig, type ListItem, type Option } from '../pickerfield/pickerfield.js';
|
|
2
|
+
export interface SuggestConfig<V = unknown> extends PickerConfig<V> {
|
|
3
|
+
/** Async search. Receives the text and an AbortSignal that fires when a newer search starts. */
|
|
4
|
+
query?: (text: string, ctx: {
|
|
5
|
+
signal: AbortSignal;
|
|
6
|
+
}) => Promise<Option[]> | Option[];
|
|
7
|
+
minChars?: number;
|
|
8
|
+
/** Debounce in ms. */
|
|
9
|
+
delay?: number;
|
|
10
|
+
highlight?: boolean;
|
|
11
|
+
/** Leading icon name; `false` hides it. Default: the magnifier (`search`). */
|
|
12
|
+
icon?: string | false;
|
|
13
|
+
}
|
|
14
|
+
/** Search-as-you-type field: results come from `query` (or a Store with a proxy), not from a fixed list. */
|
|
15
|
+
export declare class SuggestField<V = unknown> extends PickerField<V, SuggestConfig<V>> {
|
|
16
|
+
protected baseCls: string;
|
|
17
|
+
private seq;
|
|
18
|
+
private abort?;
|
|
19
|
+
private cancelWait?;
|
|
20
|
+
private live;
|
|
21
|
+
protected hasTrigger(): boolean;
|
|
22
|
+
protected emptyValue(): V;
|
|
23
|
+
protected isEmpty(v: V): boolean;
|
|
24
|
+
protected createControl(): HTMLDivElement;
|
|
25
|
+
protected onRender(): void;
|
|
26
|
+
protected onType(text: string): void;
|
|
27
|
+
/** Runs a search now (skips the debounce). */
|
|
28
|
+
search(text: string): Promise<void>;
|
|
29
|
+
private showResults;
|
|
30
|
+
private setSearching;
|
|
31
|
+
setQuery(query: NonNullable<SuggestConfig['query']>): void;
|
|
32
|
+
clearSuggestions(): void;
|
|
33
|
+
protected pick(item: ListItem): void;
|
|
34
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TextField, type TextFieldConfig } from '../textfield/textfield.js';
|
|
2
|
+
export interface TextAreaConfig extends TextFieldConfig {
|
|
3
|
+
rows?: number;
|
|
4
|
+
autoGrow?: boolean;
|
|
5
|
+
maxRows?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class TextArea extends TextField<string, TextAreaConfig> {
|
|
8
|
+
protected baseCls: string;
|
|
9
|
+
protected createInput(): HTMLTextAreaElement;
|
|
10
|
+
protected onKey(e: KeyboardEvent): void;
|
|
11
|
+
protected onInput(): void;
|
|
12
|
+
protected applyValue(v: string): void;
|
|
13
|
+
notifyMount(): void;
|
|
14
|
+
private grow;
|
|
15
|
+
setRows(rows: number): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Field, type FieldConfig } from '../../../core/field.js';
|
|
2
|
+
export interface TextFieldConfig<V = string> extends FieldConfig<V> {
|
|
3
|
+
inputType?: 'text' | 'email' | 'tel' | 'url' | 'search' | 'password';
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
maxLength?: number;
|
|
6
|
+
minLength?: number;
|
|
7
|
+
pattern?: string;
|
|
8
|
+
autocomplete?: string;
|
|
9
|
+
selectOnFocus?: boolean;
|
|
10
|
+
clearable?: boolean;
|
|
11
|
+
}
|
|
12
|
+
type Input = HTMLInputElement | HTMLTextAreaElement;
|
|
13
|
+
export declare class TextField<V = string, C extends TextFieldConfig<V> = TextFieldConfig<V>> extends Field<V, C> {
|
|
14
|
+
protected baseCls: string;
|
|
15
|
+
protected clearBtn?: HTMLButtonElement;
|
|
16
|
+
/** Subclasses (TextArea, ...) replace the native control. */
|
|
17
|
+
protected createInput(): Input;
|
|
18
|
+
protected get input(): Input;
|
|
19
|
+
protected createControl(): HTMLDivElement;
|
|
20
|
+
/** The text the user typed becomes the value on every edit. */
|
|
21
|
+
protected onInput(): void;
|
|
22
|
+
/** Text → value. Subclasses with non-string values (NumberField) override. */
|
|
23
|
+
protected parse(text: string): V;
|
|
24
|
+
/** Value → text shown in the input. */
|
|
25
|
+
protected display(v: V): string;
|
|
26
|
+
protected onKey(e: KeyboardEvent): void;
|
|
27
|
+
getDisplayText(): string;
|
|
28
|
+
protected applyValue(v: V): void;
|
|
29
|
+
protected onReadonly(readonly: boolean): void;
|
|
30
|
+
protected onDisabled(disabled: boolean): void;
|
|
31
|
+
protected check(): string;
|
|
32
|
+
setPlaceholder(text: string): void;
|
|
33
|
+
setMaxLength(n: number): void;
|
|
34
|
+
setInputType(type: NonNullable<TextFieldConfig['inputType']>): void;
|
|
35
|
+
select(): void;
|
|
36
|
+
getInput(): Input;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/layout/fieldset/fieldset.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/data/filterbuilder/filterbuilder.js';
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Container, type ContainerConfig } from '../../../core/container.js';
|
|
2
|
+
import { Field } from '../../../core/field.js';
|
|
3
|
+
import type { Model } from '../../../data/model.js';
|
|
4
|
+
import type { Component } from '../../../core/component.js';
|
|
5
|
+
import type { LayoutSpec } from '../../../layout/layout.js';
|
|
6
|
+
export interface FormTab {
|
|
7
|
+
title: string;
|
|
8
|
+
icon?: string;
|
|
9
|
+
items: ContainerConfig['items'];
|
|
10
|
+
/** Default: two columns (one on a phone). */
|
|
11
|
+
layout?: LayoutSpec;
|
|
12
|
+
}
|
|
13
|
+
export interface FormConfig extends ContainerConfig {
|
|
14
|
+
/** Shortcut: the fields in tabs, still one form (one `getValues`, one `validate`, one dirty). */
|
|
15
|
+
tabs?: FormTab[];
|
|
16
|
+
/** Default `labelPos` for fields that do not set their own. */
|
|
17
|
+
labelPos?: 'top' | 'left';
|
|
18
|
+
readonly?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class Form extends Container<FormConfig> {
|
|
21
|
+
protected baseCls: string;
|
|
22
|
+
protected tag: 'form';
|
|
23
|
+
constructor(config?: FormConfig);
|
|
24
|
+
protected build(): HTMLElement;
|
|
25
|
+
protected onRender(): void;
|
|
26
|
+
getFields(): Field<any>[];
|
|
27
|
+
getField(name: string): Field<any> | undefined;
|
|
28
|
+
/** Nested object built from field names (`address.city` → `{ address: { city } }`). */
|
|
29
|
+
getValues(opts?: {
|
|
30
|
+
dirtyOnly?: boolean;
|
|
31
|
+
}): Record<string, any>;
|
|
32
|
+
/** Sets the fields present in `values` (silently). */
|
|
33
|
+
setValues(values: Record<string, any>): void;
|
|
34
|
+
/** Fills the form from a plain object or a Model, and makes it the "clean" state. */
|
|
35
|
+
load(record: Record<string, any> | Model): void;
|
|
36
|
+
/** Brings a field into view: asks every ancestor that shows one child at a time (Tabs, a card layout) to show the branch. */
|
|
37
|
+
protected reveal(field: Component): void;
|
|
38
|
+
/** Error counts and "changed" dots on the headers of every Tabs inside the form. */
|
|
39
|
+
protected syncTabs(): void;
|
|
40
|
+
/** Writes the changed fields back into a Model. */
|
|
41
|
+
updateRecord(model: Model): void;
|
|
42
|
+
markClean(): void;
|
|
43
|
+
reset(): void;
|
|
44
|
+
isDirty(): boolean;
|
|
45
|
+
isValid(): boolean;
|
|
46
|
+
clearErrors(): void;
|
|
47
|
+
/** Validates every field (marks errors) and focuses the first invalid one. */
|
|
48
|
+
validate(): boolean;
|
|
49
|
+
submit(): boolean;
|
|
50
|
+
setReadonly(readonly: boolean): void;
|
|
51
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Form, type FormConfig } from '../form/form.js';
|
|
2
|
+
import { type ContainerConfig } from '../../../core/container.js';
|
|
3
|
+
import type { LayoutSpec } from '../../../layout/layout.js';
|
|
4
|
+
import { Stepper } from '../../navigation/stepper/stepper.js';
|
|
5
|
+
import '../../layout/container/container.js';
|
|
6
|
+
export interface FormStep {
|
|
7
|
+
title: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
icon?: string;
|
|
10
|
+
/** May be left alone: the stepper says "optional" (its fields are still validated if filled wrongly). */
|
|
11
|
+
optional?: boolean;
|
|
12
|
+
items: ContainerConfig['items'];
|
|
13
|
+
/** Default: two columns (one on a phone). */
|
|
14
|
+
layout?: LayoutSpec;
|
|
15
|
+
}
|
|
16
|
+
export interface StepFormConfig extends FormConfig {
|
|
17
|
+
steps: FormStep[];
|
|
18
|
+
/** Moving forward validates the steps on the way. `false` lets the user click any step. Default true. */
|
|
19
|
+
linear?: boolean;
|
|
20
|
+
/** Adds a last "Review" step with a summary of the values; a function renders the summary yourself. */
|
|
21
|
+
review?: boolean | ((values: Record<string, any>, form: StepForm) => string | Node);
|
|
22
|
+
reviewTitle?: string;
|
|
23
|
+
backText?: string;
|
|
24
|
+
nextText?: string;
|
|
25
|
+
finishText?: string;
|
|
26
|
+
/** Shows a Cancel button (fires `cancel`). */
|
|
27
|
+
cancelText?: string;
|
|
28
|
+
}
|
|
29
|
+
/** One form, several steps: a Stepper on top, one step at a time, Back / Next / Finish, validation per step and an optional review. */
|
|
30
|
+
export declare class StepForm extends Form {
|
|
31
|
+
protected baseCls: string;
|
|
32
|
+
private stepper;
|
|
33
|
+
private body;
|
|
34
|
+
private pane?;
|
|
35
|
+
private backBtn;
|
|
36
|
+
private nextBtn;
|
|
37
|
+
private finishBtn;
|
|
38
|
+
private index;
|
|
39
|
+
constructor(config: StepFormConfig);
|
|
40
|
+
private cfg;
|
|
41
|
+
private count;
|
|
42
|
+
private real;
|
|
43
|
+
getStep(): number;
|
|
44
|
+
getStepCount(): number;
|
|
45
|
+
getStepper(): Stepper;
|
|
46
|
+
private stepFields;
|
|
47
|
+
/** Validates one step's fields (marks the errors, sets its state on the stepper). */
|
|
48
|
+
validateStep(i: number): boolean;
|
|
49
|
+
/** Moves to a step. Forward with `linear` validates the steps on the way and stops at the first invalid one. Returns whether it got there. */
|
|
50
|
+
goTo(j: number): boolean;
|
|
51
|
+
next(): boolean;
|
|
52
|
+
back(): boolean;
|
|
53
|
+
/** The card layout changed the visible step (by `goTo`, or because `validate` brought an invalid field into view). */
|
|
54
|
+
private onActivate;
|
|
55
|
+
private refreshReview;
|
|
56
|
+
/** What the user sees for a field (its display text; ticks for booleans, dots for passwords). */
|
|
57
|
+
private show_;
|
|
58
|
+
/** Enter and the Finish button: Next on every step but the last; on the last, validate everything and `finish`. */
|
|
59
|
+
submit(): boolean;
|
|
60
|
+
/** Clears the values and goes back to the first step. */
|
|
61
|
+
reset(): void;
|
|
62
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/form/form/form.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/data/grid/grid.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/base/icon/icon.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/base/label/label.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Container, type ContainerConfig } from '../../../core/container.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Container, type ContainerConfig } from '../../../core/container.js';
|
|
2
|
+
export interface FieldSetConfig extends ContainerConfig {
|
|
3
|
+
title?: string;
|
|
4
|
+
collapsible?: boolean;
|
|
5
|
+
collapsed?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare class FieldSet extends Container<FieldSetConfig> {
|
|
8
|
+
protected baseCls: string;
|
|
9
|
+
protected tag: 'fieldset';
|
|
10
|
+
private legend;
|
|
11
|
+
private bodyEl;
|
|
12
|
+
private toggleBtn?;
|
|
13
|
+
getBody(): HTMLElement;
|
|
14
|
+
protected build(): HTMLElement;
|
|
15
|
+
protected onRender(): void;
|
|
16
|
+
setTitle(title: string): void;
|
|
17
|
+
setCollapsed(collapsed: boolean): void;
|
|
18
|
+
collapse(): void;
|
|
19
|
+
expand(): void;
|
|
20
|
+
toggle(): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Container, type ContainerConfig } from '../../../core/container.js';
|
|
2
|
+
import { type ToolbarConfig } from '../toolbar/toolbar.js';
|
|
3
|
+
import type { ButtonConfig } from '../../base/button/button.js';
|
|
4
|
+
export interface PanelTool {
|
|
5
|
+
icon: string;
|
|
6
|
+
label: string;
|
|
7
|
+
handler?: (panel: Panel, ev: MouseEvent) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface PanelConfig extends ContainerConfig {
|
|
10
|
+
title?: string;
|
|
11
|
+
icon?: string;
|
|
12
|
+
collapsible?: boolean;
|
|
13
|
+
collapsed?: boolean;
|
|
14
|
+
closable?: boolean;
|
|
15
|
+
closeAction?: 'destroy' | 'hide';
|
|
16
|
+
tools?: PanelTool[];
|
|
17
|
+
tbar?: ToolbarConfig['items'];
|
|
18
|
+
bbar?: ToolbarConfig['items'];
|
|
19
|
+
buttons?: ButtonConfig[];
|
|
20
|
+
bodyCls?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class Panel<C extends PanelConfig = PanelConfig> extends Container<C> {
|
|
23
|
+
protected baseCls: string;
|
|
24
|
+
protected headerEl: HTMLElement;
|
|
25
|
+
protected titleEl: HTMLElement;
|
|
26
|
+
protected bodyEl: HTMLElement;
|
|
27
|
+
private toolsEl;
|
|
28
|
+
private iconHost;
|
|
29
|
+
private toggleBtn?;
|
|
30
|
+
private bars;
|
|
31
|
+
private bodyId;
|
|
32
|
+
private titleId;
|
|
33
|
+
getBody(): HTMLElement;
|
|
34
|
+
protected build(): HTMLDivElement;
|
|
35
|
+
protected onRender(): void;
|
|
36
|
+
private addTool;
|
|
37
|
+
private updateHeader;
|
|
38
|
+
setTitle(title: string): void;
|
|
39
|
+
setIcon(name: string): void;
|
|
40
|
+
/** Collapses/expands without events. Use `collapse()`/`expand()` for the full behavior. */
|
|
41
|
+
setCollapsed(collapsed: boolean): void;
|
|
42
|
+
collapse(): void;
|
|
43
|
+
expand(): void;
|
|
44
|
+
toggle(): void;
|
|
45
|
+
close(): void;
|
|
46
|
+
protected onDestroy(): void;
|
|
47
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Component, type ComponentConfig } from '../../../core/component.js';
|
|
2
|
+
export interface SpacerConfig extends ComponentConfig {
|
|
3
|
+
/** Renders a vertical separator line. */
|
|
4
|
+
line?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** Without `width`/`flex` it takes the free space (`flex: 1`), pushing the next items away. */
|
|
7
|
+
export declare class Spacer extends Component<SpacerConfig> {
|
|
8
|
+
protected baseCls: string;
|
|
9
|
+
protected tag: 'span';
|
|
10
|
+
protected onRender(): void;
|
|
11
|
+
setLine(line: boolean): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Container, type ContainerConfig } from '../../../core/container.js';
|
|
2
|
+
import { type AnyConfig } from '../../../core/registry.js';
|
|
3
|
+
import '../spacer/spacer.js';
|
|
4
|
+
export interface ToolbarConfig extends ContainerConfig {
|
|
5
|
+
vertical?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Items may be `'->'` (fill space), `'-'` (separator) or `' '` (small gap). */
|
|
8
|
+
export declare class Toolbar extends Container<ToolbarConfig> {
|
|
9
|
+
protected baseCls: string;
|
|
10
|
+
private rover?;
|
|
11
|
+
protected shorthand(s: string): AnyConfig;
|
|
12
|
+
protected build(): HTMLElement;
|
|
13
|
+
protected onRender(): void;
|
|
14
|
+
notifyMount(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Container, type ContainerConfig } from '../../../core/container.js';
|
|
2
|
+
/** Root container that fills the window. Only one can exist at a time. */
|
|
3
|
+
export declare class Viewport extends Container<ContainerConfig> {
|
|
4
|
+
protected baseCls: string;
|
|
5
|
+
constructor(config?: ContainerConfig);
|
|
6
|
+
protected onRender(): void;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/fields/listbox/listbox.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/fields/lookupfield/lookupfield.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/overlays/menu/menu.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../components/overlays/messagebox/messagebox.js';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Component, type ComponentConfig } from '../../../core/component.js';
|
|
2
|
+
export interface BreadcrumbItem {
|
|
3
|
+
text: string;
|
|
4
|
+
icon?: string;
|
|
5
|
+
/** Renders a real link (native navigation, middle-click, copy link). */
|
|
6
|
+
href?: string;
|
|
7
|
+
handler?: (item: BreadcrumbItem) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface BreadcrumbConfig extends ComponentConfig {
|
|
10
|
+
items?: BreadcrumbItem[];
|
|
11
|
+
/** More items than this collapse the middle into a "…" menu. Minimum 3, default 4. */
|
|
12
|
+
maxItems?: number;
|
|
13
|
+
separator?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class Breadcrumb extends Component<BreadcrumbConfig> {
|
|
16
|
+
protected baseCls: string;
|
|
17
|
+
protected tag: 'nav';
|
|
18
|
+
private list;
|
|
19
|
+
private menu?;
|
|
20
|
+
protected onRender(): void;
|
|
21
|
+
private items;
|
|
22
|
+
/** Indexes hidden behind the "…" button (empty when everything fits). */
|
|
23
|
+
private collapsed;
|
|
24
|
+
private paint;
|
|
25
|
+
/** Runs `before-navigate` / handler / `navigate`. Returns false when cancelled. */
|
|
26
|
+
private go;
|
|
27
|
+
private showHidden;
|
|
28
|
+
setItems(items: BreadcrumbItem[]): void;
|
|
29
|
+
setMaxItems(max: number): void;
|
|
30
|
+
/** Any text, e.g. `'/'` or `'›'`. */
|
|
31
|
+
setSeparator(separator: string): void;
|
|
32
|
+
}
|