@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
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?:
|
|
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:
|
|
21
|
+
onchange?: (value: any | any[]) => void;
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
/**
|
|
@@ -38,192 +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
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
$run(() => {
|
|
48
|
-
if ($props !== undefined) {
|
|
49
|
-
$props.value = $state.value;
|
|
50
|
-
}
|
|
45
|
+
value: $props?.value ?? (($props?.type ?? "single") === "single" ? undefined : []),
|
|
51
46
|
});
|
|
52
47
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// This is used to assign automatic indexes to items where needed
|
|
56
|
-
let nextIndex = 0;
|
|
57
|
-
|
|
58
|
-
// Set the context to pass down to items, with functions for each item to call
|
|
59
|
-
let context: AccordionContext = {
|
|
60
|
-
registerItem,
|
|
61
|
-
removeItem,
|
|
62
|
-
toggleItem,
|
|
63
|
-
handleHeaderKey
|
|
64
|
-
};
|
|
65
|
-
$context[AccordionContextName] = context;
|
|
66
|
-
|
|
67
|
-
$run(() => {
|
|
68
|
-
// HACK: This should probably be done with setters?
|
|
69
|
-
let newValue = $state.value;
|
|
70
|
-
|
|
71
|
-
// Get the value
|
|
72
|
-
switch (type) {
|
|
73
|
-
case "single": {
|
|
74
|
-
// Ensure the value passed in was a string (in case e.g. the user has set values to ints)
|
|
75
|
-
newValue = newValue.toString();
|
|
76
|
-
for (let item of itemStates) {
|
|
77
|
-
item.expanded = item.value === newValue;
|
|
78
|
-
}
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
case "multiple": {
|
|
82
|
-
// Ensure the value passed in is an array
|
|
83
|
-
if (!Array.isArray(newValue)) {
|
|
84
|
-
newValue = [newValue];
|
|
85
|
-
}
|
|
86
|
-
for (let item of itemStates) {
|
|
87
|
-
item.expanded = newValue.indexOf(item.value) !== -1;
|
|
88
|
-
}
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Set the value
|
|
94
|
-
$state.value = newValue;
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
$run(() => {
|
|
98
|
-
itemStates.forEach((s) => s.parentDisabled = $props?.disabled === true);
|
|
99
|
-
});
|
|
48
|
+
$bind($state, $props, "value");
|
|
100
49
|
|
|
101
50
|
// Dispatch the change event when the value changes
|
|
102
|
-
|
|
103
|
-
$run(() => {
|
|
104
|
-
const ev = $props?.onchange;
|
|
51
|
+
$handle((first) => {
|
|
105
52
|
const value = $state.value;
|
|
106
|
-
if (
|
|
107
|
-
firstChange = false;
|
|
108
|
-
} else if (ev) {
|
|
109
|
-
ev(value);
|
|
110
|
-
}
|
|
53
|
+
if (!first) $props?.onchange?.(value);
|
|
111
54
|
});
|
|
112
55
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
itemState.value = itemState.index.toString();
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// If we have a value, set whether the item should be expanded
|
|
125
|
-
if ($state.value) {
|
|
126
|
-
switch (type) {
|
|
127
|
-
case "single": {
|
|
128
|
-
itemState.expanded = $state.value === itemState.value;
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
case "multiple": {
|
|
132
|
-
itemState.expanded = $state.value.includes(itemState.value);
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
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;
|
|
135
64
|
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Set whether the Accordion itself is disabled
|
|
139
|
-
itemState.parentDisabled = $props?.disabled === true
|
|
140
|
-
|
|
141
|
-
// Add the item's state to the array
|
|
142
|
-
itemStates.splice(itemState.index, 0, itemState);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// TODO: I think this should be done by value
|
|
146
|
-
function removeItem(itemIndex: number) {
|
|
147
|
-
// Remove the item and re-index
|
|
148
|
-
let index = itemStates.findIndex((item) => item.index === itemIndex);
|
|
149
|
-
if (index !== -1) {
|
|
150
|
-
itemStates.splice(itemIndex, 1);
|
|
151
|
-
}
|
|
152
|
-
itemStates.forEach((item, i) => (item.index = i));
|
|
153
|
-
}
|
|
65
|
+
},
|
|
66
|
+
});
|
|
154
67
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
case "multiple": {
|
|
169
|
-
let newValue = [];
|
|
170
|
-
for (let item of itemStates) {
|
|
171
|
-
// The item is expanded if it has the supplied value (i.e. if it was clicked) or if it
|
|
172
|
-
// was already expanded
|
|
173
|
-
if (
|
|
174
|
-
(item.value === toggleValue && !item.expanded) ||
|
|
175
|
-
(item.value !== toggleValue && item.expanded)
|
|
176
|
-
) {
|
|
177
|
-
newValue.push(item.value);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
$state.value = newValue.sort();
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
68
|
+
// Set the context to pass down to items, with functions for each item to call
|
|
69
|
+
let context: AccordionContext = {
|
|
70
|
+
registerItem: (state: ItemState) => group.registerItem(state),
|
|
71
|
+
removeItem: group.removeItem,
|
|
72
|
+
toggleItem: group.toggleItem,
|
|
73
|
+
handleHeaderKey,
|
|
74
|
+
};
|
|
75
|
+
$context[AccordionContextName] = context;
|
|
185
76
|
|
|
186
77
|
function handleHeaderKey(headerIndex: number, e: KeyboardEvent) {
|
|
78
|
+
const itemStates = group.itemStates;
|
|
187
79
|
switch (e.key) {
|
|
188
|
-
case "Up":
|
|
189
80
|
case "ArrowUp": {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
itemStates[headerIndex - 1].setFocused();
|
|
193
|
-
}
|
|
81
|
+
e.preventDefault();
|
|
82
|
+
focusItem(itemStates, headerIndex, "previous");
|
|
194
83
|
break;
|
|
195
84
|
}
|
|
196
|
-
case "Down":
|
|
197
85
|
case "ArrowDown": {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
itemStates[headerIndex + 1].setFocused();
|
|
201
|
-
}
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
focusItem(itemStates, headerIndex, "next");
|
|
202
88
|
break;
|
|
203
89
|
}
|
|
204
90
|
case "Home": {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
itemStates[0].setFocused();
|
|
208
|
-
}
|
|
91
|
+
e.preventDefault();
|
|
92
|
+
focusItem(itemStates, headerIndex, "start");
|
|
209
93
|
break;
|
|
210
94
|
}
|
|
211
95
|
case "End": {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
itemStates[itemStates.length - 1].setFocused();
|
|
215
|
-
}
|
|
96
|
+
e.preventDefault();
|
|
97
|
+
focusItem(itemStates, headerIndex, "end");
|
|
216
98
|
break;
|
|
217
99
|
}
|
|
218
100
|
}
|
|
219
101
|
}
|
|
220
102
|
|
|
221
103
|
@render {
|
|
222
|
-
<div
|
|
223
|
-
{$props?.id}
|
|
224
|
-
class={["torp-accordion", $props?.class]}
|
|
225
|
-
{$props?.style}
|
|
226
|
-
>
|
|
104
|
+
<div {$props?.id} class={["torp-accordion", $props?.class]} {$props?.style}>
|
|
227
105
|
<slot />
|
|
228
106
|
</div>
|
|
229
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 ev = $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 (ev) {
|
|
79
|
-
ev(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}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export const AccordionContextName = "Accordion";
|
|
2
|
-
export const AccordionItemContextName = "AccordionItem";
|
|
1
|
+
export const AccordionContextName: unique symbol = Symbol.for("torp.Accordion");
|
|
2
|
+
export const AccordionItemContextName: unique symbol = Symbol.for("torp.AccordionItem");
|
|
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 */
|
|
10
|
-
toggleItem: (value:
|
|
10
|
+
toggleItem: (value: any) => void;
|
|
11
11
|
/** Called from an AccordionHeader when it receives a keyboard event */
|
|
12
12
|
handleHeaderKey: (index: number, e: KeyboardEvent) => void;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export interface AccordionItemContext {
|
|
16
16
|
/** Raised when an AccordionItem is toggled */
|
|
17
|
-
toggleItem: (value:
|
|
17
|
+
toggleItem: (value: any) => void;
|
|
18
18
|
/** Raised when an AccordionHeader receives a keyboard event */
|
|
19
19
|
handleHeaderKey: (index: number, e: KeyboardEvent) => void;
|
|
20
20
|
/** The reactive state for an AccordionItem */
|
|
@@ -25,7 +25,7 @@ export interface AccordionItemContext {
|
|
|
25
25
|
|
|
26
26
|
export interface ItemState {
|
|
27
27
|
index: number;
|
|
28
|
-
value:
|
|
28
|
+
value: any;
|
|
29
29
|
expanded: boolean;
|
|
30
30
|
headerId: string;
|
|
31
31
|
contentId: string;
|