@torpor/ui 0.3.7 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -7
- package/dist/Accordion/Accordion.torp +43 -165
- package/dist/Accordion/AccordionContent.torp +6 -6
- package/dist/Accordion/AccordionHeader.torp +7 -11
- package/dist/Accordion/AccordionItem.torp +24 -24
- package/dist/Accordion/AccordionTrigger.torp +17 -8
- package/dist/Accordion/AccordionTypes.ts +6 -6
- package/dist/Accordion/index.d.ts +23 -25
- package/dist/Accordion/index.js +6 -22
- package/dist/Breadcrumb/Breadcrumb.torp +12 -10
- package/dist/Breadcrumb/BreadcrumbItem.torp +6 -6
- package/dist/Breadcrumb/BreadcrumbList.torp +21 -0
- package/dist/Breadcrumb/BreadcrumbSeparator.torp +4 -4
- package/dist/Breadcrumb/index.d.ts +39 -15
- package/dist/Breadcrumb/index.js +5 -14
- package/dist/Calendar/Calendar.torp +163 -156
- package/dist/Calendar/CalendarDay.torp +91 -45
- package/dist/Calendar/CalendarDayHeader.torp +36 -0
- package/dist/Calendar/CalendarGrid.torp +104 -0
- package/dist/Calendar/CalendarGridHeader.torp +43 -0
- package/dist/Calendar/CalendarHeader.torp +48 -0
- package/dist/Calendar/CalendarHeaderTrigger.torp +54 -0
- package/dist/Calendar/CalendarTypes.ts +25 -4
- package/dist/Calendar/buildDays.ts +54 -0
- package/dist/Calendar/index.d.ts +191 -5
- package/dist/Calendar/index.js +8 -10
- package/dist/Carousel/Carousel.torp +180 -0
- package/dist/Carousel/CarouselIndicators.torp +65 -0
- package/dist/Carousel/CarouselNext.torp +43 -0
- package/dist/Carousel/CarouselPrevious.torp +44 -0
- package/dist/Carousel/CarouselSlide.torp +57 -0
- package/dist/Carousel/CarouselTypes.ts +28 -0
- package/dist/Carousel/index.d.ts +147 -0
- package/dist/Carousel/index.js +6 -0
- package/dist/Charts/BarChart.torp +70 -0
- package/dist/Charts/Chart.torp +120 -0
- package/dist/Charts/ChartBars.torp +78 -0
- package/dist/Charts/ChartColumns.torp +66 -0
- package/dist/Charts/ChartGrid.torp +54 -0
- package/dist/Charts/ChartLines.torp +60 -0
- package/dist/Charts/ChartTypes.ts +25 -0
- package/dist/Charts/ChartXAxis.torp +83 -0
- package/dist/Charts/ChartYAxis.torp +105 -0
- package/dist/Charts/ColumnChart.torp +70 -0
- package/dist/{Chart → Charts}/GridLines.torp +7 -4
- package/dist/Charts/LineChart.torp +73 -0
- package/dist/{Chart → Charts}/PieChart.torp +14 -20
- package/dist/{Chart → Charts}/ScatterChart.torp +45 -38
- package/dist/{Chart → Charts}/SparkLine.torp +16 -19
- package/dist/{Chart → Charts}/XAxis.torp +18 -12
- package/dist/{Chart → Charts}/YAxis.torp +15 -9
- package/dist/Charts/index.d.ts +469 -0
- package/dist/Charts/index.js +17 -0
- package/dist/ColorPicker/ColorPalette.torp +154 -0
- package/dist/ColorPicker/ColorPicker.torp +157 -0
- package/dist/ColorPicker/index.d.ts +85 -0
- package/dist/ColorPicker/index.js +3 -0
- package/dist/ComboBox/ComboBox.torp +205 -0
- package/dist/ComboBox/ComboBoxContent.torp +112 -0
- package/dist/ComboBox/ComboBoxInput.torp +145 -0
- package/dist/ComboBox/ComboBoxTrigger.torp +49 -0
- package/dist/ComboBox/ComboBoxTypes.ts +39 -0
- package/dist/ComboBox/index.d.ts +152 -0
- package/dist/ComboBox/index.js +6 -0
- package/dist/CommandPalette/CommandPalette.torp +220 -0
- package/dist/CommandPalette/CommandTypes.ts +14 -0
- package/dist/CommandPalette/index.d.ts +45 -0
- package/dist/CommandPalette/index.js +2 -0
- package/dist/Contextual/Contextual.torp +39 -52
- package/dist/Contextual/ContextualContent.torp +29 -73
- package/dist/Contextual/ContextualHover.torp +112 -0
- package/dist/Contextual/ContextualTrigger.torp +31 -42
- package/dist/Contextual/ContextualTypes.ts +5 -18
- package/dist/Contextual/index.d.ts +44 -27
- package/dist/Contextual/index.js +5 -14
- package/dist/DataGrid/DataGrid.torp +496 -0
- package/dist/DataGrid/DataGridTypes.ts +25 -0
- package/dist/DataGrid/index.d.ts +90 -0
- package/dist/DataGrid/index.js +3 -0
- package/dist/DataGrid/sortRows.ts +32 -0
- package/dist/DatePicker/DatePicker.torp +222 -0
- package/dist/DatePicker/DatePickerHeader.torp +20 -0
- package/dist/DatePicker/index.d.ts +55 -0
- package/dist/DatePicker/index.js +2 -0
- package/dist/DateRangePicker/DateRangePicker.torp +311 -0
- package/dist/DateRangePicker/DateRangePickerDay.torp +137 -0
- package/dist/DateRangePicker/DateRangePickerTypes.ts +21 -0
- package/dist/DateRangePicker/index.d.ts +76 -0
- package/dist/DateRangePicker/index.js +3 -0
- package/dist/Dialog/Dialog.torp +33 -30
- package/dist/Dialog/DialogBody.torp +5 -9
- package/dist/Dialog/DialogButton.torp +14 -11
- package/dist/Dialog/DialogFooter.torp +3 -7
- package/dist/Dialog/DialogHeader.torp +6 -10
- package/dist/Dialog/DialogTypes.ts +2 -2
- package/dist/Dialog/index.d.ts +28 -26
- package/dist/Dialog/index.js +6 -22
- package/dist/Disclosure/Disclosure.torp +18 -18
- package/dist/Disclosure/DisclosureContent.torp +5 -6
- package/dist/Disclosure/DisclosureHeader.torp +7 -11
- package/dist/Disclosure/DisclosureTrigger.torp +4 -5
- package/dist/Disclosure/DisclosureTypes.ts +1 -1
- package/dist/Disclosure/index.d.ts +14 -16
- package/dist/Disclosure/index.js +5 -18
- package/dist/Drawer/Drawer.torp +21 -51
- package/dist/Drawer/DrawerContent.torp +67 -13
- package/dist/Drawer/DrawerOverlay.torp +4 -4
- package/dist/Drawer/DrawerTrigger.torp +16 -4
- package/dist/Drawer/DrawerTypes.ts +4 -1
- package/dist/Drawer/index.d.ts +16 -20
- package/dist/Drawer/index.js +5 -18
- package/dist/FocusGroup/FocusGroup.torp +70 -0
- package/dist/FocusGroup/FocusGroupButton.torp +59 -0
- package/dist/FocusGroup/FocusGroupTypes.ts +14 -0
- package/dist/FocusGroup/index.d.ts +44 -0
- package/dist/FocusGroup/index.js +3 -0
- package/dist/Form/CheckBox.torp +28 -20
- package/dist/Form/Field.torp +17 -17
- package/dist/Form/File.torp +31 -22
- package/dist/Form/FileDrop.torp +187 -0
- package/dist/Form/Form.torp +24 -22
- package/dist/Form/FormTypes.ts +2 -0
- package/dist/Form/FormValues.torp +37 -0
- package/dist/Form/Hidden.torp +4 -12
- package/dist/Form/Input.torp +38 -32
- package/dist/Form/Label.torp +3 -3
- package/dist/Form/Message.torp +13 -5
- package/dist/Form/MessageSummary.torp +39 -0
- package/dist/Form/Option.torp +11 -7
- package/dist/Form/Select.torp +32 -28
- package/dist/Form/TextArea.torp +35 -31
- package/dist/Form/Toggle.torp +109 -0
- package/dist/Form/index.d.ts +198 -77
- package/dist/Form/index.js +16 -46
- package/dist/ListBox/ListBox.torp +374 -0
- package/dist/ListBox/ListBoxItem.torp +131 -0
- package/dist/ListBox/ListBoxSeparator.torp +29 -0
- package/dist/ListBox/ListBoxTypes.ts +41 -0
- package/dist/ListBox/LoadedListBoxItems.torp +41 -0
- package/dist/ListBox/index.d.ts +136 -0
- package/dist/ListBox/index.js +4 -0
- package/dist/MaskedInput/MaskedInput.torp +143 -0
- package/dist/MaskedInput/index.d.ts +52 -0
- package/dist/MaskedInput/index.js +2 -0
- package/dist/Menu/Menu.torp +90 -70
- package/dist/Menu/MenuButton.torp +17 -10
- package/dist/Menu/MenuCheck.torp +22 -18
- package/dist/Menu/MenuGroup.torp +4 -4
- package/dist/Menu/MenuIndicator.torp +5 -13
- package/dist/Menu/MenuPopout.torp +20 -50
- package/dist/Menu/MenuPopoutContent.torp +15 -66
- package/dist/Menu/MenuPopoutTrigger.torp +19 -100
- package/dist/Menu/MenuRadio.torp +25 -26
- package/dist/Menu/MenuRadioGroup.torp +25 -68
- package/dist/Menu/MenuSeparator.torp +3 -2
- package/dist/Menu/MenuTypes.ts +12 -21
- package/dist/Menu/index.d.ts +45 -51
- package/dist/Menu/index.js +12 -46
- package/dist/MenuBar/MenuBar.torp +31 -83
- package/dist/MenuBar/MenuBarItem.torp +34 -55
- package/dist/MenuBar/MenuBarItemContent.torp +15 -101
- package/dist/MenuBar/MenuBarItemTrigger.torp +20 -55
- package/dist/MenuBar/MenuBarTypes.ts +13 -12
- package/dist/MenuBar/index.d.ts +17 -19
- package/dist/MenuBar/index.js +5 -18
- package/dist/Modal/Modal.torp +28 -48
- package/dist/Modal/ModalContent.torp +21 -44
- package/dist/Modal/ModalOverlay.torp +4 -4
- package/dist/Modal/ModalTrigger.torp +16 -32
- package/dist/Modal/ModalTypes.ts +6 -17
- package/dist/Modal/index.d.ts +17 -29
- package/dist/Modal/index.js +29 -28
- package/dist/Modal/index.js.map +1 -1
- package/dist/Modal/showPrompt.ts +2 -2
- package/dist/NavMenu/NavMenu.torp +22 -104
- package/dist/NavMenu/NavMenuButton.torp +10 -8
- package/dist/NavMenu/NavMenuElement.torp +6 -7
- package/dist/NavMenu/NavMenuGroup.torp +5 -5
- package/dist/NavMenu/NavMenuGroupHeader.torp +5 -8
- package/dist/NavMenu/NavMenuLink.torp +7 -10
- package/dist/NavMenu/NavMenuPopout.torp +16 -61
- package/dist/NavMenu/NavMenuPopoutContent.torp +14 -73
- package/dist/NavMenu/NavMenuPopoutTrigger.torp +47 -0
- package/dist/NavMenu/NavMenuSeparator.torp +3 -6
- package/dist/NavMenu/NavMenuTypes.ts +6 -15
- package/dist/NavMenu/index.d.ts +55 -55
- package/dist/NavMenu/index.js +11 -42
- package/dist/Notification/Notification.torp +12 -24
- package/dist/Notification/NotificationClose.torp +6 -3
- package/dist/Notification/NotificationContainer.torp +3 -7
- package/dist/Notification/NotificationContent.torp +3 -7
- package/dist/Notification/NotificationTypes.ts +1 -1
- package/dist/Notification/index.d.ts +15 -12
- package/dist/Notification/index.js +22 -32
- package/dist/Notification/index.js.map +1 -1
- package/dist/NumberInput/NumberInput.torp +255 -0
- package/dist/NumberInput/index.d.ts +44 -0
- package/dist/NumberInput/index.js +2 -0
- package/dist/Pagination/Pagination.torp +152 -0
- package/dist/Pagination/PaginationItem.torp +137 -0
- package/dist/Pagination/PaginationTypes.ts +22 -0
- package/dist/Pagination/buildPages.ts +61 -0
- package/dist/Pagination/index.d.ts +63 -0
- package/dist/Pagination/index.js +3 -0
- package/dist/Popover/Popover.torp +39 -52
- package/dist/Popover/PopoverContent.torp +27 -76
- package/dist/Popover/PopoverHover.torp +90 -0
- package/dist/Popover/PopoverTrigger.torp +17 -40
- package/dist/Popover/PopoverTypes.ts +5 -18
- package/dist/Popover/index.d.ts +40 -25
- package/dist/Popover/index.js +18 -18
- package/dist/Popover/index.js.map +1 -1
- package/dist/Progress/Progress.torp +88 -0
- package/dist/Progress/index.d.ts +37 -0
- package/dist/Progress/index.js +2 -0
- package/dist/Rating/Rating.torp +225 -0
- package/dist/Rating/index.d.ts +44 -0
- package/dist/Rating/index.js +2 -0
- package/dist/SegmentedControl/SegmentedControl.torp +233 -0
- package/dist/SegmentedControl/SegmentedControlTypes.ts +26 -0
- package/dist/SegmentedControl/SegmentedItem.torp +78 -0
- package/dist/SegmentedControl/index.d.ts +74 -0
- package/dist/SegmentedControl/index.js +3 -0
- package/dist/SelectBox/SelectBox.torp +190 -0
- package/dist/SelectBox/SelectBoxContent.torp +107 -0
- package/dist/SelectBox/SelectBoxTrigger.torp +141 -0
- package/dist/SelectBox/SelectBoxTypes.ts +33 -0
- package/dist/SelectBox/index.d.ts +112 -0
- package/dist/SelectBox/index.js +5 -0
- package/dist/Slider/Slider.torp +248 -0
- package/dist/Slider/index.d.ts +45 -0
- package/dist/Slider/index.js +2 -0
- package/dist/Splitter/Splitter.torp +156 -0
- package/dist/Splitter/SplitterHandle.torp +161 -0
- package/dist/Splitter/SplitterPane.torp +63 -0
- package/dist/Splitter/SplitterTypes.ts +31 -0
- package/dist/Splitter/index.d.ts +103 -0
- package/dist/Splitter/index.js +4 -0
- package/dist/Stepper/Stepper.torp +146 -0
- package/dist/Stepper/StepperMarker.torp +24 -0
- package/dist/Stepper/StepperNext.torp +44 -0
- package/dist/Stepper/StepperPrevious.torp +44 -0
- package/dist/Stepper/StepperStep.torp +90 -0
- package/dist/Stepper/StepperTypes.ts +30 -0
- package/dist/Stepper/index.d.ts +149 -0
- package/dist/Stepper/index.js +6 -0
- package/dist/TabGroup/TabContent.torp +6 -6
- package/dist/TabGroup/TabGroup.torp +97 -113
- package/dist/TabGroup/TabGroupTypes.ts +3 -3
- package/dist/TabGroup/TabHeader.torp +23 -19
- package/dist/TabGroup/TabList.torp +8 -21
- package/dist/TabGroup/TabTrigger.torp +6 -7
- package/dist/TabGroup/index.d.ts +26 -26
- package/dist/TabGroup/index.js +6 -22
- package/dist/TagInput/TagInput.torp +378 -0
- package/dist/TagInput/index.d.ts +48 -0
- package/dist/TagInput/index.js +2 -0
- package/dist/TimePicker/TimePicker.torp +462 -0
- package/dist/TimePicker/index.d.ts +53 -0
- package/dist/TimePicker/index.js +2 -0
- package/dist/ToolBar/ToolBar.torp +117 -0
- package/dist/ToolBar/ToolBarButton.torp +56 -0
- package/dist/ToolBar/ToolBarElement.torp +51 -0
- package/dist/ToolBar/ToolBarPopout.torp +45 -0
- package/dist/ToolBar/ToolBarPopoutContent.torp +34 -0
- package/dist/ToolBar/ToolBarPopoutTrigger.torp +47 -0
- package/dist/ToolBar/ToolBarSeparator.torp +21 -0
- package/dist/ToolBar/ToolBarTypes.ts +28 -0
- package/dist/ToolBar/index.d.ts +210 -0
- package/dist/ToolBar/index.js +8 -0
- package/dist/Tree/Tree.torp +395 -0
- package/dist/Tree/TreeItem.torp +176 -0
- package/dist/Tree/TreeItemChildren.torp +60 -0
- package/dist/Tree/TreeItemContent.torp +46 -0
- package/dist/Tree/TreeItemLabel.torp +94 -0
- package/dist/Tree/TreeItemTrigger.torp +78 -0
- package/dist/Tree/TreeLoadedChildren.torp +122 -0
- package/dist/Tree/TreeTypes.ts +63 -0
- package/dist/Tree/index.d.ts +262 -0
- package/dist/Tree/index.js +7 -0
- package/dist/icons/ChevronDoubleLeft.torp +19 -0
- package/dist/icons/ChevronDoubleRight.torp +19 -0
- package/dist/icons/index.d.ts +61 -1
- package/dist/icons/index.js +17 -58
- package/dist/loader-DEeG5vFY.js +44 -0
- package/dist/loader-DEeG5vFY.js.map +1 -0
- package/dist/motion/index.d.ts +12 -8
- package/dist/motion/index.d.ts.map +1 -0
- package/dist/motion/index.js +72 -88
- package/dist/motion/index.js.map +1 -1
- package/dist/mount/draggable.ts +63 -0
- package/dist/mount/dropTarget.ts +108 -0
- package/dist/mount/hoverTrigger.ts +1 -1
- package/dist/utils/$handle.ts +23 -0
- package/dist/utils/LoadedItems.torp +47 -0
- package/dist/utils/PopoutClickTrigger.torp +99 -0
- package/dist/utils/PopoutTypes.ts +82 -0
- package/dist/utils/SubmenuPopout.torp +89 -0
- package/dist/utils/SubmenuPopoutContent.torp +87 -0
- package/dist/utils/SubmenuPopoutTrigger.torp +160 -0
- package/dist/utils/chartColors.ts +13 -13
- package/dist/utils/chartLayout.ts +143 -0
- package/dist/utils/chartUtils.ts +1 -1
- package/dist/utils/colorUtils.ts +103 -0
- package/dist/utils/createItemGroup.ts +152 -0
- package/dist/utils/dateUtils.ts +8 -7
- package/dist/utils/documentEvents.ts +4 -4
- package/dist/utils/dragState.ts +86 -0
- package/dist/utils/focusGroup.ts +204 -0
- package/dist/utils/focusItem.ts +44 -0
- package/dist/utils/formField.ts +70 -0
- package/dist/utils/hoverOpen.ts +50 -0
- package/dist/utils/hoverReveal.ts +194 -0
- package/dist/utils/loader.ts +113 -0
- package/dist/utils/maskUtils.ts +98 -0
- package/dist/utils/popoutContent.ts +137 -0
- package/dist/utils/reorderList.ts +52 -0
- package/package.json +116 -25
- package/dist/Accordion/index.js.map +0 -1
- package/dist/Breadcrumb/index.js.map +0 -1
- package/dist/Calendar/index.js.map +0 -1
- package/dist/Chart/BarChart.torp +0 -159
- package/dist/Chart/LineChart.torp +0 -196
- package/dist/Chart/index.d.ts +0 -220
- package/dist/Chart/index.js +0 -34
- package/dist/Chart/index.js.map +0 -1
- package/dist/Contextual/index.js.map +0 -1
- package/dist/Dialog/index.js.map +0 -1
- package/dist/Disclosure/index.js.map +0 -1
- package/dist/Drawer/index.js.map +0 -1
- package/dist/Form/index.js.map +0 -1
- package/dist/Menu/index.js.map +0 -1
- package/dist/MenuBar/index.js.map +0 -1
- package/dist/NavMenu/NavMenuPopoutButton.torp +0 -129
- package/dist/NavMenu/index.js.map +0 -1
- package/dist/TabGroup/index.js.map +0 -1
- package/dist/icons/index.js.map +0 -1
- package/dist/index.d.ts +0 -19
- package/dist/metafile-esm.json +0 -1
- package/dist/motion/fade.ts +0 -16
- package/dist/motion/grow.ts +0 -23
- package/dist/motion/measure.ts +0 -28
- package/dist/motion/slide.ts +0 -45
- package/dist/mount/index.d.ts +0 -2
- package/dist/utils/index.d.ts +0 -2
- /package/dist/{Chart → Charts}/DataSeries.ts +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import { type ToolBarContext, ToolBarContextName } from "./ToolBarTypes";
|
|
3
|
+
|
|
4
|
+
interface ToolBarElementProps {
|
|
5
|
+
/** An ID for the root element */
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Classes for the root element */
|
|
8
|
+
class?: ClassValue;
|
|
9
|
+
/** Styles for the root element */
|
|
10
|
+
style?: StyleValue;
|
|
11
|
+
/** Whether this button is disabled */
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
/** An element that can be focused via keyboard navigation */
|
|
14
|
+
element?: HTMLElement;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* An element of any type that can be placed in a ToolBar.
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
export default function ToolBarElement($props: ToolBarElementProps | undefined) {
|
|
22
|
+
// Get stuff out of the ToolBarContext
|
|
23
|
+
const menuContext = $context[ToolBarContextName] as ToolBarContext;
|
|
24
|
+
if (!menuContext) {
|
|
25
|
+
throw new Error("ToolBarElement must be contained within a ToolBar");
|
|
26
|
+
}
|
|
27
|
+
const { registerItem, handleItemKey, handleItemFocus } = menuContext;
|
|
28
|
+
|
|
29
|
+
// Register this item with the parent ToolBar and store the index
|
|
30
|
+
const { index } = registerItem({ setFocused, disabled: $props?.disabled });
|
|
31
|
+
|
|
32
|
+
function setFocused() {
|
|
33
|
+
if ($props?.element) {
|
|
34
|
+
$props.element.focus();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@render {
|
|
39
|
+
<div
|
|
40
|
+
{$props?.id}
|
|
41
|
+
class={["torp-tool-bar-div", $props?.class]}
|
|
42
|
+
{$props?.style}
|
|
43
|
+
tabindex="0"
|
|
44
|
+
aria-disabled={$props?.disabled ? "true" : undefined}
|
|
45
|
+
onkeydown={handleItemKey}
|
|
46
|
+
onfocus={() => handleItemFocus(index)}
|
|
47
|
+
>
|
|
48
|
+
<slot />
|
|
49
|
+
</div>
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Bindable, ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import SubmenuPopout from "../utils/SubmenuPopout.torp";
|
|
3
|
+
|
|
4
|
+
interface ToolBarPopoutProps {
|
|
5
|
+
/** An ID for the root element */
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Classes for the root element */
|
|
8
|
+
class?: ClassValue;
|
|
9
|
+
/** Styles for the root element */
|
|
10
|
+
style?: StyleValue;
|
|
11
|
+
/** Whether the popout is visible */
|
|
12
|
+
visible: Bindable<boolean | undefined>;
|
|
13
|
+
/** Raised when the popout has opened */
|
|
14
|
+
onopen?: () => void;
|
|
15
|
+
/** Raised when the popout has closed */
|
|
16
|
+
onclose?: (result: any) => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* A popout that is attached to a toolbar button and can be used to show a submenu.
|
|
21
|
+
*
|
|
22
|
+
* The structure of a ToolBarPopout is:
|
|
23
|
+
*
|
|
24
|
+
* ```
|
|
25
|
+
* <ToolBarPopout>
|
|
26
|
+
* <ToolBarPopoutTrigger />
|
|
27
|
+
* <ToolBarPopoutContent />
|
|
28
|
+
* </ToolBarPopout>
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export default function ToolBarPopout($props: ToolBarPopoutProps | undefined) {
|
|
32
|
+
@render {
|
|
33
|
+
<SubmenuPopout
|
|
34
|
+
id={$props?.id}
|
|
35
|
+
class={["torp-tool-bar-popout", $props?.class]}
|
|
36
|
+
style={$props?.style}
|
|
37
|
+
visible={$props?.visible}
|
|
38
|
+
onopen={$props?.onopen}
|
|
39
|
+
onclose={$props?.onclose}
|
|
40
|
+
contentRole="menu"
|
|
41
|
+
>
|
|
42
|
+
<slot />
|
|
43
|
+
</SubmenuPopout>
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import SubmenuPopoutContent from "../utils/SubmenuPopoutContent.torp";
|
|
3
|
+
|
|
4
|
+
interface ToolBarPopoutContentProps {
|
|
5
|
+
/** An ID for the root element */
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Classes for the root element */
|
|
8
|
+
class?: ClassValue;
|
|
9
|
+
/** Styles for the root element */
|
|
10
|
+
style?: StyleValue;
|
|
11
|
+
/** Where the popout will be shown, relative to the popout button */
|
|
12
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
13
|
+
/** How the popout will be aligned, relative to the popout button */
|
|
14
|
+
alignment?: "start" | "center" | "end";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The content that is displayed for a ToolBarPopout when it is open.
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
export default function ToolBarPopoutContent($props: ToolBarPopoutContentProps | undefined) {
|
|
22
|
+
@render {
|
|
23
|
+
<SubmenuPopoutContent
|
|
24
|
+
id={$props?.id}
|
|
25
|
+
class={["torp-tool-bar-popout-content", $props?.class]}
|
|
26
|
+
style={$props?.style}
|
|
27
|
+
side={$props?.side}
|
|
28
|
+
alignment={$props?.alignment}
|
|
29
|
+
role="menu"
|
|
30
|
+
>
|
|
31
|
+
<slot />
|
|
32
|
+
</SubmenuPopoutContent>
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import SubmenuPopoutTrigger from "../utils/SubmenuPopoutTrigger.torp";
|
|
3
|
+
import { type ToolBarContext, ToolBarContextName } from "./ToolBarTypes";
|
|
4
|
+
|
|
5
|
+
interface ToolBarPopoutTriggerProps {
|
|
6
|
+
/** An ID for the root element */
|
|
7
|
+
id?: string;
|
|
8
|
+
/** Classes for the root element */
|
|
9
|
+
class?: ClassValue;
|
|
10
|
+
/** Styles for the root element */
|
|
11
|
+
style?: StyleValue;
|
|
12
|
+
/** The delay before showing the popout, in milliseconds */
|
|
13
|
+
hoverDelay?: number;
|
|
14
|
+
/** Whether this button is disabled */
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A button that is placed in a ToolBar and signals a response by a user.
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
export default function ToolBarPopoutTrigger($props: ToolBarPopoutTriggerProps | undefined) {
|
|
23
|
+
// Get stuff out of the ToolBarContext
|
|
24
|
+
const toolBarContext = $context[ToolBarContextName] as ToolBarContext;
|
|
25
|
+
if (!toolBarContext) {
|
|
26
|
+
throw new Error("ToolBarPopoutTrigger must be contained within a ToolBar");
|
|
27
|
+
}
|
|
28
|
+
const { registerItem, handleItemKey, handleItemFocus, handlePopout, orientation } =
|
|
29
|
+
toolBarContext;
|
|
30
|
+
|
|
31
|
+
@render {
|
|
32
|
+
<SubmenuPopoutTrigger
|
|
33
|
+
id={$props?.id}
|
|
34
|
+
class={["torp-tool-bar-popout-trigger", $props?.class]}
|
|
35
|
+
style={$props?.style}
|
|
36
|
+
hoverDelay={$props?.hoverDelay}
|
|
37
|
+
disabled={$props?.disabled}
|
|
38
|
+
openKey={orientation === "vertical" ? "ArrowRight" : "ArrowDown"}
|
|
39
|
+
registerItem={registerItem}
|
|
40
|
+
handleItemKey={handleItemKey}
|
|
41
|
+
handleItemFocus={handleItemFocus}
|
|
42
|
+
onActivate={handlePopout}
|
|
43
|
+
>
|
|
44
|
+
<slot />
|
|
45
|
+
</SubmenuPopoutTrigger>
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
|
|
3
|
+
interface ToolBarSeparatorProps {
|
|
4
|
+
/** An ID for the root element */
|
|
5
|
+
id?: string;
|
|
6
|
+
/** Classes for the root element */
|
|
7
|
+
class?: ClassValue;
|
|
8
|
+
/** Styles for the root element */
|
|
9
|
+
style?: StyleValue;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* An element in a menu that separates logical sets of menu items.
|
|
14
|
+
*/
|
|
15
|
+
export default function ToolBarSeparator($props: ToolBarSeparatorProps | undefined) {
|
|
16
|
+
@render {
|
|
17
|
+
<div {$props?.id} class={["torp-tool-bar-separator", $props?.class]} role="separator">
|
|
18
|
+
<slot />
|
|
19
|
+
</div>
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { SubmenuItemState } from "../utils/PopoutTypes";
|
|
2
|
+
|
|
3
|
+
export const ToolBarContextName: unique symbol = Symbol.for("torp.ToolBar");
|
|
4
|
+
export const ToolBarGroupContextName: unique symbol = Symbol.for("torp.ToolBarGroup");
|
|
5
|
+
|
|
6
|
+
export interface ToolBarContext {
|
|
7
|
+
/** Called from a ToolBarLink or ToolBarButton when its button is focused */
|
|
8
|
+
handleItemFocus: (index: number) => void;
|
|
9
|
+
|
|
10
|
+
/** Called from a ToolBarLink or ToolBarButton when a key is pressed */
|
|
11
|
+
handleItemKey: (e: KeyboardEvent) => void;
|
|
12
|
+
|
|
13
|
+
/** Called from a MenuButton when a submenu is shown */
|
|
14
|
+
handlePopout: (index: number) => void;
|
|
15
|
+
|
|
16
|
+
/** Called from each ToolBarLink or ToolBarButton to register itself with this ToolBar */
|
|
17
|
+
registerItem: (item: ItemState) => { index: number };
|
|
18
|
+
|
|
19
|
+
orientation: "horizontal" | "vertical";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface ToolBarGroupContext {
|
|
23
|
+
state: {
|
|
24
|
+
headerId: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type ItemState = SubmenuItemState;
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { type SlotRender } from "@torpor/view";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
interface ToolBarProps {
|
|
5
|
+
/** An ID for the root element */
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Classes for the root element */
|
|
8
|
+
class?: ClassValue;
|
|
9
|
+
/** Styles for the root element */
|
|
10
|
+
style?: StyleValue;
|
|
11
|
+
/** An ARIA label for describing the menu to screen readers */
|
|
12
|
+
ariaLabel?: string | undefined;
|
|
13
|
+
/** The orientation of the menu, which affects keyboard navigation */
|
|
14
|
+
orientation?: "horizontal" | "vertical";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* A toolbar is a container for grouping a set of controls, such as buttons, menubuttons, or checkboxes.
|
|
19
|
+
*
|
|
20
|
+
* See [the WAI ARIA guidelines for ToolBars](https://www.w3.org/WAI/ARIA/apg/patterns/toolbar/).
|
|
21
|
+
*
|
|
22
|
+
* The structure of a ToolBar is:
|
|
23
|
+
*
|
|
24
|
+
* ```
|
|
25
|
+
* <ToolBar>
|
|
26
|
+
* <ToolBarButton />
|
|
27
|
+
* <ToolBarSeparator /> (optional)
|
|
28
|
+
* <ToolBarPopout /> (optional)
|
|
29
|
+
* ...
|
|
30
|
+
* </ToolBar>
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
declare function ToolBar(
|
|
34
|
+
$parent: ParentNode,
|
|
35
|
+
$anchor: Node | null,
|
|
36
|
+
$props: ToolBarProps | undefined,
|
|
37
|
+
$context?: Record<PropertyKey, any>,
|
|
38
|
+
$slots?: Record<string, SlotRender>,
|
|
39
|
+
): void;
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
interface ToolBarButtonProps {
|
|
44
|
+
/** An ID for the root element */
|
|
45
|
+
id?: string;
|
|
46
|
+
/** Classes for the root element */
|
|
47
|
+
class?: ClassValue;
|
|
48
|
+
/** Styles for the root element */
|
|
49
|
+
style?: StyleValue;
|
|
50
|
+
/** Whether this button is disabled */
|
|
51
|
+
disabled?: boolean;
|
|
52
|
+
/** Raised when the button is clicked */
|
|
53
|
+
onclick?: (e: MouseEvent) => void;
|
|
54
|
+
/** Raised when a key is pressed down */
|
|
55
|
+
onkeydown?: (e: KeyboardEvent) => void;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* A button that is placed in a ToolBar.
|
|
60
|
+
*
|
|
61
|
+
*/
|
|
62
|
+
declare function ToolBarButton(
|
|
63
|
+
$parent: ParentNode,
|
|
64
|
+
$anchor: Node | null,
|
|
65
|
+
$props: ToolBarButtonProps | undefined,
|
|
66
|
+
$context?: Record<PropertyKey, any>,
|
|
67
|
+
$slots?: Record<string, SlotRender>,
|
|
68
|
+
): void;
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
interface ToolBarElementProps {
|
|
73
|
+
/** An ID for the root element */
|
|
74
|
+
id?: string;
|
|
75
|
+
/** Classes for the root element */
|
|
76
|
+
class?: ClassValue;
|
|
77
|
+
/** Styles for the root element */
|
|
78
|
+
style?: StyleValue;
|
|
79
|
+
/** Whether this button is disabled */
|
|
80
|
+
disabled?: boolean;
|
|
81
|
+
/** An element that can be focused via keyboard navigation */
|
|
82
|
+
element?: HTMLElement;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* An element of any type that can be placed in a ToolBar.
|
|
87
|
+
*
|
|
88
|
+
*/
|
|
89
|
+
declare function ToolBarElement(
|
|
90
|
+
$parent: ParentNode,
|
|
91
|
+
$anchor: Node | null,
|
|
92
|
+
$props: ToolBarElementProps | undefined,
|
|
93
|
+
$context?: Record<PropertyKey, any>,
|
|
94
|
+
$slots?: Record<string, SlotRender>,
|
|
95
|
+
): void;
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
interface ToolBarPopoutProps {
|
|
100
|
+
/** An ID for the root element */
|
|
101
|
+
id?: string;
|
|
102
|
+
/** Classes for the root element */
|
|
103
|
+
class?: ClassValue;
|
|
104
|
+
/** Styles for the root element */
|
|
105
|
+
style?: StyleValue;
|
|
106
|
+
/** Whether the popout is visible */
|
|
107
|
+
visible: Bindable<boolean | undefined>;
|
|
108
|
+
/** Raised when the popout has opened */
|
|
109
|
+
onopen?: () => void;
|
|
110
|
+
/** Raised when the popout has closed */
|
|
111
|
+
onclose?: (result: any) => void;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* A popout that is attached to a toolbar button and can be used to show a submenu.
|
|
116
|
+
*
|
|
117
|
+
* The structure of a ToolBarPopout is:
|
|
118
|
+
*
|
|
119
|
+
* ```
|
|
120
|
+
* <ToolBarPopout>
|
|
121
|
+
* <ToolBarPopoutTrigger />
|
|
122
|
+
* <ToolBarPopoutContent />
|
|
123
|
+
* </ToolBarPopout>
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
declare function ToolBarPopout(
|
|
127
|
+
$parent: ParentNode,
|
|
128
|
+
$anchor: Node | null,
|
|
129
|
+
$props: ToolBarPopoutProps | undefined,
|
|
130
|
+
$context?: Record<PropertyKey, any>,
|
|
131
|
+
$slots?: Record<string, SlotRender>,
|
|
132
|
+
): void;
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
interface ToolBarPopoutContentProps {
|
|
137
|
+
/** An ID for the root element */
|
|
138
|
+
id?: string;
|
|
139
|
+
/** Classes for the root element */
|
|
140
|
+
class?: ClassValue;
|
|
141
|
+
/** Styles for the root element */
|
|
142
|
+
style?: StyleValue;
|
|
143
|
+
/** Where the popout will be shown, relative to the popout button */
|
|
144
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
145
|
+
/** How the popout will be aligned, relative to the popout button */
|
|
146
|
+
alignment?: "start" | "center" | "end";
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* The content that is displayed for a ToolBarPopout when it is open.
|
|
151
|
+
*
|
|
152
|
+
*/
|
|
153
|
+
declare function ToolBarPopoutContent(
|
|
154
|
+
$parent: ParentNode,
|
|
155
|
+
$anchor: Node | null,
|
|
156
|
+
$props: ToolBarPopoutContentProps | undefined,
|
|
157
|
+
$context?: Record<PropertyKey, any>,
|
|
158
|
+
$slots?: Record<string, SlotRender>,
|
|
159
|
+
): void;
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
interface ToolBarPopoutTriggerProps {
|
|
164
|
+
/** An ID for the root element */
|
|
165
|
+
id?: string;
|
|
166
|
+
/** Classes for the root element */
|
|
167
|
+
class?: ClassValue;
|
|
168
|
+
/** Styles for the root element */
|
|
169
|
+
style?: StyleValue;
|
|
170
|
+
/** The delay before showing the popout, in milliseconds */
|
|
171
|
+
hoverDelay?: number;
|
|
172
|
+
/** Whether this button is disabled */
|
|
173
|
+
disabled?: boolean;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* A button that is placed in a ToolBar and signals a response by a user.
|
|
178
|
+
*
|
|
179
|
+
*/
|
|
180
|
+
declare function ToolBarPopoutTrigger(
|
|
181
|
+
$parent: ParentNode,
|
|
182
|
+
$anchor: Node | null,
|
|
183
|
+
$props: ToolBarPopoutTriggerProps | undefined,
|
|
184
|
+
$context?: Record<PropertyKey, any>,
|
|
185
|
+
$slots?: Record<string, SlotRender>,
|
|
186
|
+
): void;
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
interface ToolBarSeparatorProps {
|
|
191
|
+
/** An ID for the root element */
|
|
192
|
+
id?: string;
|
|
193
|
+
/** Classes for the root element */
|
|
194
|
+
class?: ClassValue;
|
|
195
|
+
/** Styles for the root element */
|
|
196
|
+
style?: StyleValue;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* An element in a menu that separates logical sets of menu items.
|
|
201
|
+
*/
|
|
202
|
+
declare function ToolBarSeparator(
|
|
203
|
+
$parent: ParentNode,
|
|
204
|
+
$anchor: Node | null,
|
|
205
|
+
$props: ToolBarSeparatorProps | undefined,
|
|
206
|
+
$context?: Record<PropertyKey, any>,
|
|
207
|
+
$slots?: Record<string, SlotRender>,
|
|
208
|
+
): void;
|
|
209
|
+
|
|
210
|
+
export { ToolBar, ToolBarButton, ToolBarElement, ToolBarPopout, ToolBarPopoutContent, ToolBarPopoutTrigger, ToolBarSeparator };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import ToolBar from "./ToolBar.torp";
|
|
2
|
+
import ToolBarButton from "./ToolBarButton.torp";
|
|
3
|
+
import ToolBarElement from "./ToolBarElement.torp";
|
|
4
|
+
import ToolBarPopout from "./ToolBarPopout.torp";
|
|
5
|
+
import ToolBarPopoutContent from "./ToolBarPopoutContent.torp";
|
|
6
|
+
import ToolBarPopoutTrigger from "./ToolBarPopoutTrigger.torp";
|
|
7
|
+
import ToolBarSeparator from "./ToolBarSeparator.torp";
|
|
8
|
+
export { ToolBar, ToolBarButton, ToolBarElement, ToolBarPopout, ToolBarPopoutContent, ToolBarPopoutTrigger, ToolBarSeparator };
|