@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
|
@@ -4,11 +4,11 @@ interface GridLinesProps {
|
|
|
4
4
|
/** An ID for the root element */
|
|
5
5
|
id?: string;
|
|
6
6
|
/** Classes for the root element */
|
|
7
|
-
class?: ClassValue
|
|
7
|
+
class?: ClassValue;
|
|
8
8
|
/** Styles for the root element */
|
|
9
|
-
style?: StyleValue
|
|
10
|
-
showHLines?: boolean
|
|
11
|
-
showVLines?: boolean
|
|
9
|
+
style?: StyleValue;
|
|
10
|
+
showHLines?: boolean;
|
|
11
|
+
showVLines?: boolean;
|
|
12
12
|
width: number;
|
|
13
13
|
labels: string[];
|
|
14
14
|
xStepValue: number;
|
|
@@ -32,6 +32,7 @@ export default function GridLines($props: GridLinesProps) {
|
|
|
32
32
|
y1={$props.chartBottom - i * $props.yStepValue * $props.valueHeight}
|
|
33
33
|
x2={$props.width ?? 0}
|
|
34
34
|
y2={$props.chartBottom - i * $props.yStepValue * $props.valueHeight}
|
|
35
|
+
stroke="currentcolor"
|
|
35
36
|
/>
|
|
36
37
|
}
|
|
37
38
|
}
|
|
@@ -44,6 +45,7 @@ export default function GridLines($props: GridLinesProps) {
|
|
|
44
45
|
y1={$props.chartBottom}
|
|
45
46
|
x2={$props.chartLeft + i * $props.xStepValue * $props.itemWidth}
|
|
46
47
|
y2={0}
|
|
48
|
+
stroke="currentcolor"
|
|
47
49
|
/>
|
|
48
50
|
}
|
|
49
51
|
} else {
|
|
@@ -53,6 +55,7 @@ export default function GridLines($props: GridLinesProps) {
|
|
|
53
55
|
y1={$props.chartBottom}
|
|
54
56
|
x2={$props.chartLeft + i * $props.itemWidth + ($props.type === "bar" ? 0 : $props.itemWidth / 2)}
|
|
55
57
|
y2={0}
|
|
58
|
+
stroke="currentcolor"
|
|
56
59
|
/>
|
|
57
60
|
}
|
|
58
61
|
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import Chart from "./Chart.torp";
|
|
3
|
+
import ChartXAxis from "./ChartXAxis.torp";
|
|
4
|
+
import ChartGrid from "./ChartGrid.torp";
|
|
5
|
+
import ChartLines from "./ChartLines.torp";
|
|
6
|
+
import ChartYAxis from "./ChartYAxis.torp";
|
|
7
|
+
import type DataSeries from "./DataSeries";
|
|
8
|
+
|
|
9
|
+
interface LineChartProps {
|
|
10
|
+
/** An ID for the root element */
|
|
11
|
+
id?: string;
|
|
12
|
+
/** Classes for the root element */
|
|
13
|
+
class?: ClassValue;
|
|
14
|
+
/** Styles for the root element */
|
|
15
|
+
style?: StyleValue;
|
|
16
|
+
/** An ARIA label describing the chart for screen readers */
|
|
17
|
+
ariaLabel?: string;
|
|
18
|
+
series: DataSeries[];
|
|
19
|
+
height?: number;
|
|
20
|
+
width?: number;
|
|
21
|
+
xLabel?: string;
|
|
22
|
+
yLabel?: string;
|
|
23
|
+
maxValue?: number;
|
|
24
|
+
stepCount?: number;
|
|
25
|
+
stepValue?: number;
|
|
26
|
+
showPoints?: boolean;
|
|
27
|
+
showHLines?: boolean;
|
|
28
|
+
showVLines?: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A line chart: each series drawn as a connected line across the category
|
|
33
|
+
* slots.
|
|
34
|
+
*
|
|
35
|
+
* This is a preset over the layered chart components:
|
|
36
|
+
*
|
|
37
|
+
* ```
|
|
38
|
+
* <Chart>
|
|
39
|
+
* <ChartValueAxis />
|
|
40
|
+
* <ChartGrid />
|
|
41
|
+
* <ChartXAxis />
|
|
42
|
+
* <ChartLines seriesIndex={0} />
|
|
43
|
+
* </Chart>
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* Compose those directly for overlaid layers (columns plus a line, multiple
|
|
47
|
+
* separately-indexed lines etc).
|
|
48
|
+
*/
|
|
49
|
+
export default function LineChart($props: LineChartProps) {
|
|
50
|
+
@render {
|
|
51
|
+
<Chart
|
|
52
|
+
{$props?.id}
|
|
53
|
+
class={["torp-line-chart", $props?.class]}
|
|
54
|
+
{$props?.style}
|
|
55
|
+
{$props?.ariaLabel}
|
|
56
|
+
{$props?.series}
|
|
57
|
+
{$props?.height}
|
|
58
|
+
{$props?.width}
|
|
59
|
+
{$props?.xLabel}
|
|
60
|
+
{$props?.yLabel}
|
|
61
|
+
{$props?.maxValue}
|
|
62
|
+
{$props?.stepCount}
|
|
63
|
+
{$props?.stepValue}
|
|
64
|
+
>
|
|
65
|
+
<ChartYAxis />
|
|
66
|
+
<ChartGrid hLines={$props.showHLines === true} vLines={$props.showVLines === true} />
|
|
67
|
+
<ChartXAxis />
|
|
68
|
+
@for (let i of $props.series.map((_, i) => i)) {
|
|
69
|
+
<ChartLines seriesIndex={i} showPoints={$props.showPoints} />
|
|
70
|
+
}
|
|
71
|
+
</Chart>
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -18,13 +18,15 @@ interface PieChartProps {
|
|
|
18
18
|
/** An ID for the root element */
|
|
19
19
|
id?: string;
|
|
20
20
|
/** Classes for the root element */
|
|
21
|
-
class?: ClassValue
|
|
21
|
+
class?: ClassValue;
|
|
22
22
|
/** Styles for the root element */
|
|
23
|
-
style?: StyleValue
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
style?: StyleValue;
|
|
24
|
+
/** An ARIA label describing the chart for screen readers */
|
|
25
|
+
ariaLabel?: string;
|
|
26
|
+
data: PieData[];
|
|
27
|
+
size?: number;
|
|
28
|
+
radius?: number;
|
|
29
|
+
cutout?: number;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
export default function PieChart($props: PieChartProps) {
|
|
@@ -42,14 +44,14 @@ export default function PieChart($props: PieChartProps) {
|
|
|
42
44
|
},
|
|
43
45
|
get segments() {
|
|
44
46
|
return buildSegments($props.size!, $props.data, $props.radius!, $props.cutout!);
|
|
45
|
-
}
|
|
47
|
+
},
|
|
46
48
|
});
|
|
47
49
|
|
|
48
50
|
function buildSegments(
|
|
49
51
|
theSize: number,
|
|
50
52
|
theData: PieData[],
|
|
51
53
|
theRadiusSize: number,
|
|
52
|
-
theCutoutSize: number
|
|
54
|
+
theCutoutSize: number,
|
|
53
55
|
): SegmentData[] {
|
|
54
56
|
const segments = [];
|
|
55
57
|
const x = theSize / 2;
|
|
@@ -67,7 +69,7 @@ export default function PieChart($props: PieChartProps) {
|
|
|
67
69
|
name: theData[i].name,
|
|
68
70
|
value: theData[i].value,
|
|
69
71
|
color: theData[i].color,
|
|
70
|
-
path: buildPath(x, y, theRadiusSize, theCutoutSize, startAngle, endAngle, largeArc)
|
|
72
|
+
path: buildPath(x, y, theRadiusSize, theCutoutSize, startAngle, endAngle, largeArc),
|
|
71
73
|
});
|
|
72
74
|
startAngle = endAngle;
|
|
73
75
|
}
|
|
@@ -81,7 +83,7 @@ export default function PieChart($props: PieChartProps) {
|
|
|
81
83
|
theCutoutSize: number,
|
|
82
84
|
startAngle: number,
|
|
83
85
|
endAngle: number,
|
|
84
|
-
largeArc: number
|
|
86
|
+
largeArc: number,
|
|
85
87
|
): string {
|
|
86
88
|
// HACK: Drawing an arc of 360 degrees doesn't work
|
|
87
89
|
if (startAngle - endAngle === 360) {
|
|
@@ -122,16 +124,8 @@ A${theCutoutSize},${theCutoutSize} 0 ${largeArc} 0 ${cutoutstartx},${cutoutstart
|
|
|
122
124
|
}
|
|
123
125
|
|
|
124
126
|
@render {
|
|
125
|
-
<div
|
|
126
|
-
{$props?.
|
|
127
|
-
class={["torp-pie-chart", $props?.class]}
|
|
128
|
-
{$props?.style}
|
|
129
|
-
>
|
|
130
|
-
<svg
|
|
131
|
-
version="1.1"
|
|
132
|
-
width={$props.size}
|
|
133
|
-
height={$props.size}
|
|
134
|
-
>
|
|
127
|
+
<div {$props?.id} class={["torp-pie-chart", $props?.class]} {$props?.style}>
|
|
128
|
+
<svg role={$props?.ariaLabel ? "img" : undefined} aria-label={$props?.ariaLabel} version="1.1" width={$props.size} height={$props.size}>
|
|
135
129
|
<g>
|
|
136
130
|
@for (let [i, segment] of $state.segments.entries()) {
|
|
137
131
|
<path d={segment.path} fill={segment.color || chartColors[i % chartColors.length]}>
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
-
import
|
|
3
|
-
import YAxis from "./YAxis.torp";
|
|
4
|
-
import GridLines from "./GridLines.torp";
|
|
2
|
+
import { chartColors } from "../utils/chartColors";
|
|
5
3
|
import {
|
|
6
|
-
|
|
4
|
+
calculateChartBottom,
|
|
5
|
+
calculateChartLeft,
|
|
7
6
|
calculateStepLabels,
|
|
7
|
+
calculateStepValue,
|
|
8
8
|
calculateValueHeight,
|
|
9
|
-
calculateChartBottom,
|
|
10
|
-
calculateChartLeft
|
|
11
9
|
} from "../utils/chartUtils";
|
|
12
|
-
import
|
|
10
|
+
import GridLines from "./GridLines.torp";
|
|
11
|
+
import XAxis from "./XAxis.torp";
|
|
12
|
+
import YAxis from "./YAxis.torp";
|
|
13
13
|
|
|
14
14
|
interface Pair {
|
|
15
15
|
x: number;
|
|
@@ -27,22 +27,24 @@ interface ScatterChartProps {
|
|
|
27
27
|
/** An ID for the root element */
|
|
28
28
|
id?: string;
|
|
29
29
|
/** Classes for the root element */
|
|
30
|
-
class?: ClassValue
|
|
30
|
+
class?: ClassValue;
|
|
31
31
|
/** Styles for the root element */
|
|
32
|
-
style?: StyleValue
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
style?: StyleValue;
|
|
33
|
+
/** An ARIA label describing the chart for screen readers */
|
|
34
|
+
ariaLabel?: string;
|
|
35
|
+
series: DataSeries[];
|
|
36
|
+
height?: number;
|
|
37
|
+
width?: number;
|
|
38
|
+
xLabel?: string;
|
|
39
|
+
yLabel?: string;
|
|
40
|
+
xStepCount?: number;
|
|
41
|
+
xStepValue?: number;
|
|
42
|
+
yStepCount?: number;
|
|
43
|
+
yStepValue?: number;
|
|
44
|
+
hideXAxis?: boolean;
|
|
45
|
+
hideYAxis?: boolean;
|
|
46
|
+
showHLines?: boolean;
|
|
47
|
+
showVLines?: boolean;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
export default function ScatterChart($props: ScatterChartProps) {
|
|
@@ -84,17 +86,27 @@ export default function ScatterChart($props: ScatterChartProps) {
|
|
|
84
86
|
$state.calculatedWidth - $state.chartLeft,
|
|
85
87
|
$state.textHeight,
|
|
86
88
|
$state.calculatedXStepValue,
|
|
87
|
-
$props.xStepCount || 2
|
|
89
|
+
$props.xStepCount || 2,
|
|
88
90
|
);
|
|
89
91
|
},
|
|
90
92
|
get valueHeight() {
|
|
91
|
-
return calculateValueHeight(
|
|
93
|
+
return calculateValueHeight(
|
|
94
|
+
$state.chartBottom,
|
|
95
|
+
$state.textHeight,
|
|
96
|
+
$state.calculatedYStepValue,
|
|
97
|
+
$props.yStepCount || 2,
|
|
98
|
+
);
|
|
92
99
|
},
|
|
93
100
|
get chartBottom() {
|
|
94
101
|
return calculateChartBottom($props.xLabel ?? "", $state.calculatedHeight, $state.textHeight);
|
|
95
102
|
},
|
|
96
103
|
get chartLeft() {
|
|
97
|
-
return calculateChartLeft(
|
|
104
|
+
return calculateChartLeft(
|
|
105
|
+
$state.yStepLabels,
|
|
106
|
+
$props.yLabel ?? "",
|
|
107
|
+
$state.textHeight,
|
|
108
|
+
$state.textWidth,
|
|
109
|
+
);
|
|
98
110
|
},
|
|
99
111
|
get pointSeries() {
|
|
100
112
|
return buildPointSeries(
|
|
@@ -102,12 +114,12 @@ export default function ScatterChart($props: ScatterChartProps) {
|
|
|
102
114
|
$state.chartLeft,
|
|
103
115
|
$state.chartBottom,
|
|
104
116
|
$state.itemWidth,
|
|
105
|
-
$state.valueHeight
|
|
117
|
+
$state.valueHeight,
|
|
106
118
|
);
|
|
107
119
|
},
|
|
108
120
|
});
|
|
109
121
|
|
|
110
|
-
$
|
|
122
|
+
$onmount(() => {
|
|
111
123
|
// HACK: Wait until the measurer is really available
|
|
112
124
|
setTimeout(() => {
|
|
113
125
|
const bbox = measurer.getBBox();
|
|
@@ -122,7 +134,7 @@ export default function ScatterChart($props: ScatterChartProps) {
|
|
|
122
134
|
return series.reduce((a, b) => {
|
|
123
135
|
return Math.max(
|
|
124
136
|
a,
|
|
125
|
-
b.data.reduce((c, d) => Math.max(c, field === "x" ? d.x : d.y), 0)
|
|
137
|
+
b.data.reduce((c, d) => Math.max(c, field === "x" ? d.x : d.y), 0),
|
|
126
138
|
);
|
|
127
139
|
}, 0);
|
|
128
140
|
}
|
|
@@ -132,7 +144,7 @@ export default function ScatterChart($props: ScatterChartProps) {
|
|
|
132
144
|
theChartLeft: number,
|
|
133
145
|
theChartBottom: number,
|
|
134
146
|
theItemWidth: number,
|
|
135
|
-
theValueHeight: number
|
|
147
|
+
theValueHeight: number,
|
|
136
148
|
) {
|
|
137
149
|
return theSeries.map((series) => {
|
|
138
150
|
return series.data.map((item) => {
|
|
@@ -144,15 +156,10 @@ export default function ScatterChart($props: ScatterChartProps) {
|
|
|
144
156
|
}
|
|
145
157
|
|
|
146
158
|
@render {
|
|
147
|
-
<div
|
|
148
|
-
{$props?.
|
|
149
|
-
class={["torp-scatter-chart", $props?.class]}
|
|
150
|
-
{$props?.style}
|
|
151
|
-
&ref={container}
|
|
152
|
-
>
|
|
153
|
-
<svg version="1.1" width={$state.calculatedWidth} height={$state.calculatedHeight}>
|
|
159
|
+
<div {$props?.id} class={["torp-scatter-chart", $props?.class]} {$props?.style} &ref={container}>
|
|
160
|
+
<svg role={$props?.ariaLabel ? "img" : undefined} aria-label={$props?.ariaLabel} version="1.1" width={$state.calculatedWidth} height={$state.calculatedHeight}>
|
|
154
161
|
<g>
|
|
155
|
-
|
|
162
|
+
<text &ref={measurer} x="-999" y="-999">8</text>
|
|
156
163
|
|
|
157
164
|
@if ($state.textWidth && $state.textHeight) {
|
|
158
165
|
<XAxis
|
|
@@ -203,7 +210,7 @@ export default function ScatterChart($props: ScatterChartProps) {
|
|
|
203
210
|
>
|
|
204
211
|
<title>{
|
|
205
212
|
`${[series.name, series.data[j].label, series.data[j].x].filter(Boolean).join("\n")}, ${series.data[j].y}`
|
|
206
|
-
|
|
213
|
+
}</title>
|
|
207
214
|
</circle>
|
|
208
215
|
}
|
|
209
216
|
}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
-
import { calculateMaxValue } from "../utils/chartUtils";
|
|
3
2
|
import { chartColors } from "../utils/chartColors";
|
|
3
|
+
import { calculateMaxValue } from "../utils/chartUtils";
|
|
4
4
|
|
|
5
5
|
interface SparkLineProps {
|
|
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
|
+
/** An ARIA label describing the chart for screen readers */
|
|
13
|
+
ariaLabel?: string;
|
|
12
14
|
data: number[];
|
|
13
|
-
color?: string
|
|
14
|
-
height?: number
|
|
15
|
-
width?: number
|
|
15
|
+
color?: string;
|
|
16
|
+
height?: number;
|
|
17
|
+
width?: number;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export default function SparkLine($props: SparkLineProps) {
|
|
@@ -25,19 +27,19 @@ export default function SparkLine($props: SparkLineProps) {
|
|
|
25
27
|
get calculatedHeight() {
|
|
26
28
|
return $props.height || defaultHeight;
|
|
27
29
|
},
|
|
28
|
-
get calculatedWidth() {
|
|
30
|
+
get calculatedWidth() {
|
|
29
31
|
return $props.width || container?.clientWidth || defaultWidth;
|
|
30
32
|
},
|
|
31
|
-
get calculatedSeries() {
|
|
33
|
+
get calculatedSeries() {
|
|
32
34
|
return [{ name: "", color: $props.color ?? "", data: $props.data }];
|
|
33
35
|
},
|
|
34
|
-
get maxValue() {
|
|
36
|
+
get maxValue() {
|
|
35
37
|
return calculateMaxValue($state.calculatedSeries);
|
|
36
38
|
},
|
|
37
|
-
get itemWidth() {
|
|
39
|
+
get itemWidth() {
|
|
38
40
|
return $state.calculatedWidth / $props.data.length;
|
|
39
41
|
},
|
|
40
|
-
get valueHeight() {
|
|
42
|
+
get valueHeight() {
|
|
41
43
|
return ($state.calculatedHeight - 4) / $state.maxValue;
|
|
42
44
|
},
|
|
43
45
|
get pointSeries() {
|
|
@@ -46,17 +48,12 @@ export default function SparkLine($props: SparkLineProps) {
|
|
|
46
48
|
const y = +($state.calculatedHeight - 2 - value * $state.valueHeight).toFixed(2);
|
|
47
49
|
return { x, y };
|
|
48
50
|
});
|
|
49
|
-
}
|
|
51
|
+
},
|
|
50
52
|
});
|
|
51
53
|
|
|
52
54
|
@render {
|
|
53
|
-
<div
|
|
54
|
-
{$props?.
|
|
55
|
-
class={["torp-spark-line", $props?.class]}
|
|
56
|
-
{$props?.style}
|
|
57
|
-
&ref={container}
|
|
58
|
-
>
|
|
59
|
-
<svg version="1.1" width={$state.calculatedWidth} height={$state.calculatedHeight}>
|
|
55
|
+
<div {$props?.id} class={["torp-spark-line", $props?.class]} {$props?.style} &ref={container}>
|
|
56
|
+
<svg role={$props?.ariaLabel ? "img" : undefined} aria-label={$props?.ariaLabel} version="1.1" width={$state.calculatedWidth} height={$state.calculatedHeight}>
|
|
60
57
|
<g>
|
|
61
58
|
<polyline
|
|
62
59
|
points={$state.pointSeries.map((p) => `${p.x},${p.y}`).join(" ")}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
interface XAxisProps {
|
|
2
|
-
showAxis: boolean
|
|
3
|
-
height: number
|
|
4
|
-
width: number
|
|
5
|
-
itemWidth: number
|
|
6
|
-
textHeight: number
|
|
7
|
-
xLabel: string
|
|
8
|
-
labels: string[]
|
|
9
|
-
stepLabels:number[]
|
|
10
|
-
stepValue: number
|
|
11
|
-
chartLeft: number
|
|
12
|
-
chartBottom: number
|
|
2
|
+
showAxis: boolean;
|
|
3
|
+
height: number;
|
|
4
|
+
width: number;
|
|
5
|
+
itemWidth: number;
|
|
6
|
+
textHeight: number;
|
|
7
|
+
xLabel: string;
|
|
8
|
+
labels: string[];
|
|
9
|
+
stepLabels: number[];
|
|
10
|
+
stepValue: number;
|
|
11
|
+
chartLeft: number;
|
|
12
|
+
chartBottom: number;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export default function XAxis($props: XAxisProps) {
|
|
@@ -20,7 +20,13 @@ export default function XAxis($props: XAxisProps) {
|
|
|
20
20
|
@render {
|
|
21
21
|
<svg>
|
|
22
22
|
@if ($props.showAxis) {
|
|
23
|
-
<line
|
|
23
|
+
<line
|
|
24
|
+
x1={$props.chartLeft}
|
|
25
|
+
y1={$props.chartBottom}
|
|
26
|
+
x2={$props.width}
|
|
27
|
+
y2={$props.chartBottom}
|
|
28
|
+
stroke="currentcolor"
|
|
29
|
+
/>
|
|
24
30
|
}
|
|
25
31
|
@if ($props.xLabel) {
|
|
26
32
|
<text
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
interface YAxisProps {
|
|
2
|
-
showAxis: boolean
|
|
3
|
-
valueHeight: number
|
|
4
|
-
textHeight: number
|
|
5
|
-
yLabel: string
|
|
6
|
-
stepLabels: number[]
|
|
7
|
-
stepValue: number
|
|
8
|
-
chartLeft: number
|
|
9
|
-
chartBottom: number
|
|
2
|
+
showAxis: boolean;
|
|
3
|
+
valueHeight: number;
|
|
4
|
+
textHeight: number;
|
|
5
|
+
yLabel: string;
|
|
6
|
+
stepLabels: number[];
|
|
7
|
+
stepValue: number;
|
|
8
|
+
chartLeft: number;
|
|
9
|
+
chartBottom: number;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export default function YAxis($props: YAxisProps) {
|
|
13
13
|
@render {
|
|
14
14
|
<svg>
|
|
15
15
|
@if ($props.showAxis) {
|
|
16
|
-
<line
|
|
16
|
+
<line
|
|
17
|
+
x1={$props.chartLeft}
|
|
18
|
+
y1={$props.chartBottom}
|
|
19
|
+
x2={$props.chartLeft}
|
|
20
|
+
y2={0}
|
|
21
|
+
stroke="currentcolor"
|
|
22
|
+
/>
|
|
17
23
|
}
|
|
18
24
|
@if ($props.yLabel) {
|
|
19
25
|
<text
|