@proyecto-viviana/solidaria-components 0.3.2 → 0.4.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 (398) hide show
  1. package/dist/ActionBar.js +184 -0
  2. package/dist/ActionBar.js.map +1 -0
  3. package/dist/ActionBar.jsx +128 -0
  4. package/dist/ActionBar.jsx.map +1 -0
  5. package/dist/ActionGroup.js +179 -0
  6. package/dist/ActionGroup.js.map +1 -0
  7. package/dist/ActionGroup.jsx +129 -0
  8. package/dist/ActionGroup.jsx.map +1 -0
  9. package/dist/Alert.js +111 -0
  10. package/dist/Alert.js.map +1 -0
  11. package/dist/Alert.jsx +82 -0
  12. package/dist/Alert.jsx.map +1 -0
  13. package/dist/Autocomplete.js +130 -0
  14. package/dist/Autocomplete.js.map +1 -0
  15. package/dist/Autocomplete.jsx +116 -0
  16. package/dist/Autocomplete.jsx.map +1 -0
  17. package/dist/Breadcrumbs.d.ts.map +1 -1
  18. package/dist/Breadcrumbs.js +334 -0
  19. package/dist/Breadcrumbs.js.map +1 -0
  20. package/dist/Breadcrumbs.jsx +266 -0
  21. package/dist/Breadcrumbs.jsx.map +1 -0
  22. package/dist/Button.d.ts.map +1 -1
  23. package/dist/Button.js +348 -0
  24. package/dist/Button.js.map +1 -0
  25. package/dist/Button.jsx +314 -0
  26. package/dist/Button.jsx.map +1 -0
  27. package/dist/Calendar.d.ts +4 -4
  28. package/dist/Calendar.d.ts.map +1 -1
  29. package/dist/Calendar.js +538 -0
  30. package/dist/Calendar.js.map +1 -0
  31. package/dist/Calendar.jsx +333 -0
  32. package/dist/Calendar.jsx.map +1 -0
  33. package/dist/CalendarPicker.d.ts +33 -0
  34. package/dist/CalendarPicker.d.ts.map +1 -0
  35. package/dist/CalendarPicker.js +44 -0
  36. package/dist/CalendarPicker.js.map +1 -0
  37. package/dist/CalendarPicker.jsx +44 -0
  38. package/dist/CalendarPicker.jsx.map +1 -0
  39. package/dist/Checkbox.d.ts +83 -4
  40. package/dist/Checkbox.d.ts.map +1 -1
  41. package/dist/Checkbox.js +923 -0
  42. package/dist/Checkbox.js.map +1 -0
  43. package/dist/Checkbox.jsx +707 -0
  44. package/dist/Checkbox.jsx.map +1 -0
  45. package/dist/Collection.d.ts.map +1 -1
  46. package/dist/Collection.js +202 -0
  47. package/dist/Collection.js.map +1 -0
  48. package/dist/Collection.jsx +152 -0
  49. package/dist/Collection.jsx.map +1 -0
  50. package/dist/Color.d.ts.map +1 -1
  51. package/dist/Color.js +1720 -0
  52. package/dist/Color.js.map +1 -0
  53. package/dist/Color.jsx +1344 -0
  54. package/dist/Color.jsx.map +1 -0
  55. package/dist/ColorEditor.js +208 -0
  56. package/dist/ColorEditor.js.map +1 -0
  57. package/dist/ColorEditor.jsx +120 -0
  58. package/dist/ColorEditor.jsx.map +1 -0
  59. package/dist/ComboBox.d.ts +4 -4
  60. package/dist/ComboBox.d.ts.map +1 -1
  61. package/dist/ComboBox.js +992 -0
  62. package/dist/ComboBox.js.map +1 -0
  63. package/dist/ComboBox.jsx +714 -0
  64. package/dist/ComboBox.jsx.map +1 -0
  65. package/dist/ContextualHelpTrigger.js +146 -0
  66. package/dist/ContextualHelpTrigger.js.map +1 -0
  67. package/dist/ContextualHelpTrigger.jsx +109 -0
  68. package/dist/ContextualHelpTrigger.jsx.map +1 -0
  69. package/dist/DateField.d.ts +3 -3
  70. package/dist/DateField.d.ts.map +1 -1
  71. package/dist/DateField.js +4 -0
  72. package/dist/DateField.jsx +4 -0
  73. package/dist/DateField2.js +499 -0
  74. package/dist/DateField2.js.map +1 -0
  75. package/dist/DateField2.jsx +317 -0
  76. package/dist/DateField2.jsx.map +1 -0
  77. package/dist/DatePicker.d.ts +4 -4
  78. package/dist/DatePicker.d.ts.map +1 -1
  79. package/dist/DatePicker.js +991 -0
  80. package/dist/DatePicker.js.map +1 -0
  81. package/dist/DatePicker.jsx +682 -0
  82. package/dist/DatePicker.jsx.map +1 -0
  83. package/dist/Dialog.d.ts.map +1 -1
  84. package/dist/Dialog.js +337 -0
  85. package/dist/Dialog.js.map +1 -0
  86. package/dist/Dialog.jsx +192 -0
  87. package/dist/Dialog.jsx.map +1 -0
  88. package/dist/Disclosure.d.ts.map +1 -1
  89. package/dist/Disclosure.js +328 -0
  90. package/dist/Disclosure.js.map +1 -0
  91. package/dist/Disclosure.jsx +230 -0
  92. package/dist/Disclosure.jsx.map +1 -0
  93. package/dist/DragAndDrop.d.ts.map +1 -1
  94. package/dist/DragAndDrop.js +176 -0
  95. package/dist/DragAndDrop.js.map +1 -0
  96. package/dist/DragAndDrop.jsx +160 -0
  97. package/dist/DragAndDrop.jsx.map +1 -0
  98. package/dist/DropZone.d.ts.map +1 -1
  99. package/dist/DropZone.js +189 -0
  100. package/dist/DropZone.js.map +1 -0
  101. package/dist/DropZone.jsx +144 -0
  102. package/dist/DropZone.jsx.map +1 -0
  103. package/dist/FieldError.js +66 -0
  104. package/dist/FieldError.js.map +1 -0
  105. package/dist/FieldError.jsx +47 -0
  106. package/dist/FieldError.jsx.map +1 -0
  107. package/dist/FileTrigger.js +79 -0
  108. package/dist/FileTrigger.js.map +1 -0
  109. package/dist/FileTrigger.jsx +49 -0
  110. package/dist/FileTrigger.jsx.map +1 -0
  111. package/dist/Focusable.js +70 -0
  112. package/dist/Focusable.js.map +1 -0
  113. package/dist/Focusable.jsx +69 -0
  114. package/dist/Focusable.jsx.map +1 -0
  115. package/dist/Form.js +99 -0
  116. package/dist/Form.js.map +1 -0
  117. package/dist/Form.jsx +73 -0
  118. package/dist/Form.jsx.map +1 -0
  119. package/dist/GridList.d.ts +34 -2
  120. package/dist/GridList.d.ts.map +1 -1
  121. package/dist/GridList.js +723 -0
  122. package/dist/GridList.js.map +1 -0
  123. package/dist/GridList.jsx +552 -0
  124. package/dist/GridList.jsx.map +1 -0
  125. package/dist/HiddenTimeInput.js +104 -0
  126. package/dist/HiddenTimeInput.js.map +1 -0
  127. package/dist/HiddenTimeInput.jsx +69 -0
  128. package/dist/HiddenTimeInput.jsx.map +1 -0
  129. package/dist/Icon.d.ts.map +1 -1
  130. package/dist/Icon.js +127 -0
  131. package/dist/Icon.js.map +1 -0
  132. package/dist/Icon.jsx +72 -0
  133. package/dist/Icon.jsx.map +1 -0
  134. package/dist/Keyboard.js +30 -0
  135. package/dist/Keyboard.js.map +1 -0
  136. package/dist/Keyboard.jsx +24 -0
  137. package/dist/Keyboard.jsx.map +1 -0
  138. package/dist/Landmark.js +134 -0
  139. package/dist/Landmark.js.map +1 -0
  140. package/dist/Landmark.jsx +118 -0
  141. package/dist/Landmark.jsx.map +1 -0
  142. package/dist/Link.d.ts.map +1 -1
  143. package/dist/Link.js +219 -0
  144. package/dist/Link.js.map +1 -0
  145. package/dist/Link.jsx +189 -0
  146. package/dist/Link.jsx.map +1 -0
  147. package/dist/ListBox.d.ts.map +1 -1
  148. package/dist/ListBox.js +670 -0
  149. package/dist/ListBox.js.map +1 -0
  150. package/dist/ListBox.jsx +508 -0
  151. package/dist/ListBox.jsx.map +1 -0
  152. package/dist/Menu.d.ts +27 -9
  153. package/dist/Menu.d.ts.map +1 -1
  154. package/dist/Menu.js +1254 -0
  155. package/dist/Menu.js.map +1 -0
  156. package/dist/Menu.jsx +1042 -0
  157. package/dist/Menu.jsx.map +1 -0
  158. package/dist/Meter.d.ts.map +1 -1
  159. package/dist/Meter.js +123 -0
  160. package/dist/Meter.js.map +1 -0
  161. package/dist/Meter.jsx +107 -0
  162. package/dist/Meter.jsx.map +1 -0
  163. package/dist/Modal.d.ts.map +1 -1
  164. package/dist/Modal.js +380 -0
  165. package/dist/Modal.js.map +1 -0
  166. package/dist/Modal.jsx +314 -0
  167. package/dist/Modal.jsx.map +1 -0
  168. package/dist/NumberField.d.ts +3 -3
  169. package/dist/NumberField.d.ts.map +1 -1
  170. package/dist/NumberField.js +573 -0
  171. package/dist/NumberField.js.map +1 -0
  172. package/dist/NumberField.jsx +443 -0
  173. package/dist/NumberField.jsx.map +1 -0
  174. package/dist/Popover.d.ts +10 -2
  175. package/dist/Popover.d.ts.map +1 -1
  176. package/dist/Popover.js +464 -0
  177. package/dist/Popover.js.map +1 -0
  178. package/dist/Popover.jsx +333 -0
  179. package/dist/Popover.jsx.map +1 -0
  180. package/dist/Pressable.js +69 -0
  181. package/dist/Pressable.js.map +1 -0
  182. package/dist/Pressable.jsx +68 -0
  183. package/dist/Pressable.jsx.map +1 -0
  184. package/dist/ProgressBar.d.ts.map +1 -1
  185. package/dist/ProgressBar.js +130 -0
  186. package/dist/ProgressBar.js.map +1 -0
  187. package/dist/ProgressBar.jsx +114 -0
  188. package/dist/ProgressBar.jsx.map +1 -0
  189. package/dist/RadioGroup.d.ts +82 -4
  190. package/dist/RadioGroup.d.ts.map +1 -1
  191. package/dist/RadioGroup.js +931 -0
  192. package/dist/RadioGroup.js.map +1 -0
  193. package/dist/RadioGroup.jsx +681 -0
  194. package/dist/RadioGroup.jsx.map +1 -0
  195. package/dist/RangeCalendar.d.ts.map +1 -1
  196. package/dist/RangeCalendar.js +410 -0
  197. package/dist/RangeCalendar.js.map +1 -0
  198. package/dist/RangeCalendar.jsx +253 -0
  199. package/dist/RangeCalendar.jsx.map +1 -0
  200. package/dist/RouterProvider.js +118 -0
  201. package/dist/RouterProvider.js.map +1 -0
  202. package/dist/RouterProvider.jsx +112 -0
  203. package/dist/RouterProvider.jsx.map +1 -0
  204. package/dist/SearchField.d.ts +2 -2
  205. package/dist/SearchField.d.ts.map +1 -1
  206. package/dist/SearchField.js +643 -0
  207. package/dist/SearchField.js.map +1 -0
  208. package/dist/SearchField.jsx +526 -0
  209. package/dist/SearchField.jsx.map +1 -0
  210. package/dist/Select.d.ts.map +1 -1
  211. package/dist/Select.js +1031 -0
  212. package/dist/Select.js.map +1 -0
  213. package/dist/Select.jsx +744 -0
  214. package/dist/Select.jsx.map +1 -0
  215. package/dist/SelectionIndicator.d.ts.map +1 -1
  216. package/dist/SelectionIndicator.js +86 -0
  217. package/dist/SelectionIndicator.js.map +1 -0
  218. package/dist/SelectionIndicator.jsx +50 -0
  219. package/dist/SelectionIndicator.jsx.map +1 -0
  220. package/dist/Separator.js +97 -0
  221. package/dist/Separator.js.map +1 -0
  222. package/dist/Separator.jsx +85 -0
  223. package/dist/Separator.jsx.map +1 -0
  224. package/dist/SharedElementTransition.d.ts.map +1 -1
  225. package/dist/SharedElementTransition.js +165 -0
  226. package/dist/SharedElementTransition.js.map +1 -0
  227. package/dist/SharedElementTransition.jsx +138 -0
  228. package/dist/SharedElementTransition.jsx.map +1 -0
  229. package/dist/Slider.d.ts +33 -1
  230. package/dist/Slider.d.ts.map +1 -1
  231. package/dist/Slider.js +515 -0
  232. package/dist/Slider.js.map +1 -0
  233. package/dist/Slider.jsx +403 -0
  234. package/dist/Slider.jsx.map +1 -0
  235. package/dist/StepList.js +198 -0
  236. package/dist/StepList.js.map +1 -0
  237. package/dist/StepList.jsx +141 -0
  238. package/dist/StepList.jsx.map +1 -0
  239. package/dist/Switch.d.ts +65 -2
  240. package/dist/Switch.d.ts.map +1 -1
  241. package/dist/Switch.js +534 -0
  242. package/dist/Switch.js.map +1 -0
  243. package/dist/Switch.jsx +393 -0
  244. package/dist/Switch.jsx.map +1 -0
  245. package/dist/Table.d.ts +48 -0
  246. package/dist/Table.d.ts.map +1 -1
  247. package/dist/Table.js +1759 -0
  248. package/dist/Table.js.map +1 -0
  249. package/dist/Table.jsx +1348 -0
  250. package/dist/Table.jsx.map +1 -0
  251. package/dist/Tabs.d.ts +0 -4
  252. package/dist/Tabs.d.ts.map +1 -1
  253. package/dist/Tabs.js +595 -0
  254. package/dist/Tabs.js.map +1 -0
  255. package/dist/Tabs.jsx +367 -0
  256. package/dist/Tabs.jsx.map +1 -0
  257. package/dist/TagGroup.d.ts.map +1 -1
  258. package/dist/TagGroup.js +378 -0
  259. package/dist/TagGroup.js.map +1 -0
  260. package/dist/TagGroup.jsx +270 -0
  261. package/dist/TagGroup.jsx.map +1 -0
  262. package/dist/Text.d.ts +18 -6
  263. package/dist/Text.d.ts.map +1 -1
  264. package/dist/Text.js +42 -0
  265. package/dist/Text.js.map +1 -0
  266. package/dist/Text.jsx +35 -0
  267. package/dist/Text.jsx.map +1 -0
  268. package/dist/TextField.d.ts +6 -6
  269. package/dist/TextField.d.ts.map +1 -1
  270. package/dist/TextField.js +436 -0
  271. package/dist/TextField.js.map +1 -0
  272. package/dist/TextField.jsx +403 -0
  273. package/dist/TextField.jsx.map +1 -0
  274. package/dist/TimeField.d.ts +3 -3
  275. package/dist/TimeField.d.ts.map +1 -1
  276. package/dist/TimeField.js +372 -0
  277. package/dist/TimeField.js.map +1 -0
  278. package/dist/TimeField.jsx +224 -0
  279. package/dist/TimeField.jsx.map +1 -0
  280. package/dist/Toast.d.ts +14 -0
  281. package/dist/Toast.d.ts.map +1 -1
  282. package/dist/Toast.js +551 -0
  283. package/dist/Toast.js.map +1 -0
  284. package/dist/Toast.jsx +361 -0
  285. package/dist/Toast.jsx.map +1 -0
  286. package/dist/ToggleButton.d.ts.map +1 -1
  287. package/dist/ToggleButton.js +123 -0
  288. package/dist/ToggleButton.js.map +1 -0
  289. package/dist/ToggleButton.jsx +88 -0
  290. package/dist/ToggleButton.jsx.map +1 -0
  291. package/dist/ToggleButtonGroup.d.ts.map +1 -1
  292. package/dist/ToggleButtonGroup.js +114 -0
  293. package/dist/ToggleButtonGroup.js.map +1 -0
  294. package/dist/ToggleButtonGroup.jsx +85 -0
  295. package/dist/ToggleButtonGroup.jsx.map +1 -0
  296. package/dist/Toolbar.js +112 -0
  297. package/dist/Toolbar.js.map +1 -0
  298. package/dist/Toolbar.jsx +92 -0
  299. package/dist/Toolbar.jsx.map +1 -0
  300. package/dist/Tooltip.d.ts.map +1 -1
  301. package/dist/Tooltip.js +539 -0
  302. package/dist/Tooltip.js.map +1 -0
  303. package/dist/Tooltip.jsx +465 -0
  304. package/dist/Tooltip.jsx.map +1 -0
  305. package/dist/Tree.d.ts +14 -2
  306. package/dist/Tree.d.ts.map +1 -1
  307. package/dist/Tree.js +1424 -0
  308. package/dist/Tree.js.map +1 -0
  309. package/dist/Tree.jsx +1172 -0
  310. package/dist/Tree.jsx.map +1 -0
  311. package/dist/Virtualizer.d.ts +16 -2
  312. package/dist/Virtualizer.d.ts.map +1 -1
  313. package/dist/Virtualizer.js +2 -0
  314. package/dist/Virtualizer.jsx +2 -0
  315. package/dist/Virtualizer2.js +751 -0
  316. package/dist/Virtualizer2.js.map +1 -0
  317. package/dist/Virtualizer2.jsx +730 -0
  318. package/dist/Virtualizer2.jsx.map +1 -0
  319. package/dist/VirtualizerLayouts.d.ts +18 -0
  320. package/dist/VirtualizerLayouts.d.ts.map +1 -1
  321. package/dist/VisuallyHidden.js +42 -0
  322. package/dist/VisuallyHidden.js.map +1 -0
  323. package/dist/VisuallyHidden.jsx +35 -0
  324. package/dist/VisuallyHidden.jsx.map +1 -0
  325. package/dist/contexts.js +33 -0
  326. package/dist/contexts.js.map +1 -0
  327. package/dist/contexts.jsx +33 -0
  328. package/dist/contexts.jsx.map +1 -0
  329. package/dist/index.d.ts +7 -6
  330. package/dist/index.d.ts.map +1 -1
  331. package/dist/index.js +70 -23932
  332. package/dist/index.jsx +70 -18337
  333. package/dist/useDragAndDrop.js +2 -0
  334. package/dist/useDragAndDrop.jsx +2 -0
  335. package/dist/useDragAndDrop2.js +395 -0
  336. package/dist/useDragAndDrop2.js.map +1 -0
  337. package/dist/useDragAndDrop2.jsx +395 -0
  338. package/dist/useDragAndDrop2.jsx.map +1 -0
  339. package/dist/utils.d.ts +83 -11
  340. package/dist/utils.d.ts.map +1 -1
  341. package/dist/utils.js +285 -0
  342. package/dist/utils.js.map +1 -0
  343. package/dist/utils.jsx +277 -0
  344. package/dist/utils.jsx.map +1 -0
  345. package/dist/virtualizer/Layout.js +144 -0
  346. package/dist/virtualizer/Layout.js.map +1 -0
  347. package/dist/virtualizer/Layout.jsx +144 -0
  348. package/dist/virtualizer/Layout.jsx.map +1 -0
  349. package/package.json +401 -4
  350. package/src/Breadcrumbs.tsx +3 -1
  351. package/src/Button.tsx +22 -2
  352. package/src/Calendar.tsx +27 -10
  353. package/src/CalendarPicker.tsx +73 -0
  354. package/src/Checkbox.tsx +539 -3
  355. package/src/Collection.tsx +9 -3
  356. package/src/Color.tsx +42 -14
  357. package/src/ComboBox.tsx +50 -6
  358. package/src/DateField.tsx +20 -2
  359. package/src/DatePicker.tsx +57 -5
  360. package/src/Dialog.tsx +13 -5
  361. package/src/Disclosure.tsx +3 -1
  362. package/src/DragAndDrop.tsx +3 -1
  363. package/src/DropZone.tsx +3 -1
  364. package/src/GridList.tsx +125 -24
  365. package/src/Icon.tsx +3 -1
  366. package/src/Link.tsx +3 -1
  367. package/src/ListBox.tsx +31 -4
  368. package/src/Menu.tsx +252 -128
  369. package/src/Meter.tsx +3 -1
  370. package/src/Modal.tsx +100 -52
  371. package/src/NumberField.tsx +51 -8
  372. package/src/Popover.tsx +40 -10
  373. package/src/ProgressBar.tsx +3 -1
  374. package/src/RadioGroup.tsx +468 -4
  375. package/src/RangeCalendar.tsx +3 -1
  376. package/src/SearchField.tsx +27 -3
  377. package/src/Select.tsx +22 -7
  378. package/src/SelectionIndicator.tsx +3 -1
  379. package/src/SharedElementTransition.tsx +3 -1
  380. package/src/Slider.tsx +159 -13
  381. package/src/Switch.tsx +395 -2
  382. package/src/Table.tsx +409 -95
  383. package/src/Tabs.tsx +16 -45
  384. package/src/TagGroup.tsx +3 -1
  385. package/src/Text.tsx +31 -10
  386. package/src/TextField.tsx +43 -5
  387. package/src/TimeField.tsx +20 -2
  388. package/src/Toast.tsx +79 -14
  389. package/src/ToggleButton.tsx +3 -1
  390. package/src/ToggleButtonGroup.tsx +3 -1
  391. package/src/Tooltip.tsx +3 -1
  392. package/src/Tree.tsx +77 -9
  393. package/src/Virtualizer.tsx +180 -31
  394. package/src/VirtualizerLayouts.ts +45 -10
  395. package/src/index.ts +50 -0
  396. package/src/utils.tsx +243 -27
  397. package/dist/index.js.map +0 -1
  398. package/dist/index.jsx.map +0 -1
@@ -0,0 +1,465 @@
1
+ import { filterDOMProps, useRenderProps } from "./utils.jsx";
2
+ import { Show, createContext, createEffect, createMemo, createSignal, onCleanup, useContext } from "solid-js";
3
+ import { isServer } from "solid-js/web";
4
+ import { OverlayContainer, createTooltip, createTooltipTrigger } from "@proyecto-viviana/solidaria";
5
+ import { createTooltipTriggerState } from "@proyecto-viviana/solid-stately";
6
+ //#region src/Tooltip.tsx
7
+ /**
8
+ * Tooltip component for solidaria-components
9
+ *
10
+ * A tooltip displays a description of an element on hover or focus.
11
+ * Port of react-aria-components/src/Tooltip.tsx
12
+ */
13
+ const TooltipTriggerContext = createContext(null);
14
+ const TooltipContext = TooltipTriggerContext;
15
+ const TooltipTriggerStateContext = createContext(null);
16
+ /**
17
+ * TooltipTrigger wraps around a trigger element and a Tooltip.
18
+ * It handles opening and closing the Tooltip when the user hovers
19
+ * over or focuses the trigger.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * <TooltipTrigger>
24
+ * <Button>Hover me</Button>
25
+ * <Tooltip>This is a tooltip</Tooltip>
26
+ * </TooltipTrigger>
27
+ * ```
28
+ */
29
+ const TooltipTrigger = (props) => {
30
+ let triggerRef = null;
31
+ const [tooltipId, setTooltipId] = createSignal();
32
+ const state = createTooltipTriggerState({
33
+ get delay() {
34
+ return props.delay;
35
+ },
36
+ get closeDelay() {
37
+ return props.closeDelay;
38
+ },
39
+ get isOpen() {
40
+ return props.isOpen;
41
+ },
42
+ get defaultOpen() {
43
+ return props.defaultOpen;
44
+ },
45
+ get onOpenChange() {
46
+ return props.onOpenChange;
47
+ }
48
+ });
49
+ const { triggerProps, tooltipProps } = createTooltipTrigger({
50
+ get isDisabled() {
51
+ return props.isDisabled;
52
+ },
53
+ get trigger() {
54
+ return props.trigger;
55
+ },
56
+ get shouldCloseOnPress() {
57
+ return props.shouldCloseOnPress;
58
+ },
59
+ get tooltipId() {
60
+ return tooltipId();
61
+ }
62
+ }, state, () => triggerRef);
63
+ const context = {
64
+ state,
65
+ tooltipProps,
66
+ setTooltipId,
67
+ triggerRef: () => triggerRef,
68
+ placement: () => props.placement,
69
+ containerPadding: () => props.containerPadding,
70
+ crossOffset: () => props.crossOffset,
71
+ shouldFlip: () => props.shouldFlip,
72
+ isDisabled: () => props.isDisabled
73
+ };
74
+ const processChildren = () => {
75
+ const children = props.children;
76
+ if (Array.isArray(children)) {
77
+ const [trigger, ...rest] = children;
78
+ return <>
79
+ <TriggerWrapper triggerProps={triggerProps} ref={(el) => {
80
+ triggerRef = el;
81
+ }}>
82
+ {trigger}
83
+ </TriggerWrapper>
84
+ {rest}
85
+ </>;
86
+ }
87
+ return children;
88
+ };
89
+ return <TooltipTriggerStateContext.Provider value={state}>
90
+ <TooltipTriggerContext.Provider value={context}>
91
+ {processChildren()}
92
+ </TooltipTriggerContext.Provider>
93
+ </TooltipTriggerStateContext.Provider>;
94
+ };
95
+ /**
96
+ * Wrapper component that spreads trigger props onto its child
97
+ */
98
+ const TriggerWrapper = (props) => {
99
+ const child = () => props.children;
100
+ const [triggerElement, setTriggerElement] = createSignal(null);
101
+ const [wrapperElement, setWrapperElement] = createSignal(null);
102
+ const getWrapperEventProps = () => {
103
+ const triggerProps = props.triggerProps;
104
+ const wrapperProps = {};
105
+ for (const propName of [
106
+ "onFocus",
107
+ "onBlur",
108
+ "onPointerEnter",
109
+ "onPointerLeave",
110
+ "onPointerOver",
111
+ "onPointerOut",
112
+ "onMouseEnter",
113
+ "onMouseLeave",
114
+ "onTouchStart",
115
+ "onPointerDown",
116
+ "onKeyDown"
117
+ ]) {
118
+ const handler = triggerProps[propName];
119
+ if (typeof handler === "function") wrapperProps[propName] = handler;
120
+ }
121
+ if (!wrapperProps.onPointerEnter && typeof triggerProps.onMouseEnter === "function") wrapperProps.onPointerEnter = triggerProps.onMouseEnter;
122
+ if (!wrapperProps.onPointerLeave && typeof triggerProps.onMouseLeave === "function") wrapperProps.onPointerLeave = triggerProps.onMouseLeave;
123
+ return wrapperProps;
124
+ };
125
+ createEffect(() => {
126
+ const element = triggerElement();
127
+ if (!element) return;
128
+ const triggerProps = props.triggerProps;
129
+ const describedBy = triggerProps["aria-describedby"];
130
+ if (describedBy) element.setAttribute("aria-describedby", describedBy);
131
+ else element.removeAttribute("aria-describedby");
132
+ const wrapper = wrapperElement();
133
+ const targets = Array.from(new Set([element, wrapper].filter(Boolean)));
134
+ const listeners = [];
135
+ for (const [propName, eventName] of [
136
+ ["onFocus", "focus"],
137
+ ["onBlur", "blur"],
138
+ ["onPointerEnter", "pointerenter"],
139
+ ["onPointerLeave", "pointerleave"],
140
+ ["onPointerOver", "pointerover"],
141
+ ["onPointerOut", "pointerout"],
142
+ ["onMouseEnter", "mouseenter"],
143
+ ["onMouseLeave", "mouseleave"],
144
+ ["onTouchStart", "touchstart"],
145
+ ["onPointerDown", "pointerdown"],
146
+ ["onKeyDown", "keydown"]
147
+ ]) {
148
+ let handler = triggerProps[propName];
149
+ if (!handler && propName === "onPointerEnter") handler = triggerProps.onMouseEnter;
150
+ else if (!handler && propName === "onPointerLeave") handler = triggerProps.onMouseLeave;
151
+ if (typeof handler === "function") {
152
+ const listener = handler;
153
+ for (const target of targets) {
154
+ target.addEventListener(eventName, listener);
155
+ listeners.push([
156
+ target,
157
+ eventName,
158
+ listener
159
+ ]);
160
+ }
161
+ }
162
+ }
163
+ onCleanup(() => {
164
+ for (const [target, eventName, listener] of listeners) target.removeEventListener(eventName, listener);
165
+ if (describedBy && element.getAttribute("aria-describedby") === describedBy) element.removeAttribute("aria-describedby");
166
+ });
167
+ });
168
+ const handleRef = (span) => {
169
+ setWrapperElement(span);
170
+ const findElementChild = (el) => {
171
+ for (const child of el.children) {
172
+ if (child instanceof HTMLElement) return child;
173
+ const found = findElementChild(child);
174
+ if (found) return found;
175
+ }
176
+ return null;
177
+ };
178
+ const findVisibleChild = (el) => {
179
+ if (el instanceof HTMLElement) {
180
+ const rect = el.getBoundingClientRect();
181
+ if (rect.width > 0 && rect.height > 0) return el;
182
+ for (const child of el.children) {
183
+ const found = findVisibleChild(child);
184
+ if (found) return found;
185
+ }
186
+ }
187
+ return null;
188
+ };
189
+ const resolveRef = () => {
190
+ const elementChild = findElementChild(span);
191
+ const visibleChild = findVisibleChild(span);
192
+ setTriggerElement(elementChild ?? visibleChild ?? span);
193
+ props.ref(visibleChild ?? elementChild ?? span);
194
+ };
195
+ const elementChild = findElementChild(span);
196
+ if (elementChild) setTriggerElement(elementChild);
197
+ const immediateChild = findVisibleChild(span);
198
+ if (immediateChild) {
199
+ setTriggerElement(elementChild ?? immediateChild);
200
+ props.ref(immediateChild);
201
+ } else requestAnimationFrame(resolveRef);
202
+ };
203
+ return <span {...getWrapperEventProps()} ref={handleRef} style={{ display: "contents" }}>
204
+ {child()}
205
+ </span>;
206
+ };
207
+ /**
208
+ * A tooltip displays a description of an element on hover or focus.
209
+ *
210
+ * @example
211
+ * ```tsx
212
+ * <TooltipTrigger>
213
+ * <Button>Hover me</Button>
214
+ * <Tooltip>This is helpful information</Tooltip>
215
+ * </TooltipTrigger>
216
+ * ```
217
+ */
218
+ function Tooltip(props) {
219
+ const context = useContext(TooltipTriggerContext);
220
+ createEffect(() => {
221
+ context?.setTooltipId(props.id);
222
+ onCleanup(() => {
223
+ context?.setTooltipId(void 0);
224
+ });
225
+ });
226
+ const localState = createTooltipTriggerState({
227
+ get isOpen() {
228
+ return props.isOpen;
229
+ },
230
+ get defaultOpen() {
231
+ return props.defaultOpen;
232
+ }
233
+ });
234
+ const state = () => context?.state ?? localState;
235
+ const placement = () => props.placement ?? context?.placement() ?? "top";
236
+ const containerPadding = () => props.containerPadding ?? context?.containerPadding() ?? 12;
237
+ const crossOffset = () => props.crossOffset ?? context?.crossOffset() ?? 0;
238
+ const shouldFlip = () => props.shouldFlip ?? context?.shouldFlip() ?? true;
239
+ const offset = () => props.offset ?? 9;
240
+ const arrowSize = () => props.arrowSize ?? 0;
241
+ const arrowBoundaryOffset = () => props.arrowBoundaryOffset ?? 0;
242
+ const isDisabled = () => props.isDisabled ?? context?.isDisabled() ?? false;
243
+ const isOpen = () => !isDisabled() && state().isOpen();
244
+ const [exitState, setExitState] = createSignal(isOpen() ? "open" : "closed");
245
+ createEffect(() => {
246
+ const open = isOpen();
247
+ const current = exitState();
248
+ if (current === "open" && !open) setExitState("exiting");
249
+ else if ((current === "closed" || current === "exiting") && open) setExitState("open");
250
+ });
251
+ const [tooltipEl, setTooltipEl] = createSignal(null);
252
+ createEffect(() => {
253
+ if (exitState() !== "exiting") return;
254
+ const el = tooltipEl();
255
+ if (!el || !("getAnimations" in el)) {
256
+ setExitState("closed");
257
+ return;
258
+ }
259
+ const animations = el.getAnimations();
260
+ if (animations.length === 0) {
261
+ setExitState("closed");
262
+ return;
263
+ }
264
+ let canceled = false;
265
+ Promise.all(animations.map((a) => a.finished)).then(() => {
266
+ if (!canceled) setExitState((s) => s === "exiting" ? "closed" : s);
267
+ }).catch(() => {
268
+ if (!canceled) setExitState((s) => s === "exiting" ? "closed" : s);
269
+ });
270
+ onCleanup(() => {
271
+ canceled = true;
272
+ });
273
+ });
274
+ const shouldRender = () => isOpen() || exitState() === "exiting";
275
+ const isExiting = () => exitState() === "exiting";
276
+ return <Show when={shouldRender()}>
277
+ <TooltipContent {...props} state={state()} contextTooltipProps={context?.tooltipProps ?? {}} placement={placement()} containerPadding={containerPadding()} crossOffset={crossOffset()} shouldFlip={shouldFlip()} offset={offset()} arrowSize={arrowSize()} arrowBoundaryOffset={arrowBoundaryOffset()} triggerRef={context?.triggerRef ?? (() => null)} isExiting={isExiting()} onTooltipRef={setTooltipEl} />
278
+ </Show>;
279
+ }
280
+ /**
281
+ * Internal component that renders the tooltip content
282
+ */
283
+ function TooltipContent(props) {
284
+ if (isServer) return null;
285
+ let tooltipRef;
286
+ const { tooltipProps: ariaTooltipProps } = createTooltip({}, props.state);
287
+ const [positionStyles, setPositionStyles] = createSignal({
288
+ top: "0px",
289
+ left: "0px",
290
+ visibility: "visible"
291
+ });
292
+ const [renderedPlacement, setRenderedPlacement] = createSignal(resolvePlacement(props.placement));
293
+ const [isEntering, setIsEntering] = createSignal(true);
294
+ createEffect(() => {
295
+ if (!isEntering()) return;
296
+ if (!tooltipRef || !("getAnimations" in tooltipRef)) {
297
+ setIsEntering(false);
298
+ return;
299
+ }
300
+ for (const anim of tooltipRef.getAnimations()) if (anim instanceof CSSTransition) anim.cancel();
301
+ const animations = tooltipRef.getAnimations();
302
+ if (animations.length === 0) {
303
+ setIsEntering(false);
304
+ return;
305
+ }
306
+ let canceled = false;
307
+ Promise.all(animations.map((a) => a.finished)).then(() => {
308
+ if (!canceled) setIsEntering(false);
309
+ }).catch(() => {
310
+ if (!canceled) setIsEntering(false);
311
+ });
312
+ onCleanup(() => {
313
+ canceled = true;
314
+ });
315
+ });
316
+ const values = createMemo(() => ({
317
+ isEntering: isEntering(),
318
+ isExiting: props.isExiting,
319
+ placement: renderedPlacement()
320
+ }));
321
+ const renderProps = useRenderProps({
322
+ class: props.class,
323
+ style: props.style,
324
+ get children() {
325
+ return props.children;
326
+ },
327
+ defaultClassName: "solidaria-Tooltip"
328
+ }, values);
329
+ const updatePosition = () => {
330
+ const triggerEl = props.triggerRef();
331
+ if (!triggerEl || !tooltipRef) return false;
332
+ const triggerRect = triggerEl.getBoundingClientRect();
333
+ if (triggerRect.width === 0 || triggerRect.height === 0) return false;
334
+ const tooltipWidth = tooltipRef.offsetWidth;
335
+ const tooltipHeight = tooltipRef.offsetHeight;
336
+ const viewportWidth = window.innerWidth;
337
+ const viewportHeight = window.innerHeight;
338
+ const containerPadding = props.containerPadding;
339
+ const crossOffset = props.crossOffset;
340
+ const placement = maybeFlipPlacement(resolvePlacement(props.placement), triggerRect, tooltipWidth, tooltipHeight, viewportWidth, viewportHeight, containerPadding, props.offset, props.shouldFlip);
341
+ let top = 0;
342
+ let left = 0;
343
+ switch (placement) {
344
+ case "top":
345
+ top = triggerRect.top - tooltipHeight - props.offset;
346
+ left = triggerRect.left + (triggerRect.width - tooltipWidth) / 2 + crossOffset;
347
+ break;
348
+ case "bottom":
349
+ top = triggerRect.bottom + props.offset;
350
+ left = triggerRect.left + (triggerRect.width - tooltipWidth) / 2 + crossOffset;
351
+ break;
352
+ case "left":
353
+ top = triggerRect.top + (triggerRect.height - tooltipHeight) / 2 + crossOffset;
354
+ left = triggerRect.left - tooltipWidth - props.offset;
355
+ break;
356
+ case "right":
357
+ top = triggerRect.top + (triggerRect.height - tooltipHeight) / 2 + crossOffset;
358
+ left = triggerRect.right + props.offset;
359
+ break;
360
+ }
361
+ if (placement === "top" || placement === "bottom") {
362
+ left = clamp(left, triggerRect.left - tooltipWidth + props.arrowSize + props.arrowBoundaryOffset, triggerRect.left + triggerRect.width - props.arrowSize - props.arrowBoundaryOffset);
363
+ left = clamp(left, containerPadding, viewportWidth - tooltipWidth - containerPadding);
364
+ } else {
365
+ top = clamp(top, triggerRect.top - tooltipHeight + props.arrowSize + props.arrowBoundaryOffset, triggerRect.top + triggerRect.height - props.arrowSize - props.arrowBoundaryOffset);
366
+ top = clamp(top, containerPadding, viewportHeight - tooltipHeight - containerPadding);
367
+ }
368
+ setRenderedPlacement(placement);
369
+ setPositionStyles({
370
+ top: `${Math.floor(top + window.scrollY)}px`,
371
+ left: `${Math.floor(left + window.scrollX)}px`,
372
+ visibility: "visible"
373
+ });
374
+ return true;
375
+ };
376
+ createEffect(() => {
377
+ props.placement;
378
+ props.containerPadding;
379
+ props.crossOffset;
380
+ props.shouldFlip;
381
+ props.offset;
382
+ props.arrowSize;
383
+ props.arrowBoundaryOffset;
384
+ let retryCount = 0;
385
+ const maxRetries = 5;
386
+ let pendingRaf = 0;
387
+ let pendingTimeout = 0;
388
+ const tryUpdatePosition = () => {
389
+ pendingRaf = 0;
390
+ pendingTimeout = 0;
391
+ if (!updatePosition() && retryCount < maxRetries) {
392
+ retryCount++;
393
+ pendingTimeout = window.setTimeout(tryUpdatePosition, 16);
394
+ }
395
+ };
396
+ pendingRaf = requestAnimationFrame(tryUpdatePosition);
397
+ const closeOnScroll = (event) => {
398
+ const trigger = props.triggerRef();
399
+ const target = event.target;
400
+ if (!trigger || target instanceof Node && !target.contains(trigger)) return;
401
+ if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) return;
402
+ props.state.close(true);
403
+ };
404
+ window.addEventListener("scroll", closeOnScroll, true);
405
+ window.addEventListener("resize", updatePosition);
406
+ onCleanup(() => {
407
+ if (pendingRaf) cancelAnimationFrame(pendingRaf);
408
+ if (pendingTimeout) clearTimeout(pendingTimeout);
409
+ window.removeEventListener("scroll", closeOnScroll, true);
410
+ window.removeEventListener("resize", updatePosition);
411
+ });
412
+ });
413
+ const domProps = filterDOMProps(props, { global: true });
414
+ const tooltipId = () => props.contextTooltipProps.id ?? domProps.id;
415
+ const { ref: _ariaRef, ...cleanAriaProps } = ariaTooltipProps;
416
+ const setRef = (el) => {
417
+ tooltipRef = el;
418
+ if (!props.dir) el.dir = getDocumentDirection();
419
+ if (!props.lang) {
420
+ const documentLang = document.documentElement.lang;
421
+ const navigatorLang = typeof navigator !== "undefined" ? navigator.language : "";
422
+ el.lang = documentLang.includes("-") ? documentLang : navigatorLang || documentLang || "en-US";
423
+ }
424
+ props.onTooltipRef(el);
425
+ };
426
+ onCleanup(() => {
427
+ props.onTooltipRef(null);
428
+ });
429
+ return <OverlayContainer>
430
+ <div {...domProps} {...cleanAriaProps} id={tooltipId()} role="tooltip" ref={setRef} class={renderProps.class()} style={{
431
+ position: "absolute",
432
+ "z-index": 1e5,
433
+ ...positionStyles(),
434
+ ...renderProps.style()
435
+ }} data-placement={renderedPlacement()} data-entering={isEntering() || void 0} data-exiting={props.isExiting || void 0}>
436
+ {renderProps.renderChildren()}
437
+ </div>
438
+ </OverlayContainer>;
439
+ }
440
+ function resolvePlacement(placement) {
441
+ if (placement === "start") return getDocumentDirection() === "rtl" ? "right" : "left";
442
+ if (placement === "end") return getDocumentDirection() === "rtl" ? "left" : "right";
443
+ return placement;
444
+ }
445
+ function getDocumentDirection() {
446
+ if (typeof document === "undefined") return "ltr";
447
+ return document.documentElement.dir === "rtl" ? "rtl" : "ltr";
448
+ }
449
+ function maybeFlipPlacement(placement, triggerRect, tooltipWidth, tooltipHeight, viewportWidth, viewportHeight, containerPadding, offset, shouldFlip) {
450
+ if (!shouldFlip) return placement;
451
+ switch (placement) {
452
+ case "top": return triggerRect.top - tooltipHeight - offset < containerPadding ? "bottom" : placement;
453
+ case "bottom": return triggerRect.bottom + tooltipHeight + offset > viewportHeight - containerPadding ? "top" : placement;
454
+ case "left": return triggerRect.left - tooltipWidth - offset < containerPadding ? "right" : placement;
455
+ case "right": return triggerRect.right + tooltipWidth + offset > viewportWidth - containerPadding ? "left" : placement;
456
+ }
457
+ }
458
+ function clamp(value, min, max) {
459
+ if (max < min) return min;
460
+ return Math.min(Math.max(value, min), max);
461
+ }
462
+ //#endregion
463
+ export { Tooltip, TooltipContext, TooltipTrigger, TooltipTriggerStateContext };
464
+
465
+ //# sourceMappingURL=Tooltip.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.jsx","names":[],"sources":["../src/Tooltip.tsx"],"sourcesContent":["/**\n * Tooltip component for solidaria-components\n *\n * A tooltip displays a description of an element on hover or focus.\n * Port of react-aria-components/src/Tooltip.tsx\n */\n\nimport {\n type JSX,\n type ParentComponent,\n createContext,\n useContext,\n createMemo,\n createSignal,\n createEffect,\n onCleanup,\n Show,\n} from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport {\n createTooltipTriggerState,\n type TooltipTriggerState,\n type TooltipTriggerProps as StateProps,\n} from \"@proyecto-viviana/solid-stately\";\nimport {\n createTooltip,\n createTooltipTrigger,\n type TooltipTriggerProps as AriaProps,\n OverlayContainer,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\n\nexport interface TooltipRenderProps {\n /** Whether the tooltip is currently entering (for animations). */\n isEntering: boolean;\n /** Whether the tooltip is currently exiting (for animations). */\n isExiting: boolean;\n /** The placement of the tooltip relative to the trigger. */\n placement: TooltipResolvedPlacement | null;\n}\n\nexport type TooltipPlacement = \"top\" | \"bottom\" | \"left\" | \"right\" | \"start\" | \"end\";\nexport type TooltipResolvedPlacement = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface TooltipTriggerComponentProps extends StateProps, AriaProps {\n /** The children of the tooltip trigger (trigger element and tooltip). */\n children: JSX.Element;\n /** The placement of the tooltip relative to the trigger. */\n placement?: TooltipPlacement;\n /** The placement padding between the tooltip and viewport edge. */\n containerPadding?: number;\n /** The additional offset along the cross axis. */\n crossOffset?: number;\n /** Whether the tooltip should flip when there is insufficient room. */\n shouldFlip?: boolean;\n}\n\nexport interface TooltipProps extends SlotProps {\n /** The element id. */\n id?: string;\n /** Custom aria-label for the tooltip. */\n \"aria-label\"?: string;\n /** ID of an element that labels the tooltip. */\n \"aria-labelledby\"?: string;\n /** ID of an element that describes the tooltip. */\n \"aria-describedby\"?: string;\n /** ID of an element that provides details for the tooltip. */\n \"aria-details\"?: string;\n /** The children of the tooltip. A function may be provided to receive render props. */\n children?: RenderChildren<TooltipRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<TooltipRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<TooltipRenderProps>;\n /** Whether the tooltip is open (controlled). */\n isOpen?: boolean;\n /** Whether the tooltip is open by default (uncontrolled). */\n defaultOpen?: boolean;\n /** The placement of the tooltip relative to the trigger. */\n placement?: TooltipPlacement;\n /** The placement padding between the tooltip and viewport edge. */\n containerPadding?: number;\n /** The additional offset along the cross axis. */\n crossOffset?: number;\n /** Whether the tooltip should flip when there is insufficient room. */\n shouldFlip?: boolean;\n /** The offset between the tooltip and trigger. */\n offset?: number;\n /** The arrow size used to keep the arrow overlapping the trigger. */\n arrowSize?: number;\n /** The padding between the arrow and tooltip edge. */\n arrowBoundaryOffset?: number;\n /** Whether the tooltip should be disabled. */\n isDisabled?: boolean;\n /** The element language. */\n lang?: string;\n /** The text direction. */\n dir?: \"ltr\" | \"rtl\";\n}\n\ninterface TooltipTriggerContextValue {\n state: TooltipTriggerState;\n tooltipProps: { readonly id: string };\n setTooltipId: (id: string | undefined) => void;\n triggerRef: () => HTMLElement | null | undefined;\n placement: () => TooltipPlacement | undefined;\n containerPadding: () => number | undefined;\n crossOffset: () => number | undefined;\n shouldFlip: () => boolean | undefined;\n isDisabled: () => boolean | undefined;\n}\n\nconst TooltipTriggerContext = createContext<TooltipTriggerContextValue | null>(null);\nexport const TooltipContext = TooltipTriggerContext;\nexport const TooltipTriggerStateContext = createContext<TooltipTriggerState | null>(null);\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip.\n * It handles opening and closing the Tooltip when the user hovers\n * over or focuses the trigger.\n *\n * @example\n * ```tsx\n * <TooltipTrigger>\n * <Button>Hover me</Button>\n * <Tooltip>This is a tooltip</Tooltip>\n * </TooltipTrigger>\n * ```\n */\nexport const TooltipTrigger: ParentComponent<TooltipTriggerComponentProps> = (props) => {\n let triggerRef: HTMLElement | null = null;\n const [tooltipId, setTooltipId] = createSignal<string | undefined>();\n\n const state = createTooltipTriggerState({\n get delay() {\n return props.delay;\n },\n get closeDelay() {\n return props.closeDelay;\n },\n get isOpen() {\n return props.isOpen;\n },\n get defaultOpen() {\n return props.defaultOpen;\n },\n get onOpenChange() {\n return props.onOpenChange;\n },\n });\n\n const { triggerProps, tooltipProps } = createTooltipTrigger(\n {\n get isDisabled() {\n return props.isDisabled;\n },\n get trigger() {\n return props.trigger;\n },\n get shouldCloseOnPress() {\n return props.shouldCloseOnPress;\n },\n get tooltipId() {\n return tooltipId();\n },\n },\n state,\n () => triggerRef,\n );\n\n const context: TooltipTriggerContextValue = {\n state,\n tooltipProps,\n setTooltipId,\n triggerRef: () => triggerRef,\n placement: () => props.placement,\n containerPadding: () => props.containerPadding,\n crossOffset: () => props.crossOffset,\n shouldFlip: () => props.shouldFlip,\n isDisabled: () => props.isDisabled,\n };\n\n const processChildren = () => {\n const children = props.children;\n if (Array.isArray(children)) {\n const [trigger, ...rest] = children;\n return (\n <>\n <TriggerWrapper\n triggerProps={triggerProps}\n ref={(el) => {\n triggerRef = el;\n }}\n >\n {trigger}\n </TriggerWrapper>\n {rest}\n </>\n );\n }\n return children;\n };\n\n return (\n <TooltipTriggerStateContext.Provider value={state}>\n <TooltipTriggerContext.Provider value={context}>\n {processChildren()}\n </TooltipTriggerContext.Provider>\n </TooltipTriggerStateContext.Provider>\n );\n};\n\n/**\n * Wrapper component that spreads trigger props onto its child\n */\nconst TriggerWrapper: ParentComponent<{\n triggerProps: JSX.HTMLAttributes<HTMLElement>;\n ref: (el: HTMLElement) => void;\n}> = (props) => {\n const child = () => props.children as JSX.Element;\n const [triggerElement, setTriggerElement] = createSignal<HTMLElement | null>(null);\n const [wrapperElement, setWrapperElement] = createSignal<HTMLSpanElement | null>(null);\n const getWrapperEventProps = () => {\n const triggerProps = props.triggerProps as Record<string, unknown>;\n const wrapperProps: Record<string, unknown> = {};\n const eventPropNames = [\n \"onFocus\",\n \"onBlur\",\n \"onPointerEnter\",\n \"onPointerLeave\",\n \"onPointerOver\",\n \"onPointerOut\",\n \"onMouseEnter\",\n \"onMouseLeave\",\n \"onTouchStart\",\n \"onPointerDown\",\n \"onKeyDown\",\n ];\n\n for (const propName of eventPropNames) {\n const handler = triggerProps[propName];\n if (typeof handler === \"function\") {\n wrapperProps[propName] = handler;\n }\n }\n\n if (!wrapperProps.onPointerEnter && typeof triggerProps.onMouseEnter === \"function\") {\n wrapperProps.onPointerEnter = triggerProps.onMouseEnter;\n }\n if (!wrapperProps.onPointerLeave && typeof triggerProps.onMouseLeave === \"function\") {\n wrapperProps.onPointerLeave = triggerProps.onMouseLeave;\n }\n\n return wrapperProps as JSX.HTMLAttributes<HTMLSpanElement>;\n };\n\n createEffect(() => {\n const element = triggerElement();\n if (!element) {\n return;\n }\n\n const triggerProps = props.triggerProps as Record<string, unknown>;\n const describedBy = triggerProps[\"aria-describedby\"] as string | undefined;\n if (describedBy) {\n element.setAttribute(\"aria-describedby\", describedBy);\n } else {\n element.removeAttribute(\"aria-describedby\");\n }\n\n const wrapper = wrapperElement();\n const targets = Array.from(new Set([element, wrapper].filter(Boolean))) as HTMLElement[];\n const listeners: Array<[HTMLElement, string, EventListener]> = [];\n const eventProps = [\n [\"onFocus\", \"focus\"],\n [\"onBlur\", \"blur\"],\n [\"onPointerEnter\", \"pointerenter\"],\n [\"onPointerLeave\", \"pointerleave\"],\n [\"onPointerOver\", \"pointerover\"],\n [\"onPointerOut\", \"pointerout\"],\n [\"onMouseEnter\", \"mouseenter\"],\n [\"onMouseLeave\", \"mouseleave\"],\n [\"onTouchStart\", \"touchstart\"],\n [\"onPointerDown\", \"pointerdown\"],\n [\"onKeyDown\", \"keydown\"],\n ] as const;\n\n for (const [propName, eventName] of eventProps) {\n let handler = triggerProps[propName];\n if (!handler && propName === \"onPointerEnter\") {\n handler = triggerProps.onMouseEnter;\n } else if (!handler && propName === \"onPointerLeave\") {\n handler = triggerProps.onMouseLeave;\n }\n if (typeof handler === \"function\") {\n const listener = handler as EventListener;\n for (const target of targets) {\n target.addEventListener(eventName, listener);\n listeners.push([target, eventName, listener]);\n }\n }\n }\n\n onCleanup(() => {\n for (const [target, eventName, listener] of listeners) {\n target.removeEventListener(eventName, listener);\n }\n if (describedBy && element.getAttribute(\"aria-describedby\") === describedBy) {\n element.removeAttribute(\"aria-describedby\");\n }\n });\n });\n\n // We wrap in a span with display:contents to not affect layout.\n // However, display:contents makes getBoundingClientRect return zeros,\n // so we pass a ref callback that finds the first actual element child.\n const handleRef = (span: HTMLSpanElement) => {\n setWrapperElement(span);\n\n const findElementChild = (el: Element): HTMLElement | null => {\n for (const child of el.children) {\n if (child instanceof HTMLElement) {\n return child;\n }\n const found = findElementChild(child);\n if (found) return found;\n }\n return null;\n };\n\n // Find the first element child that has dimensions (not display:contents)\n const findVisibleChild = (el: Element): HTMLElement | null => {\n if (el instanceof HTMLElement) {\n const rect = el.getBoundingClientRect();\n if (rect.width > 0 && rect.height > 0) {\n return el;\n }\n for (const child of el.children) {\n const found = findVisibleChild(child);\n if (found) return found;\n }\n }\n return null;\n };\n\n // Use requestAnimationFrame to ensure children are rendered and have dimensions\n // This is necessary because SolidJS may not have computed child layout yet\n const resolveRef = () => {\n const elementChild = findElementChild(span);\n const visibleChild = findVisibleChild(span);\n setTriggerElement(elementChild ?? visibleChild ?? span);\n props.ref(visibleChild ?? elementChild ?? span);\n };\n\n const elementChild = findElementChild(span);\n if (elementChild) {\n setTriggerElement(elementChild);\n }\n\n const immediateChild = findVisibleChild(span);\n if (immediateChild) {\n setTriggerElement(elementChild ?? immediateChild);\n props.ref(immediateChild);\n } else {\n requestAnimationFrame(resolveRef);\n }\n };\n\n return (\n <span {...getWrapperEventProps()} ref={handleRef} style={{ display: \"contents\" }}>\n {child()}\n </span>\n );\n};\n\n/**\n * A tooltip displays a description of an element on hover or focus.\n *\n * @example\n * ```tsx\n * <TooltipTrigger>\n * <Button>Hover me</Button>\n * <Tooltip>This is helpful information</Tooltip>\n * </TooltipTrigger>\n * ```\n */\nexport function Tooltip(props: TooltipProps): JSX.Element {\n const context = useContext(TooltipTriggerContext);\n\n createEffect(() => {\n context?.setTooltipId(props.id);\n onCleanup(() => {\n context?.setTooltipId(undefined);\n });\n });\n\n const localState = createTooltipTriggerState({\n get isOpen() {\n return props.isOpen;\n },\n get defaultOpen() {\n return props.defaultOpen;\n },\n });\n\n const state = () => context?.state ?? localState;\n const placement = () => props.placement ?? context?.placement() ?? \"top\";\n const containerPadding = () => props.containerPadding ?? context?.containerPadding() ?? 12;\n const crossOffset = () => props.crossOffset ?? context?.crossOffset() ?? 0;\n const shouldFlip = () => props.shouldFlip ?? context?.shouldFlip() ?? true;\n const offset = () => props.offset ?? 9;\n const arrowSize = () => props.arrowSize ?? 0;\n const arrowBoundaryOffset = () => props.arrowBoundaryOffset ?? 0;\n const isDisabled = () => props.isDisabled ?? context?.isDisabled() ?? false;\n\n const isOpen = () => !isDisabled() && state().isOpen();\n\n // Exit animation state machine: 'closed' | 'open' | 'exiting'\n // Keeps the tooltip mounted during exit animation so CSS transitions can play.\n const [exitState, setExitState] = createSignal<\"closed\" | \"open\" | \"exiting\">(\n isOpen() ? \"open\" : \"closed\",\n );\n\n createEffect(() => {\n const open = isOpen();\n const current = exitState();\n if (current === \"open\" && !open) {\n setExitState(\"exiting\");\n } else if ((current === \"closed\" || current === \"exiting\") && open) {\n setExitState(\"open\");\n }\n });\n\n // Signal for the tooltip ref so we can observe exit animations\n const [tooltipEl, setTooltipEl] = createSignal<HTMLDivElement | null>(null);\n\n // When exiting, wait for CSS animations to finish, then set state to closed\n createEffect(() => {\n if (exitState() !== \"exiting\") return;\n const el = tooltipEl();\n if (!el || !(\"getAnimations\" in el)) {\n setExitState(\"closed\");\n return;\n }\n const animations = el.getAnimations();\n if (animations.length === 0) {\n setExitState(\"closed\");\n return;\n }\n let canceled = false;\n Promise.all(animations.map((a) => a.finished))\n .then(() => {\n if (!canceled) setExitState((s) => (s === \"exiting\" ? \"closed\" : s));\n })\n .catch(() => {\n if (!canceled) setExitState((s) => (s === \"exiting\" ? \"closed\" : s));\n });\n onCleanup(() => {\n canceled = true;\n });\n });\n\n const shouldRender = () => isOpen() || exitState() === \"exiting\";\n const isExiting = () => exitState() === \"exiting\";\n\n return (\n <Show when={shouldRender()}>\n <TooltipContent\n {...props}\n state={state()}\n contextTooltipProps={context?.tooltipProps ?? {}}\n placement={placement()}\n containerPadding={containerPadding()}\n crossOffset={crossOffset()}\n shouldFlip={shouldFlip()}\n offset={offset()}\n arrowSize={arrowSize()}\n arrowBoundaryOffset={arrowBoundaryOffset()}\n triggerRef={context?.triggerRef ?? (() => null)}\n isExiting={isExiting()}\n onTooltipRef={setTooltipEl}\n />\n </Show>\n );\n}\n\n/**\n * Internal component that renders the tooltip content\n */\nfunction TooltipContent(\n props: TooltipProps & {\n state: TooltipTriggerState;\n contextTooltipProps: { readonly id?: string };\n placement: TooltipPlacement;\n containerPadding: number;\n crossOffset: number;\n shouldFlip: boolean;\n offset: number;\n arrowSize: number;\n arrowBoundaryOffset: number;\n triggerRef: () => HTMLElement | null | undefined;\n isExiting: boolean;\n onTooltipRef: (el: HTMLDivElement | null) => void;\n },\n): JSX.Element {\n if (isServer) {\n return null as unknown as JSX.Element;\n }\n\n let tooltipRef!: HTMLDivElement;\n const { tooltipProps: ariaTooltipProps } = createTooltip({}, props.state);\n\n // Start visible at 0,0 and update position asynchronously\n // This ensures the tooltip is immediately accessible (for screen readers and tests)\n // while the visual position gets calculated\n const [positionStyles, setPositionStyles] = createSignal({\n top: \"0px\",\n left: \"0px\",\n visibility: \"visible\" as \"hidden\" | \"visible\",\n });\n const [renderedPlacement, setRenderedPlacement] = createSignal<TooltipResolvedPlacement>(\n resolvePlacement(props.placement),\n );\n\n // Enter animation state: starts true on mount, clears after first animation frame.\n // Uses getAnimations() to detect CSS animations/transitions - if none exist (JSDOM,\n // no CSS defined, reduced-motion), clears immediately.\n const [isEntering, setIsEntering] = createSignal(true);\n\n createEffect(() => {\n if (!isEntering()) return;\n if (!tooltipRef || !(\"getAnimations\" in tooltipRef)) {\n setIsEntering(false);\n return;\n }\n // Cancel any premature CSS transitions triggered before layout\n for (const anim of tooltipRef.getAnimations()) {\n if (anim instanceof CSSTransition) {\n anim.cancel();\n }\n }\n const animations = tooltipRef.getAnimations();\n if (animations.length === 0) {\n setIsEntering(false);\n return;\n }\n let canceled = false;\n Promise.all(animations.map((a) => a.finished))\n .then(() => {\n if (!canceled) setIsEntering(false);\n })\n .catch(() => {\n if (!canceled) setIsEntering(false);\n });\n onCleanup(() => {\n canceled = true;\n });\n });\n\n const values = createMemo<TooltipRenderProps>(() => ({\n isEntering: isEntering(),\n isExiting: props.isExiting,\n placement: renderedPlacement(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: props.class,\n style: props.style,\n get children() {\n return props.children;\n },\n defaultClassName: \"solidaria-Tooltip\",\n },\n values,\n );\n\n // Position the overlay in document coordinates, matching React Aria's\n // absolute overlay positioning when the portal container is the document.\n // Returns true if position was successfully updated, false if we need to retry\n const updatePosition = (): boolean => {\n const triggerEl = props.triggerRef();\n if (!triggerEl || !tooltipRef) return false;\n\n const triggerRect = triggerEl.getBoundingClientRect();\n\n // Check if the trigger has valid dimensions (not display:contents or not rendered yet)\n if (triggerRect.width === 0 || triggerRect.height === 0) {\n return false; // Need to retry\n }\n\n // Use offsetWidth/offsetHeight which are more reliable than getBoundingClientRect\n // when the element might be positioned off-screen initially\n const tooltipWidth = tooltipRef.offsetWidth;\n const tooltipHeight = tooltipRef.offsetHeight;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const containerPadding = props.containerPadding;\n const crossOffset = props.crossOffset;\n const placement = maybeFlipPlacement(\n resolvePlacement(props.placement),\n triggerRect,\n tooltipWidth,\n tooltipHeight,\n viewportWidth,\n viewportHeight,\n containerPadding,\n props.offset,\n props.shouldFlip,\n );\n\n let top = 0;\n let left = 0;\n\n switch (placement) {\n case \"top\":\n top = triggerRect.top - tooltipHeight - props.offset;\n left = triggerRect.left + (triggerRect.width - tooltipWidth) / 2 + crossOffset;\n break;\n case \"bottom\":\n top = triggerRect.bottom + props.offset;\n left = triggerRect.left + (triggerRect.width - tooltipWidth) / 2 + crossOffset;\n break;\n case \"left\":\n top = triggerRect.top + (triggerRect.height - tooltipHeight) / 2 + crossOffset;\n left = triggerRect.left - tooltipWidth - props.offset;\n break;\n case \"right\":\n top = triggerRect.top + (triggerRect.height - tooltipHeight) / 2 + crossOffset;\n left = triggerRect.right + props.offset;\n break;\n }\n\n if (placement === \"top\" || placement === \"bottom\") {\n left = clamp(\n left,\n triggerRect.left - tooltipWidth + props.arrowSize + props.arrowBoundaryOffset,\n triggerRect.left + triggerRect.width - props.arrowSize - props.arrowBoundaryOffset,\n );\n left = clamp(left, containerPadding, viewportWidth - tooltipWidth - containerPadding);\n } else {\n top = clamp(\n top,\n triggerRect.top - tooltipHeight + props.arrowSize + props.arrowBoundaryOffset,\n triggerRect.top + triggerRect.height - props.arrowSize - props.arrowBoundaryOffset,\n );\n top = clamp(top, containerPadding, viewportHeight - tooltipHeight - containerPadding);\n }\n setRenderedPlacement(placement);\n setPositionStyles({\n top: `${Math.floor(top + window.scrollY)}px`,\n left: `${Math.floor(left + window.scrollX)}px`,\n visibility: \"visible\",\n });\n\n return true;\n };\n\n // Set up positioning and scroll-close effects. Positioning retries while the\n // trigger ref resolves, and pending rAF/setTimeout IDs are canceled on cleanup.\n createEffect(() => {\n // Track positioning inputs synchronously so updates from controlled route\n // props reschedule measurement even though layout reads happen in rAF.\n props.placement;\n props.containerPadding;\n props.crossOffset;\n props.shouldFlip;\n props.offset;\n props.arrowSize;\n props.arrowBoundaryOffset;\n\n let retryCount = 0;\n const maxRetries = 5;\n let pendingRaf = 0;\n let pendingTimeout = 0;\n\n const tryUpdatePosition = () => {\n pendingRaf = 0;\n pendingTimeout = 0;\n const success = updatePosition();\n if (!success && retryCount < maxRetries) {\n retryCount++;\n pendingTimeout = window.setTimeout(tryUpdatePosition, 16);\n }\n };\n\n pendingRaf = requestAnimationFrame(tryUpdatePosition);\n\n const closeOnScroll = (event: Event) => {\n const trigger = props.triggerRef();\n const target = event.target;\n if (!trigger || (target instanceof Node && !target.contains(trigger))) {\n return;\n }\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n return;\n }\n\n props.state.close(true);\n };\n\n window.addEventListener(\"scroll\", closeOnScroll, true);\n window.addEventListener(\"resize\", updatePosition);\n\n onCleanup(() => {\n if (pendingRaf) cancelAnimationFrame(pendingRaf);\n if (pendingTimeout) clearTimeout(pendingTimeout);\n window.removeEventListener(\"scroll\", closeOnScroll, true);\n window.removeEventListener(\"resize\", updatePosition);\n });\n });\n\n const domProps = filterDOMProps(props, { global: true });\n const tooltipId = () => props.contextTooltipProps.id ?? (domProps as { id?: string }).id;\n\n // Extract ref from ariaTooltipProps to avoid type conflicts (SolidJS ref types are element-specific)\n const { ref: _ariaRef, ...cleanAriaProps } = ariaTooltipProps as Record<string, unknown>;\n\n const setRef = (el: HTMLDivElement) => {\n tooltipRef = el;\n if (!props.dir) {\n el.dir = getDocumentDirection();\n }\n if (!props.lang) {\n const documentLang = document.documentElement.lang;\n const navigatorLang = typeof navigator !== \"undefined\" ? navigator.language : \"\";\n el.lang = documentLang.includes(\"-\")\n ? documentLang\n : navigatorLang || documentLang || \"en-US\";\n }\n props.onTooltipRef(el);\n };\n\n onCleanup(() => {\n props.onTooltipRef(null);\n });\n\n return (\n <OverlayContainer>\n <div\n {...domProps}\n {...cleanAriaProps}\n id={tooltipId()}\n role=\"tooltip\"\n ref={setRef}\n class={renderProps.class()}\n style={{\n position: \"absolute\",\n \"z-index\": 100000,\n ...positionStyles(),\n ...renderProps.style(),\n }}\n data-placement={renderedPlacement()}\n data-entering={isEntering() || undefined}\n data-exiting={props.isExiting || undefined}\n >\n {renderProps.renderChildren()}\n </div>\n </OverlayContainer>\n );\n}\n\nfunction resolvePlacement(placement: TooltipPlacement): TooltipResolvedPlacement {\n if (placement === \"start\") {\n return getDocumentDirection() === \"rtl\" ? \"right\" : \"left\";\n }\n if (placement === \"end\") {\n return getDocumentDirection() === \"rtl\" ? \"left\" : \"right\";\n }\n return placement;\n}\n\nfunction getDocumentDirection(): \"ltr\" | \"rtl\" {\n if (typeof document === \"undefined\") {\n return \"ltr\";\n }\n\n return document.documentElement.dir === \"rtl\" ? \"rtl\" : \"ltr\";\n}\n\nfunction maybeFlipPlacement(\n placement: TooltipResolvedPlacement,\n triggerRect: DOMRect,\n tooltipWidth: number,\n tooltipHeight: number,\n viewportWidth: number,\n viewportHeight: number,\n containerPadding: number,\n offset: number,\n shouldFlip: boolean,\n): TooltipResolvedPlacement {\n if (!shouldFlip) {\n return placement;\n }\n\n switch (placement) {\n case \"top\":\n return triggerRect.top - tooltipHeight - offset < containerPadding ? \"bottom\" : placement;\n case \"bottom\":\n return triggerRect.bottom + tooltipHeight + offset > viewportHeight - containerPadding\n ? \"top\"\n : placement;\n case \"left\":\n return triggerRect.left - tooltipWidth - offset < containerPadding ? \"right\" : placement;\n case \"right\":\n return triggerRect.right + tooltipWidth + offset > viewportWidth - containerPadding\n ? \"left\"\n : placement;\n }\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n if (max < min) {\n return min;\n }\n\n return Math.min(Math.max(value, min), max);\n}\n\nexport type { TooltipTriggerState };\n"],"mappings":"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"}
package/dist/Tree.d.ts CHANGED
@@ -12,7 +12,8 @@ import { type AriaTreeProps } from "@proyecto-viviana/solidaria";
12
12
  import { type TreeState, type TreeCollection, type TreeNode, type TreeItemData, type Key } from "@proyecto-viviana/solid-stately";
13
13
  import { type RenderChildren, type ClassNameOrFunction, type StyleOrFunction, type SlotProps } from "./utils";
14
14
  import { type DragAndDropHooks } from "./useDragAndDrop";
15
- import { type CollectionEntry, type SectionProps, type HeaderProps } from "./Collection";
15
+ import { type CollectionEntry, type SectionProps } from "./Collection";
16
+ import { type GridListHeaderProps } from "./GridList";
16
17
  import { type LinkDOMProps, type RouterOptions } from "./RouterProvider";
17
18
  type RefLike<T> = ((el: T) => void) | {
18
19
  current?: T | null;
@@ -174,7 +175,7 @@ export interface TreeLoadMoreItemProps extends SlotProps {
174
175
  }
175
176
  export interface TreeSectionProps extends SectionProps {
176
177
  }
177
- export interface TreeHeaderProps extends HeaderProps {
178
+ export interface TreeHeaderProps extends GridListHeaderProps {
178
179
  }
179
180
  interface TreeContextValue<T extends object> {
180
181
  state: TreeState<T, TreeCollection<T>>;
@@ -231,7 +232,18 @@ export interface TreeItemContentProps {
231
232
  }
232
233
  export type TreeItemContentRenderProps = TreeItemRenderProps;
233
234
  export declare function TreeItemContent(props: TreeItemContentProps): JSX.Element;
235
+ /**
236
+ * A section within a Tree. Renders as `role="rowgroup"` and supplies its
237
+ * optional {@link TreeHeader} with the row/rowheader props that wire up the
238
+ * section's `aria-labelledby` (mirrors upstream `TreeSection`, which reuses
239
+ * `useGridListSection`).
240
+ */
234
241
  export declare function TreeSection(props: TreeSectionProps): JSX.Element;
242
+ /**
243
+ * The header of a {@link TreeSection}. Mirrors upstream `TreeHeader`, which is a
244
+ * thin wrapper over `GridListHeader` with a Tree-specific class. The row and
245
+ * rowheader semantics come from the enclosing section through context.
246
+ */
235
247
  export declare function TreeHeader(props: TreeHeaderProps): JSX.Element;
236
248
  export {};
237
249
  //# sourceMappingURL=Tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../src/Tree.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../src/Tree.tsx"],"names":[],"mappings":"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"}