@soxa-ui/solid 0.0.0-stage → 0.3.0-beta.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/LICENSE +21 -0
- package/README.md +266 -2
- package/dist/adapter/common/ResolvedSlot.d.ts +29 -0
- package/dist/adapter/common/ResolvedSlot.js +42 -0
- package/dist/adapter/common/click-action.d.ts +6 -0
- package/dist/adapter/common/click-action.js +11 -0
- package/dist/adapter/common/createSolidAdapterContext.d.ts +8 -0
- package/dist/adapter/common/createSolidAdapterContext.js +20 -0
- package/dist/adapter/common/handlers.d.ts +10 -0
- package/dist/adapter/common/handlers.js +10 -0
- package/dist/adapter/common/hydration.d.ts +23 -0
- package/dist/adapter/common/hydration.js +44 -0
- package/dist/adapter/common/icon.d.ts +9 -0
- package/dist/adapter/common/icon.js +28 -0
- package/dist/adapter/common/index.d.ts +9 -0
- package/dist/adapter/common/naming.d.ts +3 -0
- package/dist/adapter/common/naming.js +9 -0
- package/dist/adapter/common/profile.d.ts +3 -0
- package/dist/adapter/common/profile.js +9 -0
- package/dist/adapter/common/root.d.ts +96 -0
- package/dist/adapter/common/root.js +128 -0
- package/dist/adapter/common/slots.d.ts +30 -0
- package/dist/adapter/common/slots.js +75 -0
- package/dist/adapter/elevator/Elevate.d.ts +12 -0
- package/dist/adapter/elevator/Elevate.js +16 -0
- package/dist/adapter/elevator/elevator.class.d.ts +17 -0
- package/dist/adapter/elevator/elevator.class.js +27 -0
- package/dist/adapter/elevator/index.d.ts +4 -0
- package/dist/adapter/elevator/layer.d.ts +16 -0
- package/dist/adapter/elevator/layer.js +28 -0
- package/dist/adapter/elevator/useElevator.d.ts +13 -0
- package/dist/adapter/elevator/useElevator.js +19 -0
- package/dist/adapter/index.d.ts +5 -0
- package/dist/adapter/locale/LocaleProvider.d.ts +22 -0
- package/dist/adapter/locale/LocaleProvider.js +33 -0
- package/dist/adapter/locale/context.d.ts +4 -0
- package/dist/adapter/locale/context.js +9 -0
- package/dist/adapter/locale/index.d.ts +2 -0
- package/dist/adapter/runtime/KeyedFor.d.ts +14 -0
- package/dist/adapter/runtime/KeyedFor.js +54 -0
- package/dist/adapter/runtime/Root.d.ts +20 -0
- package/dist/adapter/runtime/Root.js +43 -0
- package/dist/adapter/runtime/Teleport.d.ts +14 -0
- package/dist/adapter/runtime/Teleport.js +45 -0
- package/dist/adapter/runtime/field-text.d.ts +22 -0
- package/dist/adapter/runtime/field-text.js +38 -0
- package/dist/adapter/runtime/flow.d.ts +34 -0
- package/dist/adapter/runtime/flow.js +70 -0
- package/dist/adapter/runtime/index.d.ts +8 -0
- package/dist/adapter/runtime/part-node.d.ts +38 -0
- package/dist/adapter/runtime/part-node.js +76 -0
- package/dist/adapter/runtime/state.d.ts +43 -0
- package/dist/adapter/runtime/state.js +116 -0
- package/dist/adapter/runtime/tag.d.ts +11 -0
- package/dist/adapter/runtime/tag.js +11 -0
- package/dist/adapter/runtime/useAdapter.d.ts +74 -0
- package/dist/adapter/runtime/useAdapter.js +110 -0
- package/dist/adapter/toasts/index.d.ts +3 -0
- package/dist/adapter/toasts/render.d.ts +3 -0
- package/dist/adapter/toasts/render.js +7 -0
- package/dist/adapter/toasts/types.d.ts +6 -0
- package/dist/adapter/toasts/useToasts.d.ts +8 -0
- package/dist/adapter/toasts/useToasts.js +15 -0
- package/dist/components/accordion/Accordion.d.ts +4 -0
- package/dist/components/accordion/Accordion.js +71 -0
- package/dist/components/accordion/base.component.d.ts +7 -0
- package/dist/components/accordion/index.d.ts +8 -0
- package/dist/components/accordion/index.js +9 -0
- package/dist/components/accordion/item/Item.d.ts +7 -0
- package/dist/components/accordion/item/Item.js +110 -0
- package/dist/components/accordion/item/base.component.d.ts +9 -0
- package/dist/components/accordion/item/index.d.ts +3 -0
- package/dist/components/accordion/item/setup.component.d.ts +39 -0
- package/dist/components/accordion/item/setup.component.js +24 -0
- package/dist/components/accordion/setup.component.d.ts +35 -0
- package/dist/components/accordion/setup.component.js +27 -0
- package/dist/components/button/Button.d.ts +12 -0
- package/dist/components/button/Button.js +59 -0
- package/dist/components/button/base.component.d.ts +8 -0
- package/dist/components/button/index.d.ts +3 -0
- package/dist/components/button/setup.component.d.ts +22 -0
- package/dist/components/button/setup.component.js +13 -0
- package/dist/components/calendar/Calendar.d.ts +8 -0
- package/dist/components/calendar/Calendar.js +335 -0
- package/dist/components/calendar/base.component.d.ts +7 -0
- package/dist/components/calendar/index.d.ts +8 -0
- package/dist/components/calendar/index.js +9 -0
- package/dist/components/calendar/item/Item.d.ts +8 -0
- package/dist/components/calendar/item/Item.js +51 -0
- package/dist/components/calendar/item/base.component.d.ts +7 -0
- package/dist/components/calendar/item/index.d.ts +3 -0
- package/dist/components/calendar/item/setup.component.d.ts +13 -0
- package/dist/components/calendar/item/setup.component.js +21 -0
- package/dist/components/calendar/setup.component.d.ts +36 -0
- package/dist/components/calendar/setup.component.js +28 -0
- package/dist/components/check-box/CheckBox.d.ts +8 -0
- package/dist/components/check-box/CheckBox.js +97 -0
- package/dist/components/check-box/base.component.d.ts +8 -0
- package/dist/components/check-box/index.d.ts +3 -0
- package/dist/components/check-box/setup.component.d.ts +35 -0
- package/dist/components/check-box/setup.component.js +18 -0
- package/dist/components/component/base.component.d.ts +6 -0
- package/dist/components/component/index.d.ts +1 -0
- package/dist/components/component-view/ComponentView.d.ts +4 -0
- package/dist/components/component-view/ComponentView.js +43 -0
- package/dist/components/component-view/base.component.d.ts +6 -0
- package/dist/components/component-view/index.d.ts +3 -0
- package/dist/components/component-view/setup.component.d.ts +9 -0
- package/dist/components/component-view/setup.component.js +13 -0
- package/dist/components/control/base.component.d.ts +6 -0
- package/dist/components/control/index.d.ts +2 -0
- package/dist/components/control/setup.component.d.ts +22 -0
- package/dist/components/date-input/DateInput.d.ts +7 -0
- package/dist/components/date-input/DateInput.js +203 -0
- package/dist/components/date-input/base.component.d.ts +7 -0
- package/dist/components/date-input/index.d.ts +3 -0
- package/dist/components/date-input/setup.component.d.ts +36 -0
- package/dist/components/date-input/setup.component.js +19 -0
- package/dist/components/date-picker/DatePicker.d.ts +7 -0
- package/dist/components/date-picker/DatePicker.js +273 -0
- package/dist/components/date-picker/base.component.d.ts +7 -0
- package/dist/components/date-picker/index.d.ts +3 -0
- package/dist/components/date-picker/setup.component.d.ts +58 -0
- package/dist/components/date-picker/setup.component.js +26 -0
- package/dist/components/dialog/Dialog.d.ts +7 -0
- package/dist/components/dialog/Dialog.js +160 -0
- package/dist/components/dialog/base.component.d.ts +7 -0
- package/dist/components/dialog/index.d.ts +3 -0
- package/dist/components/dialog/setup.component.d.ts +29 -0
- package/dist/components/dialog/setup.component.js +13 -0
- package/dist/components/drag-and-drop/DragAndDrop.d.ts +4 -0
- package/dist/components/drag-and-drop/DragAndDrop.js +19 -0
- package/dist/components/drag-and-drop/base.component.d.ts +7 -0
- package/dist/components/drag-and-drop/index.d.ts +3 -0
- package/dist/components/drag-and-drop/setup.component.d.ts +11 -0
- package/dist/components/drag-and-drop/setup.component.js +21 -0
- package/dist/components/drawer/Drawer.d.ts +4 -0
- package/dist/components/drawer/Drawer.js +131 -0
- package/dist/components/drawer/base.component.d.ts +7 -0
- package/dist/components/drawer/index.d.ts +3 -0
- package/dist/components/drawer/setup.component.d.ts +29 -0
- package/dist/components/drawer/setup.component.js +13 -0
- package/dist/components/field/Field.d.ts +4 -0
- package/dist/components/field/Field.js +112 -0
- package/dist/components/field/base.component.d.ts +6 -0
- package/dist/components/field/index.d.ts +3 -0
- package/dist/components/field/setup.component.d.ts +18 -0
- package/dist/components/field/setup.component.js +18 -0
- package/dist/components/frame/Frame.d.ts +4 -0
- package/dist/components/frame/Frame.js +54 -0
- package/dist/components/frame/base.component.d.ts +6 -0
- package/dist/components/frame/index.d.ts +3 -0
- package/dist/components/frame/setup.component.d.ts +33 -0
- package/dist/components/frame/setup.component.js +13 -0
- package/dist/components/icon/Icon.d.ts +7 -0
- package/dist/components/icon/Icon.js +38 -0
- package/dist/components/icon/base.component.d.ts +6 -0
- package/dist/components/icon/index.d.ts +3 -0
- package/dist/components/icon/setup.component.d.ts +19 -0
- package/dist/components/icon/setup.component.js +13 -0
- package/dist/components/index.d.ts +43 -0
- package/dist/components/input/Input.d.ts +8 -0
- package/dist/components/input/Input.js +159 -0
- package/dist/components/input/base.component.d.ts +8 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/setup.component.d.ts +35 -0
- package/dist/components/input/setup.component.js +18 -0
- package/dist/components/input-control/base.component.d.ts +7 -0
- package/dist/components/input-control/index.d.ts +2 -0
- package/dist/components/input-control/setup.component.d.ts +26 -0
- package/dist/components/interactive/base.component.d.ts +6 -0
- package/dist/components/interactive/index.d.ts +2 -0
- package/dist/components/interactive/setup.component.d.ts +9 -0
- package/dist/components/item-row/ItemRow.d.ts +13 -0
- package/dist/components/item-row/ItemRow.js +18 -0
- package/dist/components/item-row/index.d.ts +2 -0
- package/dist/components/item-row/setup.component.d.ts +22 -0
- package/dist/components/item-row/setup.component.js +13 -0
- package/dist/components/label/Label.d.ts +8 -0
- package/dist/components/label/Label.js +58 -0
- package/dist/components/label/base.component.d.ts +6 -0
- package/dist/components/label/index.d.ts +3 -0
- package/dist/components/label/setup.component.d.ts +9 -0
- package/dist/components/label/setup.component.js +13 -0
- package/dist/components/list-box/ListBox.d.ts +8 -0
- package/dist/components/list-box/ListBox.js +160 -0
- package/dist/components/list-box/base.component.d.ts +9 -0
- package/dist/components/list-box/group/Group.d.ts +4 -0
- package/dist/components/list-box/group/Group.js +63 -0
- package/dist/components/list-box/group/base.component.d.ts +7 -0
- package/dist/components/list-box/group/index.d.ts +3 -0
- package/dist/components/list-box/group/setup.component.d.ts +19 -0
- package/dist/components/list-box/group/setup.component.js +19 -0
- package/dist/components/list-box/index.d.ts +11 -0
- package/dist/components/list-box/index.js +14 -0
- package/dist/components/list-box/item/Item.d.ts +8 -0
- package/dist/components/list-box/item/Item.js +97 -0
- package/dist/components/list-box/item/base.component.d.ts +9 -0
- package/dist/components/list-box/item/index.d.ts +3 -0
- package/dist/components/list-box/item/setup.component.d.ts +42 -0
- package/dist/components/list-box/item/setup.component.js +25 -0
- package/dist/components/list-box/setup.component.d.ts +35 -0
- package/dist/components/list-box/setup.component.js +27 -0
- package/dist/components/menu/Menu.d.ts +8 -0
- package/dist/components/menu/Menu.js +97 -0
- package/dist/components/menu/base.component.d.ts +7 -0
- package/dist/components/menu/checkbox-item/CheckboxItem.d.ts +7 -0
- package/dist/components/menu/checkbox-item/CheckboxItem.js +98 -0
- package/dist/components/menu/checkbox-item/base.component.d.ts +9 -0
- package/dist/components/menu/checkbox-item/index.d.ts +3 -0
- package/dist/components/menu/checkbox-item/setup.component.d.ts +37 -0
- package/dist/components/menu/checkbox-item/setup.component.js +24 -0
- package/dist/components/menu/group/Group.d.ts +4 -0
- package/dist/components/menu/group/Group.js +63 -0
- package/dist/components/menu/group/base.component.d.ts +7 -0
- package/dist/components/menu/group/index.d.ts +3 -0
- package/dist/components/menu/group/setup.component.d.ts +18 -0
- package/dist/components/menu/group/setup.component.js +18 -0
- package/dist/components/menu/index.d.ts +29 -0
- package/dist/components/menu/index.js +32 -0
- package/dist/components/menu/item/Item.d.ts +7 -0
- package/dist/components/menu/item/Item.js +79 -0
- package/dist/components/menu/item/base.component.d.ts +9 -0
- package/dist/components/menu/item/index.d.ts +3 -0
- package/dist/components/menu/item/setup.component.d.ts +37 -0
- package/dist/components/menu/item/setup.component.js +24 -0
- package/dist/components/menu/popover-item/PopoverItem.d.ts +7 -0
- package/dist/components/menu/popover-item/PopoverItem.js +118 -0
- package/dist/components/menu/popover-item/base.component.d.ts +9 -0
- package/dist/components/menu/popover-item/index.d.ts +3 -0
- package/dist/components/menu/popover-item/setup.component.d.ts +48 -0
- package/dist/components/menu/popover-item/setup.component.js +24 -0
- package/dist/components/menu/radio-group/RadioGroup.d.ts +4 -0
- package/dist/components/menu/radio-group/RadioGroup.js +63 -0
- package/dist/components/menu/radio-group/base.component.d.ts +7 -0
- package/dist/components/menu/radio-group/index.d.ts +3 -0
- package/dist/components/menu/radio-group/setup.component.d.ts +18 -0
- package/dist/components/menu/radio-group/setup.component.js +18 -0
- package/dist/components/menu/radio-item/RadioItem.d.ts +4 -0
- package/dist/components/menu/radio-item/RadioItem.js +86 -0
- package/dist/components/menu/radio-item/base.component.d.ts +9 -0
- package/dist/components/menu/radio-item/index.d.ts +3 -0
- package/dist/components/menu/radio-item/setup.component.d.ts +37 -0
- package/dist/components/menu/radio-item/setup.component.js +24 -0
- package/dist/components/menu/separator/Separator.d.ts +4 -0
- package/dist/components/menu/separator/Separator.js +39 -0
- package/dist/components/menu/separator/base.component.d.ts +7 -0
- package/dist/components/menu/separator/index.d.ts +3 -0
- package/dist/components/menu/separator/setup.component.d.ts +9 -0
- package/dist/components/menu/separator/setup.component.js +13 -0
- package/dist/components/menu/setup.component.d.ts +29 -0
- package/dist/components/menu/setup.component.js +27 -0
- package/dist/components/menu/submenu/Submenu.d.ts +23 -0
- package/dist/components/menu/submenu/Submenu.js +240 -0
- package/dist/components/menu/submenu/base.component.d.ts +9 -0
- package/dist/components/menu/submenu/index.d.ts +3 -0
- package/dist/components/menu/submenu/setup.component.d.ts +54 -0
- package/dist/components/menu/submenu/setup.component.js +34 -0
- package/dist/components/number-input/NumberInput.d.ts +8 -0
- package/dist/components/number-input/NumberInput.js +220 -0
- package/dist/components/number-input/base.component.d.ts +8 -0
- package/dist/components/number-input/index.d.ts +3 -0
- package/dist/components/number-input/setup.component.d.ts +35 -0
- package/dist/components/number-input/setup.component.js +18 -0
- package/dist/components/pagination/Pagination.d.ts +4 -0
- package/dist/components/pagination/Pagination.js +155 -0
- package/dist/components/pagination/base.component.d.ts +7 -0
- package/dist/components/pagination/index.d.ts +3 -0
- package/dist/components/pagination/item/Item.d.ts +4 -0
- package/dist/components/pagination/item/Item.js +63 -0
- package/dist/components/pagination/item/base.component.d.ts +7 -0
- package/dist/components/pagination/item/index.d.ts +3 -0
- package/dist/components/pagination/item/setup.component.d.ts +22 -0
- package/dist/components/pagination/item/setup.component.js +24 -0
- package/dist/components/pagination/setup.component.d.ts +35 -0
- package/dist/components/pagination/setup.component.js +27 -0
- package/dist/components/popover/Popover.d.ts +7 -0
- package/dist/components/popover/Popover.js +120 -0
- package/dist/components/popover/base.component.d.ts +7 -0
- package/dist/components/popover/index.d.ts +3 -0
- package/dist/components/popover/setup.component.d.ts +24 -0
- package/dist/components/popover/setup.component.js +13 -0
- package/dist/components/progress-linear/ProgressLinear.d.ts +4 -0
- package/dist/components/progress-linear/ProgressLinear.js +44 -0
- package/dist/components/progress-linear/base.component.d.ts +6 -0
- package/dist/components/progress-linear/index.d.ts +3 -0
- package/dist/components/progress-linear/setup.component.d.ts +17 -0
- package/dist/components/progress-linear/setup.component.js +13 -0
- package/dist/components/progress-spinner/ProgressSpinner.d.ts +4 -0
- package/dist/components/progress-spinner/ProgressSpinner.js +44 -0
- package/dist/components/progress-spinner/base.component.d.ts +6 -0
- package/dist/components/progress-spinner/index.d.ts +3 -0
- package/dist/components/progress-spinner/setup.component.d.ts +17 -0
- package/dist/components/progress-spinner/setup.component.js +13 -0
- package/dist/components/radio-group/RadioGroup.d.ts +4 -0
- package/dist/components/radio-group/RadioGroup.js +70 -0
- package/dist/components/radio-group/base.component.d.ts +7 -0
- package/dist/components/radio-group/index.d.ts +8 -0
- package/dist/components/radio-group/index.js +9 -0
- package/dist/components/radio-group/item/Item.d.ts +7 -0
- package/dist/components/radio-group/item/Item.js +87 -0
- package/dist/components/radio-group/item/base.component.d.ts +9 -0
- package/dist/components/radio-group/item/index.d.ts +3 -0
- package/dist/components/radio-group/item/setup.component.d.ts +35 -0
- package/dist/components/radio-group/item/setup.component.js +24 -0
- package/dist/components/radio-group/setup.component.d.ts +35 -0
- package/dist/components/radio-group/setup.component.js +27 -0
- package/dist/components/rating/Rating.d.ts +7 -0
- package/dist/components/rating/Rating.js +99 -0
- package/dist/components/rating/base.component.d.ts +7 -0
- package/dist/components/rating/index.d.ts +3 -0
- package/dist/components/rating/setup.component.d.ts +35 -0
- package/dist/components/rating/setup.component.js +18 -0
- package/dist/components/scroller/Scroller.d.ts +11 -0
- package/dist/components/scroller/Scroller.js +106 -0
- package/dist/components/scroller/base.component.d.ts +7 -0
- package/dist/components/scroller/index.d.ts +3 -0
- package/dist/components/scroller/setup.component.d.ts +22 -0
- package/dist/components/scroller/setup.component.js +13 -0
- package/dist/components/select/Select.d.ts +8 -0
- package/dist/components/select/Select.js +269 -0
- package/dist/components/select/base.component.d.ts +9 -0
- package/dist/components/select/group/Group.d.ts +4 -0
- package/dist/components/select/group/Group.js +63 -0
- package/dist/components/select/group/base.component.d.ts +7 -0
- package/dist/components/select/group/index.d.ts +3 -0
- package/dist/components/select/group/setup.component.d.ts +18 -0
- package/dist/components/select/group/setup.component.js +18 -0
- package/dist/components/select/index.d.ts +11 -0
- package/dist/components/select/index.js +14 -0
- package/dist/components/select/item/Item.d.ts +9 -0
- package/dist/components/select/item/Item.js +94 -0
- package/dist/components/select/item/base.component.d.ts +9 -0
- package/dist/components/select/item/index.d.ts +3 -0
- package/dist/components/select/item/setup.component.d.ts +41 -0
- package/dist/components/select/item/setup.component.js +24 -0
- package/dist/components/select/setup.component.d.ts +55 -0
- package/dist/components/select/setup.component.js +28 -0
- package/dist/components/skeleton/Skeleton.d.ts +7 -0
- package/dist/components/skeleton/Skeleton.js +46 -0
- package/dist/components/skeleton/base.component.d.ts +6 -0
- package/dist/components/skeleton/index.d.ts +3 -0
- package/dist/components/skeleton/setup.component.d.ts +11 -0
- package/dist/components/skeleton/setup.component.js +13 -0
- package/dist/components/slider/Slider.d.ts +7 -0
- package/dist/components/slider/Slider.js +149 -0
- package/dist/components/slider/base.component.d.ts +7 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/dist/components/slider/setup.component.d.ts +31 -0
- package/dist/components/slider/setup.component.js +18 -0
- package/dist/components/stylable/base.component.d.ts +6 -0
- package/dist/components/stylable/index.d.ts +2 -0
- package/dist/components/stylable/setup.component.d.ts +9 -0
- package/dist/components/switch/Switch.d.ts +4 -0
- package/dist/components/switch/Switch.js +89 -0
- package/dist/components/switch/base.component.d.ts +8 -0
- package/dist/components/switch/index.d.ts +3 -0
- package/dist/components/switch/setup.component.d.ts +35 -0
- package/dist/components/switch/setup.component.js +18 -0
- package/dist/components/table/Table.d.ts +8 -0
- package/dist/components/table/Table.js +178 -0
- package/dist/components/table/base.component.d.ts +7 -0
- package/dist/components/table/column/Column.d.ts +7 -0
- package/dist/components/table/column/Column.js +110 -0
- package/dist/components/table/column/base.component.d.ts +7 -0
- package/dist/components/table/column/index.d.ts +3 -0
- package/dist/components/table/column/setup.component.d.ts +22 -0
- package/dist/components/table/column/setup.component.js +20 -0
- package/dist/components/table/index.d.ts +11 -0
- package/dist/components/table/index.js +14 -0
- package/dist/components/table/row/Cells.d.ts +17 -0
- package/dist/components/table/row/Cells.js +61 -0
- package/dist/components/table/row/Row.d.ts +7 -0
- package/dist/components/table/row/Row.js +80 -0
- package/dist/components/table/row/base.component.d.ts +7 -0
- package/dist/components/table/row/index.d.ts +3 -0
- package/dist/components/table/row/setup.component.d.ts +23 -0
- package/dist/components/table/row/setup.component.js +25 -0
- package/dist/components/table/setup.component.d.ts +39 -0
- package/dist/components/table/setup.component.js +29 -0
- package/dist/components/tabs/Tabs.d.ts +10 -0
- package/dist/components/tabs/Tabs.js +104 -0
- package/dist/components/tabs/base.component.d.ts +9 -0
- package/dist/components/tabs/content/Content.d.ts +4 -0
- package/dist/components/tabs/content/Content.js +39 -0
- package/dist/components/tabs/content/base.component.d.ts +7 -0
- package/dist/components/tabs/content/index.d.ts +3 -0
- package/dist/components/tabs/content/setup.component.d.ts +18 -0
- package/dist/components/tabs/content/setup.component.js +22 -0
- package/dist/components/tabs/index.d.ts +11 -0
- package/dist/components/tabs/index.js +14 -0
- package/dist/components/tabs/item/Item.d.ts +8 -0
- package/dist/components/tabs/item/Item.js +115 -0
- package/dist/components/tabs/item/base.component.d.ts +9 -0
- package/dist/components/tabs/item/index.d.ts +3 -0
- package/dist/components/tabs/item/setup.component.d.ts +39 -0
- package/dist/components/tabs/item/setup.component.js +24 -0
- package/dist/components/tabs/setup.component.d.ts +35 -0
- package/dist/components/tabs/setup.component.js +27 -0
- package/dist/components/tags/Tags.d.ts +7 -0
- package/dist/components/tags/Tags.js +76 -0
- package/dist/components/tags/base.component.d.ts +7 -0
- package/dist/components/tags/index.d.ts +8 -0
- package/dist/components/tags/index.js +9 -0
- package/dist/components/tags/item/Item.d.ts +9 -0
- package/dist/components/tags/item/Item.js +118 -0
- package/dist/components/tags/item/base.component.d.ts +9 -0
- package/dist/components/tags/item/index.d.ts +3 -0
- package/dist/components/tags/item/setup.component.d.ts +35 -0
- package/dist/components/tags/item/setup.component.js +24 -0
- package/dist/components/tags/setup.component.d.ts +35 -0
- package/dist/components/tags/setup.component.js +27 -0
- package/dist/components/textable/base.component.d.ts +6 -0
- package/dist/components/textable/index.d.ts +2 -0
- package/dist/components/textable/setup.component.d.ts +22 -0
- package/dist/components/textarea/Textarea.d.ts +4 -0
- package/dist/components/textarea/Textarea.js +84 -0
- package/dist/components/textarea/base.component.d.ts +8 -0
- package/dist/components/textarea/index.d.ts +3 -0
- package/dist/components/textarea/setup.component.d.ts +28 -0
- package/dist/components/textarea/setup.component.js +15 -0
- package/dist/components/toasts/Toasts.d.ts +7 -0
- package/dist/components/toasts/Toasts.js +85 -0
- package/dist/components/toasts/base.component.d.ts +7 -0
- package/dist/components/toasts/index.d.ts +3 -0
- package/dist/components/toasts/item/Item.d.ts +7 -0
- package/dist/components/toasts/item/Item.js +122 -0
- package/dist/components/toasts/item/base.component.d.ts +7 -0
- package/dist/components/toasts/item/index.d.ts +3 -0
- package/dist/components/toasts/item/setup.component.d.ts +13 -0
- package/dist/components/toasts/item/setup.component.js +21 -0
- package/dist/components/toasts/setup.component.d.ts +24 -0
- package/dist/components/toasts/setup.component.js +27 -0
- package/dist/components/tooltip/Tooltip.d.ts +4 -0
- package/dist/components/tooltip/Tooltip.js +60 -0
- package/dist/components/tooltip/base.component.d.ts +7 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/setup.component.d.ts +16 -0
- package/dist/components/tooltip/setup.component.js +13 -0
- package/dist/components/value-control/base.component.d.ts +7 -0
- package/dist/components/value-control/index.d.ts +2 -0
- package/dist/components/value-control/setup.component.d.ts +22 -0
- package/dist/components/virtual/Virtual.d.ts +4 -0
- package/dist/components/virtual/Virtual.js +19 -0
- package/dist/components/virtual/base.component.d.ts +7 -0
- package/dist/components/virtual/index.d.ts +3 -0
- package/dist/components/virtual/setup.component.d.ts +11 -0
- package/dist/components/virtual/setup.component.js +21 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +60 -0
- package/dist/source/adapter/common/ResolvedSlot.jsx +31 -0
- package/dist/source/adapter/common/click-action.js +8 -0
- package/dist/source/adapter/common/createSolidAdapterContext.js +18 -0
- package/dist/source/adapter/common/handlers.js +13 -0
- package/dist/source/adapter/common/hydration.js +42 -0
- package/dist/source/adapter/common/icon.jsx +19 -0
- package/dist/source/adapter/common/index.js +9 -0
- package/dist/source/adapter/common/naming.js +6 -0
- package/dist/source/adapter/common/profile.js +3 -0
- package/dist/source/adapter/common/root.js +113 -0
- package/dist/source/adapter/common/slots.js +74 -0
- package/dist/source/adapter/elevator/Elevate.jsx +11 -0
- package/dist/source/adapter/elevator/elevator.class.js +25 -0
- package/dist/source/adapter/elevator/index.js +3 -0
- package/dist/source/adapter/elevator/layer.js +25 -0
- package/dist/source/adapter/elevator/useElevator.js +16 -0
- package/dist/source/adapter/index.js +5 -0
- package/dist/source/adapter/locale/LocaleProvider.jsx +24 -0
- package/dist/source/adapter/locale/context.js +6 -0
- package/dist/source/adapter/locale/index.js +1 -0
- package/dist/source/adapter/runtime/KeyedFor.jsx +60 -0
- package/dist/source/adapter/runtime/Root.jsx +51 -0
- package/dist/source/adapter/runtime/Teleport.jsx +28 -0
- package/dist/source/adapter/runtime/field-text.js +44 -0
- package/dist/source/adapter/runtime/flow.js +74 -0
- package/dist/source/adapter/runtime/index.js +8 -0
- package/dist/source/adapter/runtime/part-node.js +82 -0
- package/dist/source/adapter/runtime/state.js +127 -0
- package/dist/source/adapter/runtime/tag.js +10 -0
- package/dist/source/adapter/runtime/useAdapter.js +116 -0
- package/dist/source/adapter/toasts/index.js +2 -0
- package/dist/source/adapter/toasts/render.js +4 -0
- package/dist/source/adapter/toasts/types.js +1 -0
- package/dist/source/adapter/toasts/useToasts.js +14 -0
- package/dist/source/components/accordion/Accordion.jsx +27 -0
- package/dist/source/components/accordion/base.component.js +1 -0
- package/dist/source/components/accordion/index.js +7 -0
- package/dist/source/components/accordion/item/Item.jsx +51 -0
- package/dist/source/components/accordion/item/base.component.js +1 -0
- package/dist/source/components/accordion/item/index.js +3 -0
- package/dist/source/components/accordion/item/setup.component.js +13 -0
- package/dist/source/components/accordion/setup.component.js +15 -0
- package/dist/source/components/button/Button.jsx +27 -0
- package/dist/source/components/button/base.component.js +1 -0
- package/dist/source/components/button/index.js +3 -0
- package/dist/source/components/button/setup.component.js +6 -0
- package/dist/source/components/calendar/Calendar.jsx +115 -0
- package/dist/source/components/calendar/base.component.js +1 -0
- package/dist/source/components/calendar/index.js +7 -0
- package/dist/source/components/calendar/item/Item.jsx +23 -0
- package/dist/source/components/calendar/item/base.component.js +1 -0
- package/dist/source/components/calendar/item/index.js +3 -0
- package/dist/source/components/calendar/item/setup.component.js +13 -0
- package/dist/source/components/calendar/setup.component.js +17 -0
- package/dist/source/components/check-box/CheckBox.jsx +52 -0
- package/dist/source/components/check-box/base.component.js +1 -0
- package/dist/source/components/check-box/index.js +3 -0
- package/dist/source/components/check-box/setup.component.js +10 -0
- package/dist/source/components/component/base.component.js +1 -0
- package/dist/source/components/component/index.js +1 -0
- package/dist/source/components/component-view/ComponentView.jsx +18 -0
- package/dist/source/components/component-view/base.component.js +1 -0
- package/dist/source/components/component-view/index.js +3 -0
- package/dist/source/components/component-view/setup.component.js +9 -0
- package/dist/source/components/control/base.component.js +1 -0
- package/dist/source/components/control/index.js +2 -0
- package/dist/source/components/control/setup.component.js +6 -0
- package/dist/source/components/date-input/DateInput.jsx +78 -0
- package/dist/source/components/date-input/base.component.js +1 -0
- package/dist/source/components/date-input/index.js +3 -0
- package/dist/source/components/date-input/setup.component.js +11 -0
- package/dist/source/components/date-picker/DatePicker.jsx +86 -0
- package/dist/source/components/date-picker/base.component.js +1 -0
- package/dist/source/components/date-picker/index.js +3 -0
- package/dist/source/components/date-picker/setup.component.js +21 -0
- package/dist/source/components/dialog/Dialog.jsx +67 -0
- package/dist/source/components/dialog/base.component.js +1 -0
- package/dist/source/components/dialog/index.js +3 -0
- package/dist/source/components/dialog/setup.component.js +6 -0
- package/dist/source/components/drag-and-drop/DragAndDrop.jsx +7 -0
- package/dist/source/components/drag-and-drop/base.component.js +1 -0
- package/dist/source/components/drag-and-drop/index.js +3 -0
- package/dist/source/components/drag-and-drop/setup.component.js +12 -0
- package/dist/source/components/drawer/Drawer.jsx +52 -0
- package/dist/source/components/drawer/base.component.js +1 -0
- package/dist/source/components/drawer/index.js +3 -0
- package/dist/source/components/drawer/setup.component.js +6 -0
- package/dist/source/components/field/Field.jsx +48 -0
- package/dist/source/components/field/base.component.js +1 -0
- package/dist/source/components/field/index.js +3 -0
- package/dist/source/components/field/setup.component.js +10 -0
- package/dist/source/components/frame/Frame.jsx +20 -0
- package/dist/source/components/frame/base.component.js +1 -0
- package/dist/source/components/frame/index.js +3 -0
- package/dist/source/components/frame/setup.component.js +6 -0
- package/dist/source/components/icon/Icon.jsx +19 -0
- package/dist/source/components/icon/base.component.js +1 -0
- package/dist/source/components/icon/index.js +3 -0
- package/dist/source/components/icon/setup.component.js +6 -0
- package/dist/source/components/index.js +43 -0
- package/dist/source/components/input/Input.jsx +60 -0
- package/dist/source/components/input/base.component.js +1 -0
- package/dist/source/components/input/index.js +3 -0
- package/dist/source/components/input/setup.component.js +10 -0
- package/dist/source/components/input-control/base.component.js +1 -0
- package/dist/source/components/input-control/index.js +2 -0
- package/dist/source/components/input-control/setup.component.js +6 -0
- package/dist/source/components/interactive/base.component.js +1 -0
- package/dist/source/components/interactive/index.js +2 -0
- package/dist/source/components/interactive/setup.component.js +6 -0
- package/dist/source/components/item-row/ItemRow.jsx +15 -0
- package/dist/source/components/item-row/index.js +2 -0
- package/dist/source/components/item-row/setup.component.js +6 -0
- package/dist/source/components/label/Label.jsx +24 -0
- package/dist/source/components/label/base.component.js +1 -0
- package/dist/source/components/label/index.js +3 -0
- package/dist/source/components/label/setup.component.js +6 -0
- package/dist/source/components/list-box/ListBox.jsx +70 -0
- package/dist/source/components/list-box/base.component.js +1 -0
- package/dist/source/components/list-box/group/Group.jsx +24 -0
- package/dist/source/components/list-box/group/base.component.js +1 -0
- package/dist/source/components/list-box/group/index.js +3 -0
- package/dist/source/components/list-box/group/setup.component.js +11 -0
- package/dist/source/components/list-box/index.js +9 -0
- package/dist/source/components/list-box/item/Item.jsx +45 -0
- package/dist/source/components/list-box/item/base.component.js +1 -0
- package/dist/source/components/list-box/item/index.js +3 -0
- package/dist/source/components/list-box/item/setup.component.js +11 -0
- package/dist/source/components/list-box/setup.component.js +16 -0
- package/dist/source/components/menu/Menu.jsx +38 -0
- package/dist/source/components/menu/base.component.js +1 -0
- package/dist/source/components/menu/checkbox-item/CheckboxItem.jsx +39 -0
- package/dist/source/components/menu/checkbox-item/base.component.js +1 -0
- package/dist/source/components/menu/checkbox-item/index.js +3 -0
- package/dist/source/components/menu/checkbox-item/setup.component.js +13 -0
- package/dist/source/components/menu/group/Group.jsx +24 -0
- package/dist/source/components/menu/group/base.component.js +1 -0
- package/dist/source/components/menu/group/index.js +3 -0
- package/dist/source/components/menu/group/setup.component.js +10 -0
- package/dist/source/components/menu/index.js +30 -0
- package/dist/source/components/menu/item/Item.jsx +29 -0
- package/dist/source/components/menu/item/base.component.js +1 -0
- package/dist/source/components/menu/item/index.js +3 -0
- package/dist/source/components/menu/item/setup.component.js +10 -0
- package/dist/source/components/menu/popover-item/PopoverItem.jsx +41 -0
- package/dist/source/components/menu/popover-item/base.component.js +1 -0
- package/dist/source/components/menu/popover-item/index.js +3 -0
- package/dist/source/components/menu/popover-item/setup.component.js +13 -0
- package/dist/source/components/menu/radio-group/RadioGroup.jsx +24 -0
- package/dist/source/components/menu/radio-group/base.component.js +1 -0
- package/dist/source/components/menu/radio-group/index.js +3 -0
- package/dist/source/components/menu/radio-group/setup.component.js +12 -0
- package/dist/source/components/menu/radio-item/RadioItem.jsx +33 -0
- package/dist/source/components/menu/radio-item/base.component.js +1 -0
- package/dist/source/components/menu/radio-item/index.js +3 -0
- package/dist/source/components/menu/radio-item/setup.component.js +13 -0
- package/dist/source/components/menu/separator/Separator.jsx +16 -0
- package/dist/source/components/menu/separator/base.component.js +1 -0
- package/dist/source/components/menu/separator/index.js +3 -0
- package/dist/source/components/menu/separator/setup.component.js +9 -0
- package/dist/source/components/menu/setup.component.js +13 -0
- package/dist/source/components/menu/submenu/Submenu.jsx +74 -0
- package/dist/source/components/menu/submenu/base.component.js +1 -0
- package/dist/source/components/menu/submenu/index.js +3 -0
- package/dist/source/components/menu/submenu/setup.component.js +20 -0
- package/dist/source/components/number-input/NumberInput.jsx +75 -0
- package/dist/source/components/number-input/base.component.js +1 -0
- package/dist/source/components/number-input/index.js +3 -0
- package/dist/source/components/number-input/setup.component.js +10 -0
- package/dist/source/components/pagination/Pagination.jsx +56 -0
- package/dist/source/components/pagination/base.component.js +1 -0
- package/dist/source/components/pagination/index.js +3 -0
- package/dist/source/components/pagination/item/Item.jsx +27 -0
- package/dist/source/components/pagination/item/base.component.js +1 -0
- package/dist/source/components/pagination/item/index.js +3 -0
- package/dist/source/components/pagination/item/setup.component.js +13 -0
- package/dist/source/components/pagination/setup.component.js +16 -0
- package/dist/source/components/popover/Popover.jsx +50 -0
- package/dist/source/components/popover/base.component.js +1 -0
- package/dist/source/components/popover/index.js +3 -0
- package/dist/source/components/popover/setup.component.js +6 -0
- package/dist/source/components/progress-linear/ProgressLinear.jsx +20 -0
- package/dist/source/components/progress-linear/base.component.js +1 -0
- package/dist/source/components/progress-linear/index.js +3 -0
- package/dist/source/components/progress-linear/setup.component.js +9 -0
- package/dist/source/components/progress-spinner/ProgressSpinner.jsx +27 -0
- package/dist/source/components/progress-spinner/base.component.js +1 -0
- package/dist/source/components/progress-spinner/index.js +3 -0
- package/dist/source/components/progress-spinner/setup.component.js +9 -0
- package/dist/source/components/radio-group/RadioGroup.jsx +25 -0
- package/dist/source/components/radio-group/base.component.js +1 -0
- package/dist/source/components/radio-group/index.js +7 -0
- package/dist/source/components/radio-group/item/Item.jsx +38 -0
- package/dist/source/components/radio-group/item/base.component.js +1 -0
- package/dist/source/components/radio-group/item/index.js +3 -0
- package/dist/source/components/radio-group/item/setup.component.js +13 -0
- package/dist/source/components/radio-group/setup.component.js +16 -0
- package/dist/source/components/rating/Rating.jsx +44 -0
- package/dist/source/components/rating/base.component.js +1 -0
- package/dist/source/components/rating/index.js +3 -0
- package/dist/source/components/rating/setup.component.js +10 -0
- package/dist/source/components/scroller/Scroller.jsx +40 -0
- package/dist/source/components/scroller/base.component.js +1 -0
- package/dist/source/components/scroller/index.js +3 -0
- package/dist/source/components/scroller/setup.component.js +6 -0
- package/dist/source/components/select/Select.jsx +92 -0
- package/dist/source/components/select/base.component.js +1 -0
- package/dist/source/components/select/group/Group.jsx +24 -0
- package/dist/source/components/select/group/base.component.js +1 -0
- package/dist/source/components/select/group/index.js +3 -0
- package/dist/source/components/select/group/setup.component.js +10 -0
- package/dist/source/components/select/index.js +9 -0
- package/dist/source/components/select/item/Item.jsx +45 -0
- package/dist/source/components/select/item/base.component.js +1 -0
- package/dist/source/components/select/item/index.js +3 -0
- package/dist/source/components/select/item/setup.component.js +10 -0
- package/dist/source/components/select/setup.component.js +22 -0
- package/dist/source/components/skeleton/Skeleton.jsx +22 -0
- package/dist/source/components/skeleton/base.component.js +1 -0
- package/dist/source/components/skeleton/index.js +3 -0
- package/dist/source/components/skeleton/setup.component.js +6 -0
- package/dist/source/components/slider/Slider.jsx +57 -0
- package/dist/source/components/slider/base.component.js +1 -0
- package/dist/source/components/slider/index.js +3 -0
- package/dist/source/components/slider/setup.component.js +10 -0
- package/dist/source/components/stylable/base.component.js +1 -0
- package/dist/source/components/stylable/index.js +2 -0
- package/dist/source/components/stylable/setup.component.js +6 -0
- package/dist/source/components/switch/Switch.jsx +31 -0
- package/dist/source/components/switch/base.component.js +1 -0
- package/dist/source/components/switch/index.js +3 -0
- package/dist/source/components/switch/setup.component.js +10 -0
- package/dist/source/components/table/Table.jsx +74 -0
- package/dist/source/components/table/base.component.js +1 -0
- package/dist/source/components/table/column/Column.jsx +47 -0
- package/dist/source/components/table/column/base.component.js +1 -0
- package/dist/source/components/table/column/index.js +3 -0
- package/dist/source/components/table/column/setup.component.js +10 -0
- package/dist/source/components/table/index.js +9 -0
- package/dist/source/components/table/row/Cells.jsx +49 -0
- package/dist/source/components/table/row/Row.jsx +27 -0
- package/dist/source/components/table/row/base.component.js +1 -0
- package/dist/source/components/table/row/index.js +3 -0
- package/dist/source/components/table/row/setup.component.js +11 -0
- package/dist/source/components/table/setup.component.js +20 -0
- package/dist/source/components/tabs/Tabs.jsx +50 -0
- package/dist/source/components/tabs/base.component.js +1 -0
- package/dist/source/components/tabs/content/Content.jsx +18 -0
- package/dist/source/components/tabs/content/base.component.js +1 -0
- package/dist/source/components/tabs/content/index.js +3 -0
- package/dist/source/components/tabs/content/setup.component.js +14 -0
- package/dist/source/components/tabs/index.js +9 -0
- package/dist/source/components/tabs/item/Item.jsx +47 -0
- package/dist/source/components/tabs/item/base.component.js +1 -0
- package/dist/source/components/tabs/item/index.js +3 -0
- package/dist/source/components/tabs/item/setup.component.js +10 -0
- package/dist/source/components/tabs/setup.component.js +15 -0
- package/dist/source/components/tags/Tags.jsx +30 -0
- package/dist/source/components/tags/base.component.js +1 -0
- package/dist/source/components/tags/index.js +7 -0
- package/dist/source/components/tags/item/Item.jsx +47 -0
- package/dist/source/components/tags/item/base.component.js +1 -0
- package/dist/source/components/tags/item/index.js +3 -0
- package/dist/source/components/tags/item/setup.component.js +10 -0
- package/dist/source/components/tags/setup.component.js +13 -0
- package/dist/source/components/textable/base.component.js +1 -0
- package/dist/source/components/textable/index.js +2 -0
- package/dist/source/components/textable/setup.component.js +6 -0
- package/dist/source/components/textarea/Textarea.jsx +27 -0
- package/dist/source/components/textarea/base.component.js +1 -0
- package/dist/source/components/textarea/index.js +3 -0
- package/dist/source/components/textarea/setup.component.js +10 -0
- package/dist/source/components/toasts/Toasts.jsx +33 -0
- package/dist/source/components/toasts/base.component.js +1 -0
- package/dist/source/components/toasts/index.js +3 -0
- package/dist/source/components/toasts/item/Item.jsx +64 -0
- package/dist/source/components/toasts/item/base.component.js +1 -0
- package/dist/source/components/toasts/item/index.js +3 -0
- package/dist/source/components/toasts/item/setup.component.js +13 -0
- package/dist/source/components/toasts/setup.component.js +15 -0
- package/dist/source/components/tooltip/Tooltip.jsx +24 -0
- package/dist/source/components/tooltip/base.component.js +1 -0
- package/dist/source/components/tooltip/index.js +3 -0
- package/dist/source/components/tooltip/setup.component.js +6 -0
- package/dist/source/components/value-control/base.component.js +1 -0
- package/dist/source/components/value-control/index.js +2 -0
- package/dist/source/components/value-control/setup.component.js +6 -0
- package/dist/source/components/virtual/Virtual.jsx +7 -0
- package/dist/source/components/virtual/base.component.js +1 -0
- package/dist/source/components/virtual/index.js +3 -0
- package/dist/source/components/virtual/setup.component.js +12 -0
- package/dist/source/index.js +5 -0
- package/dist/source/types.js +1 -0
- package/dist/types.d.ts +42 -0
- package/package.json +56 -4
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Корень компонента по `tag` — то, что делал `Dynamic`, без его прокси и
|
|
3
|
+
* лишних вычислений: тег — одно мемо, атрибуты — один эффект `assign`, `ref`
|
|
4
|
+
* зовётся под мемо, а не своим эффектом. На сервере и для компонента в `tag`
|
|
5
|
+
* — `createDynamic`, без вызова компонента над ним: ключи гидратации у
|
|
6
|
+
* сервера и браузера те же, что были у `Dynamic`. AGENTS.md (Solid), «Корень и
|
|
7
|
+
* узлы частей».
|
|
8
|
+
*/
|
|
9
|
+
import { createMemo, createRenderEffect, mergeProps, untrack, } from 'solid-js';
|
|
10
|
+
import { SVGElements, assign, createDynamic, getNextElement, insert, isServer, use, } from 'solid-js/web';
|
|
11
|
+
import { rootTag } from './tag';
|
|
12
|
+
const SVG = 'http://www.w3.org/2000/svg';
|
|
13
|
+
/** Корень через `createDynamic`: атрибуты, `ref` и содержимое — одними пропсами. */
|
|
14
|
+
function dynamicRoot(tag, props) {
|
|
15
|
+
return createDynamic(tag, mergeProps(props.attributes, {
|
|
16
|
+
ref: props.ref,
|
|
17
|
+
get children() {
|
|
18
|
+
return props.children;
|
|
19
|
+
},
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
/** Узел тега: в окне гидратации — узел сервера, иначе — новый. */
|
|
23
|
+
function nodeOf(tag, is) {
|
|
24
|
+
return getNextElement(() => SVGElements.has(tag)
|
|
25
|
+
? document.createElementNS(SVG, tag)
|
|
26
|
+
: document.createElement(tag, typeof is === 'string' ? { is } : undefined));
|
|
27
|
+
}
|
|
28
|
+
export function Root(props) {
|
|
29
|
+
if (isServer)
|
|
30
|
+
return dynamicRoot(() => rootTag(props.tag), props);
|
|
31
|
+
// Мемо идёт только за тегом: смена тега — новый узел, очистки `ref` — прежнему
|
|
32
|
+
const root = createMemo(() => {
|
|
33
|
+
const tag = rootTag(props.tag);
|
|
34
|
+
if (tag === undefined)
|
|
35
|
+
return undefined;
|
|
36
|
+
// Компонент в `tag` — редкость, и его не облегчали
|
|
37
|
+
if (typeof tag === 'function')
|
|
38
|
+
return untrack(() => dynamicRoot(() => tag, props));
|
|
39
|
+
const node = nodeOf(tag, untrack(() => props.attributes().is));
|
|
40
|
+
const svg = SVGElements.has(tag);
|
|
41
|
+
// Записанное — память `assign`: следующий проход пишет только разницу
|
|
42
|
+
const assigned = {};
|
|
43
|
+
// Порядок — как у спреда `Dynamic`: содержимое, `ref`, атрибуты
|
|
44
|
+
insert(node, () => props.children);
|
|
45
|
+
use(props.ref, node);
|
|
46
|
+
createRenderEffect(() => assign(node, props.attributes(), svg, true, assigned, true));
|
|
47
|
+
return node;
|
|
48
|
+
});
|
|
49
|
+
// Само мемо, а не фрагмент: фрагмент над ним — ещё мемо на каждый корень
|
|
50
|
+
return root;
|
|
51
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Teleport — аналог `<teleport :to>` Vue поверх `Portal`: цели нет — нет и
|
|
3
|
+
* содержимого, `disabled` рисует на месте. Смена цели или `disabled` переносит
|
|
4
|
+
* те же узлы. AGENTS.md (Solid), «Teleport».
|
|
5
|
+
*/
|
|
6
|
+
import { Show, children, getOwner, runWithOwner } from 'solid-js';
|
|
7
|
+
import { Portal, isServer } from 'solid-js/web';
|
|
8
|
+
function targetOf(selector) {
|
|
9
|
+
if (isServer || !selector)
|
|
10
|
+
return null;
|
|
11
|
+
return document.querySelector(selector);
|
|
12
|
+
}
|
|
13
|
+
export function Teleport(props) {
|
|
14
|
+
const owner = getOwner();
|
|
15
|
+
let resolved;
|
|
16
|
+
// Содержимое одно на обе ветки: мемо — с первым чтением, под владельцем
|
|
17
|
+
// Teleport. Без мемо `runWithOwner` возвращается, только когда сборка
|
|
18
|
+
// бросила и ошибку взяла граница ошибок
|
|
19
|
+
const content = () => {
|
|
20
|
+
resolved ??= runWithOwner(owner, () => children(() => props.children));
|
|
21
|
+
return resolved?.();
|
|
22
|
+
};
|
|
23
|
+
return (<Show when={!props.disabled} fallback={content()}>
|
|
24
|
+
<Show when={targetOf(props.to)}>
|
|
25
|
+
{(target) => <Portal mount={target()}>{content()}</Portal>}
|
|
26
|
+
</Show>
|
|
27
|
+
</Show>);
|
|
28
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Текст поля на узле — только когда он разошёлся с узлом, как `:value` у Vue.
|
|
3
|
+
* Привязку `value` Solid пишет на каждую смену, и запись узлу его же текста
|
|
4
|
+
* снимала бы с поля пометку «изменено пользователем» (`minlength` перестаёт
|
|
5
|
+
* проверяться). Атрибуты ложатся на поле последними.
|
|
6
|
+
* AGENTS.md (Solid), «Текст поля».
|
|
7
|
+
*/
|
|
8
|
+
import { createEffect } from 'solid-js';
|
|
9
|
+
import { isServer } from 'solid-js/web';
|
|
10
|
+
/**
|
|
11
|
+
* `ref` поля, который ведёт его текст. Эффект — пользовательский: Solid
|
|
12
|
+
* выполняет его после атрибутов узла, а `range` прижимает значение к `min` и
|
|
13
|
+
* `max`.
|
|
14
|
+
*/
|
|
15
|
+
function textRef(getText) {
|
|
16
|
+
return (node) => {
|
|
17
|
+
createEffect(() => {
|
|
18
|
+
const text = getText() ?? '';
|
|
19
|
+
if (node.value !== text)
|
|
20
|
+
node.value = text;
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function fieldText(getText) {
|
|
25
|
+
if (isServer) {
|
|
26
|
+
return {
|
|
27
|
+
get value() {
|
|
28
|
+
return getText();
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return { ref: textRef(getText) };
|
|
33
|
+
}
|
|
34
|
+
/** У `<textarea>` атрибута `value` нет: на сервере текст — её содержимое. */
|
|
35
|
+
export function textareaText(getText) {
|
|
36
|
+
if (isServer) {
|
|
37
|
+
return {
|
|
38
|
+
get textContent() {
|
|
39
|
+
return getText();
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return { ref: textRef(getText) };
|
|
44
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Show`, `For` и `Index` — как у Solid 1.9, но переживают окна гидратации:
|
|
3
|
+
* пересчёт в окне до конца окна отдаёт прежнюю структуру. На сервере — сами
|
|
4
|
+
* примитивы Solid. В бочку адаптера модуль не входит: имена столкнулись бы с
|
|
5
|
+
* `solid-js`. AGENTS.md (Solid), «Ветки и петли».
|
|
6
|
+
*/
|
|
7
|
+
import { $TRACK, For as SolidFor, Index as SolidIndex, Show as SolidShow, createMemo, indexArray, mapArray, untrack, } from 'solid-js';
|
|
8
|
+
import { isServer } from 'solid-js/web';
|
|
9
|
+
import { createHeldMemo } from '../common/hydration';
|
|
10
|
+
/** Без `keyed` ветка сменяется только с истинностью условия. */
|
|
11
|
+
const SAME_TRUTHINESS = { equals: (a, b) => !a === !b };
|
|
12
|
+
const NO_ITEMS = [];
|
|
13
|
+
/** Функция-ребёнок — с параметром: ленивое мемо компилятора параметров не имеет. */
|
|
14
|
+
function isRenderFunction(child) {
|
|
15
|
+
return typeof child === 'function' && child.length > 0;
|
|
16
|
+
}
|
|
17
|
+
function conditionOf(props) {
|
|
18
|
+
return props.when;
|
|
19
|
+
}
|
|
20
|
+
export function Show(props) {
|
|
21
|
+
// Ветвь выбирает перегрузку `Show` Solid
|
|
22
|
+
if (isServer)
|
|
23
|
+
return props.keyed ? SolidShow(props) : SolidShow(props);
|
|
24
|
+
const value = createHeldMemo(props, (conditionOf));
|
|
25
|
+
return props.keyed ? keyedBranch(props, value) : unkeyedBranch(props, value);
|
|
26
|
+
}
|
|
27
|
+
/** `keyed`: на каждое новое значение условия — функция-ребёнок заново. */
|
|
28
|
+
function keyedBranch(props, value) {
|
|
29
|
+
return createMemo(() => {
|
|
30
|
+
const current = value();
|
|
31
|
+
if (!current)
|
|
32
|
+
return props.fallback;
|
|
33
|
+
const child = props.children;
|
|
34
|
+
return isRenderFunction(child) ? untrack(() => child(current)) : child;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** Без `keyed`: значение функция-ребёнок читает аксессором. */
|
|
38
|
+
function unkeyedBranch(props, value) {
|
|
39
|
+
const condition = createMemo(value, undefined, SAME_TRUTHINESS);
|
|
40
|
+
return createMemo(() => {
|
|
41
|
+
if (!condition())
|
|
42
|
+
return props.fallback;
|
|
43
|
+
const child = props.children;
|
|
44
|
+
return isRenderFunction(child) ? untrack(() => child(() => present(value))) : child;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** Аксессор снятой ветки значения уже не найдёт — ошибка, как у Solid. */
|
|
48
|
+
function present(value) {
|
|
49
|
+
const current = value();
|
|
50
|
+
if (!current)
|
|
51
|
+
throw new Error('<Show>: значение прочитано у снятой ветки — условие уже ложно');
|
|
52
|
+
return current;
|
|
53
|
+
}
|
|
54
|
+
export function For(props) {
|
|
55
|
+
if (isServer)
|
|
56
|
+
return SolidFor(props);
|
|
57
|
+
return createLoopMemo(props, mapArray(() => props.each, props.children, fallbackOf(props)));
|
|
58
|
+
}
|
|
59
|
+
export function Index(props) {
|
|
60
|
+
if (isServer)
|
|
61
|
+
return SolidIndex(props);
|
|
62
|
+
return createLoopMemo(props, indexArray(() => props.each, props.children, fallbackOf(props)));
|
|
63
|
+
}
|
|
64
|
+
/** `fallback` петли — как у Solid: только когда проп задан. */
|
|
65
|
+
function fallbackOf(props) {
|
|
66
|
+
return 'fallback' in props ? { fallback: () => props.fallback } : undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Мемо отображения петли (`mapArray`, `indexArray`): в окне оно читает список
|
|
70
|
+
* и элементы стора (`$TRACK`), но строк не строит.
|
|
71
|
+
*/
|
|
72
|
+
function createLoopMemo(props, map) {
|
|
73
|
+
return createHeldMemo(map, (live) => live(), () => Reflect.get(props.each || NO_ITEMS, $TRACK));
|
|
74
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { useAdapter, useCollectionAdapter, joinBindings, } from './useAdapter';
|
|
2
|
+
export { createShallowState, joinState } from './state';
|
|
3
|
+
export { KeyedFor } from './KeyedFor';
|
|
4
|
+
export { createPartNode, createPartNodes, } from './part-node';
|
|
5
|
+
export { Root } from './Root';
|
|
6
|
+
export { Teleport } from './Teleport';
|
|
7
|
+
export { isTagComponent, rootTag } from './tag';
|
|
8
|
+
export { fieldText, textareaText } from './field-text';
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Узлы частей без экземпляра, которых тысячи, — ячейки таблицы, поле флажка в
|
|
3
|
+
* каждой её строке. Без спреда: спред на узле давал прокси `mergeProps`,
|
|
4
|
+
* эффект `ref` и эффект атрибутов. На сервере — `createDynamic`, в
|
|
5
|
+
* гидратации — узлы сервера. AGENTS.md (Solid), «Корень и узлы частей».
|
|
6
|
+
*
|
|
7
|
+
* - `createPartNode` — узел: атрибуты — один эффект, содержимое — вставкой;
|
|
8
|
+
* - `createPartNodes` — узлы записей списка с текстом: одно мемо на весь
|
|
9
|
+
* список, без вычислений на узел.
|
|
10
|
+
*/
|
|
11
|
+
import { createRenderEffect } from 'solid-js';
|
|
12
|
+
import { assign, createDynamic, getNextElement, insert, isServer } from 'solid-js/web';
|
|
13
|
+
import { createHeldMemo } from '../common/hydration';
|
|
14
|
+
import { createPartProps } from '../common/root';
|
|
15
|
+
/** Создатель узла на тег — один на модуль: узлов тысячи, тегов два. */
|
|
16
|
+
const creators = new Map();
|
|
17
|
+
function creatorOf(tag) {
|
|
18
|
+
let creator = creators.get(tag);
|
|
19
|
+
if (!creator)
|
|
20
|
+
creators.set(tag, (creator = () => document.createElement(tag)));
|
|
21
|
+
return creator;
|
|
22
|
+
}
|
|
23
|
+
/** Узел на сервере: содержимое — геттером, после метки гидратации узла, как у разметки. */
|
|
24
|
+
function serverNode(tag, attributes, children) {
|
|
25
|
+
return createDynamic(() => tag, {
|
|
26
|
+
...attributes,
|
|
27
|
+
get children() {
|
|
28
|
+
return children();
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Узел `tag` с атрибутами `read` и содержимым `children` (без него — пустой,
|
|
34
|
+
* как `input`). Зовётся там, где узел рисуется, — в теле или в функции петли:
|
|
35
|
+
* эффекты узла уходят с его владельцем. Атрибуты в окне гидратации держит
|
|
36
|
+
* `createPartProps`, как набор части.
|
|
37
|
+
*/
|
|
38
|
+
export function createPartNode(tag, read, children) {
|
|
39
|
+
if (isServer)
|
|
40
|
+
return serverNode(tag, read(), () => children?.());
|
|
41
|
+
// Узел сервера в окне гидратации, иначе — новый
|
|
42
|
+
const node = getNextElement(creatorOf(tag));
|
|
43
|
+
const attributes = createPartProps(read);
|
|
44
|
+
// Записанное — память `assign`: следующий проход пишет только разницу
|
|
45
|
+
const assigned = {};
|
|
46
|
+
createRenderEffect(() => assign(node, attributes(), false, true, assigned, true));
|
|
47
|
+
if (children)
|
|
48
|
+
insert(node, children);
|
|
49
|
+
return node;
|
|
50
|
+
}
|
|
51
|
+
export function createPartNodes(source) {
|
|
52
|
+
if (isServer) {
|
|
53
|
+
return source
|
|
54
|
+
.each()
|
|
55
|
+
?.map((entry) => serverNode(source.tag(entry), source.attributes(entry), () => source.text(entry)));
|
|
56
|
+
}
|
|
57
|
+
const records = new Map();
|
|
58
|
+
let shown = [];
|
|
59
|
+
const draw = (entries) => {
|
|
60
|
+
const seen = new Set();
|
|
61
|
+
const nodes = entries.map((entry) => {
|
|
62
|
+
const key = source.by(entry);
|
|
63
|
+
let record = records.get(key);
|
|
64
|
+
if (!record) {
|
|
65
|
+
const node = getNextElement(creatorOf(source.tag(entry)));
|
|
66
|
+
records.set(key, (record = { node, assigned: {}, text: undefined }));
|
|
67
|
+
}
|
|
68
|
+
assign(record.node, source.attributes(entry), false, true, record.assigned, true);
|
|
69
|
+
record.text = insert(record.node, source.text(entry), undefined, record.text);
|
|
70
|
+
seen.add(key);
|
|
71
|
+
return record.node;
|
|
72
|
+
});
|
|
73
|
+
for (const key of records.keys())
|
|
74
|
+
if (!seen.has(key))
|
|
75
|
+
records.delete(key);
|
|
76
|
+
// Те же узлы тем же порядком — тот же список: вставке родителя переставлять нечего
|
|
77
|
+
if (nodes.length !== shown.length || nodes.some((node, index) => node !== shown[index]))
|
|
78
|
+
shown = nodes;
|
|
79
|
+
return shown;
|
|
80
|
+
};
|
|
81
|
+
return createHeldMemo(source, (current) => draw(current.each() ?? []), (current) => current.each());
|
|
82
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The binding's state and the view of two states. AGENTS.md (Solid), «Связка».
|
|
3
|
+
*
|
|
4
|
+
* - The state is a signal per property, and a value is handed over as it is:
|
|
5
|
+
* the core hands out values, and a changed one comes as a new object
|
|
6
|
+
* (AGENTS.md, «Контракт границы core → ui»). Solid's store wrapped every
|
|
7
|
+
* nested object — a row's cells, their `aria` and `dataset` — in a proxy
|
|
8
|
+
* with a signal per read property that never changes. Like `shallowRef` in
|
|
9
|
+
* Vue.
|
|
10
|
+
* - A signal is made by the first read of a property: the markup reads less
|
|
11
|
+
* than half of the binding's properties, and the subscription hands over the
|
|
12
|
+
* value of each.
|
|
13
|
+
* - Writes of an update of the exchange are applied at its end, in one
|
|
14
|
+
* `batch` (`IUpdateListener`): Solid renders on a signal write, and a write
|
|
15
|
+
* applied in the middle of the update rendered before the update's event
|
|
16
|
+
* reached the consumer — the panel opened by `change:open` mounted, and its
|
|
17
|
+
* items joined the menu first. A read in the middle of the update sees the
|
|
18
|
+
* written value already: only the signal's notification waits.
|
|
19
|
+
* - The view of two contexts is a proxy that reads a property from the state
|
|
20
|
+
* on every read: a spread would read it once, in the component's body, and
|
|
21
|
+
* getters by keys would lose the properties not set by the assembly. The
|
|
22
|
+
* component and the facade have no properties of the same name — the
|
|
23
|
+
* facade's names are prefixed.
|
|
24
|
+
*/
|
|
25
|
+
import { batch, createSignal } from 'solid-js';
|
|
26
|
+
/** Значения и сигналы свойств — за прокси состояния. */
|
|
27
|
+
class TShallowState {
|
|
28
|
+
/** Записанные, но ещё не прочитанные — без сигнала. */
|
|
29
|
+
_values = new Map();
|
|
30
|
+
/** Прочитанные записанные. */
|
|
31
|
+
_signals = new Map();
|
|
32
|
+
/** Прочитанные до записи: подписка связки отдаёт каждое свойство сразу, и здесь — чужие. */
|
|
33
|
+
_unwritten = new Map();
|
|
34
|
+
/** Writes of the update in progress — applied at its end. */
|
|
35
|
+
_pending;
|
|
36
|
+
/** Updates of the exchange in progress: a sink's write to a participant nests one. */
|
|
37
|
+
_depth = 0;
|
|
38
|
+
/** The property was written: for the binding, one of its properties, from the subscription. */
|
|
39
|
+
written(key) {
|
|
40
|
+
return this._values.has(key) || this._signals.has(key) || this._pending?.has(key) === true;
|
|
41
|
+
}
|
|
42
|
+
read(key) {
|
|
43
|
+
const value = this._signalOf(key)[0]();
|
|
44
|
+
const pending = this._pending;
|
|
45
|
+
return pending?.has(key) ? pending.get(key) : value;
|
|
46
|
+
}
|
|
47
|
+
write(name, value) {
|
|
48
|
+
if (this._depth > 0)
|
|
49
|
+
(this._pending ??= new Map()).set(name, value);
|
|
50
|
+
else
|
|
51
|
+
this._apply(name, value);
|
|
52
|
+
}
|
|
53
|
+
begin() {
|
|
54
|
+
this._depth++;
|
|
55
|
+
}
|
|
56
|
+
/** The outermost update ended: its writes go to the signals, and Solid renders once. */
|
|
57
|
+
end() {
|
|
58
|
+
// The listener may have come in the middle of an update and missed its beginning
|
|
59
|
+
if (this._depth === 0 || --this._depth > 0)
|
|
60
|
+
return;
|
|
61
|
+
const pending = this._pending;
|
|
62
|
+
if (pending === undefined)
|
|
63
|
+
return;
|
|
64
|
+
this._pending = undefined;
|
|
65
|
+
batch(() => pending.forEach((value, name) => this._apply(name, value)));
|
|
66
|
+
}
|
|
67
|
+
_apply(name, value) {
|
|
68
|
+
const signal = this._signals.get(name) ?? this._adopt(name);
|
|
69
|
+
// A setter of a signal would take a function value for an updater
|
|
70
|
+
if (signal)
|
|
71
|
+
signal[1](() => value);
|
|
72
|
+
else
|
|
73
|
+
this._values.set(name, value);
|
|
74
|
+
}
|
|
75
|
+
_signalOf(key) {
|
|
76
|
+
const signal = this._signals.get(key) ?? this._unwritten.get(key);
|
|
77
|
+
if (signal)
|
|
78
|
+
return signal;
|
|
79
|
+
const values = this._values;
|
|
80
|
+
const created = createSignal(values.get(key), { internal: true });
|
|
81
|
+
if (values.delete(key))
|
|
82
|
+
this._signals.set(key, created);
|
|
83
|
+
else
|
|
84
|
+
this._unwritten.set(key, created);
|
|
85
|
+
return created;
|
|
86
|
+
}
|
|
87
|
+
/** Свойство, прочитанное до записи, записано: его сигнал — к записанным. */
|
|
88
|
+
_adopt(name) {
|
|
89
|
+
const signal = this._unwritten.get(name);
|
|
90
|
+
if (!signal)
|
|
91
|
+
return undefined;
|
|
92
|
+
this._unwritten.delete(name);
|
|
93
|
+
this._signals.set(name, signal);
|
|
94
|
+
return signal;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/** Состояния связок по их прокси — виду двух состояний. */
|
|
98
|
+
const shallowStates = new WeakMap();
|
|
99
|
+
/**
|
|
100
|
+
* A property with the value `undefined` is unset: `in` does not see it. The
|
|
101
|
+
* listener of the exchange's updates holds the writes of an update back to
|
|
102
|
+
* its end.
|
|
103
|
+
*/
|
|
104
|
+
export function createShallowState() {
|
|
105
|
+
const values = new TShallowState();
|
|
106
|
+
const state = new Proxy({}, {
|
|
107
|
+
get: (_target, key) => values.read(key),
|
|
108
|
+
has: (_target, key) => values.read(key) !== undefined,
|
|
109
|
+
});
|
|
110
|
+
shallowStates.set(state, values);
|
|
111
|
+
return [state, (name, value) => values.write(name, value), values];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Свойство, которого у верхнего состояния связки нет вовсе, читается снизу и
|
|
115
|
+
* сигнала наверху не заводит: фасад строки таблицы не держит сигналов под
|
|
116
|
+
* свойства компонента.
|
|
117
|
+
*/
|
|
118
|
+
export function joinState(below, above) {
|
|
119
|
+
const lines = shallowStates.get(above);
|
|
120
|
+
const joined = new Proxy({}, {
|
|
121
|
+
get: (_target, key) => (!lines || lines.written(key)) && Reflect.has(above, key)
|
|
122
|
+
? Reflect.get(above, key)
|
|
123
|
+
: Reflect.get(below, key),
|
|
124
|
+
});
|
|
125
|
+
// Связь прокси с именами обоих состояний TypeScript не видит
|
|
126
|
+
return joined;
|
|
127
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Компонент Solid — функция; других функций в `tag` ядро не ждёт. */
|
|
2
|
+
export function isTagComponent(tag) {
|
|
3
|
+
return typeof tag === 'function';
|
|
4
|
+
}
|
|
5
|
+
/** Корень по `tag` для `Root`: строка или компонент Solid, иначе корня нет. */
|
|
6
|
+
export function rootTag(tag) {
|
|
7
|
+
if (typeof tag === 'string' || isTagComponent(tag))
|
|
8
|
+
return tag;
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useAdapter — binds an adapter context to Solid, the counterpart of Vue's
|
|
3
|
+
* `useAdapter`.
|
|
4
|
+
*
|
|
5
|
+
* - state is shallow, a signal per property read (`createShallowState`),
|
|
6
|
+
* filled by the subscription to the binding;
|
|
7
|
+
* - inputs: an effect over all props, the binding writes the changed ones;
|
|
8
|
+
* - the component body runs once, on the server too: that is the acceptance
|
|
9
|
+
* (`attach()`), and the cleanup is `onCleanup`;
|
|
10
|
+
* - events go to the `onXxx` callback props, after the acceptance, until
|
|
11
|
+
* `detach`.
|
|
12
|
+
*
|
|
13
|
+
* The adapter's `ref` binds the root to `TElementPlugin` and hands the same
|
|
14
|
+
* node to the consumer's `ref`. A collection has two contexts: the facade is
|
|
15
|
+
* bound by `useCollectionAdapter`, before the component, and `joinBindings`
|
|
16
|
+
* joins it with the component's binding. AGENTS.md (Solid), «Связка».
|
|
17
|
+
*/
|
|
18
|
+
import { createComputed, createEffect, createMemo, createSignal, getOwner, onCleanup, onMount, runWithOwner, } from 'solid-js';
|
|
19
|
+
import { toInstanceState } from '@soxa-ui/setup';
|
|
20
|
+
import { SolidProfile } from '../common';
|
|
21
|
+
import { createShallowState, joinState } from './state';
|
|
22
|
+
/** What the component and a facade share: exchange, state, inputs, acceptance, events, cleanup. */
|
|
23
|
+
function useExchange(adapter, props) {
|
|
24
|
+
const binding = adapter.connect(SolidProfile);
|
|
25
|
+
const [state, write, updates] = createShallowState();
|
|
26
|
+
onCleanup(binding.updates.listen(updates));
|
|
27
|
+
onCleanup(binding.state.subscribe(write));
|
|
28
|
+
createEffect(() => binding.inputs.full(props));
|
|
29
|
+
// Children run in document order, so items join the collection in DOM order
|
|
30
|
+
adapter.attach();
|
|
31
|
+
// Events after the acceptance: what it writes is the starting state, as in
|
|
32
|
+
// the other adapters (benchmarks/parity/README.md). A component with
|
|
33
|
+
// collection facades binds them first: the facade, accepted, writes into
|
|
34
|
+
// the component (the months of Calendar's grids, Table's `dataset`)
|
|
35
|
+
const stop = binding.events.listen((exportName, args) => {
|
|
36
|
+
const callback = Reflect.get(props, exportName);
|
|
37
|
+
if (typeof callback === 'function')
|
|
38
|
+
callback(...args);
|
|
39
|
+
});
|
|
40
|
+
// The consumer stops on `detach`, which comes from the teardown's first
|
|
41
|
+
// moment (`detachFirst`) or, for a collection item, from its collection
|
|
42
|
+
// before the siblings go one by one (`TCollectionMembers`)
|
|
43
|
+
adapter.events.on('detach', stop);
|
|
44
|
+
onCleanup(stop);
|
|
45
|
+
detachFirst(adapter);
|
|
46
|
+
// Solid runs cleanups in reverse order of registration
|
|
47
|
+
onCleanup(() => adapter.destroy());
|
|
48
|
+
return { binding, state };
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Sends `detach` at the teardown's first moment: the consumer hears nothing
|
|
52
|
+
* from then on, as in the other adapters (benchmarks/parity/README.md). Solid
|
|
53
|
+
* cleans an owner's computations first, the last made first, and its cleanups
|
|
54
|
+
* after them, so the children (markup items leaving the collection with an
|
|
55
|
+
* ever shorter list, the root's unbinding) went before `onCleanup` of the
|
|
56
|
+
* component's body. A computation made on mount, when the children already
|
|
57
|
+
* exist, is the owner's last one, and its cleanup is the first of the
|
|
58
|
+
* teardown. Before the mount, and on the server, where effects do not run,
|
|
59
|
+
* `onCleanup(stop)` unsubscribes and `destroy` detaches.
|
|
60
|
+
*/
|
|
61
|
+
function detachFirst(adapter) {
|
|
62
|
+
const owner = getOwner();
|
|
63
|
+
onMount(() => runWithOwner(owner, () => createComputed(() => onCleanup(() => adapter.detach()))));
|
|
64
|
+
}
|
|
65
|
+
export function useAdapter(adapter, props) {
|
|
66
|
+
const { binding, state } = useExchange(adapter, props);
|
|
67
|
+
const forwardProps = createMemo(() => binding.forward(props));
|
|
68
|
+
const [rootElement, setRootElement] = createSignal(null);
|
|
69
|
+
// Unbinding is a cleanup of the node's owner: a tag change (`Root`) unbinds the previous node
|
|
70
|
+
const bindRef = (el) => {
|
|
71
|
+
adapter.bindElement(el);
|
|
72
|
+
setRootElement(el);
|
|
73
|
+
onCleanup(() => {
|
|
74
|
+
adapter.bindElement(null);
|
|
75
|
+
setRootElement(null);
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
const consumerRef = (el) => {
|
|
79
|
+
const consumer = Reflect.get(props, 'ref');
|
|
80
|
+
if (typeof consumer === 'function')
|
|
81
|
+
consumer(el);
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
ctrl: adapter.instance,
|
|
85
|
+
state: toInstanceState(state),
|
|
86
|
+
forwardProps,
|
|
87
|
+
rootElement,
|
|
88
|
+
bindRef,
|
|
89
|
+
consumerRef,
|
|
90
|
+
ref(el) {
|
|
91
|
+
bindRef(el);
|
|
92
|
+
consumerRef(el);
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The adapter of a collection facade: the facade takes its inputs and events
|
|
98
|
+
* from `props` and leaves the attributes that are not its own (`forward`).
|
|
99
|
+
* No `ctrl` and no `ref`: `joinBindings` joins the facade with the
|
|
100
|
+
* component's binding. Bound before the component: the facade, accepted,
|
|
101
|
+
* writes into it, and that is its starting state.
|
|
102
|
+
*/
|
|
103
|
+
export function useCollectionAdapter(adapter, props) {
|
|
104
|
+
const { binding, state } = useExchange(adapter, props);
|
|
105
|
+
return {
|
|
106
|
+
state: toInstanceState(state),
|
|
107
|
+
forward: (rest) => binding.forward(rest),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function joinBindings(owner, ...facades) {
|
|
111
|
+
return {
|
|
112
|
+
...owner,
|
|
113
|
+
state: facades.reduce((state, facade) => joinState(state, facade.state), owner.state),
|
|
114
|
+
forwardProps: createMemo(() => facades.reduce((rest, facade) => facade.forward(rest), owner.forwardProps())),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TOASTS_ELEVATOR } from '@soxa-ui/setup';
|
|
2
|
+
import { useElevator } from '../elevator';
|
|
3
|
+
/**
|
|
4
|
+
* API тостов ближайшего `<Toasts>`: `const { show } = useToasts()`. Берётся
|
|
5
|
+
* лифтом из слоя, который компонент видит в теле, — поэтому зовётся в теле
|
|
6
|
+
* компонента под менеджером. Менеджера нет — ошибка, а не молчаливый `show`.
|
|
7
|
+
*/
|
|
8
|
+
export function useToasts() {
|
|
9
|
+
const api = useElevator().elevator(TOASTS_ELEVATOR).up();
|
|
10
|
+
if (!api) {
|
|
11
|
+
throw new Error('useToasts(): выше по дереву нет <Toasts>. Оберните приложение менеджером: <Toasts><App /></Toasts>');
|
|
12
|
+
}
|
|
13
|
+
return api;
|
|
14
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Elevate, ResolvedSlot, createRootProps, relaySlot, renderSlot } from '../../adapter';
|
|
2
|
+
import { For, Show } from '../../adapter/runtime/flow';
|
|
3
|
+
import { AccordionItem } from './item';
|
|
4
|
+
import { setupAccordion } from './setup.component';
|
|
5
|
+
/** Набор раскрывающихся секций: секции — содержимое или `shown`. */
|
|
6
|
+
export function Accordion(props) {
|
|
7
|
+
const binding = setupAccordion(props);
|
|
8
|
+
const state = binding.state;
|
|
9
|
+
const root = createRootProps(() => ({
|
|
10
|
+
state,
|
|
11
|
+
sets: [state.attrs],
|
|
12
|
+
forward: binding.forwardProps(),
|
|
13
|
+
}));
|
|
14
|
+
return (<Show when={state.rendered}>
|
|
15
|
+
<div {...root()} ref={binding.ref}>
|
|
16
|
+
<Elevate layer={binding.layer}>
|
|
17
|
+
<ResolvedSlot content={props.children} fallback={<For each={state.shown}>
|
|
18
|
+
{(item) => (<AccordionItem ctrl={item} arrow-icon={renderSlot(props['item-arrow-icon'], {
|
|
19
|
+
item,
|
|
20
|
+
})} leading={renderSlot(props['item-leading'], { item })} header={relaySlot(props.item, { item })} trailing={renderSlot(props['item-trailing'], { item })}>
|
|
21
|
+
{renderSlot(props['item-content'], { item })}
|
|
22
|
+
</AccordionItem>)}
|
|
23
|
+
</For>}/>
|
|
24
|
+
</Elevate>
|
|
25
|
+
</div>
|
|
26
|
+
</Show>);
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { withParts } from '@soxa-ui/setup';
|
|
2
|
+
import { Accordion as AccordionComponent } from './Accordion';
|
|
3
|
+
import { AccordionItem } from './item';
|
|
4
|
+
export * from './base.component';
|
|
5
|
+
export { setupAccordion } from './setup.component';
|
|
6
|
+
export * from './item';
|
|
7
|
+
export const Accordion = withParts(AccordionComponent, { Item: AccordionItem });
|