@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.
Files changed (346) hide show
  1. package/README.md +83 -7
  2. package/dist/Accordion/Accordion.torp +43 -165
  3. package/dist/Accordion/AccordionContent.torp +6 -6
  4. package/dist/Accordion/AccordionHeader.torp +7 -11
  5. package/dist/Accordion/AccordionItem.torp +24 -24
  6. package/dist/Accordion/AccordionTrigger.torp +17 -8
  7. package/dist/Accordion/AccordionTypes.ts +6 -6
  8. package/dist/Accordion/index.d.ts +23 -25
  9. package/dist/Accordion/index.js +6 -22
  10. package/dist/Breadcrumb/Breadcrumb.torp +12 -10
  11. package/dist/Breadcrumb/BreadcrumbItem.torp +6 -6
  12. package/dist/Breadcrumb/BreadcrumbList.torp +21 -0
  13. package/dist/Breadcrumb/BreadcrumbSeparator.torp +4 -4
  14. package/dist/Breadcrumb/index.d.ts +39 -15
  15. package/dist/Breadcrumb/index.js +5 -14
  16. package/dist/Calendar/Calendar.torp +163 -156
  17. package/dist/Calendar/CalendarDay.torp +91 -45
  18. package/dist/Calendar/CalendarDayHeader.torp +36 -0
  19. package/dist/Calendar/CalendarGrid.torp +104 -0
  20. package/dist/Calendar/CalendarGridHeader.torp +43 -0
  21. package/dist/Calendar/CalendarHeader.torp +48 -0
  22. package/dist/Calendar/CalendarHeaderTrigger.torp +54 -0
  23. package/dist/Calendar/CalendarTypes.ts +25 -4
  24. package/dist/Calendar/buildDays.ts +54 -0
  25. package/dist/Calendar/index.d.ts +191 -5
  26. package/dist/Calendar/index.js +8 -10
  27. package/dist/Carousel/Carousel.torp +180 -0
  28. package/dist/Carousel/CarouselIndicators.torp +65 -0
  29. package/dist/Carousel/CarouselNext.torp +43 -0
  30. package/dist/Carousel/CarouselPrevious.torp +44 -0
  31. package/dist/Carousel/CarouselSlide.torp +57 -0
  32. package/dist/Carousel/CarouselTypes.ts +28 -0
  33. package/dist/Carousel/index.d.ts +147 -0
  34. package/dist/Carousel/index.js +6 -0
  35. package/dist/Charts/BarChart.torp +70 -0
  36. package/dist/Charts/Chart.torp +120 -0
  37. package/dist/Charts/ChartBars.torp +78 -0
  38. package/dist/Charts/ChartColumns.torp +66 -0
  39. package/dist/Charts/ChartGrid.torp +54 -0
  40. package/dist/Charts/ChartLines.torp +60 -0
  41. package/dist/Charts/ChartTypes.ts +25 -0
  42. package/dist/Charts/ChartXAxis.torp +83 -0
  43. package/dist/Charts/ChartYAxis.torp +105 -0
  44. package/dist/Charts/ColumnChart.torp +70 -0
  45. package/dist/{Chart → Charts}/GridLines.torp +7 -4
  46. package/dist/Charts/LineChart.torp +73 -0
  47. package/dist/{Chart → Charts}/PieChart.torp +14 -20
  48. package/dist/{Chart → Charts}/ScatterChart.torp +45 -38
  49. package/dist/{Chart → Charts}/SparkLine.torp +16 -19
  50. package/dist/{Chart → Charts}/XAxis.torp +18 -12
  51. package/dist/{Chart → Charts}/YAxis.torp +15 -9
  52. package/dist/Charts/index.d.ts +469 -0
  53. package/dist/Charts/index.js +17 -0
  54. package/dist/ColorPicker/ColorPalette.torp +154 -0
  55. package/dist/ColorPicker/ColorPicker.torp +157 -0
  56. package/dist/ColorPicker/index.d.ts +85 -0
  57. package/dist/ColorPicker/index.js +3 -0
  58. package/dist/ComboBox/ComboBox.torp +205 -0
  59. package/dist/ComboBox/ComboBoxContent.torp +112 -0
  60. package/dist/ComboBox/ComboBoxInput.torp +145 -0
  61. package/dist/ComboBox/ComboBoxTrigger.torp +49 -0
  62. package/dist/ComboBox/ComboBoxTypes.ts +39 -0
  63. package/dist/ComboBox/index.d.ts +152 -0
  64. package/dist/ComboBox/index.js +6 -0
  65. package/dist/CommandPalette/CommandPalette.torp +220 -0
  66. package/dist/CommandPalette/CommandTypes.ts +14 -0
  67. package/dist/CommandPalette/index.d.ts +45 -0
  68. package/dist/CommandPalette/index.js +2 -0
  69. package/dist/Contextual/Contextual.torp +39 -52
  70. package/dist/Contextual/ContextualContent.torp +29 -73
  71. package/dist/Contextual/ContextualHover.torp +112 -0
  72. package/dist/Contextual/ContextualTrigger.torp +31 -42
  73. package/dist/Contextual/ContextualTypes.ts +5 -18
  74. package/dist/Contextual/index.d.ts +44 -27
  75. package/dist/Contextual/index.js +5 -14
  76. package/dist/DataGrid/DataGrid.torp +496 -0
  77. package/dist/DataGrid/DataGridTypes.ts +25 -0
  78. package/dist/DataGrid/index.d.ts +90 -0
  79. package/dist/DataGrid/index.js +3 -0
  80. package/dist/DataGrid/sortRows.ts +32 -0
  81. package/dist/DatePicker/DatePicker.torp +222 -0
  82. package/dist/DatePicker/DatePickerHeader.torp +20 -0
  83. package/dist/DatePicker/index.d.ts +55 -0
  84. package/dist/DatePicker/index.js +2 -0
  85. package/dist/DateRangePicker/DateRangePicker.torp +311 -0
  86. package/dist/DateRangePicker/DateRangePickerDay.torp +137 -0
  87. package/dist/DateRangePicker/DateRangePickerTypes.ts +21 -0
  88. package/dist/DateRangePicker/index.d.ts +76 -0
  89. package/dist/DateRangePicker/index.js +3 -0
  90. package/dist/Dialog/Dialog.torp +33 -30
  91. package/dist/Dialog/DialogBody.torp +5 -9
  92. package/dist/Dialog/DialogButton.torp +14 -11
  93. package/dist/Dialog/DialogFooter.torp +3 -7
  94. package/dist/Dialog/DialogHeader.torp +6 -10
  95. package/dist/Dialog/DialogTypes.ts +2 -2
  96. package/dist/Dialog/index.d.ts +28 -26
  97. package/dist/Dialog/index.js +6 -22
  98. package/dist/Disclosure/Disclosure.torp +18 -18
  99. package/dist/Disclosure/DisclosureContent.torp +5 -6
  100. package/dist/Disclosure/DisclosureHeader.torp +7 -11
  101. package/dist/Disclosure/DisclosureTrigger.torp +4 -5
  102. package/dist/Disclosure/DisclosureTypes.ts +1 -1
  103. package/dist/Disclosure/index.d.ts +14 -16
  104. package/dist/Disclosure/index.js +5 -18
  105. package/dist/Drawer/Drawer.torp +21 -51
  106. package/dist/Drawer/DrawerContent.torp +67 -13
  107. package/dist/Drawer/DrawerOverlay.torp +4 -4
  108. package/dist/Drawer/DrawerTrigger.torp +16 -4
  109. package/dist/Drawer/DrawerTypes.ts +4 -1
  110. package/dist/Drawer/index.d.ts +16 -20
  111. package/dist/Drawer/index.js +5 -18
  112. package/dist/FocusGroup/FocusGroup.torp +70 -0
  113. package/dist/FocusGroup/FocusGroupButton.torp +59 -0
  114. package/dist/FocusGroup/FocusGroupTypes.ts +14 -0
  115. package/dist/FocusGroup/index.d.ts +44 -0
  116. package/dist/FocusGroup/index.js +3 -0
  117. package/dist/Form/CheckBox.torp +28 -20
  118. package/dist/Form/Field.torp +17 -17
  119. package/dist/Form/File.torp +31 -22
  120. package/dist/Form/FileDrop.torp +187 -0
  121. package/dist/Form/Form.torp +24 -22
  122. package/dist/Form/FormTypes.ts +2 -0
  123. package/dist/Form/FormValues.torp +37 -0
  124. package/dist/Form/Hidden.torp +4 -12
  125. package/dist/Form/Input.torp +38 -32
  126. package/dist/Form/Label.torp +3 -3
  127. package/dist/Form/Message.torp +13 -5
  128. package/dist/Form/MessageSummary.torp +39 -0
  129. package/dist/Form/Option.torp +11 -7
  130. package/dist/Form/Select.torp +32 -28
  131. package/dist/Form/TextArea.torp +35 -31
  132. package/dist/Form/Toggle.torp +109 -0
  133. package/dist/Form/index.d.ts +198 -77
  134. package/dist/Form/index.js +16 -46
  135. package/dist/ListBox/ListBox.torp +374 -0
  136. package/dist/ListBox/ListBoxItem.torp +131 -0
  137. package/dist/ListBox/ListBoxSeparator.torp +29 -0
  138. package/dist/ListBox/ListBoxTypes.ts +41 -0
  139. package/dist/ListBox/LoadedListBoxItems.torp +41 -0
  140. package/dist/ListBox/index.d.ts +136 -0
  141. package/dist/ListBox/index.js +4 -0
  142. package/dist/MaskedInput/MaskedInput.torp +143 -0
  143. package/dist/MaskedInput/index.d.ts +52 -0
  144. package/dist/MaskedInput/index.js +2 -0
  145. package/dist/Menu/Menu.torp +90 -70
  146. package/dist/Menu/MenuButton.torp +17 -10
  147. package/dist/Menu/MenuCheck.torp +22 -18
  148. package/dist/Menu/MenuGroup.torp +4 -4
  149. package/dist/Menu/MenuIndicator.torp +5 -13
  150. package/dist/Menu/MenuPopout.torp +20 -50
  151. package/dist/Menu/MenuPopoutContent.torp +15 -66
  152. package/dist/Menu/MenuPopoutTrigger.torp +19 -100
  153. package/dist/Menu/MenuRadio.torp +25 -26
  154. package/dist/Menu/MenuRadioGroup.torp +25 -68
  155. package/dist/Menu/MenuSeparator.torp +3 -2
  156. package/dist/Menu/MenuTypes.ts +12 -21
  157. package/dist/Menu/index.d.ts +45 -51
  158. package/dist/Menu/index.js +12 -46
  159. package/dist/MenuBar/MenuBar.torp +31 -83
  160. package/dist/MenuBar/MenuBarItem.torp +34 -55
  161. package/dist/MenuBar/MenuBarItemContent.torp +15 -101
  162. package/dist/MenuBar/MenuBarItemTrigger.torp +20 -55
  163. package/dist/MenuBar/MenuBarTypes.ts +13 -12
  164. package/dist/MenuBar/index.d.ts +17 -19
  165. package/dist/MenuBar/index.js +5 -18
  166. package/dist/Modal/Modal.torp +28 -48
  167. package/dist/Modal/ModalContent.torp +21 -44
  168. package/dist/Modal/ModalOverlay.torp +4 -4
  169. package/dist/Modal/ModalTrigger.torp +16 -32
  170. package/dist/Modal/ModalTypes.ts +6 -17
  171. package/dist/Modal/index.d.ts +17 -29
  172. package/dist/Modal/index.js +29 -28
  173. package/dist/Modal/index.js.map +1 -1
  174. package/dist/Modal/showPrompt.ts +2 -2
  175. package/dist/NavMenu/NavMenu.torp +22 -104
  176. package/dist/NavMenu/NavMenuButton.torp +10 -8
  177. package/dist/NavMenu/NavMenuElement.torp +6 -7
  178. package/dist/NavMenu/NavMenuGroup.torp +5 -5
  179. package/dist/NavMenu/NavMenuGroupHeader.torp +5 -8
  180. package/dist/NavMenu/NavMenuLink.torp +7 -10
  181. package/dist/NavMenu/NavMenuPopout.torp +16 -61
  182. package/dist/NavMenu/NavMenuPopoutContent.torp +14 -73
  183. package/dist/NavMenu/NavMenuPopoutTrigger.torp +47 -0
  184. package/dist/NavMenu/NavMenuSeparator.torp +3 -6
  185. package/dist/NavMenu/NavMenuTypes.ts +6 -15
  186. package/dist/NavMenu/index.d.ts +55 -55
  187. package/dist/NavMenu/index.js +11 -42
  188. package/dist/Notification/Notification.torp +12 -24
  189. package/dist/Notification/NotificationClose.torp +6 -3
  190. package/dist/Notification/NotificationContainer.torp +3 -7
  191. package/dist/Notification/NotificationContent.torp +3 -7
  192. package/dist/Notification/NotificationTypes.ts +1 -1
  193. package/dist/Notification/index.d.ts +15 -12
  194. package/dist/Notification/index.js +22 -32
  195. package/dist/Notification/index.js.map +1 -1
  196. package/dist/NumberInput/NumberInput.torp +255 -0
  197. package/dist/NumberInput/index.d.ts +44 -0
  198. package/dist/NumberInput/index.js +2 -0
  199. package/dist/Pagination/Pagination.torp +152 -0
  200. package/dist/Pagination/PaginationItem.torp +137 -0
  201. package/dist/Pagination/PaginationTypes.ts +22 -0
  202. package/dist/Pagination/buildPages.ts +61 -0
  203. package/dist/Pagination/index.d.ts +63 -0
  204. package/dist/Pagination/index.js +3 -0
  205. package/dist/Popover/Popover.torp +39 -52
  206. package/dist/Popover/PopoverContent.torp +27 -76
  207. package/dist/Popover/PopoverHover.torp +90 -0
  208. package/dist/Popover/PopoverTrigger.torp +17 -40
  209. package/dist/Popover/PopoverTypes.ts +5 -18
  210. package/dist/Popover/index.d.ts +40 -25
  211. package/dist/Popover/index.js +18 -18
  212. package/dist/Popover/index.js.map +1 -1
  213. package/dist/Progress/Progress.torp +88 -0
  214. package/dist/Progress/index.d.ts +37 -0
  215. package/dist/Progress/index.js +2 -0
  216. package/dist/Rating/Rating.torp +225 -0
  217. package/dist/Rating/index.d.ts +44 -0
  218. package/dist/Rating/index.js +2 -0
  219. package/dist/SegmentedControl/SegmentedControl.torp +233 -0
  220. package/dist/SegmentedControl/SegmentedControlTypes.ts +26 -0
  221. package/dist/SegmentedControl/SegmentedItem.torp +78 -0
  222. package/dist/SegmentedControl/index.d.ts +74 -0
  223. package/dist/SegmentedControl/index.js +3 -0
  224. package/dist/SelectBox/SelectBox.torp +190 -0
  225. package/dist/SelectBox/SelectBoxContent.torp +107 -0
  226. package/dist/SelectBox/SelectBoxTrigger.torp +141 -0
  227. package/dist/SelectBox/SelectBoxTypes.ts +33 -0
  228. package/dist/SelectBox/index.d.ts +112 -0
  229. package/dist/SelectBox/index.js +5 -0
  230. package/dist/Slider/Slider.torp +248 -0
  231. package/dist/Slider/index.d.ts +45 -0
  232. package/dist/Slider/index.js +2 -0
  233. package/dist/Splitter/Splitter.torp +156 -0
  234. package/dist/Splitter/SplitterHandle.torp +161 -0
  235. package/dist/Splitter/SplitterPane.torp +63 -0
  236. package/dist/Splitter/SplitterTypes.ts +31 -0
  237. package/dist/Splitter/index.d.ts +103 -0
  238. package/dist/Splitter/index.js +4 -0
  239. package/dist/Stepper/Stepper.torp +146 -0
  240. package/dist/Stepper/StepperMarker.torp +24 -0
  241. package/dist/Stepper/StepperNext.torp +44 -0
  242. package/dist/Stepper/StepperPrevious.torp +44 -0
  243. package/dist/Stepper/StepperStep.torp +90 -0
  244. package/dist/Stepper/StepperTypes.ts +30 -0
  245. package/dist/Stepper/index.d.ts +149 -0
  246. package/dist/Stepper/index.js +6 -0
  247. package/dist/TabGroup/TabContent.torp +6 -6
  248. package/dist/TabGroup/TabGroup.torp +97 -113
  249. package/dist/TabGroup/TabGroupTypes.ts +3 -3
  250. package/dist/TabGroup/TabHeader.torp +23 -19
  251. package/dist/TabGroup/TabList.torp +8 -21
  252. package/dist/TabGroup/TabTrigger.torp +6 -7
  253. package/dist/TabGroup/index.d.ts +26 -26
  254. package/dist/TabGroup/index.js +6 -22
  255. package/dist/TagInput/TagInput.torp +378 -0
  256. package/dist/TagInput/index.d.ts +48 -0
  257. package/dist/TagInput/index.js +2 -0
  258. package/dist/TimePicker/TimePicker.torp +462 -0
  259. package/dist/TimePicker/index.d.ts +53 -0
  260. package/dist/TimePicker/index.js +2 -0
  261. package/dist/ToolBar/ToolBar.torp +117 -0
  262. package/dist/ToolBar/ToolBarButton.torp +56 -0
  263. package/dist/ToolBar/ToolBarElement.torp +51 -0
  264. package/dist/ToolBar/ToolBarPopout.torp +45 -0
  265. package/dist/ToolBar/ToolBarPopoutContent.torp +34 -0
  266. package/dist/ToolBar/ToolBarPopoutTrigger.torp +47 -0
  267. package/dist/ToolBar/ToolBarSeparator.torp +21 -0
  268. package/dist/ToolBar/ToolBarTypes.ts +28 -0
  269. package/dist/ToolBar/index.d.ts +210 -0
  270. package/dist/ToolBar/index.js +8 -0
  271. package/dist/Tree/Tree.torp +395 -0
  272. package/dist/Tree/TreeItem.torp +176 -0
  273. package/dist/Tree/TreeItemChildren.torp +60 -0
  274. package/dist/Tree/TreeItemContent.torp +46 -0
  275. package/dist/Tree/TreeItemLabel.torp +94 -0
  276. package/dist/Tree/TreeItemTrigger.torp +78 -0
  277. package/dist/Tree/TreeLoadedChildren.torp +122 -0
  278. package/dist/Tree/TreeTypes.ts +63 -0
  279. package/dist/Tree/index.d.ts +262 -0
  280. package/dist/Tree/index.js +7 -0
  281. package/dist/icons/ChevronDoubleLeft.torp +19 -0
  282. package/dist/icons/ChevronDoubleRight.torp +19 -0
  283. package/dist/icons/index.d.ts +61 -1
  284. package/dist/icons/index.js +17 -58
  285. package/dist/loader-DEeG5vFY.js +44 -0
  286. package/dist/loader-DEeG5vFY.js.map +1 -0
  287. package/dist/motion/index.d.ts +12 -8
  288. package/dist/motion/index.d.ts.map +1 -0
  289. package/dist/motion/index.js +72 -88
  290. package/dist/motion/index.js.map +1 -1
  291. package/dist/mount/draggable.ts +63 -0
  292. package/dist/mount/dropTarget.ts +108 -0
  293. package/dist/mount/hoverTrigger.ts +1 -1
  294. package/dist/utils/$handle.ts +23 -0
  295. package/dist/utils/LoadedItems.torp +47 -0
  296. package/dist/utils/PopoutClickTrigger.torp +99 -0
  297. package/dist/utils/PopoutTypes.ts +82 -0
  298. package/dist/utils/SubmenuPopout.torp +89 -0
  299. package/dist/utils/SubmenuPopoutContent.torp +87 -0
  300. package/dist/utils/SubmenuPopoutTrigger.torp +160 -0
  301. package/dist/utils/chartColors.ts +13 -13
  302. package/dist/utils/chartLayout.ts +143 -0
  303. package/dist/utils/chartUtils.ts +1 -1
  304. package/dist/utils/colorUtils.ts +103 -0
  305. package/dist/utils/createItemGroup.ts +152 -0
  306. package/dist/utils/dateUtils.ts +8 -7
  307. package/dist/utils/documentEvents.ts +4 -4
  308. package/dist/utils/dragState.ts +86 -0
  309. package/dist/utils/focusGroup.ts +204 -0
  310. package/dist/utils/focusItem.ts +44 -0
  311. package/dist/utils/formField.ts +70 -0
  312. package/dist/utils/hoverOpen.ts +50 -0
  313. package/dist/utils/hoverReveal.ts +194 -0
  314. package/dist/utils/loader.ts +113 -0
  315. package/dist/utils/maskUtils.ts +98 -0
  316. package/dist/utils/popoutContent.ts +137 -0
  317. package/dist/utils/reorderList.ts +52 -0
  318. package/package.json +116 -25
  319. package/dist/Accordion/index.js.map +0 -1
  320. package/dist/Breadcrumb/index.js.map +0 -1
  321. package/dist/Calendar/index.js.map +0 -1
  322. package/dist/Chart/BarChart.torp +0 -159
  323. package/dist/Chart/LineChart.torp +0 -196
  324. package/dist/Chart/index.d.ts +0 -220
  325. package/dist/Chart/index.js +0 -34
  326. package/dist/Chart/index.js.map +0 -1
  327. package/dist/Contextual/index.js.map +0 -1
  328. package/dist/Dialog/index.js.map +0 -1
  329. package/dist/Disclosure/index.js.map +0 -1
  330. package/dist/Drawer/index.js.map +0 -1
  331. package/dist/Form/index.js.map +0 -1
  332. package/dist/Menu/index.js.map +0 -1
  333. package/dist/MenuBar/index.js.map +0 -1
  334. package/dist/NavMenu/NavMenuPopoutButton.torp +0 -129
  335. package/dist/NavMenu/index.js.map +0 -1
  336. package/dist/TabGroup/index.js.map +0 -1
  337. package/dist/icons/index.js.map +0 -1
  338. package/dist/index.d.ts +0 -19
  339. package/dist/metafile-esm.json +0 -1
  340. package/dist/motion/fade.ts +0 -16
  341. package/dist/motion/grow.ts +0 -23
  342. package/dist/motion/measure.ts +0 -28
  343. package/dist/motion/slide.ts +0 -45
  344. package/dist/mount/index.d.ts +0 -2
  345. package/dist/utils/index.d.ts +0 -2
  346. /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 };