@torpor/ui 0.3.7 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -7
- package/dist/Accordion/Accordion.torp +43 -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 +6 -6
- 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 +25 -4
- 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 +70 -0
- 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 +83 -0
- package/dist/Charts/ChartYAxis.torp +105 -0
- package/dist/Charts/ColumnChart.torp +70 -0
- package/dist/{Chart → Charts}/GridLines.torp +7 -4
- package/dist/Charts/LineChart.torp +73 -0
- package/dist/{Chart → Charts}/PieChart.torp +14 -20
- package/dist/{Chart → Charts}/ScatterChart.torp +45 -38
- package/dist/{Chart → Charts}/SparkLine.torp +16 -19
- package/dist/{Chart → Charts}/XAxis.torp +18 -12
- package/dist/{Chart → Charts}/YAxis.torp +15 -9
- package/dist/Charts/index.d.ts +469 -0
- package/dist/Charts/index.js +17 -0
- 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 +112 -0
- package/dist/ComboBox/ComboBoxInput.torp +145 -0
- package/dist/ComboBox/ComboBoxTrigger.torp +49 -0
- package/dist/ComboBox/ComboBoxTypes.ts +39 -0
- package/dist/ComboBox/index.d.ts +152 -0
- package/dist/ComboBox/index.js +6 -0
- package/dist/CommandPalette/CommandPalette.torp +220 -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 +39 -52
- 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 +5 -18
- 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 +311 -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 +33 -30
- package/dist/Dialog/DialogBody.torp +5 -9
- package/dist/Dialog/DialogButton.torp +14 -11
- package/dist/Dialog/DialogFooter.torp +3 -7
- package/dist/Dialog/DialogHeader.torp +6 -10
- package/dist/Dialog/DialogTypes.ts +2 -2
- package/dist/Dialog/index.d.ts +28 -26
- 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/DisclosureTypes.ts +1 -1
- package/dist/Disclosure/index.d.ts +14 -16
- package/dist/Disclosure/index.js +5 -18
- package/dist/Drawer/Drawer.torp +21 -51
- package/dist/Drawer/DrawerContent.torp +67 -13
- package/dist/Drawer/DrawerOverlay.torp +4 -4
- package/dist/Drawer/DrawerTrigger.torp +16 -4
- package/dist/Drawer/DrawerTypes.ts +4 -1
- 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 +28 -20
- 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 +39 -0
- 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 +198 -77
- package/dist/Form/index.js +16 -46
- package/dist/ListBox/ListBox.torp +374 -0
- package/dist/ListBox/ListBoxItem.torp +131 -0
- package/dist/ListBox/ListBoxSeparator.torp +29 -0
- package/dist/ListBox/ListBoxTypes.ts +41 -0
- package/dist/ListBox/LoadedListBoxItems.torp +41 -0
- package/dist/ListBox/index.d.ts +136 -0
- package/dist/ListBox/index.js +4 -0
- 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 +90 -70
- 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 +12 -21
- 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 +34 -55
- package/dist/MenuBar/MenuBarItemContent.torp +15 -101
- package/dist/MenuBar/MenuBarItemTrigger.torp +20 -55
- package/dist/MenuBar/MenuBarTypes.ts +13 -12
- package/dist/MenuBar/index.d.ts +17 -19
- package/dist/MenuBar/index.js +5 -18
- package/dist/Modal/Modal.torp +28 -48
- 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 +6 -17
- 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 -104
- package/dist/NavMenu/NavMenuButton.torp +10 -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 +16 -61
- package/dist/NavMenu/NavMenuPopoutContent.torp +14 -73
- package/dist/NavMenu/NavMenuPopoutTrigger.torp +47 -0
- package/dist/NavMenu/NavMenuSeparator.torp +3 -6
- package/dist/NavMenu/NavMenuTypes.ts +6 -15
- package/dist/NavMenu/index.d.ts +55 -55
- 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 +152 -0
- package/dist/Pagination/PaginationItem.torp +137 -0
- package/dist/Pagination/PaginationTypes.ts +22 -0
- package/dist/Pagination/buildPages.ts +61 -0
- package/dist/Pagination/index.d.ts +63 -0
- package/dist/Pagination/index.js +3 -0
- package/dist/Popover/Popover.torp +39 -52
- 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 +5 -18
- 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 +190 -0
- package/dist/SelectBox/SelectBoxContent.torp +107 -0
- package/dist/SelectBox/SelectBoxTrigger.torp +141 -0
- package/dist/SelectBox/SelectBoxTypes.ts +33 -0
- package/dist/SelectBox/index.d.ts +112 -0
- package/dist/SelectBox/index.js +5 -0
- package/dist/Slider/Slider.torp +248 -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 +3 -3
- 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 +117 -0
- package/dist/ToolBar/ToolBarButton.torp +56 -0
- package/dist/ToolBar/ToolBarElement.torp +51 -0
- package/dist/ToolBar/ToolBarPopout.torp +45 -0
- package/dist/ToolBar/ToolBarPopoutContent.torp +34 -0
- package/dist/ToolBar/ToolBarPopoutTrigger.torp +47 -0
- package/dist/ToolBar/ToolBarSeparator.torp +21 -0
- package/dist/ToolBar/ToolBarTypes.ts +28 -0
- package/dist/ToolBar/index.d.ts +210 -0
- package/dist/ToolBar/index.js +8 -0
- 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 +72 -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 +82 -0
- 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/chartUtils.ts +1 -1
- 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 +116 -25
- 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/Chart/BarChart.torp +0 -159
- package/dist/Chart/LineChart.torp +0 -196
- package/dist/Chart/index.d.ts +0 -220
- package/dist/Chart/index.js +0 -34
- package/dist/Chart/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/Menu/index.js.map +0 -1
- package/dist/MenuBar/index.js.map +0 -1
- package/dist/NavMenu/NavMenuPopoutButton.torp +0 -129
- package/dist/NavMenu/index.js.map +0 -1
- package/dist/TabGroup/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
- /package/dist/{Chart → Charts}/DataSeries.ts +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { type SlotRender } from "@torpor/view";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
interface SplitterProps {
|
|
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 orientation of the splitter (default horizontal) */
|
|
12
|
+
orientation?: "horizontal" | "vertical";
|
|
13
|
+
/** The percentage of the container taken up by the primary (first) pane */
|
|
14
|
+
value?: Bindable<number>;
|
|
15
|
+
/** The minimum percentage for the primary pane (default 0) */
|
|
16
|
+
min?: number;
|
|
17
|
+
/** The maximum percentage for the primary pane (default 100) */
|
|
18
|
+
max?: number;
|
|
19
|
+
/** The percentage by which keyboard interaction changes the value (default 1) */
|
|
20
|
+
step?: number;
|
|
21
|
+
/** If set to true, the user cannot interact with this splitter */
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
/** Raised when the value has changed */
|
|
24
|
+
onchange?: (value: number) => void;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Two resizable panes with a separator between them, which the user can drag
|
|
29
|
+
* or move with the keyboard to resize the panes.
|
|
30
|
+
*
|
|
31
|
+
* See [the WAI ARIA guidelines for Window Splitters](https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/).
|
|
32
|
+
*
|
|
33
|
+
* The structure of a Splitter is:
|
|
34
|
+
*
|
|
35
|
+
* ```
|
|
36
|
+
* <Splitter>
|
|
37
|
+
* <SplitterPane>...</SplitterPane>
|
|
38
|
+
* <SplitterHandle ariaLabel="Resize" />
|
|
39
|
+
* <SplitterPane>...</SplitterPane>
|
|
40
|
+
* </Splitter>
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
declare function Splitter(
|
|
44
|
+
$parent: ParentNode,
|
|
45
|
+
$anchor: Node | null,
|
|
46
|
+
$props: SplitterProps | undefined,
|
|
47
|
+
$context?: Record<PropertyKey, any>,
|
|
48
|
+
$slots?: Record<string, SlotRender>,
|
|
49
|
+
): void;
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
interface SplitterHandleProps {
|
|
54
|
+
/** An ID for the root element */
|
|
55
|
+
id?: string;
|
|
56
|
+
/** Classes for the root element */
|
|
57
|
+
class?: ClassValue;
|
|
58
|
+
/** Styles for the root element */
|
|
59
|
+
style?: StyleValue;
|
|
60
|
+
/** An accessible name for the separator */
|
|
61
|
+
ariaLabel?: string;
|
|
62
|
+
/** If set to true, the user cannot interact with this handle */
|
|
63
|
+
disabled?: boolean;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The separator in a Splitter that a user can drag, or move with the
|
|
68
|
+
* keyboard, to resize the panes on either side of it.
|
|
69
|
+
*
|
|
70
|
+
* See [the WAI ARIA guidelines for Window Splitters](https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/).
|
|
71
|
+
*/
|
|
72
|
+
declare function SplitterHandle(
|
|
73
|
+
$parent: ParentNode,
|
|
74
|
+
$anchor: Node | null,
|
|
75
|
+
$props: SplitterHandleProps | undefined,
|
|
76
|
+
$context?: Record<PropertyKey, any>,
|
|
77
|
+
$slots?: Record<string, SlotRender>,
|
|
78
|
+
): void;
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
interface SplitterPaneProps {
|
|
83
|
+
/** An ID for the root element */
|
|
84
|
+
id?: string;
|
|
85
|
+
/** Classes for the root element */
|
|
86
|
+
class?: ClassValue;
|
|
87
|
+
/** Styles for the root element */
|
|
88
|
+
style?: StyleValue;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* A pane in a Splitter. When there is more than one pane, the first pane is
|
|
93
|
+
* sized to the splitter's value and the others share what's left.
|
|
94
|
+
*/
|
|
95
|
+
declare function SplitterPane(
|
|
96
|
+
$parent: ParentNode,
|
|
97
|
+
$anchor: Node | null,
|
|
98
|
+
$props: SplitterPaneProps | undefined,
|
|
99
|
+
$context?: Record<PropertyKey, any>,
|
|
100
|
+
$slots?: Record<string, SlotRender>,
|
|
101
|
+
): void;
|
|
102
|
+
|
|
103
|
+
export { Splitter, SplitterHandle, SplitterPane };
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import type { Bindable, ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import $handle from "../utils/$handle";
|
|
3
|
+
import { type StepperContext, StepperContextName } from "./StepperTypes";
|
|
4
|
+
|
|
5
|
+
interface StepperProps {
|
|
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 index of the current step */
|
|
13
|
+
value?: Bindable<number>;
|
|
14
|
+
/** Whether steps can only be visited in order, with completed ones revisitable (default true) */
|
|
15
|
+
linear?: boolean;
|
|
16
|
+
/** An accessible label for the steps */
|
|
17
|
+
ariaLabel?: string;
|
|
18
|
+
/** Raised when the current step has changed */
|
|
19
|
+
onchange?: (index: number) => void;
|
|
20
|
+
/** Raised when the user moves next from the last step */
|
|
21
|
+
oncomplete?: () => void;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A sequence of steps in a task, showing progress through them. Steps before
|
|
26
|
+
* the current one are complete, and can be revisited; the user moves between
|
|
27
|
+
* steps with the navigation controls.
|
|
28
|
+
*
|
|
29
|
+
* The structure of a Stepper is:
|
|
30
|
+
*
|
|
31
|
+
* ```
|
|
32
|
+
* <Stepper ariaLabel="Sign up">
|
|
33
|
+
* <StepperStep label="Account" />
|
|
34
|
+
* <StepperStep label="Profile" />
|
|
35
|
+
* <fill name="nav">
|
|
36
|
+
* <StepperPrevious />
|
|
37
|
+
* <StepperNext />
|
|
38
|
+
* </fill>
|
|
39
|
+
* </Stepper>
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export default function Stepper($props: StepperProps | undefined) {
|
|
43
|
+
let $state = $watch({
|
|
44
|
+
value: 0,
|
|
45
|
+
steps: [] as StepperStepStateLite[],
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
interface StepperStepStateLite {
|
|
49
|
+
index: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
$bind($state, $props, "value");
|
|
53
|
+
|
|
54
|
+
// Set the context to pass down to steps and navigation controls
|
|
55
|
+
const context: StepperContext = {
|
|
56
|
+
registerStep,
|
|
57
|
+
removeStep,
|
|
58
|
+
getValue,
|
|
59
|
+
setValue,
|
|
60
|
+
next,
|
|
61
|
+
previous,
|
|
62
|
+
canNext,
|
|
63
|
+
canPrevious,
|
|
64
|
+
steps: () => $state.steps,
|
|
65
|
+
count: () => $state.steps.length,
|
|
66
|
+
linear: $props?.linear !== false,
|
|
67
|
+
};
|
|
68
|
+
$context[StepperContextName] = context;
|
|
69
|
+
|
|
70
|
+
// Dispatch the change event when the current step changes
|
|
71
|
+
$handle((first) => {
|
|
72
|
+
const value = getValue();
|
|
73
|
+
if (!first) $props?.onchange?.(value);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// The clamped index of the current step
|
|
77
|
+
function getValue(): number {
|
|
78
|
+
const last = Math.max(0, $state.steps.length - 1);
|
|
79
|
+
return Math.min(last, Math.max(0, $state.value));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function canNext(): boolean {
|
|
83
|
+
return getValue() < $state.steps.length - 1;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function canPrevious(): boolean {
|
|
87
|
+
return getValue() > 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function setValue(index: number) {
|
|
91
|
+
const last = Math.max(0, $state.steps.length - 1);
|
|
92
|
+
$state.value = Math.min(last, Math.max(0, index));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function next() {
|
|
96
|
+
if (canNext()) {
|
|
97
|
+
setValue(getValue() + 1);
|
|
98
|
+
} else {
|
|
99
|
+
$props?.oncomplete?.();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function previous() {
|
|
104
|
+
if (canPrevious()) {
|
|
105
|
+
setValue(getValue() - 1);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function registerStep(): StepperStepStateLite {
|
|
110
|
+
const state: StepperStepStateLite = $watch({ index: $state.steps.length });
|
|
111
|
+
$state.steps.push(state);
|
|
112
|
+
return state;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function removeStep(index: number) {
|
|
116
|
+
if (index >= 0 && index < $state.steps.length) {
|
|
117
|
+
$state.steps.splice(index, 1);
|
|
118
|
+
}
|
|
119
|
+
$state.steps.forEach((step, i) => (step.index = i));
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@render {
|
|
123
|
+
<div {$props?.id} class={["torp-stepper", $props?.class]} {$props?.style}>
|
|
124
|
+
<ol class="torp-stepper-steps" aria-label={$props?.ariaLabel}>
|
|
125
|
+
<slot />
|
|
126
|
+
</ol>
|
|
127
|
+
<div class="torp-stepper-nav">
|
|
128
|
+
<slot name="nav" />
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@style {
|
|
134
|
+
/* Headless: layout only, so the steps and navigation sit in rows. All
|
|
135
|
+
appearance is up to the consuming theme */
|
|
136
|
+
.torp-stepper-steps {
|
|
137
|
+
display: flex;
|
|
138
|
+
list-style: none;
|
|
139
|
+
margin: 0;
|
|
140
|
+
padding: 0;
|
|
141
|
+
}
|
|
142
|
+
.torp-stepper-nav {
|
|
143
|
+
display: flex;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Check from "../icons/Check.torp";
|
|
2
|
+
|
|
3
|
+
interface StepperMarkerProps {
|
|
4
|
+
/** Whether the step this marker belongs to is complete */
|
|
5
|
+
complete: boolean;
|
|
6
|
+
/** The index of the step this marker belongs to */
|
|
7
|
+
index: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The marker for a Stepper step, which shows a check when the step is
|
|
12
|
+
* complete or its number otherwise.
|
|
13
|
+
*/
|
|
14
|
+
export default function StepperMarker($props: StepperMarkerProps) {
|
|
15
|
+
@render {
|
|
16
|
+
<span class="torp-stepper-marker" data-state={$props.complete ? "complete" : "incomplete"}>
|
|
17
|
+
@if ($props.complete) {
|
|
18
|
+
<Check />
|
|
19
|
+
} @else {
|
|
20
|
+
<span aria-hidden="true">{$props.index + 1}</span>
|
|
21
|
+
}
|
|
22
|
+
</span>
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import ChevronRight from "../icons/ChevronRight.torp";
|
|
3
|
+
import { type StepperContext, StepperContextName } from "./StepperTypes";
|
|
4
|
+
|
|
5
|
+
interface StepperNextProps {
|
|
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
|
+
/** An ARIA label for the button, for screen readers when the button contains no text */
|
|
13
|
+
ariaLabel?: string;
|
|
14
|
+
/** If set to true, the user cannot interact with this button */
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The button in a Stepper that a user can press to move to the next step,
|
|
20
|
+
* which raises the stepper's oncomplete event on the last step.
|
|
21
|
+
*/
|
|
22
|
+
export default function StepperNext($props: StepperNextProps | undefined) {
|
|
23
|
+
// Get stuff out of the Stepper context
|
|
24
|
+
const context = $context[StepperContextName] as StepperContext;
|
|
25
|
+
if (!context) {
|
|
26
|
+
throw new Error("StepperNext must be contained within a Stepper");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@render {
|
|
30
|
+
<button
|
|
31
|
+
{$props?.id}
|
|
32
|
+
class={["torp-stepper-next", $props?.class]}
|
|
33
|
+
{$props?.style}
|
|
34
|
+
type="button"
|
|
35
|
+
aria-label={$props?.ariaLabel ?? "Next step"}
|
|
36
|
+
disabled={$props?.disabled}
|
|
37
|
+
onclick={() => context.next()}
|
|
38
|
+
>
|
|
39
|
+
<slot>
|
|
40
|
+
<ChevronRight />
|
|
41
|
+
</slot>
|
|
42
|
+
</button>
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import ChevronLeft from "../icons/ChevronLeft.torp";
|
|
3
|
+
import { type StepperContext, StepperContextName } from "./StepperTypes";
|
|
4
|
+
|
|
5
|
+
interface StepperPreviousProps {
|
|
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
|
+
/** An ARIA label for the button, for screen readers when the button contains no text */
|
|
13
|
+
ariaLabel?: string;
|
|
14
|
+
/** If set to true, the user cannot interact with this button */
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The button in a Stepper that a user can press to move to the previous
|
|
20
|
+
* step.
|
|
21
|
+
*/
|
|
22
|
+
export default function StepperPrevious($props: StepperPreviousProps | undefined) {
|
|
23
|
+
// Get stuff out of the Stepper context
|
|
24
|
+
const context = $context[StepperContextName] as StepperContext;
|
|
25
|
+
if (!context) {
|
|
26
|
+
throw new Error("StepperPrevious must be contained within a Stepper");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@render {
|
|
30
|
+
<button
|
|
31
|
+
{$props?.id}
|
|
32
|
+
class={["torp-stepper-previous", $props?.class]}
|
|
33
|
+
{$props?.style}
|
|
34
|
+
type="button"
|
|
35
|
+
aria-label={$props?.ariaLabel ?? "Previous step"}
|
|
36
|
+
disabled={$props?.disabled || !context.canPrevious()}
|
|
37
|
+
onclick={() => context.previous()}
|
|
38
|
+
>
|
|
39
|
+
<slot>
|
|
40
|
+
<ChevronLeft />
|
|
41
|
+
</slot>
|
|
42
|
+
</button>
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import StepperMarker from "./StepperMarker.torp";
|
|
3
|
+
import { type StepperContext, StepperContextName } from "./StepperTypes";
|
|
4
|
+
|
|
5
|
+
interface StepperStepProps {
|
|
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
|
+
/** A label for the step, shown next to its marker */
|
|
13
|
+
label?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A step in a Stepper, which is complete once the stepper has moved past it,
|
|
18
|
+
* and current when the stepper is on it.
|
|
19
|
+
*/
|
|
20
|
+
export default function StepperStep($props: StepperStepProps | undefined) {
|
|
21
|
+
// Get stuff out of the Stepper context
|
|
22
|
+
const context = $context[StepperContextName] as StepperContext;
|
|
23
|
+
if (!context) {
|
|
24
|
+
throw new Error("StepperStep must be contained within a Stepper");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Register this step with the parent Stepper
|
|
28
|
+
let $state = context.registerStep();
|
|
29
|
+
|
|
30
|
+
$run(() => {
|
|
31
|
+
return () => {
|
|
32
|
+
context.removeStep($state.index);
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
function isComplete(): boolean {
|
|
37
|
+
return $state.index < context.getValue();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function isCurrent(): boolean {
|
|
41
|
+
return $state.index === context.getValue();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Steps can always be revisited once complete; when the stepper is not
|
|
45
|
+
// linear, any step can be jumped to
|
|
46
|
+
function canVisit(): boolean {
|
|
47
|
+
return isComplete() || !context.linear;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function handleClick() {
|
|
51
|
+
if (canVisit()) {
|
|
52
|
+
context.setValue($state.index);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function stepLabel(): string {
|
|
57
|
+
return $props?.label ?? `Step ${$state.index + 1}`;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@render {
|
|
61
|
+
<li
|
|
62
|
+
{$props?.id}
|
|
63
|
+
class={["torp-stepper-step", $props?.class]}
|
|
64
|
+
{$props?.style}
|
|
65
|
+
aria-current={isCurrent() ? "step" : undefined}
|
|
66
|
+
data-state={isComplete() ? "complete" : isCurrent() ? "current" : "upcoming"}
|
|
67
|
+
>
|
|
68
|
+
@if (canVisit()) {
|
|
69
|
+
<button
|
|
70
|
+
type="button"
|
|
71
|
+
class="torp-stepper-step-button"
|
|
72
|
+
aria-label={`Go to ${stepLabel()}`}
|
|
73
|
+
onclick={handleClick}
|
|
74
|
+
>
|
|
75
|
+
<StepperMarker complete={isComplete()} index={$state.index} />
|
|
76
|
+
<slot>
|
|
77
|
+
<span>{stepLabel()}</span>
|
|
78
|
+
</slot>
|
|
79
|
+
</button>
|
|
80
|
+
} @else {
|
|
81
|
+
<span class="torp-stepper-step-label">
|
|
82
|
+
<StepperMarker complete={isComplete()} index={$state.index} />
|
|
83
|
+
<slot>
|
|
84
|
+
<span>{stepLabel()}</span>
|
|
85
|
+
</slot>
|
|
86
|
+
</span>
|
|
87
|
+
}
|
|
88
|
+
</li>
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export const StepperContextName: unique symbol = Symbol.for("torp.Stepper");
|
|
2
|
+
|
|
3
|
+
export interface StepperStepState {
|
|
4
|
+
/** The index of the step */
|
|
5
|
+
index: number;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface StepperContext {
|
|
9
|
+
/** Called from a step when it is added */
|
|
10
|
+
registerStep: () => StepperStepState;
|
|
11
|
+
/** Called from a step when it is removed */
|
|
12
|
+
removeStep: (index: number) => void;
|
|
13
|
+
/** The index of the current step */
|
|
14
|
+
getValue: () => number;
|
|
15
|
+
/** Moves to the step at the given index */
|
|
16
|
+
setValue: (index: number) => void;
|
|
17
|
+
/** Moves to the next step, or raises oncomplete on the last one */
|
|
18
|
+
next: () => void;
|
|
19
|
+
/** Moves to the previous step */
|
|
20
|
+
previous: () => void;
|
|
21
|
+
/** Whether the next / previous controls can move from the current step */
|
|
22
|
+
canNext: () => boolean;
|
|
23
|
+
canPrevious: () => boolean;
|
|
24
|
+
/** The reactive list of registered steps */
|
|
25
|
+
steps: () => StepperStepState[];
|
|
26
|
+
/** The number of registered steps */
|
|
27
|
+
count: () => number;
|
|
28
|
+
/** Whether steps can only be visited in order, with completed ones revisitable */
|
|
29
|
+
linear: boolean;
|
|
30
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { type SlotRender } from "@torpor/view";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
interface StepperProps {
|
|
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 index of the current step */
|
|
12
|
+
value?: Bindable<number>;
|
|
13
|
+
/** Whether steps can only be visited in order, with completed ones revisitable (default true) */
|
|
14
|
+
linear?: boolean;
|
|
15
|
+
/** An accessible label for the steps */
|
|
16
|
+
ariaLabel?: string;
|
|
17
|
+
/** Raised when the current step has changed */
|
|
18
|
+
onchange?: (index: number) => void;
|
|
19
|
+
/** Raised when the user moves next from the last step */
|
|
20
|
+
oncomplete?: () => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A sequence of steps in a task, showing progress through them. Steps before
|
|
25
|
+
* the current one are complete, and can be revisited; the user moves between
|
|
26
|
+
* steps with the navigation controls.
|
|
27
|
+
*
|
|
28
|
+
* The structure of a Stepper is:
|
|
29
|
+
*
|
|
30
|
+
* ```
|
|
31
|
+
* <Stepper ariaLabel="Sign up">
|
|
32
|
+
* <StepperStep label="Account" />
|
|
33
|
+
* <StepperStep label="Profile" />
|
|
34
|
+
* <fill name="nav">
|
|
35
|
+
* <StepperPrevious />
|
|
36
|
+
* <StepperNext />
|
|
37
|
+
* </fill>
|
|
38
|
+
* </Stepper>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
declare function Stepper(
|
|
42
|
+
$parent: ParentNode,
|
|
43
|
+
$anchor: Node | null,
|
|
44
|
+
$props: StepperProps | undefined,
|
|
45
|
+
$context?: Record<PropertyKey, any>,
|
|
46
|
+
$slots?: Record<string, SlotRender>,
|
|
47
|
+
): void;
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
interface StepperMarkerProps {
|
|
52
|
+
/** Whether the step this marker belongs to is complete */
|
|
53
|
+
complete: boolean;
|
|
54
|
+
/** The index of the step this marker belongs to */
|
|
55
|
+
index: number;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The marker for a Stepper step, which shows a check when the step is
|
|
60
|
+
* complete or its number otherwise.
|
|
61
|
+
*/
|
|
62
|
+
declare function StepperMarker(
|
|
63
|
+
$parent: ParentNode,
|
|
64
|
+
$anchor: Node | null,
|
|
65
|
+
$props: StepperMarkerProps,
|
|
66
|
+
$context?: Record<PropertyKey, any>,
|
|
67
|
+
$slots?: Record<string, SlotRender>,
|
|
68
|
+
): void;
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
interface StepperNextProps {
|
|
73
|
+
/** An ID for the root element */
|
|
74
|
+
id?: string;
|
|
75
|
+
/** Classes for the root element */
|
|
76
|
+
class?: ClassValue;
|
|
77
|
+
/** Styles for the root element */
|
|
78
|
+
style?: StyleValue;
|
|
79
|
+
/** An ARIA label for the button, for screen readers when the button contains no text */
|
|
80
|
+
ariaLabel?: string;
|
|
81
|
+
/** If set to true, the user cannot interact with this button */
|
|
82
|
+
disabled?: boolean;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* The button in a Stepper that a user can press to move to the next step,
|
|
87
|
+
* which raises the stepper's oncomplete event on the last step.
|
|
88
|
+
*/
|
|
89
|
+
declare function StepperNext(
|
|
90
|
+
$parent: ParentNode,
|
|
91
|
+
$anchor: Node | null,
|
|
92
|
+
$props: StepperNextProps | undefined,
|
|
93
|
+
$context?: Record<PropertyKey, any>,
|
|
94
|
+
$slots?: Record<string, SlotRender>,
|
|
95
|
+
): void;
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
interface StepperPreviousProps {
|
|
100
|
+
/** An ID for the root element */
|
|
101
|
+
id?: string;
|
|
102
|
+
/** Classes for the root element */
|
|
103
|
+
class?: ClassValue;
|
|
104
|
+
/** Styles for the root element */
|
|
105
|
+
style?: StyleValue;
|
|
106
|
+
/** An ARIA label for the button, for screen readers when the button contains no text */
|
|
107
|
+
ariaLabel?: string;
|
|
108
|
+
/** If set to true, the user cannot interact with this button */
|
|
109
|
+
disabled?: boolean;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* The button in a Stepper that a user can press to move to the previous
|
|
114
|
+
* step.
|
|
115
|
+
*/
|
|
116
|
+
declare function StepperPrevious(
|
|
117
|
+
$parent: ParentNode,
|
|
118
|
+
$anchor: Node | null,
|
|
119
|
+
$props: StepperPreviousProps | undefined,
|
|
120
|
+
$context?: Record<PropertyKey, any>,
|
|
121
|
+
$slots?: Record<string, SlotRender>,
|
|
122
|
+
): void;
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
interface StepperStepProps {
|
|
127
|
+
/** An ID for the root element */
|
|
128
|
+
id?: string;
|
|
129
|
+
/** Classes for the root element */
|
|
130
|
+
class?: ClassValue;
|
|
131
|
+
/** Styles for the root element */
|
|
132
|
+
style?: StyleValue;
|
|
133
|
+
/** A label for the step, shown next to its marker */
|
|
134
|
+
label?: string;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* A step in a Stepper, which is complete once the stepper has moved past it,
|
|
139
|
+
* and current when the stepper is on it.
|
|
140
|
+
*/
|
|
141
|
+
declare function StepperStep(
|
|
142
|
+
$parent: ParentNode,
|
|
143
|
+
$anchor: Node | null,
|
|
144
|
+
$props: StepperStepProps | undefined,
|
|
145
|
+
$context?: Record<PropertyKey, any>,
|
|
146
|
+
$slots?: Record<string, SlotRender>,
|
|
147
|
+
): void;
|
|
148
|
+
|
|
149
|
+
export { Stepper, StepperMarker, StepperNext, StepperPrevious, StepperStep };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import Stepper from "./Stepper.torp";
|
|
2
|
+
import StepperMarker from "./StepperMarker.torp";
|
|
3
|
+
import StepperNext from "./StepperNext.torp";
|
|
4
|
+
import StepperPrevious from "./StepperPrevious.torp";
|
|
5
|
+
import StepperStep from "./StepperStep.torp";
|
|
6
|
+
export { Stepper, StepperMarker, StepperNext, StepperPrevious, StepperStep };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
2
|
import getId from "../utils/getId";
|
|
3
|
-
import {
|
|
3
|
+
import { type TabGroupContext, TabGroupContextName } from "./TabGroupTypes";
|
|
4
4
|
|
|
5
5
|
interface TabContentProps {
|
|
6
6
|
/** An ID for the root element */
|
|
7
7
|
id?: string;
|
|
8
8
|
/** Classes for the root element */
|
|
9
|
-
class?: ClassValue
|
|
9
|
+
class?: ClassValue;
|
|
10
10
|
/** Styles for the root element */
|
|
11
|
-
style?: StyleValue
|
|
11
|
+
style?: StyleValue;
|
|
12
12
|
/** The index of this item */
|
|
13
|
-
index?: number
|
|
13
|
+
index?: number;
|
|
14
14
|
/** The value for this item */
|
|
15
|
-
value?: string
|
|
15
|
+
value?: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -36,10 +36,10 @@ export default function TabContent($props: TabContentProps | undefined) {
|
|
|
36
36
|
class={["torp-tab-content", $props?.class]}
|
|
37
37
|
{$props?.style}
|
|
38
38
|
role="tabpanel"
|
|
39
|
+
tabindex="0"
|
|
39
40
|
aria-labelledby={$state.headerId}
|
|
40
41
|
data-orientation={context.orientation}
|
|
41
42
|
data-state={$state.active ? "active" : "inactive"}
|
|
42
|
-
data-disabled={$state.disabled ? "true" : undefined}
|
|
43
43
|
>
|
|
44
44
|
@if ($state.active) {
|
|
45
45
|
<slot />
|