@torpor/ui 0.4.0 → 1.0.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/README.md +83 -7
- package/dist/Accordion/Accordion.torp +42 -165
- package/dist/Accordion/AccordionContent.torp +6 -6
- package/dist/Accordion/AccordionHeader.torp +7 -11
- package/dist/Accordion/AccordionItem.torp +24 -24
- package/dist/Accordion/AccordionTrigger.torp +17 -8
- package/dist/Accordion/AccordionTypes.ts +1 -1
- package/dist/Accordion/index.d.ts +23 -25
- package/dist/Accordion/index.js +6 -22
- package/dist/Breadcrumb/Breadcrumb.torp +12 -10
- package/dist/Breadcrumb/BreadcrumbItem.torp +6 -6
- package/dist/Breadcrumb/BreadcrumbList.torp +21 -0
- package/dist/Breadcrumb/BreadcrumbSeparator.torp +4 -4
- package/dist/Breadcrumb/index.d.ts +39 -15
- package/dist/Breadcrumb/index.js +5 -14
- package/dist/Calendar/Calendar.torp +163 -156
- package/dist/Calendar/CalendarDay.torp +91 -45
- package/dist/Calendar/CalendarDayHeader.torp +36 -0
- package/dist/Calendar/CalendarGrid.torp +104 -0
- package/dist/Calendar/CalendarGridHeader.torp +43 -0
- package/dist/Calendar/CalendarHeader.torp +48 -0
- package/dist/Calendar/CalendarHeaderTrigger.torp +54 -0
- package/dist/Calendar/CalendarTypes.ts +24 -3
- package/dist/Calendar/buildDays.ts +54 -0
- package/dist/Calendar/index.d.ts +191 -5
- package/dist/Calendar/index.js +8 -10
- package/dist/Carousel/Carousel.torp +180 -0
- package/dist/Carousel/CarouselIndicators.torp +65 -0
- package/dist/Carousel/CarouselNext.torp +43 -0
- package/dist/Carousel/CarouselPrevious.torp +44 -0
- package/dist/Carousel/CarouselSlide.torp +57 -0
- package/dist/Carousel/CarouselTypes.ts +28 -0
- package/dist/Carousel/index.d.ts +147 -0
- package/dist/Carousel/index.js +6 -0
- package/dist/Charts/BarChart.torp +55 -144
- package/dist/Charts/Chart.torp +120 -0
- package/dist/Charts/ChartBars.torp +78 -0
- package/dist/Charts/ChartColumns.torp +66 -0
- package/dist/Charts/ChartGrid.torp +54 -0
- package/dist/Charts/ChartLines.torp +60 -0
- package/dist/Charts/ChartTypes.ts +25 -0
- package/dist/Charts/ChartXAxis.torp +85 -0
- package/dist/Charts/ChartYAxis.torp +107 -0
- package/dist/Charts/ColumnChart.torp +70 -0
- package/dist/Charts/GridLines.torp +4 -4
- package/dist/Charts/LineChart.torp +55 -178
- package/dist/Charts/PieChart.torp +14 -20
- package/dist/Charts/ScatterChart.torp +45 -38
- package/dist/Charts/SparkLine.torp +16 -19
- package/dist/Charts/XAxis.torp +14 -11
- package/dist/Charts/YAxis.torp +10 -8
- package/dist/Charts/index.d.ts +328 -79
- package/dist/Charts/index.js +17 -34
- package/dist/ColorPicker/ColorPalette.torp +154 -0
- package/dist/ColorPicker/ColorPicker.torp +157 -0
- package/dist/ColorPicker/index.d.ts +85 -0
- package/dist/ColorPicker/index.js +3 -0
- package/dist/ComboBox/ComboBox.torp +205 -0
- package/dist/ComboBox/ComboBoxContent.torp +120 -0
- package/dist/ComboBox/ComboBoxInput.torp +161 -0
- package/dist/ComboBox/ComboBoxTrigger.torp +49 -0
- package/dist/ComboBox/ComboBoxTypes.ts +39 -0
- package/dist/ComboBox/index.d.ts +154 -0
- package/dist/ComboBox/index.js +6 -0
- package/dist/CommandPalette/CommandPalette.torp +223 -0
- package/dist/CommandPalette/CommandTypes.ts +14 -0
- package/dist/CommandPalette/index.d.ts +45 -0
- package/dist/CommandPalette/index.js +2 -0
- package/dist/Contextual/Contextual.torp +32 -50
- package/dist/Contextual/ContextualContent.torp +29 -73
- package/dist/Contextual/ContextualHover.torp +112 -0
- package/dist/Contextual/ContextualTrigger.torp +31 -42
- package/dist/Contextual/ContextualTypes.ts +4 -17
- package/dist/Contextual/index.d.ts +44 -27
- package/dist/Contextual/index.js +5 -14
- package/dist/DataGrid/DataGrid.torp +496 -0
- package/dist/DataGrid/DataGridTypes.ts +25 -0
- package/dist/DataGrid/index.d.ts +90 -0
- package/dist/DataGrid/index.js +3 -0
- package/dist/DataGrid/sortRows.ts +32 -0
- package/dist/DatePicker/DatePicker.torp +222 -0
- package/dist/DatePicker/DatePickerHeader.torp +20 -0
- package/dist/DatePicker/index.d.ts +55 -0
- package/dist/DatePicker/index.js +2 -0
- package/dist/DateRangePicker/DateRangePicker.torp +315 -0
- package/dist/DateRangePicker/DateRangePickerDay.torp +137 -0
- package/dist/DateRangePicker/DateRangePickerTypes.ts +21 -0
- package/dist/DateRangePicker/index.d.ts +76 -0
- package/dist/DateRangePicker/index.js +3 -0
- package/dist/Dialog/Dialog.torp +24 -17
- package/dist/Dialog/DialogBody.torp +5 -9
- package/dist/Dialog/DialogButton.torp +12 -12
- package/dist/Dialog/DialogFooter.torp +3 -7
- package/dist/Dialog/DialogHeader.torp +6 -10
- package/dist/Dialog/index.d.ts +27 -27
- package/dist/Dialog/index.js +6 -22
- package/dist/Disclosure/Disclosure.torp +18 -18
- package/dist/Disclosure/DisclosureContent.torp +5 -6
- package/dist/Disclosure/DisclosureHeader.torp +7 -11
- package/dist/Disclosure/DisclosureTrigger.torp +4 -5
- package/dist/Disclosure/index.d.ts +14 -16
- package/dist/Disclosure/index.js +5 -18
- package/dist/Drawer/Drawer.torp +19 -49
- package/dist/Drawer/DrawerContent.torp +70 -13
- package/dist/Drawer/DrawerOverlay.torp +4 -4
- package/dist/Drawer/DrawerTrigger.torp +16 -4
- package/dist/Drawer/DrawerTypes.ts +3 -0
- package/dist/Drawer/index.d.ts +16 -20
- package/dist/Drawer/index.js +5 -18
- package/dist/FocusGroup/FocusGroup.torp +70 -0
- package/dist/FocusGroup/FocusGroupButton.torp +59 -0
- package/dist/FocusGroup/FocusGroupTypes.ts +14 -0
- package/dist/FocusGroup/index.d.ts +44 -0
- package/dist/FocusGroup/index.js +3 -0
- package/dist/Form/CheckBox.torp +27 -18
- package/dist/Form/Field.torp +17 -17
- package/dist/Form/File.torp +31 -22
- package/dist/Form/FileDrop.torp +187 -0
- package/dist/Form/Form.torp +24 -22
- package/dist/Form/FormTypes.ts +2 -0
- package/dist/Form/FormValues.torp +37 -0
- package/dist/Form/Hidden.torp +4 -12
- package/dist/Form/Input.torp +38 -32
- package/dist/Form/Label.torp +3 -3
- package/dist/Form/Message.torp +13 -5
- package/dist/Form/MessageSummary.torp +5 -4
- package/dist/Form/Option.torp +11 -7
- package/dist/Form/Select.torp +32 -28
- package/dist/Form/TextArea.torp +35 -31
- package/dist/Form/Toggle.torp +109 -0
- package/dist/Form/index.d.ts +178 -79
- package/dist/Form/index.js +16 -50
- package/dist/ListBox/ListBox.torp +253 -150
- package/dist/ListBox/ListBoxItem.torp +54 -30
- package/dist/ListBox/ListBoxSeparator.torp +5 -2
- package/dist/ListBox/ListBoxTypes.ts +23 -5
- package/dist/ListBox/LoadedListBoxItems.torp +41 -0
- package/dist/ListBox/index.d.ts +56 -17
- package/dist/ListBox/index.js +4 -14
- package/dist/MaskedInput/MaskedInput.torp +143 -0
- package/dist/MaskedInput/index.d.ts +52 -0
- package/dist/MaskedInput/index.js +2 -0
- package/dist/Menu/Menu.torp +86 -71
- package/dist/Menu/MenuButton.torp +17 -10
- package/dist/Menu/MenuCheck.torp +22 -18
- package/dist/Menu/MenuGroup.torp +4 -4
- package/dist/Menu/MenuIndicator.torp +5 -13
- package/dist/Menu/MenuPopout.torp +20 -50
- package/dist/Menu/MenuPopoutContent.torp +15 -66
- package/dist/Menu/MenuPopoutTrigger.torp +19 -100
- package/dist/Menu/MenuRadio.torp +25 -26
- package/dist/Menu/MenuRadioGroup.torp +25 -68
- package/dist/Menu/MenuSeparator.torp +3 -2
- package/dist/Menu/MenuTypes.ts +9 -19
- package/dist/Menu/index.d.ts +45 -51
- package/dist/Menu/index.js +12 -46
- package/dist/MenuBar/MenuBar.torp +31 -83
- package/dist/MenuBar/MenuBarItem.torp +33 -51
- package/dist/MenuBar/MenuBarItemContent.torp +15 -101
- package/dist/MenuBar/MenuBarItemTrigger.torp +20 -55
- package/dist/MenuBar/MenuBarTypes.ts +11 -10
- package/dist/MenuBar/index.d.ts +17 -19
- package/dist/MenuBar/index.js +5 -18
- package/dist/Modal/Modal.torp +22 -47
- package/dist/Modal/ModalContent.torp +21 -44
- package/dist/Modal/ModalOverlay.torp +4 -4
- package/dist/Modal/ModalTrigger.torp +16 -32
- package/dist/Modal/ModalTypes.ts +5 -16
- package/dist/Modal/index.d.ts +17 -29
- package/dist/Modal/index.js +29 -28
- package/dist/Modal/index.js.map +1 -1
- package/dist/Modal/showPrompt.ts +2 -2
- package/dist/NavMenu/NavMenu.torp +22 -111
- package/dist/NavMenu/NavMenuButton.torp +7 -8
- package/dist/NavMenu/NavMenuElement.torp +6 -7
- package/dist/NavMenu/NavMenuGroup.torp +5 -5
- package/dist/NavMenu/NavMenuGroupHeader.torp +5 -8
- package/dist/NavMenu/NavMenuLink.torp +7 -10
- package/dist/NavMenu/NavMenuPopout.torp +15 -60
- package/dist/NavMenu/NavMenuPopoutContent.torp +14 -73
- package/dist/NavMenu/NavMenuPopoutTrigger.torp +17 -99
- package/dist/NavMenu/NavMenuSeparator.torp +3 -7
- package/dist/NavMenu/NavMenuTypes.ts +4 -14
- package/dist/NavMenu/index.d.ts +40 -44
- package/dist/NavMenu/index.js +11 -42
- package/dist/Notification/Notification.torp +12 -24
- package/dist/Notification/NotificationClose.torp +6 -3
- package/dist/Notification/NotificationContainer.torp +3 -7
- package/dist/Notification/NotificationContent.torp +3 -7
- package/dist/Notification/NotificationTypes.ts +1 -1
- package/dist/Notification/index.d.ts +15 -12
- package/dist/Notification/index.js +22 -32
- package/dist/Notification/index.js.map +1 -1
- package/dist/NumberInput/NumberInput.torp +255 -0
- package/dist/NumberInput/index.d.ts +44 -0
- package/dist/NumberInput/index.js +2 -0
- package/dist/Pagination/Pagination.torp +41 -34
- package/dist/Pagination/PaginationItem.torp +50 -13
- package/dist/Pagination/PaginationTypes.ts +3 -6
- package/dist/Pagination/buildPages.ts +9 -5
- package/dist/Pagination/index.d.ts +19 -9
- package/dist/Pagination/index.js +3 -40
- package/dist/Popover/Popover.torp +32 -50
- package/dist/Popover/PopoverContent.torp +27 -76
- package/dist/Popover/PopoverHover.torp +90 -0
- package/dist/Popover/PopoverTrigger.torp +17 -40
- package/dist/Popover/PopoverTypes.ts +4 -17
- package/dist/Popover/index.d.ts +40 -25
- package/dist/Popover/index.js +18 -18
- package/dist/Popover/index.js.map +1 -1
- package/dist/Progress/Progress.torp +88 -0
- package/dist/Progress/index.d.ts +37 -0
- package/dist/Progress/index.js +2 -0
- package/dist/Rating/Rating.torp +225 -0
- package/dist/Rating/index.d.ts +44 -0
- package/dist/Rating/index.js +2 -0
- package/dist/SegmentedControl/SegmentedControl.torp +233 -0
- package/dist/SegmentedControl/SegmentedControlTypes.ts +26 -0
- package/dist/SegmentedControl/SegmentedItem.torp +78 -0
- package/dist/SegmentedControl/index.d.ts +74 -0
- package/dist/SegmentedControl/index.js +3 -0
- package/dist/SelectBox/SelectBox.torp +107 -53
- package/dist/SelectBox/SelectBoxContent.torp +49 -19
- package/dist/SelectBox/SelectBoxTrigger.torp +108 -8
- package/dist/SelectBox/SelectBoxTypes.ts +26 -11
- package/dist/SelectBox/index.d.ts +39 -54
- package/dist/SelectBox/index.js +5 -18
- package/dist/Slider/Slider.torp +245 -0
- package/dist/Slider/index.d.ts +45 -0
- package/dist/Slider/index.js +2 -0
- package/dist/Splitter/Splitter.torp +156 -0
- package/dist/Splitter/SplitterHandle.torp +161 -0
- package/dist/Splitter/SplitterPane.torp +63 -0
- package/dist/Splitter/SplitterTypes.ts +31 -0
- package/dist/Splitter/index.d.ts +103 -0
- package/dist/Splitter/index.js +4 -0
- package/dist/Stepper/Stepper.torp +146 -0
- package/dist/Stepper/StepperMarker.torp +24 -0
- package/dist/Stepper/StepperNext.torp +44 -0
- package/dist/Stepper/StepperPrevious.torp +44 -0
- package/dist/Stepper/StepperStep.torp +90 -0
- package/dist/Stepper/StepperTypes.ts +30 -0
- package/dist/Stepper/index.d.ts +149 -0
- package/dist/Stepper/index.js +6 -0
- package/dist/TabGroup/TabContent.torp +6 -6
- package/dist/TabGroup/TabGroup.torp +97 -113
- package/dist/TabGroup/TabGroupTypes.ts +1 -1
- package/dist/TabGroup/TabHeader.torp +23 -19
- package/dist/TabGroup/TabList.torp +8 -21
- package/dist/TabGroup/TabTrigger.torp +6 -7
- package/dist/TabGroup/index.d.ts +26 -26
- package/dist/TabGroup/index.js +6 -22
- package/dist/TagInput/TagInput.torp +378 -0
- package/dist/TagInput/index.d.ts +48 -0
- package/dist/TagInput/index.js +2 -0
- package/dist/TimePicker/TimePicker.torp +462 -0
- package/dist/TimePicker/index.d.ts +53 -0
- package/dist/TimePicker/index.js +2 -0
- package/dist/ToolBar/ToolBar.torp +29 -110
- package/dist/ToolBar/ToolBarButton.torp +7 -8
- package/dist/ToolBar/ToolBarElement.torp +7 -11
- package/dist/ToolBar/ToolBarPopout.torp +16 -68
- package/dist/ToolBar/ToolBarPopoutContent.torp +15 -73
- package/dist/ToolBar/ToolBarPopoutTrigger.torp +19 -110
- package/dist/ToolBar/ToolBarSeparator.torp +3 -7
- package/dist/ToolBar/ToolBarTypes.ts +7 -14
- package/dist/ToolBar/index.d.ts +30 -32
- package/dist/ToolBar/index.js +8 -30
- package/dist/Tree/Tree.torp +395 -0
- package/dist/Tree/TreeItem.torp +176 -0
- package/dist/Tree/TreeItemChildren.torp +60 -0
- package/dist/Tree/TreeItemContent.torp +46 -0
- package/dist/Tree/TreeItemLabel.torp +94 -0
- package/dist/Tree/TreeItemTrigger.torp +78 -0
- package/dist/Tree/TreeLoadedChildren.torp +122 -0
- package/dist/Tree/TreeTypes.ts +63 -0
- package/dist/Tree/index.d.ts +262 -0
- package/dist/Tree/index.js +7 -0
- package/dist/icons/ChevronDoubleLeft.torp +19 -0
- package/dist/icons/ChevronDoubleRight.torp +19 -0
- package/dist/icons/index.d.ts +61 -1
- package/dist/icons/index.js +17 -58
- package/dist/loader-DEeG5vFY.js +44 -0
- package/dist/loader-DEeG5vFY.js.map +1 -0
- package/dist/motion/index.d.ts +12 -8
- package/dist/motion/index.d.ts.map +1 -0
- package/dist/motion/index.js +70 -88
- package/dist/motion/index.js.map +1 -1
- package/dist/mount/draggable.ts +63 -0
- package/dist/mount/dropTarget.ts +108 -0
- package/dist/mount/hoverTrigger.ts +1 -1
- package/dist/utils/$handle.ts +23 -0
- package/dist/utils/LoadedItems.torp +47 -0
- package/dist/utils/PopoutClickTrigger.torp +99 -0
- package/dist/utils/PopoutTypes.ts +59 -12
- package/dist/utils/SubmenuPopout.torp +89 -0
- package/dist/utils/SubmenuPopoutContent.torp +87 -0
- package/dist/utils/SubmenuPopoutTrigger.torp +160 -0
- package/dist/utils/chartColors.ts +13 -13
- package/dist/utils/chartLayout.ts +143 -0
- package/dist/utils/colorUtils.ts +103 -0
- package/dist/utils/createItemGroup.ts +152 -0
- package/dist/utils/dateUtils.ts +8 -7
- package/dist/utils/documentEvents.ts +4 -4
- package/dist/utils/dragState.ts +86 -0
- package/dist/utils/focusGroup.ts +204 -0
- package/dist/utils/focusItem.ts +44 -0
- package/dist/utils/formField.ts +70 -0
- package/dist/utils/hoverOpen.ts +50 -0
- package/dist/utils/hoverReveal.ts +194 -0
- package/dist/utils/loader.ts +113 -0
- package/dist/utils/maskUtils.ts +98 -0
- package/dist/utils/popoutContent.ts +137 -0
- package/dist/utils/reorderList.ts +52 -0
- package/package.json +97 -22
- package/dist/Accordion/index.js.map +0 -1
- package/dist/Breadcrumb/index.js.map +0 -1
- package/dist/Calendar/index.js.map +0 -1
- package/dist/Charts/index.js.map +0 -1
- package/dist/Contextual/index.js.map +0 -1
- package/dist/Dialog/index.js.map +0 -1
- package/dist/Disclosure/index.js.map +0 -1
- package/dist/Drawer/index.js.map +0 -1
- package/dist/Form/index.js.map +0 -1
- package/dist/ListBox/index.js.map +0 -1
- package/dist/Menu/index.js.map +0 -1
- package/dist/MenuBar/index.js.map +0 -1
- package/dist/NavMenu/index.js.map +0 -1
- package/dist/Pagination/index.js.map +0 -1
- package/dist/SelectBox/SelectBoxInput.torp +0 -95
- package/dist/SelectBox/index.js.map +0 -1
- package/dist/TabGroup/index.js.map +0 -1
- package/dist/ToolBar/index.js.map +0 -1
- package/dist/icons/index.js.map +0 -1
- package/dist/index.d.ts +0 -19
- package/dist/metafile-esm.json +0 -1
- package/dist/motion/fade.ts +0 -16
- package/dist/motion/grow.ts +0 -23
- package/dist/motion/measure.ts +0 -28
- package/dist/motion/slide.ts +0 -45
- package/dist/mount/index.d.ts +0 -2
- package/dist/utils/index.d.ts +0 -2
|
@@ -5,21 +5,39 @@ interface SelectBoxProps {
|
|
|
5
5
|
/** An ID for the root element */
|
|
6
6
|
id?: string;
|
|
7
7
|
/** Classes for the root element */
|
|
8
|
-
class?: ClassValue
|
|
8
|
+
class?: ClassValue;
|
|
9
9
|
/** Styles for the root element */
|
|
10
|
-
style?: StyleValue
|
|
11
|
-
/** The
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
|
|
10
|
+
style?: StyleValue;
|
|
11
|
+
/** The name of the input's form data field */
|
|
12
|
+
name?: string;
|
|
13
|
+
/** The data value selected by the user, or an array of values if multiple is set */
|
|
14
|
+
value: Bindable<any>;
|
|
15
|
+
/** Whether multiple values can be selected at the same time */
|
|
16
|
+
multiple?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Reads options from the network (or anywhere async) when the box is
|
|
19
|
+
* shown. When set and no content is slotted in, the options are rendered
|
|
20
|
+
* automatically.
|
|
21
|
+
*/
|
|
22
|
+
load?: Loader;
|
|
23
|
+
/** Called after each successful load with the normalized result */
|
|
24
|
+
onload?: (result: LoadResult) => void;
|
|
25
|
+
/** Extracts the display text for a loaded item (defaults to `label ?? text ?? item`) */
|
|
26
|
+
getItemLabel?: (item: any) => any;
|
|
27
|
+
/** Extracts the value for a loaded item (defaults to `value ?? id`) */
|
|
28
|
+
getItemValue?: (item: any) => any;
|
|
29
|
+
/** Text to display when the input value is empty */
|
|
30
|
+
placeholder?: string;
|
|
31
|
+
///** Whether the input's value is required */
|
|
32
|
+
//required?: boolean,
|
|
33
|
+
/** Whether the popout is visible; only bind this to control it from outside */
|
|
34
|
+
visible?: Bindable<boolean | undefined>;
|
|
35
|
+
/** Raised when the value has changed */
|
|
36
|
+
onchange?: (value: any) => void;
|
|
19
37
|
/** Raised when the popout has opened */
|
|
20
|
-
onopen?: () => void
|
|
38
|
+
onopen?: () => void;
|
|
21
39
|
/** Raised when the popout has closed */
|
|
22
|
-
onclose?: (result: any) => void
|
|
40
|
+
onclose?: (result: any) => void;
|
|
23
41
|
}
|
|
24
42
|
|
|
25
43
|
/**
|
|
@@ -31,8 +49,7 @@ interface SelectBoxProps {
|
|
|
31
49
|
*
|
|
32
50
|
* ```
|
|
33
51
|
* <SelectBox>
|
|
34
|
-
* <
|
|
35
|
-
* <SelectBoxTrigger /> (optional)
|
|
52
|
+
* <SelectBoxTrigger />
|
|
36
53
|
* <SelectBoxContent />
|
|
37
54
|
* </SelectBox>
|
|
38
55
|
* ```
|
|
@@ -51,9 +68,9 @@ interface SelectBoxContentProps {
|
|
|
51
68
|
/** An ID for the root element */
|
|
52
69
|
id?: string;
|
|
53
70
|
/** Classes for the root element */
|
|
54
|
-
class?: ClassValue
|
|
71
|
+
class?: ClassValue;
|
|
55
72
|
/** Styles for the root element */
|
|
56
|
-
style?: StyleValue
|
|
73
|
+
style?: StyleValue;
|
|
57
74
|
}
|
|
58
75
|
|
|
59
76
|
/**
|
|
@@ -70,51 +87,19 @@ declare function SelectBoxContent(
|
|
|
70
87
|
|
|
71
88
|
|
|
72
89
|
|
|
73
|
-
interface SelectBoxInputProps {
|
|
74
|
-
/** An ID for the root element */
|
|
75
|
-
id?: string;
|
|
76
|
-
/** Classes for the root element */
|
|
77
|
-
class?: ClassValue,
|
|
78
|
-
/** Styles for the root element */
|
|
79
|
-
style?: StyleValue,
|
|
80
|
-
/** The name of the input's form data field */
|
|
81
|
-
name?: string,
|
|
82
|
-
/** The value displayed in the input */
|
|
83
|
-
value?: any,
|
|
84
|
-
/** Text to display when the input value is empty */
|
|
85
|
-
placeholder?: string,
|
|
86
|
-
/** Whether the input's value is required */
|
|
87
|
-
required?: boolean,
|
|
88
|
-
/** An ARIA label for describing the input to screen readers when there is no associated label element */
|
|
89
|
-
ariaLabel?: string,
|
|
90
|
-
/** Raised on change */
|
|
91
|
-
onchange?: (e: Event) => void,
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* The input that causes a SelectBox to appear or disappear.
|
|
96
|
-
*/
|
|
97
|
-
declare function SelectBoxInput(
|
|
98
|
-
$parent: ParentNode,
|
|
99
|
-
$anchor: Node | null,
|
|
100
|
-
$props: SelectBoxInputProps | undefined,
|
|
101
|
-
$context?: Record<PropertyKey, any>,
|
|
102
|
-
$slots?: Record<string, SlotRender>,
|
|
103
|
-
): void;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
90
|
interface SelectBoxTriggerProps {
|
|
108
91
|
/** An ID for the root element */
|
|
109
92
|
id?: string;
|
|
110
93
|
/** Classes for the root element */
|
|
111
|
-
class?: ClassValue
|
|
94
|
+
class?: ClassValue;
|
|
112
95
|
/** Styles for the root element */
|
|
113
|
-
style?: StyleValue
|
|
96
|
+
style?: StyleValue;
|
|
97
|
+
/** An ARIA label for describing the trigger to screen readers when there is no associated label element */
|
|
98
|
+
ariaLabel?: string;
|
|
114
99
|
}
|
|
115
100
|
|
|
116
101
|
/**
|
|
117
|
-
* The
|
|
102
|
+
* The input that causes a SelectBox to appear or disappear.
|
|
118
103
|
*/
|
|
119
104
|
declare function SelectBoxTrigger(
|
|
120
105
|
$parent: ParentNode,
|
|
@@ -124,4 +109,4 @@ declare function SelectBoxTrigger(
|
|
|
124
109
|
$slots?: Record<string, SlotRender>,
|
|
125
110
|
): void;
|
|
126
111
|
|
|
127
|
-
export { SelectBox, SelectBoxContent,
|
|
112
|
+
export { SelectBox, SelectBoxContent, SelectBoxTrigger };
|
package/dist/SelectBox/index.js
CHANGED
|
@@ -1,18 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// src/SelectBox/SelectBoxInput.torp
|
|
8
|
-
import SelectBoxInput_default from "./SelectBoxInput.torp";
|
|
9
|
-
|
|
10
|
-
// src/SelectBox/SelectBoxTrigger.torp
|
|
11
|
-
import SelectBoxTrigger_default from "./SelectBoxTrigger.torp";
|
|
12
|
-
export {
|
|
13
|
-
SelectBox_default as SelectBox,
|
|
14
|
-
SelectBoxContent_default as SelectBoxContent,
|
|
15
|
-
SelectBoxInput_default as SelectBoxInput,
|
|
16
|
-
SelectBoxTrigger_default as SelectBoxTrigger
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import { n as normalizeLoadResult, t as createItemLoader } from "../loader-DEeG5vFY.js";
|
|
2
|
+
import SelectBox from "./SelectBox.torp";
|
|
3
|
+
import SelectBoxContent from "./SelectBoxContent.torp";
|
|
4
|
+
import SelectBoxTrigger from "./SelectBoxTrigger.torp";
|
|
5
|
+
export { SelectBox, SelectBoxContent, SelectBoxTrigger, createItemLoader, normalizeLoadResult };
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import type { Bindable, ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import $handle from "../utils/$handle";
|
|
3
|
+
import {
|
|
4
|
+
type FieldContext,
|
|
5
|
+
FieldContextName,
|
|
6
|
+
type FormContext,
|
|
7
|
+
FormContextName,
|
|
8
|
+
} from "../Form/FormTypes";
|
|
9
|
+
import FormValues from "../Form/FormValues.torp";
|
|
10
|
+
import createFormField from "../utils/formField";
|
|
11
|
+
|
|
12
|
+
interface SliderProps {
|
|
13
|
+
/** An ID for the root element */
|
|
14
|
+
id?: string;
|
|
15
|
+
/** Classes for the root element */
|
|
16
|
+
class?: ClassValue;
|
|
17
|
+
/** Styles for the root element */
|
|
18
|
+
style?: StyleValue;
|
|
19
|
+
/** The minimum allowed value */
|
|
20
|
+
min?: number;
|
|
21
|
+
/** The maximum allowed value */
|
|
22
|
+
max?: number;
|
|
23
|
+
/** The amount by which the value is increased or decreased */
|
|
24
|
+
step?: number;
|
|
25
|
+
/** The current value of the slider */
|
|
26
|
+
value?: Bindable<number>;
|
|
27
|
+
/** The orientation of the slider */
|
|
28
|
+
orientation?: "horizontal" | "vertical";
|
|
29
|
+
/** If set to true, the user cannot interact with this slider */
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
/** An accessible name for the slider */
|
|
32
|
+
ariaLabel?: string;
|
|
33
|
+
/** The name of the component's form data field */
|
|
34
|
+
name?: string;
|
|
35
|
+
/** Raised when the value has changed */
|
|
36
|
+
onchange?: (value: number) => void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* An input where the user selects a value from within a given range, by
|
|
41
|
+
* dragging a thumb along a track or by using the keyboard.
|
|
42
|
+
*
|
|
43
|
+
* See [the WAI ARIA guidelines for Sliders](https://www.w3.org/WAI/ARIA/apg/patterns/slider/).
|
|
44
|
+
*/
|
|
45
|
+
export default function Slider($props: SliderProps | undefined) {
|
|
46
|
+
let track: HTMLElement;
|
|
47
|
+
let thumb: HTMLElement;
|
|
48
|
+
|
|
49
|
+
// Wire up the enclosing Form and Field, if any
|
|
50
|
+
const form = createFormField(
|
|
51
|
+
$props?.name,
|
|
52
|
+
$context[FormContextName] as FormContext | undefined,
|
|
53
|
+
$context[FieldContextName] as FieldContext | undefined,
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
function getMin(): number {
|
|
57
|
+
return $props?.min ?? 0;
|
|
58
|
+
}
|
|
59
|
+
function getMax(): number {
|
|
60
|
+
return $props?.max ?? 100;
|
|
61
|
+
}
|
|
62
|
+
function getStep(): number {
|
|
63
|
+
const step = $props?.step ?? 1;
|
|
64
|
+
return step > 0 ? step : 1;
|
|
65
|
+
}
|
|
66
|
+
function getOrientation(): "horizontal" | "vertical" {
|
|
67
|
+
return $props?.orientation === "vertical" ? "vertical" : "horizontal";
|
|
68
|
+
}
|
|
69
|
+
function getDisabled(): boolean {
|
|
70
|
+
return $props?.disabled === true;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
let $state = $watch({
|
|
74
|
+
value: 0,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
$bind($state, $props, "value");
|
|
78
|
+
|
|
79
|
+
// Dispatch the change event when the value changes
|
|
80
|
+
$handle((first) => {
|
|
81
|
+
const value = $state.value;
|
|
82
|
+
if (!first) $props?.onchange?.(value);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
function clamp(value: number): number {
|
|
86
|
+
return Math.min(getMax(), Math.max(getMin(), value));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Snap a raw position-derived value to the nearest step multiple
|
|
90
|
+
function snap(value: number): number {
|
|
91
|
+
const min = getMin();
|
|
92
|
+
const snapped = min + Math.round((value - min) / getStep()) * getStep();
|
|
93
|
+
return snapped === -0 ? 0 : snapped;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// The clamped value that is displayed and reported to assistive tech
|
|
97
|
+
function getValue(): number {
|
|
98
|
+
return clamp($state.value);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// The percentage of the range that the value represents (0..100)
|
|
102
|
+
function getPct(): number {
|
|
103
|
+
const min = getMin();
|
|
104
|
+
const max = getMax();
|
|
105
|
+
if (max <= min) return 0;
|
|
106
|
+
return ((getValue() - min) / (max - min)) * 100;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function setValue(value: number) {
|
|
110
|
+
const next = clamp(snap(value));
|
|
111
|
+
if (next !== $state.value) {
|
|
112
|
+
$state.value = next;
|
|
113
|
+
form.handleInput();
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Convert a pointer position into a value along the track
|
|
120
|
+
function valueFromPointer(e: { clientX: number; clientY: number }): number {
|
|
121
|
+
const rect = track.getBoundingClientRect();
|
|
122
|
+
const horizontal = getOrientation() === "horizontal";
|
|
123
|
+
const pos = horizontal ? e.clientX - rect.left : e.clientY - rect.top;
|
|
124
|
+
const size = horizontal ? rect.width : rect.height;
|
|
125
|
+
if (!(size > 0)) {
|
|
126
|
+
return getValue();
|
|
127
|
+
}
|
|
128
|
+
const ratio = Math.min(1, Math.max(0, pos / size));
|
|
129
|
+
return getMin() + ratio * (getMax() - getMin());
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
let dragging = false;
|
|
133
|
+
|
|
134
|
+
function removeDragListeners() {
|
|
135
|
+
removeEventListener("mousemove", handleMouseMove);
|
|
136
|
+
removeEventListener("mouseup", handleMouseUp);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function handleMouseDown(e: MouseEvent) {
|
|
140
|
+
if (getDisabled()) return;
|
|
141
|
+
e.preventDefault();
|
|
142
|
+
dragging = true;
|
|
143
|
+
setValue(valueFromPointer(e));
|
|
144
|
+
thumb.focus();
|
|
145
|
+
addEventListener("mousemove", handleMouseMove);
|
|
146
|
+
addEventListener("mouseup", handleMouseUp);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function handleMouseMove(e: MouseEvent) {
|
|
150
|
+
if (!dragging || getDisabled()) return;
|
|
151
|
+
setValue(valueFromPointer(e));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function handleMouseUp() {
|
|
155
|
+
if (!dragging) return;
|
|
156
|
+
dragging = false;
|
|
157
|
+
removeDragListeners();
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Stop listening if the slider is unmounted mid-drag
|
|
161
|
+
$onmount(() => {
|
|
162
|
+
return () => removeDragListeners();
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
function handleKey(e: KeyboardEvent) {
|
|
166
|
+
if (getDisabled()) return;
|
|
167
|
+
|
|
168
|
+
switch (e.key) {
|
|
169
|
+
case "ArrowRight":
|
|
170
|
+
case "ArrowUp": {
|
|
171
|
+
e.preventDefault();
|
|
172
|
+
setValue($state.value + getStep());
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
case "ArrowLeft":
|
|
176
|
+
case "ArrowDown": {
|
|
177
|
+
e.preventDefault();
|
|
178
|
+
setValue($state.value - getStep());
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
case "PageUp": {
|
|
182
|
+
e.preventDefault();
|
|
183
|
+
setValue($state.value + getStep() * 10);
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
case "PageDown": {
|
|
187
|
+
e.preventDefault();
|
|
188
|
+
setValue($state.value - getStep() * 10);
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
case "Home": {
|
|
192
|
+
e.preventDefault();
|
|
193
|
+
setValue(getMin());
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
case "End": {
|
|
197
|
+
e.preventDefault();
|
|
198
|
+
setValue(getMax());
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@render {
|
|
205
|
+
<div
|
|
206
|
+
{$props?.id}
|
|
207
|
+
class={["torp-slider", getDisabled() ? "torp-slider-disabled" : undefined, $props?.class]}
|
|
208
|
+
{$props?.style}
|
|
209
|
+
onmousedown={handleMouseDown}
|
|
210
|
+
&ref={track}
|
|
211
|
+
>
|
|
212
|
+
<div class="torp-slider-fill" style={`${getOrientation() === "vertical" ? "height" : "width"}: ${getPct()}%;`} />
|
|
213
|
+
<div
|
|
214
|
+
class="torp-slider-thumb"
|
|
215
|
+
style={`position: absolute; transform: translate(-50%, -50%); ${getOrientation() === "vertical" ? `top: ${getPct()}%; left: 50%` : `left: ${getPct()}%; top: 50%`};`}
|
|
216
|
+
role="slider"
|
|
217
|
+
tabindex={getDisabled() ? -1 : 0}
|
|
218
|
+
aria-orientation={getOrientation()}
|
|
219
|
+
aria-valuemin={getMin()}
|
|
220
|
+
aria-valuemax={getMax()}
|
|
221
|
+
aria-valuenow={getValue()}
|
|
222
|
+
aria-label={$props?.ariaLabel}
|
|
223
|
+
aria-disabled={getDisabled() ? "true" : undefined}
|
|
224
|
+
data-valid={form.valid ? "valid" : "invalid"}
|
|
225
|
+
aria-describedby={form.messageId}
|
|
226
|
+
aria-invalid={form.inField && !form.valid ? "true" : undefined}
|
|
227
|
+
onblur={form.handleBlur}
|
|
228
|
+
onkeydown={handleKey}
|
|
229
|
+
&ref={thumb}
|
|
230
|
+
/>
|
|
231
|
+
</div>
|
|
232
|
+
|
|
233
|
+
<FormValues name={form.name} value={getValue()} />
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
@style {
|
|
237
|
+
/* Headless: all positioning is done with inline styles (so that theme
|
|
238
|
+
CSS can't dislodge the thumb from the track). All appearance is up
|
|
239
|
+
to the consuming theme */
|
|
240
|
+
.torp-slider {
|
|
241
|
+
position: relative;
|
|
242
|
+
touch-action: none;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type SlotRender } from "@torpor/view";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
interface SliderProps {
|
|
5
|
+
/** An ID for the root element */
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Classes for the root element */
|
|
8
|
+
class?: ClassValue;
|
|
9
|
+
/** Styles for the root element */
|
|
10
|
+
style?: StyleValue;
|
|
11
|
+
/** The minimum allowed value */
|
|
12
|
+
min?: number;
|
|
13
|
+
/** The maximum allowed value */
|
|
14
|
+
max?: number;
|
|
15
|
+
/** The amount by which the value is increased or decreased */
|
|
16
|
+
step?: number;
|
|
17
|
+
/** The current value of the slider */
|
|
18
|
+
value?: Bindable<number>;
|
|
19
|
+
/** The orientation of the slider */
|
|
20
|
+
orientation?: "horizontal" | "vertical";
|
|
21
|
+
/** If set to true, the user cannot interact with this slider */
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
/** An accessible name for the slider */
|
|
24
|
+
ariaLabel?: string;
|
|
25
|
+
/** The name of the component's form data field */
|
|
26
|
+
name?: string;
|
|
27
|
+
/** Raised when the value has changed */
|
|
28
|
+
onchange?: (value: number) => void;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* An input where the user selects a value from within a given range, by
|
|
33
|
+
* dragging a thumb along a track or by using the keyboard.
|
|
34
|
+
*
|
|
35
|
+
* See [the WAI ARIA guidelines for Sliders](https://www.w3.org/WAI/ARIA/apg/patterns/slider/).
|
|
36
|
+
*/
|
|
37
|
+
declare function Slider(
|
|
38
|
+
$parent: ParentNode,
|
|
39
|
+
$anchor: Node | null,
|
|
40
|
+
$props: SliderProps | undefined,
|
|
41
|
+
$context?: Record<PropertyKey, any>,
|
|
42
|
+
$slots?: Record<string, SlotRender>,
|
|
43
|
+
): void;
|
|
44
|
+
|
|
45
|
+
export { Slider };
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { Bindable, ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import $handle from "../utils/$handle";
|
|
3
|
+
import { type SplitterContext, SplitterContextName } from "./SplitterTypes";
|
|
4
|
+
|
|
5
|
+
interface SplitterProps {
|
|
6
|
+
/** An ID for the root element */
|
|
7
|
+
id?: string;
|
|
8
|
+
/** Classes for the root element */
|
|
9
|
+
class?: ClassValue;
|
|
10
|
+
/** Styles for the root element */
|
|
11
|
+
style?: StyleValue;
|
|
12
|
+
/** The orientation of the splitter (default horizontal) */
|
|
13
|
+
orientation?: "horizontal" | "vertical";
|
|
14
|
+
/** The percentage of the container taken up by the primary (first) pane */
|
|
15
|
+
value?: Bindable<number>;
|
|
16
|
+
/** The minimum percentage for the primary pane (default 0) */
|
|
17
|
+
min?: number;
|
|
18
|
+
/** The maximum percentage for the primary pane (default 100) */
|
|
19
|
+
max?: number;
|
|
20
|
+
/** The percentage by which keyboard interaction changes the value (default 1) */
|
|
21
|
+
step?: number;
|
|
22
|
+
/** If set to true, the user cannot interact with this splitter */
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/** Raised when the value has changed */
|
|
25
|
+
onchange?: (value: number) => void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Two resizable panes with a separator between them, which the user can drag
|
|
30
|
+
* or move with the keyboard to resize the panes.
|
|
31
|
+
*
|
|
32
|
+
* See [the WAI ARIA guidelines for Window Splitters](https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/).
|
|
33
|
+
*
|
|
34
|
+
* The structure of a Splitter is:
|
|
35
|
+
*
|
|
36
|
+
* ```
|
|
37
|
+
* <Splitter>
|
|
38
|
+
* <SplitterPane>...</SplitterPane>
|
|
39
|
+
* <SplitterHandle ariaLabel="Resize" />
|
|
40
|
+
* <SplitterPane>...</SplitterPane>
|
|
41
|
+
* </Splitter>
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export default function Splitter($props: SplitterProps | undefined) {
|
|
45
|
+
let container: HTMLElement;
|
|
46
|
+
|
|
47
|
+
let $state = $watch({
|
|
48
|
+
value: 50,
|
|
49
|
+
panes: [] as SplitterPaneStateLite[],
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
interface SplitterPaneStateLite {
|
|
53
|
+
index: number;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
$bind($state, $props, "value");
|
|
57
|
+
|
|
58
|
+
// Keep the stored value clamped, so that out-of-range initial values or
|
|
59
|
+
// min/max changes don't later surface as user changes
|
|
60
|
+
$run(() => {
|
|
61
|
+
const clamped = getValue();
|
|
62
|
+
if (clamped !== $state.value) {
|
|
63
|
+
$state.value = clamped;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// Set the context to pass down to panes and handles
|
|
68
|
+
const context: SplitterContext = {
|
|
69
|
+
registerPane,
|
|
70
|
+
removePane,
|
|
71
|
+
getOrientation,
|
|
72
|
+
getValue,
|
|
73
|
+
getMin,
|
|
74
|
+
getMax,
|
|
75
|
+
getStep,
|
|
76
|
+
getDisabled,
|
|
77
|
+
setValue,
|
|
78
|
+
count: () => $state.panes.length,
|
|
79
|
+
getContainer: () => container,
|
|
80
|
+
};
|
|
81
|
+
$context[SplitterContextName] = context;
|
|
82
|
+
|
|
83
|
+
// Dispatch the change event when the value changes
|
|
84
|
+
$handle((first) => {
|
|
85
|
+
const value = getValue();
|
|
86
|
+
if (!first) $props?.onchange?.(value);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
function getOrientation(): "horizontal" | "vertical" {
|
|
90
|
+
return $props?.orientation === "vertical" ? "vertical" : "horizontal";
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function getMin(): number {
|
|
94
|
+
return clampPercent($props?.min ?? 0);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function getMax(): number {
|
|
98
|
+
return clampPercent($props?.max ?? 100);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function clampPercent(value: number): number {
|
|
102
|
+
return Math.min(100, Math.max(0, value));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function getStep(): number {
|
|
106
|
+
const step = $props?.step ?? 1;
|
|
107
|
+
return step > 0 ? step : 1;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function getDisabled(): boolean {
|
|
111
|
+
return $props?.disabled === true;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// The clamped value that is applied to the primary pane
|
|
115
|
+
function getValue(): number {
|
|
116
|
+
return Math.min(getMax(), Math.max(getMin(), $state.value));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function setValue(value: number) {
|
|
120
|
+
$state.value = Math.min(getMax(), Math.max(getMin(), value));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function registerPane(): SplitterPaneStateLite {
|
|
124
|
+
const state: SplitterPaneStateLite = $watch({ index: $state.panes.length });
|
|
125
|
+
$state.panes.push(state);
|
|
126
|
+
return state;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function removePane(index: number) {
|
|
130
|
+
if (index >= 0 && index < $state.panes.length) {
|
|
131
|
+
$state.panes.splice(index, 1);
|
|
132
|
+
}
|
|
133
|
+
$state.panes.forEach((pane, i) => (pane.index = i));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@render {
|
|
137
|
+
<div
|
|
138
|
+
{$props?.id}
|
|
139
|
+
class={["torp-splitter", $props?.class]}
|
|
140
|
+
{$props?.style}
|
|
141
|
+
data-orientation={getOrientation()}
|
|
142
|
+
style={`flex-direction: ${getOrientation()};`}
|
|
143
|
+
&ref={container}
|
|
144
|
+
>
|
|
145
|
+
<slot />
|
|
146
|
+
</div>
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@style {
|
|
150
|
+
/* Headless: layout only, so the panes split the container. All other
|
|
151
|
+
appearance is up to the consuming theme */
|
|
152
|
+
.torp-splitter {
|
|
153
|
+
display: flex;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|