@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
package/README.md
CHANGED
|
@@ -2,15 +2,91 @@
|
|
|
2
2
|
|
|
3
3
|
Accessible, unstyled components for use in your Torpor front-end.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Each component is exported as a separate subpath (e.g.
|
|
6
|
+
`@torpor/ui/Accordion`) and is bundled with sensible behavior and ARIA
|
|
7
|
+
attributes, while styling is left up to you.
|
|
6
8
|
|
|
7
|
-
##
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @torpor/ui
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```torp
|
|
18
|
+
import {
|
|
19
|
+
Accordion,
|
|
20
|
+
AccordionContent,
|
|
21
|
+
AccordionHeader,
|
|
22
|
+
AccordionItem,
|
|
23
|
+
AccordionTrigger,
|
|
24
|
+
} from "@torpor/ui/Accordion";
|
|
25
|
+
|
|
26
|
+
@render {
|
|
27
|
+
<Accordion>
|
|
28
|
+
<AccordionItem>
|
|
29
|
+
<AccordionHeader>
|
|
30
|
+
<AccordionTrigger>Header 1</AccordionTrigger>
|
|
31
|
+
</AccordionHeader>
|
|
32
|
+
<AccordionContent>Content 1</AccordionContent>
|
|
33
|
+
</AccordionItem>
|
|
34
|
+
</Accordion>
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Components
|
|
8
39
|
|
|
9
40
|
- Accordion
|
|
10
|
-
-
|
|
11
|
-
|
|
41
|
+
- Breadcrumb
|
|
42
|
+
- Calendar
|
|
43
|
+
- Carousel
|
|
44
|
+
- Charts
|
|
45
|
+
- ColorPicker
|
|
46
|
+
- ComboBox
|
|
47
|
+
- CommandPalette
|
|
48
|
+
- Contextual
|
|
49
|
+
- DataGrid
|
|
50
|
+
- DatePicker
|
|
51
|
+
- DateRangePicker
|
|
52
|
+
- Dialog
|
|
53
|
+
- Disclosure
|
|
54
|
+
- Drawer
|
|
55
|
+
- FocusGroup
|
|
56
|
+
- Form
|
|
57
|
+
- icons
|
|
58
|
+
- ListBox
|
|
59
|
+
- MaskedInput
|
|
60
|
+
- Menu
|
|
61
|
+
- MenuBar
|
|
62
|
+
- Modal
|
|
63
|
+
- NavMenu
|
|
64
|
+
- Notification
|
|
65
|
+
- NumberInput
|
|
66
|
+
- Pagination
|
|
67
|
+
- Popover
|
|
68
|
+
- Progress
|
|
69
|
+
- Rating
|
|
70
|
+
- SegmentedControl
|
|
71
|
+
- SelectBox
|
|
72
|
+
- Slider
|
|
73
|
+
- Splitter
|
|
74
|
+
- Stepper
|
|
75
|
+
- TabGroup
|
|
76
|
+
- TagInput
|
|
77
|
+
- TimePicker
|
|
78
|
+
- ToolBar
|
|
79
|
+
- Tree
|
|
80
|
+
|
|
81
|
+
## Motion
|
|
82
|
+
|
|
83
|
+
Transition helpers for use with the `transition` / `transition-in` /
|
|
84
|
+
`transition-out` directives (see [torpor/view](../view)), exported from
|
|
85
|
+
`@torpor/ui/motion`:
|
|
12
86
|
|
|
13
|
-
|
|
87
|
+
- `fade`
|
|
88
|
+
- `grow`
|
|
89
|
+
- `slide`
|
|
14
90
|
|
|
15
|
-
|
|
16
|
-
|
|
91
|
+
Plus `measure`, a utility for measuring an element before it is added to the
|
|
92
|
+
DOM (used by `grow` and `slide`).
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
-
import
|
|
1
|
+
import type { Bindable, ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import $handle from "../utils/$handle";
|
|
3
|
+
import { type AccordionContext, AccordionContextName, type ItemState } from "./AccordionTypes";
|
|
4
|
+
import { createItemGroup } from "../utils/createItemGroup";
|
|
5
|
+
import { focusItem } from "../utils/focusItem";
|
|
3
6
|
|
|
4
7
|
interface AccordionProps {
|
|
5
8
|
/** An ID for the root element */
|
|
6
9
|
id?: string;
|
|
7
10
|
/** Classes for the root element */
|
|
8
|
-
class?: ClassValue
|
|
11
|
+
class?: ClassValue;
|
|
9
12
|
/** Styles for the root element */
|
|
10
|
-
style?: StyleValue
|
|
13
|
+
style?: StyleValue;
|
|
11
14
|
/** Whether a single AccordionItem or multiple AccordionItems can be expanded at the same time */
|
|
12
|
-
type?: "single" | "multiple"
|
|
15
|
+
type?: "single" | "multiple";
|
|
13
16
|
/** The value of the expanded AccordionItem, or an array of values if the type is "multiple" */
|
|
14
|
-
value?: any | any[]
|
|
17
|
+
value?: Bindable<any | any[]>;
|
|
15
18
|
/** If set to true, the user cannot interact with any items in the Accordion */
|
|
16
|
-
disabled?: boolean
|
|
19
|
+
disabled?: boolean;
|
|
17
20
|
/** Raised when the expanded item(s) have changed */
|
|
18
|
-
onchange?: (value: any | any[]) => void
|
|
21
|
+
onchange?: (value: any | any[]) => void;
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
/**
|
|
@@ -38,193 +41,67 @@ interface AccordionProps {
|
|
|
38
41
|
* ```
|
|
39
42
|
*/
|
|
40
43
|
export default function Accordion($props: AccordionProps | undefined) {
|
|
41
|
-
let type = $props?.type ?? "single";
|
|
42
|
-
|
|
43
44
|
let $state = $watch({
|
|
44
|
-
value: $props?.value ?? (type === "single" ? undefined : [])
|
|
45
|
+
value: $props?.value ?? (($props?.type ?? "single") === "single" ? undefined : []),
|
|
45
46
|
});
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
$run(() => {
|
|
49
|
-
$state.value = $props?.value ?? (type === "single" ? undefined : [])
|
|
50
|
-
});
|
|
48
|
+
$bind($state, $props, "value");
|
|
51
49
|
|
|
52
|
-
//
|
|
53
|
-
$
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
50
|
+
// Dispatch the change event when the value changes
|
|
51
|
+
$handle((first) => {
|
|
52
|
+
const value = $state.value;
|
|
53
|
+
if (!first) $props?.onchange?.(value);
|
|
57
54
|
});
|
|
58
55
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
const group = createItemGroup<ItemState>({
|
|
57
|
+
state: $state,
|
|
58
|
+
type: () => $props?.type ?? "single",
|
|
59
|
+
selectedProperty: "expanded",
|
|
60
|
+
disabled: () => $props?.disabled,
|
|
61
|
+
onRegister: (item) => {
|
|
62
|
+
if (!item.value) {
|
|
63
|
+
item.value = item.index;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
});
|
|
63
67
|
|
|
64
68
|
// Set the context to pass down to items, with functions for each item to call
|
|
65
69
|
let context: AccordionContext = {
|
|
66
|
-
registerItem,
|
|
67
|
-
removeItem,
|
|
68
|
-
toggleItem,
|
|
69
|
-
handleHeaderKey
|
|
70
|
+
registerItem: (state: ItemState) => group.registerItem(state),
|
|
71
|
+
removeItem: group.removeItem,
|
|
72
|
+
toggleItem: group.toggleItem,
|
|
73
|
+
handleHeaderKey,
|
|
70
74
|
};
|
|
71
75
|
$context[AccordionContextName] = context;
|
|
72
76
|
|
|
73
|
-
$run(() => {
|
|
74
|
-
// Get the value to ensure that this effect will be subscribed
|
|
75
|
-
let value = $state.value;
|
|
76
|
-
|
|
77
|
-
// And set the expanded item(s)
|
|
78
|
-
switch (type) {
|
|
79
|
-
case "single": {
|
|
80
|
-
for (let item of itemStates) {
|
|
81
|
-
item.expanded = item.value === value;
|
|
82
|
-
}
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
case "multiple": {
|
|
86
|
-
if (!Array.isArray(value)) {
|
|
87
|
-
value = [value];
|
|
88
|
-
}
|
|
89
|
-
for (let item of itemStates) {
|
|
90
|
-
item.expanded = value.indexOf(item.value) !== -1;
|
|
91
|
-
}
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
$run(() => {
|
|
98
|
-
let disabled = $props?.disabled;
|
|
99
|
-
itemStates.forEach((s) => s.parentDisabled = disabled === true);
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
// Dispatch the change event when the value changes
|
|
103
|
-
let firstChange = true;
|
|
104
|
-
$run(() => {
|
|
105
|
-
const onchange = $props?.onchange;
|
|
106
|
-
const value = $state.value;
|
|
107
|
-
if (firstChange) {
|
|
108
|
-
firstChange = false;
|
|
109
|
-
} else if (onchange) {
|
|
110
|
-
onchange(value);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
function registerItem(itemState: ItemState) {
|
|
115
|
-
// If an index wasn't set for the item, set it automatically
|
|
116
|
-
if (itemState.index === -1) {
|
|
117
|
-
itemState.index = nextIndex++;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// If a value wasn't set for the item, set it to the index
|
|
121
|
-
if (!itemState.value) {
|
|
122
|
-
itemState.value = itemState.index;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// If we have a value, set whether the item should be expanded
|
|
126
|
-
if ($state.value !== undefined && $state.value !== null) {
|
|
127
|
-
switch (type) {
|
|
128
|
-
case "single": {
|
|
129
|
-
itemState.expanded = $state.value === itemState.value;
|
|
130
|
-
break;
|
|
131
|
-
}
|
|
132
|
-
case "multiple": {
|
|
133
|
-
itemState.expanded = $state.value.includes(itemState.value);
|
|
134
|
-
break;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Set whether the Accordion itself is disabled
|
|
140
|
-
itemState.parentDisabled = $props?.disabled === true
|
|
141
|
-
|
|
142
|
-
// Add the item's state to the array
|
|
143
|
-
itemStates.splice(itemState.index, 0, itemState);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// TODO: I think this should be done by value
|
|
147
|
-
function removeItem(itemIndex: number) {
|
|
148
|
-
// Remove the item and re-index
|
|
149
|
-
let index = itemStates.findIndex((item) => item.index === itemIndex);
|
|
150
|
-
if (index !== -1) {
|
|
151
|
-
itemStates.splice(itemIndex, 1);
|
|
152
|
-
}
|
|
153
|
-
itemStates.forEach((item, i) => (item.index = i));
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
function toggleItem(toggleValue: string) {
|
|
157
|
-
switch (type) {
|
|
158
|
-
case "single": {
|
|
159
|
-
for (let item of itemStates) {
|
|
160
|
-
// The item is expanded if it has the supplied value (i.e. if it was clicked) and if it
|
|
161
|
-
// wasn't already expanded (i.e. we collapse it if it was expanded and clicked)
|
|
162
|
-
if (item.value === toggleValue) {
|
|
163
|
-
$state.value = item.expanded ? "" : item.value;
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
break;
|
|
168
|
-
}
|
|
169
|
-
case "multiple": {
|
|
170
|
-
let value = [];
|
|
171
|
-
for (let item of itemStates) {
|
|
172
|
-
// The item is expanded if it has the supplied value (i.e. if it was clicked) or if it
|
|
173
|
-
// was already expanded
|
|
174
|
-
if (
|
|
175
|
-
(item.value === toggleValue && !item.expanded) ||
|
|
176
|
-
(item.value !== toggleValue && item.expanded)
|
|
177
|
-
) {
|
|
178
|
-
value.push(item.value);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
$state.value = value.sort();
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
77
|
function handleHeaderKey(headerIndex: number, e: KeyboardEvent) {
|
|
78
|
+
const itemStates = group.itemStates;
|
|
188
79
|
switch (e.key) {
|
|
189
|
-
case "Up":
|
|
190
80
|
case "ArrowUp": {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
itemStates[headerIndex - 1].setFocused();
|
|
194
|
-
}
|
|
81
|
+
e.preventDefault();
|
|
82
|
+
focusItem(itemStates, headerIndex, "previous");
|
|
195
83
|
break;
|
|
196
84
|
}
|
|
197
|
-
case "Down":
|
|
198
85
|
case "ArrowDown": {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
itemStates[headerIndex + 1].setFocused();
|
|
202
|
-
}
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
focusItem(itemStates, headerIndex, "next");
|
|
203
88
|
break;
|
|
204
89
|
}
|
|
205
90
|
case "Home": {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
itemStates[0].setFocused();
|
|
209
|
-
}
|
|
91
|
+
e.preventDefault();
|
|
92
|
+
focusItem(itemStates, headerIndex, "start");
|
|
210
93
|
break;
|
|
211
94
|
}
|
|
212
95
|
case "End": {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
itemStates[itemStates.length - 1].setFocused();
|
|
216
|
-
}
|
|
96
|
+
e.preventDefault();
|
|
97
|
+
focusItem(itemStates, headerIndex, "end");
|
|
217
98
|
break;
|
|
218
99
|
}
|
|
219
100
|
}
|
|
220
101
|
}
|
|
221
102
|
|
|
222
103
|
@render {
|
|
223
|
-
<div
|
|
224
|
-
{$props?.id}
|
|
225
|
-
class={["torp-accordion", $props?.class]}
|
|
226
|
-
{$props?.style}
|
|
227
|
-
>
|
|
104
|
+
<div {$props?.id} class={["torp-accordion", $props?.class]} {$props?.style}>
|
|
228
105
|
<slot />
|
|
229
106
|
</div>
|
|
230
107
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
2
|
import getId from "../utils/getId";
|
|
3
|
-
import {
|
|
3
|
+
import { type AccordionItemContext, AccordionItemContextName } from "./AccordionTypes";
|
|
4
4
|
|
|
5
5
|
interface AccordionContentProps {
|
|
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
|
/** Whether this content should act as a region. Set this when the content contains heading elements or a nested Accordion */
|
|
13
|
-
ariaRegion?: boolean
|
|
13
|
+
ariaRegion?: boolean;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -23,7 +23,7 @@ export default function AccordionContent($props: AccordionContentProps | undefin
|
|
|
23
23
|
if (!context) {
|
|
24
24
|
throw new Error("AccordionContent must be contained within an AccordionItem");
|
|
25
25
|
}
|
|
26
|
-
let $state = context.state
|
|
26
|
+
let $state = context.state;
|
|
27
27
|
|
|
28
28
|
// Set the content ID so that it can be used with aria-controls in AccordionTrigger
|
|
29
29
|
$state.contentId = $props?.id ?? defaultId;
|
|
@@ -35,8 +35,8 @@ export default function AccordionContent($props: AccordionContentProps | undefin
|
|
|
35
35
|
{$props?.style}
|
|
36
36
|
role={$props?.ariaRegion ? "region" : undefined}
|
|
37
37
|
aria-labelledby={$state.headerId}
|
|
38
|
+
aria-hidden={$state.expanded ? undefined : "true"}
|
|
38
39
|
data-state={$state.expanded ? "open" : "closed"}
|
|
39
|
-
data-disabled={$state.disabled ? "true" : undefined}
|
|
40
40
|
>
|
|
41
41
|
@if ($state.expanded) {
|
|
42
42
|
<slot />
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
-
import {
|
|
2
|
+
import { type AccordionItemContext, AccordionItemContextName } from "./AccordionTypes";
|
|
3
3
|
|
|
4
4
|
interface AccordionHeaderProps {
|
|
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 type of HTML header to use */
|
|
12
|
-
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6",
|
|
10
|
+
style?: StyleValue;
|
|
13
11
|
}
|
|
14
12
|
|
|
15
13
|
/**
|
|
16
14
|
* The header for an AccordionItem, which contains the AccordionTrigger.
|
|
17
15
|
*
|
|
18
16
|
* The structure of an AccordionHeader is:
|
|
19
|
-
*
|
|
17
|
+
*
|
|
20
18
|
* ```
|
|
21
19
|
* <AccordionHeader>
|
|
22
20
|
* <AccordionTrigger />
|
|
@@ -28,18 +26,16 @@ export default function AccordionHeader($props: AccordionHeaderProps | undefined
|
|
|
28
26
|
if (!context) {
|
|
29
27
|
throw new Error("AccordionHeader must be contained within an AccordionItem");
|
|
30
28
|
}
|
|
31
|
-
let $state = context.state
|
|
29
|
+
let $state = context.state;
|
|
32
30
|
|
|
33
31
|
@render {
|
|
34
|
-
|
|
35
|
-
<h4
|
|
32
|
+
<div
|
|
36
33
|
{$props?.id}
|
|
37
34
|
class={["torp-accordion-header", $props?.class]}
|
|
38
35
|
{$props?.style}
|
|
39
36
|
data-state={$state.expanded ? "open" : "closed"}
|
|
40
|
-
data-disabled={$state.disabled ? "true" : undefined}
|
|
41
37
|
>
|
|
42
38
|
<slot />
|
|
43
|
-
</
|
|
39
|
+
</div>
|
|
44
40
|
}
|
|
45
41
|
}
|
|
@@ -1,28 +1,35 @@
|
|
|
1
1
|
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
-
import
|
|
2
|
+
import $handle from "../utils/$handle";
|
|
3
|
+
import {
|
|
4
|
+
type AccordionContext,
|
|
5
|
+
AccordionContextName,
|
|
6
|
+
type AccordionItemContext,
|
|
7
|
+
AccordionItemContextName,
|
|
8
|
+
type ItemState,
|
|
9
|
+
} from "./AccordionTypes";
|
|
3
10
|
|
|
4
11
|
interface AccordionItemProps {
|
|
5
12
|
/** An ID for the root element */
|
|
6
13
|
id?: string;
|
|
7
14
|
/** Classes for the root element */
|
|
8
|
-
class?: ClassValue
|
|
15
|
+
class?: ClassValue;
|
|
9
16
|
/** Styles for the root element */
|
|
10
|
-
style?: StyleValue
|
|
17
|
+
style?: StyleValue;
|
|
11
18
|
/** The index of this item in the Accordion. Set this if you will be inserting, removing or sorting items. If you don't set this, it will be set automatically */
|
|
12
|
-
index?: number
|
|
19
|
+
index?: number;
|
|
13
20
|
/** A value for the item. Set this if you need more control over which item(s) are expanded. If you don't set this, the value will be set to the item's initial index */
|
|
14
|
-
value?:
|
|
21
|
+
value?: any;
|
|
15
22
|
/** If set to true, the user cannot interact with this AccordionItem */
|
|
16
|
-
disabled?: boolean
|
|
23
|
+
disabled?: boolean;
|
|
17
24
|
/** Raised when this item is opened or closed */
|
|
18
|
-
|
|
25
|
+
onchange?: (open: boolean) => void;
|
|
19
26
|
}
|
|
20
27
|
|
|
21
28
|
/**
|
|
22
29
|
* An item in an Accordion, which must consist of an AccordionTrigger and an AccordionContent.
|
|
23
|
-
*
|
|
30
|
+
*
|
|
24
31
|
* The structure of an AccordionItem is:
|
|
25
|
-
*
|
|
32
|
+
*
|
|
26
33
|
* ```
|
|
27
34
|
* <AccordionItem>
|
|
28
35
|
* <AccordionHeader>
|
|
@@ -35,14 +42,14 @@ interface AccordionItemProps {
|
|
|
35
42
|
export default function AccordionItem($props: AccordionItemProps | undefined) {
|
|
36
43
|
let $state: ItemState = $watch({
|
|
37
44
|
index: -1,
|
|
38
|
-
value:
|
|
45
|
+
value: $props?.value,
|
|
39
46
|
expanded: false,
|
|
40
47
|
headerId: "",
|
|
41
48
|
contentId: "",
|
|
42
49
|
disabled: $props?.disabled ?? false,
|
|
43
50
|
parentDisabled: false,
|
|
44
|
-
setFocused
|
|
45
|
-
})
|
|
51
|
+
setFocused,
|
|
52
|
+
});
|
|
46
53
|
|
|
47
54
|
// Get stuff out of the AccordionContext
|
|
48
55
|
const context = $context[AccordionContextName] as AccordionContext;
|
|
@@ -59,25 +66,19 @@ export default function AccordionItem($props: AccordionItemProps | undefined) {
|
|
|
59
66
|
$context[AccordionItemContextName] = itemContext;
|
|
60
67
|
|
|
61
68
|
// Register this item with the parent Accordion, which will handle toggling expanded for all items
|
|
62
|
-
context.registerItem($state
|
|
69
|
+
context.registerItem($state);
|
|
63
70
|
|
|
64
71
|
// Remove the item from the parent Accordion when this item is destroyed
|
|
65
72
|
$run(() => {
|
|
66
73
|
return () => {
|
|
67
74
|
context.removeItem($state.index);
|
|
68
|
-
}
|
|
75
|
+
};
|
|
69
76
|
});
|
|
70
77
|
|
|
71
|
-
// Dispatch the
|
|
72
|
-
|
|
73
|
-
$run(() => {
|
|
74
|
-
const ontoggle = $props?.ontoggle;
|
|
78
|
+
// Dispatch the change event when the value of expanded changes
|
|
79
|
+
$handle((first) => {
|
|
75
80
|
const expanded = $state.expanded;
|
|
76
|
-
if (
|
|
77
|
-
firstToggle = false;
|
|
78
|
-
} else if (ontoggle) {
|
|
79
|
-
ontoggle(expanded);
|
|
80
|
-
}
|
|
81
|
+
if (!first) $props?.onchange?.(expanded);
|
|
81
82
|
});
|
|
82
83
|
|
|
83
84
|
// Called from the parent Accordion; pass the focus command along to the AccordionButton
|
|
@@ -93,7 +94,6 @@ export default function AccordionItem($props: AccordionItemProps | undefined) {
|
|
|
93
94
|
class={["torp-accordion-item", $props?.class]}
|
|
94
95
|
{$props?.style}
|
|
95
96
|
data-state={$state.expanded ? "open" : "closed"}
|
|
96
|
-
data-disabled={$state.disabled ? "true" : undefined}
|
|
97
97
|
>
|
|
98
98
|
<slot />
|
|
99
99
|
</div>
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
2
|
import getId from "../utils/getId";
|
|
3
|
-
import {
|
|
3
|
+
import { type AccordionItemContext, AccordionItemContextName } from "./AccordionTypes";
|
|
4
4
|
|
|
5
5
|
interface AccordionTriggerProps {
|
|
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
|
}
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -44,8 +44,18 @@ export default function AccordionTrigger($props: AccordionTriggerProps | undefin
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
function handleKey(e: KeyboardEvent) {
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
switch (e.key) {
|
|
48
|
+
case "Enter":
|
|
49
|
+
case " ": {
|
|
50
|
+
e.preventDefault();
|
|
51
|
+
handleClick();
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
default: {
|
|
55
|
+
// Pass the key press up to the parent Accordion which will handle setting the focused button
|
|
56
|
+
context.handleHeaderKey($state.index, e);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
49
59
|
}
|
|
50
60
|
|
|
51
61
|
@render {
|
|
@@ -55,11 +65,10 @@ export default function AccordionTrigger($props: AccordionTriggerProps | undefin
|
|
|
55
65
|
class={["torp-accordion-trigger", $props?.class]}
|
|
56
66
|
{$props?.style}
|
|
57
67
|
disabled={$state.disabled || $state.parentDisabled}
|
|
58
|
-
aria-expanded={$state.expanded
|
|
59
|
-
aria-disabled={$state.disabled ? "true" : undefined}
|
|
68
|
+
aria-expanded={$state.expanded ? "true" : "false"}
|
|
69
|
+
aria-disabled={$state.disabled || $state.parentDisabled ? "true" : undefined}
|
|
60
70
|
aria-controls={$state.contentId}
|
|
61
71
|
data-state={$state.expanded ? "open" : "closed"}
|
|
62
|
-
data-disabled={$state.disabled ? "true" : undefined}
|
|
63
72
|
&ref={button}
|
|
64
73
|
onclick={handleClick}
|
|
65
74
|
onkeydown={handleKey}
|
|
@@ -3,7 +3,7 @@ export const AccordionItemContextName: unique symbol = Symbol.for("torp.Accordio
|
|
|
3
3
|
|
|
4
4
|
export interface AccordionContext {
|
|
5
5
|
/** Called from an AccordionItem when it is added */
|
|
6
|
-
registerItem: (state: ItemState
|
|
6
|
+
registerItem: (state: ItemState) => void;
|
|
7
7
|
/** Called from an AccordionItem when it is removed */
|
|
8
8
|
removeItem: (index: number) => void;
|
|
9
9
|
/** Called from an AccordionItem when it is toggled */
|