@servicetitan/anvil2 2.6.1 → 2.7.1

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 (249) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/{Avatar-CCnbKkCm.js → Avatar-BckUfs1N.js} +48 -46
  3. package/dist/{Avatar-CCnbKkCm.js.map → Avatar-BckUfs1N.js.map} +1 -1
  4. package/dist/Avatar-ChybzixS.js +35 -0
  5. package/dist/Avatar-ChybzixS.js.map +1 -0
  6. package/dist/Avatar.js +2 -2
  7. package/dist/Breadcrumbs-C_WK9Yul.js +107 -0
  8. package/dist/Breadcrumbs-C_WK9Yul.js.map +1 -0
  9. package/dist/Breadcrumbs.js +1 -1
  10. package/dist/{Calendar-B5d2SUrH.js → Calendar-BTStJPV1.js} +2 -2
  11. package/dist/{Calendar-B5d2SUrH.js.map → Calendar-BTStJPV1.js.map} +1 -1
  12. package/dist/{Calendar-B0u3EgCY.js → Calendar-Frpv5rRY.js} +129 -118
  13. package/dist/Calendar-Frpv5rRY.js.map +1 -0
  14. package/dist/Calendar.css +51 -51
  15. package/dist/Calendar.js +2 -2
  16. package/dist/Checkbox-CTZdZym4.js +52 -0
  17. package/dist/Checkbox-CTZdZym4.js.map +1 -0
  18. package/dist/{Checkbox-BwULIo4D.js → Checkbox-Drgai_lS.js} +16 -7
  19. package/dist/Checkbox-Drgai_lS.js.map +1 -0
  20. package/dist/Checkbox.js +1 -1
  21. package/dist/{Chip-DjTAR0va.js → Chip-CVyEctAz.js} +2 -2
  22. package/dist/{Chip-DjTAR0va.js.map → Chip-CVyEctAz.js.map} +1 -1
  23. package/dist/Chip.js +1 -1
  24. package/dist/{Combobox-Clymsgli.js → Combobox-BRtfrYyZ.js} +185 -182
  25. package/dist/{Combobox-Clymsgli.js.map → Combobox-BRtfrYyZ.js.map} +1 -1
  26. package/dist/Combobox.js +1 -1
  27. package/dist/{DataTable-qoseu_e2.js → DataTable-BmVPjMMg.js} +680 -628
  28. package/dist/DataTable-BmVPjMMg.js.map +1 -0
  29. package/dist/{DateFieldRange-rks7jQor.js → DateFieldRange-D9DtlkSQ.js} +18 -4
  30. package/dist/DateFieldRange-D9DtlkSQ.js.map +1 -0
  31. package/dist/DateFieldRange.js +1 -1
  32. package/dist/{DateFieldSingle-C0WXU7H1.js → DateFieldSingle-CkdeCUJv.js} +6 -6
  33. package/dist/{DateFieldSingle-C0WXU7H1.js.map → DateFieldSingle-CkdeCUJv.js.map} +1 -1
  34. package/dist/DateFieldSingle.js +1 -1
  35. package/dist/{DateFieldYearless-2p3a7Xgo.js → DateFieldYearless-b81ZcYdp.js} +3 -3
  36. package/dist/{DateFieldYearless-2p3a7Xgo.js.map → DateFieldYearless-b81ZcYdp.js.map} +1 -1
  37. package/dist/DateFieldYearless.js +1 -1
  38. package/dist/{DateFieldYearlessRange-DLmhPug8.js → DateFieldYearlessRange-ClAFzIDD.js} +3 -3
  39. package/dist/{DateFieldYearlessRange-DLmhPug8.js.map → DateFieldYearlessRange-ClAFzIDD.js.map} +1 -1
  40. package/dist/DateFieldYearlessRange.js +1 -1
  41. package/dist/{DaysOfTheWeek-BR32AA32.js → DaysOfTheWeek-2Zeh79oR.js} +3 -3
  42. package/dist/{DaysOfTheWeek-BR32AA32.js.map → DaysOfTheWeek-2Zeh79oR.js.map} +1 -1
  43. package/dist/DaysOfTheWeek.js +1 -1
  44. package/dist/{Details-Dxq_v3Qg.js → Details-CZOIpNP_.js} +8 -8
  45. package/dist/Details-CZOIpNP_.js.map +1 -0
  46. package/dist/Details.js +1 -1
  47. package/dist/{Dialog-CMhypnCD.js → Dialog-CloZWa1Q.js} +70 -70
  48. package/dist/Dialog-CloZWa1Q.js.map +1 -0
  49. package/dist/Dialog.js +1 -1
  50. package/dist/DndSort.js +3 -5
  51. package/dist/DndSort.js.map +1 -1
  52. package/dist/{Drawer-CSelPi8t.js → Drawer-CfkoH081.js} +83 -83
  53. package/dist/Drawer-CfkoH081.js.map +1 -0
  54. package/dist/Drawer.js +1 -1
  55. package/dist/DrillDown.js +1 -1
  56. package/dist/{FieldLabel-DbMosKtd.js → FieldLabel-CQ5QGTVq.js} +2 -2
  57. package/dist/{FieldLabel-DbMosKtd.js.map → FieldLabel-CQ5QGTVq.js.map} +1 -1
  58. package/dist/FieldLabel.js +1 -1
  59. package/dist/Grid-DeYIx5k4.js +149 -0
  60. package/dist/Grid-DeYIx5k4.js.map +1 -0
  61. package/dist/Grid.js +1 -1
  62. package/dist/{InputMask-BKs-x6ds.js → InputMask-CI4Q5UwG.js} +2 -2
  63. package/dist/{InputMask-BKs-x6ds.js.map → InputMask-CI4Q5UwG.js.map} +1 -1
  64. package/dist/InputMask.js +1 -1
  65. package/dist/{Layout-VfhlilMG.js → Layout-CISAxILX.js} +34 -33
  66. package/dist/Layout-CISAxILX.js.map +1 -0
  67. package/dist/Layout.js +1 -1
  68. package/dist/List--KhCpjZn.js +103 -0
  69. package/dist/List--KhCpjZn.js.map +1 -0
  70. package/dist/List.js +1 -1
  71. package/dist/{ListView-CeGwrRbt.js → ListView-DAbBuss4.js} +6 -6
  72. package/dist/ListView-DAbBuss4.js.map +1 -0
  73. package/dist/ListView.js +1 -1
  74. package/dist/{Listbox-BtAgBDRS.js → Listbox-D_T55BFX.js} +5 -4
  75. package/dist/Listbox-D_T55BFX.js.map +1 -0
  76. package/dist/Listbox.js +1 -1
  77. package/dist/{Menu-BXsmCP20.js → Menu-CRoJYJ53.js} +366 -365
  78. package/dist/Menu-CRoJYJ53.js.map +1 -0
  79. package/dist/Menu.js +1 -1
  80. package/dist/MultiSelectField.js +1 -1
  81. package/dist/{MultiSelectFieldSync-EELhdoD6.js → MultiSelectFieldSync-CSOitvtu.js} +5 -5
  82. package/dist/{MultiSelectFieldSync-EELhdoD6.js.map → MultiSelectFieldSync-CSOitvtu.js.map} +1 -1
  83. package/dist/MultiSelectMenu.js +1 -1
  84. package/dist/{MultiSelectMenuSync-CAPhhkK1.js → MultiSelectMenuSync-62OeGmkz.js} +29 -9
  85. package/dist/MultiSelectMenuSync-62OeGmkz.js.map +1 -0
  86. package/dist/{NumberField-svhZp1kB.js → NumberField-CHBXBMSj.js} +2 -2
  87. package/dist/{NumberField-svhZp1kB.js.map → NumberField-CHBXBMSj.js.map} +1 -1
  88. package/dist/NumberField.js +1 -1
  89. package/dist/Overflow.css +27 -26
  90. package/dist/Overflow.js +11 -11
  91. package/dist/{Page-BpV1yHkm.js → Page-DtSjnBJL.js} +277 -224
  92. package/dist/Page-DtSjnBJL.js.map +1 -0
  93. package/dist/Page.css +87 -73
  94. package/dist/Page.js +1 -1
  95. package/dist/{Pagination-BAwqfl_2.js → Pagination-CbBte3GQ.js} +17 -15
  96. package/dist/Pagination-CbBte3GQ.js.map +1 -0
  97. package/dist/Pagination.js +1 -1
  98. package/dist/Popover-CQhLSNYR.js +537 -0
  99. package/dist/Popover-CQhLSNYR.js.map +1 -0
  100. package/dist/{Popover-Br6qPgKe.js → Popover-Rha0q-Pv.js} +353 -353
  101. package/dist/Popover-Rha0q-Pv.js.map +1 -0
  102. package/dist/Popover.js +1 -1
  103. package/dist/{ProgressBar-JpRDW5vG.js → ProgressBar-DEaMqbM-.js} +2 -2
  104. package/dist/{ProgressBar-JpRDW5vG.js.map → ProgressBar-DEaMqbM-.js.map} +1 -1
  105. package/dist/ProgressBar.js +1 -1
  106. package/dist/{Radio-8DmfWHYq.js → Radio-Bw2LDl9G.js} +13 -4
  107. package/dist/{Radio-8DmfWHYq.js.map → Radio-Bw2LDl9G.js.map} +1 -1
  108. package/dist/Radio-CCvu8mbI.js +60 -0
  109. package/dist/Radio-CCvu8mbI.js.map +1 -0
  110. package/dist/Radio.js +1 -1
  111. package/dist/{SegmentedControl-7fDLhgvh.js → SegmentedControl-BAi4pnFe.js} +79 -75
  112. package/dist/{SegmentedControl-7fDLhgvh.js.map → SegmentedControl-BAi4pnFe.js.map} +1 -1
  113. package/dist/SegmentedControl.js +1 -1
  114. package/dist/SelectCard-ZaAD0wR1.js +325 -0
  115. package/dist/SelectCard-ZaAD0wR1.js.map +1 -0
  116. package/dist/SelectCard.css +23 -18
  117. package/dist/SelectCard.js +1 -1
  118. package/dist/SelectField.js +1 -1
  119. package/dist/{SelectFieldLabel-Dr8HeW3N.js → SelectFieldLabel-EJCXA02B.js} +2 -2
  120. package/dist/{SelectFieldLabel-Dr8HeW3N.js.map → SelectFieldLabel-EJCXA02B.js.map} +1 -1
  121. package/dist/{SelectFieldSync-BPopU0om.js → SelectFieldSync-DA54WXOk.js} +4 -4
  122. package/dist/{SelectFieldSync-BPopU0om.js.map → SelectFieldSync-DA54WXOk.js.map} +1 -1
  123. package/dist/SelectMenu.js +1 -1
  124. package/dist/{SelectMenuSync-DeMYO1m_.js → SelectMenuSync-BQaSTcaN.js} +29 -9
  125. package/dist/SelectMenuSync-BQaSTcaN.js.map +1 -0
  126. package/dist/{SelectOptions-DBe5ZN_-.js → SelectOptions-D-DzWmKE.js} +2 -2
  127. package/dist/{SelectOptions-DBe5ZN_-.js.map → SelectOptions-D-DzWmKE.js.map} +1 -1
  128. package/dist/{SelectTrigger-ObsnAKNp.js → SelectTrigger-DWyRndmY.js} +3 -3
  129. package/dist/{SelectTrigger-ObsnAKNp.js.map → SelectTrigger-DWyRndmY.js.map} +1 -1
  130. package/dist/SelectTrigger.js +1 -1
  131. package/dist/{SelectTriggerBase-DKfOL2RJ.js → SelectTriggerBase-B6aZd2a6.js} +3 -3
  132. package/dist/{SelectTriggerBase-DKfOL2RJ.js.map → SelectTriggerBase-B6aZd2a6.js.map} +1 -1
  133. package/dist/{SideNav-KksbSQn7.js → SideNav-CxHemV3H.js} +127 -125
  134. package/dist/{SideNav-KksbSQn7.js.map → SideNav-CxHemV3H.js.map} +1 -1
  135. package/dist/SideNav.js +1 -1
  136. package/dist/{Stepper-Dt8_ImvJ.js → Stepper-CQUXV6P4.js} +156 -156
  137. package/dist/{Stepper-Dt8_ImvJ.js.map → Stepper-CQUXV6P4.js.map} +1 -1
  138. package/dist/Stepper.js +1 -1
  139. package/dist/{Tab-DO7LaUbw.js → Tab-BGGNcz9S.js} +225 -221
  140. package/dist/Tab-BGGNcz9S.js.map +1 -0
  141. package/dist/Tab.js +1 -1
  142. package/dist/Table.js +1 -1
  143. package/dist/{TextField--co7QJ4r.js → TextField-CMv9CpBq.js} +2 -2
  144. package/dist/{TextField--co7QJ4r.js.map → TextField-CMv9CpBq.js.map} +1 -1
  145. package/dist/{TextField-Cax4UeNl.js → TextField-o8zvVFDk.js} +8 -3
  146. package/dist/TextField-o8zvVFDk.js.map +1 -0
  147. package/dist/TextField.js +1 -1
  148. package/dist/{Textarea-DyqdMTvQ.js → Textarea-B4bBvO8c.js} +2 -2
  149. package/dist/{Textarea-DyqdMTvQ.js.map → Textarea-B4bBvO8c.js.map} +1 -1
  150. package/dist/Textarea.js +1 -1
  151. package/dist/{TimeField-BfcLCWMG.js → TimeField-BEgnjk4R.js} +4 -5
  152. package/dist/{TimeField-BfcLCWMG.js.map → TimeField-BEgnjk4R.js.map} +1 -1
  153. package/dist/TimeField.js +1 -1
  154. package/dist/Toast.js +2 -2
  155. package/dist/{Toaster-b0-Ub3yt.js → Toaster-6_LVKok2.js} +2 -2
  156. package/dist/{Toaster-b0-Ub3yt.js.map → Toaster-6_LVKok2.js.map} +1 -1
  157. package/dist/{Toaster-DikGo_hR.js → Toaster-B38WlKC7.js} +2 -2
  158. package/dist/{Toaster-DikGo_hR.js.map → Toaster-B38WlKC7.js.map} +1 -1
  159. package/dist/{Toolbar-DqYMc_w8.js → Toolbar-0EKhrvZN.js} +147 -146
  160. package/dist/{Toolbar-DqYMc_w8.js.map → Toolbar-0EKhrvZN.js.map} +1 -1
  161. package/dist/Toolbar.js +1 -1
  162. package/dist/{Tooltip-Bupqao9B.js → Tooltip-BHwSTwsv.js} +224 -226
  163. package/dist/Tooltip-BHwSTwsv.js.map +1 -0
  164. package/dist/Tooltip.js +1 -1
  165. package/dist/{YearlessDateInputWithPicker-aq99rKJU.js → YearlessDateInputWithPicker-BC4lRuny.js} +2 -3
  166. package/dist/YearlessDateInputWithPicker-BC4lRuny.js.map +1 -0
  167. package/dist/beta/components/MultiSelectMenu/types.d.ts +15 -0
  168. package/dist/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +3 -1
  169. package/dist/beta/components/SelectMenu/types.d.ts +15 -0
  170. package/dist/beta/components/Table/DataTable/DataTable.d.ts +9 -16
  171. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.d.ts +35 -0
  172. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.d.ts +4 -3
  173. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.d.ts +7 -0
  174. package/dist/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.d.ts +34 -0
  175. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +9 -5
  176. package/dist/beta/components/Table/DataTable/types.d.ts +18 -1
  177. package/dist/beta/components/Table/createColumnHelper.d.ts +29 -68
  178. package/dist/beta/components/Table/types.d.ts +222 -40
  179. package/dist/beta/components/Toolbar/Toolbar.d.ts +168 -41
  180. package/dist/beta.js +9 -9
  181. package/dist/components/Announcement/Announcement.figma.d.ts +1 -0
  182. package/dist/components/Avatar/Avatar.d.ts +14 -0
  183. package/dist/components/Calendar/Calendar.d.ts +84 -26
  184. package/dist/components/Checkbox/internal/Checkbox.d.ts +8 -0
  185. package/dist/components/Combobox/Combobox.d.ts +172 -1
  186. package/dist/components/Dialog/Dialog.d.ts +96 -28
  187. package/dist/components/DndSort/internal/test-utils.d.ts +15 -8
  188. package/dist/components/DrillDown/DrillDown.d.ts +7 -1
  189. package/dist/components/FieldMessage/FieldMessage.figma.d.ts +1 -0
  190. package/dist/components/Layout/Layout.d.ts +52 -44
  191. package/dist/components/ListView/ListView.d.ts +5 -5
  192. package/dist/components/Listbox/Listbox.d.ts +5 -23
  193. package/dist/components/Menu/Menu.d.ts +1 -4
  194. package/dist/components/Page/Page.d.ts +1 -1
  195. package/dist/components/Page/PageContent.d.ts +5 -5
  196. package/dist/components/Page/PageContext.d.ts +2 -0
  197. package/dist/components/Page/PageFooter.d.ts +1 -0
  198. package/dist/components/Radio/internal/Radio.d.ts +8 -0
  199. package/dist/components/Toolbar/Toolbar.d.ts +3 -1
  200. package/dist/index.js +126 -126
  201. package/dist/index.js.map +1 -1
  202. package/dist/internal/components/Popover/Popover.d.ts +2 -2
  203. package/dist/internal/components/Popover/internal/PopoverContext.d.ts +2 -2
  204. package/dist/{syncFilterUtils-BRKjFwxk.js → syncFilterUtils-B03Pc941.js} +190 -190
  205. package/dist/{syncFilterUtils-BRKjFwxk.js.map → syncFilterUtils-B03Pc941.js.map} +1 -1
  206. package/dist/{useDrilldown-CqBBB_r1.js → useDrilldown-BW2XkUcK.js} +40 -38
  207. package/dist/{useDrilldown-CqBBB_r1.js.map → useDrilldown-BW2XkUcK.js.map} +1 -1
  208. package/dist/{useMenuInteraction-zR_78KQC.js → useMenuInteraction-BwZ2ORo9.js} +8 -3
  209. package/dist/useMenuInteraction-BwZ2ORo9.js.map +1 -0
  210. package/dist/{useToggleSelection-JD62Jzqu.js → useToggleSelection-Dip0eimQ.js} +2 -2
  211. package/dist/{useToggleSelection-JD62Jzqu.js.map → useToggleSelection-Dip0eimQ.js.map} +1 -1
  212. package/package.json +10 -9
  213. package/dist/Avatar--CnTAnfD.js +0 -35
  214. package/dist/Avatar--CnTAnfD.js.map +0 -1
  215. package/dist/Breadcrumbs-3Y7jnj-F.js +0 -105
  216. package/dist/Breadcrumbs-3Y7jnj-F.js.map +0 -1
  217. package/dist/Calendar-B0u3EgCY.js.map +0 -1
  218. package/dist/Checkbox-BwULIo4D.js.map +0 -1
  219. package/dist/Checkbox-CIj37_vY.js +0 -50
  220. package/dist/Checkbox-CIj37_vY.js.map +0 -1
  221. package/dist/DataTable-qoseu_e2.js.map +0 -1
  222. package/dist/DateFieldRange-rks7jQor.js.map +0 -1
  223. package/dist/Details-Dxq_v3Qg.js.map +0 -1
  224. package/dist/Dialog-CMhypnCD.js.map +0 -1
  225. package/dist/Drawer-CSelPi8t.js.map +0 -1
  226. package/dist/Grid-ONcUpb__.js +0 -147
  227. package/dist/Grid-ONcUpb__.js.map +0 -1
  228. package/dist/Layout-VfhlilMG.js.map +0 -1
  229. package/dist/List-CJZjElAQ.js +0 -101
  230. package/dist/List-CJZjElAQ.js.map +0 -1
  231. package/dist/ListView-CeGwrRbt.js.map +0 -1
  232. package/dist/Listbox-BtAgBDRS.js.map +0 -1
  233. package/dist/Menu-BXsmCP20.js.map +0 -1
  234. package/dist/MultiSelectMenuSync-CAPhhkK1.js.map +0 -1
  235. package/dist/Page-BpV1yHkm.js.map +0 -1
  236. package/dist/Pagination-BAwqfl_2.js.map +0 -1
  237. package/dist/Popover-Br6qPgKe.js.map +0 -1
  238. package/dist/Popover-Dkw_8dZx.js +0 -535
  239. package/dist/Popover-Dkw_8dZx.js.map +0 -1
  240. package/dist/Radio-M7lc0BsU.js +0 -60
  241. package/dist/Radio-M7lc0BsU.js.map +0 -1
  242. package/dist/SelectCard-D5dcOIuf.js +0 -311
  243. package/dist/SelectCard-D5dcOIuf.js.map +0 -1
  244. package/dist/SelectMenuSync-DeMYO1m_.js.map +0 -1
  245. package/dist/Tab-DO7LaUbw.js.map +0 -1
  246. package/dist/TextField-Cax4UeNl.js.map +0 -1
  247. package/dist/Tooltip-Bupqao9B.js.map +0 -1
  248. package/dist/YearlessDateInputWithPicker-aq99rKJU.js.map +0 -1
  249. package/dist/useMenuInteraction-zR_78KQC.js.map +0 -1
@@ -393,250 +393,283 @@ function PopoverTrigger(props) {
393
393
  }
394
394
  PopoverTrigger.displayName = "PopoverTrigger";
395
395
 
396
- const PopoverElement = forwardRef((props, ref) => {
397
- const {
398
- children,
399
- openOnHover = false,
400
- delay = 100,
401
- placement = "bottom",
402
- minHeight = "2.875rem",
403
- open,
404
- defaultOpen = false,
405
- disableShift,
406
- disableFlip,
407
- disableFlipFallback,
408
- matchReferenceWidth,
409
- id,
410
- disableCaret,
411
- fixedWidth,
412
- fillAvailableHeight,
413
- maxHeight,
414
- disableCloseOnClickOutside,
415
- disableCloseOnEscape,
416
- fitScreen,
417
- disableTriggerFocus,
418
- modal,
419
- noPadding,
420
- onClickOutside,
421
- onClose,
422
- onOpenAnimationStart,
423
- onOpenAnimationComplete,
424
- onCloseAnimationStart,
425
- onCloseAnimationComplete
426
- } = props;
427
- const uid = useId();
428
- const [invoker, setInvoker] = useState(void 0);
429
- const [popover, setPopover] = useState(void 0);
430
- const [rootNode, setRootNode] = useState();
431
- const [arrowElement, setArrowElement] = useState(void 0);
432
- const [openState, setOpenState] = useOptionallyControlledState({
433
- controlledValue: open,
434
- defaultValue: defaultOpen
435
- });
436
- const arrowRef = useRef(null);
437
- const dialogContext = useContext(DialogContext);
438
- const [triggerHovered, setTriggerHovered] = useState(false);
439
- const [contentHovered, setContentHovered] = useState(false);
440
- const [actualPlacement, setActualPlacement] = useState(
441
- placement
442
- );
443
- const processMinHeight = typeof minHeight === "string" ? minHeight : `${minHeight}px`;
444
- usePopoverTransitionStates(popover, openState, {
445
- onOpenAnimationStart: useCallback(() => {
446
- onOpenAnimationStart?.();
447
- }, [onOpenAnimationStart]),
448
- onOpenAnimationComplete: useCallback(() => {
449
- onOpenAnimationComplete?.();
450
- }, [onOpenAnimationComplete]),
451
- onCloseAnimationStart: useCallback(() => {
452
- onCloseAnimationStart?.();
453
- }, [onCloseAnimationStart]),
454
- onCloseAnimationComplete: useCallback(() => {
455
- onCloseAnimationComplete?.();
456
- }, [onCloseAnimationComplete])
457
- });
458
- const updatePosition = useCallback(() => {
459
- if (!invoker || !popover) return;
460
- if (!openState) return;
461
- computePosition(invoker, popover, {
462
- placement,
463
- middleware: [
464
- offset(8),
465
- size({
466
- padding: 5,
467
- apply({ rects, availableHeight, elements }) {
468
- Object.assign(elements.floating.style, {
469
- ...matchReferenceWidth ? { width: `${rects.reference.width}px` } : fixedWidth ? { width: "40dvw" } : {},
470
- ...fillAvailableHeight ? {
471
- height: `${availableHeight - 20}px`,
472
- minHeight: processMinHeight
473
- } : {},
474
- ...maxHeight ? {
475
- minHeight: processMinHeight,
476
- height: fitScreen ? typeof maxHeight === "string" ? maxHeight : `${maxHeight}px` : void 0,
477
- maxHeight: fitScreen ? `${availableHeight - 20}px` : typeof maxHeight === "string" ? maxHeight : `${maxHeight}px`
478
- } : {},
479
- ...fitScreen && !maxHeight ? {
480
- minHeight: processMinHeight,
481
- maxHeight: `${availableHeight - 20}px`
482
- } : {},
483
- zIndex: 1
484
- });
485
- }
486
- }),
487
- flip({
488
- mainAxis: !disableFlip,
489
- crossAxis: false,
490
- fallbackAxisSideDirection: disableFlipFallback ? "none" : "end",
491
- padding: 5
492
- }),
493
- shift({
494
- padding: 5,
495
- mainAxis: !disableShift,
496
- crossAxis: false,
497
- limiter: limitShift({
498
- mainAxis: !disableShift
499
- })
500
- }),
501
- arrow$1({
502
- element: !disableCaret && arrowElement ? arrowElement : null,
503
- padding: 5
504
- })
505
- ]
506
- }).then(({ x, y, placement: placement2, middlewareData }) => {
507
- setActualPlacement(placement2);
508
- const side = placement2.split("-")[0];
509
- const staticSide = {
510
- top: "bottom",
511
- right: "left",
512
- bottom: "top",
513
- left: "right"
514
- }[side];
515
- const arrowDeg = () => {
516
- if (staticSide === "top") return 180;
517
- if (staticSide === "bottom") return 0;
518
- if (staticSide === "left") return 90;
519
- return 270;
520
- };
521
- Object.assign(popover.style, {
522
- left: `${x}px`,
523
- top: `${y}px`
524
- });
525
- if (middlewareData.arrow && arrowElement) {
526
- const { x: x2, y: y2 } = middlewareData.arrow;
527
- Object.assign(arrowElement.style, {
528
- left: x2 != null ? `${x2}px` : "",
529
- top: y2 != null ? `${y2}px` : "",
530
- right: "",
531
- bottom: "",
532
- [staticSide]: `${-arrowElement.offsetWidth + 2}px`,
533
- transform: `rotate(${arrowDeg()}deg)`
534
- });
535
- }
396
+ const Popover = Object.assign(
397
+ forwardRef(function PopoverInner(props, ref) {
398
+ const {
399
+ children,
400
+ openOnHover = false,
401
+ delay = 100,
402
+ placement = "bottom",
403
+ minHeight = "2.875rem",
404
+ open,
405
+ defaultOpen = false,
406
+ disableShift,
407
+ disableFlip,
408
+ disableFlipFallback,
409
+ matchReferenceWidth,
410
+ id,
411
+ disableCaret,
412
+ fixedWidth,
413
+ fillAvailableHeight,
414
+ maxHeight,
415
+ disableCloseOnClickOutside,
416
+ disableCloseOnEscape,
417
+ fitScreen,
418
+ disableTriggerFocus,
419
+ modal,
420
+ noPadding,
421
+ onClickOutside,
422
+ onClose,
423
+ onOpenAnimationStart,
424
+ onOpenAnimationComplete,
425
+ onCloseAnimationStart,
426
+ onCloseAnimationComplete
427
+ } = props;
428
+ const uid = useId();
429
+ const [invoker, setInvoker] = useState(void 0);
430
+ const [popover, setPopover] = useState(void 0);
431
+ const [rootNode, setRootNode] = useState();
432
+ const [arrowElement, setArrowElement] = useState(void 0);
433
+ const [openState, setOpenState] = useOptionallyControlledState({
434
+ controlledValue: open,
435
+ defaultValue: defaultOpen
536
436
  });
537
- }, [
538
- arrowElement,
539
- disableCaret,
540
- disableFlip,
541
- disableFlipFallback,
542
- disableShift,
543
- fillAvailableHeight,
544
- fitScreen,
545
- fixedWidth,
546
- invoker,
547
- matchReferenceWidth,
548
- maxHeight,
549
- openState,
550
- placement,
551
- popover,
552
- processMinHeight
553
- ]);
554
- useLayoutEffect(() => {
555
- if (!popover || !invoker) return;
556
- if (!openState) {
557
- return;
558
- }
559
- let requestID = null;
560
- const cleanup = autoUpdate(invoker, popover, () => {
561
- requestID = requestAnimationFrame(updatePosition);
437
+ const arrowRef = useRef(null);
438
+ const dialogContext = useContext(DialogContext);
439
+ const [triggerHovered, setTriggerHovered] = useState(false);
440
+ const [contentHovered, setContentHovered] = useState(false);
441
+ const [actualPlacement, setActualPlacement] = useState(placement);
442
+ const processMinHeight = typeof minHeight === "string" ? minHeight : `${minHeight}px`;
443
+ usePopoverTransitionStates(popover, openState, {
444
+ onOpenAnimationStart: useCallback(() => {
445
+ onOpenAnimationStart?.();
446
+ }, [onOpenAnimationStart]),
447
+ onOpenAnimationComplete: useCallback(() => {
448
+ onOpenAnimationComplete?.();
449
+ }, [onOpenAnimationComplete]),
450
+ onCloseAnimationStart: useCallback(() => {
451
+ onCloseAnimationStart?.();
452
+ }, [onCloseAnimationStart]),
453
+ onCloseAnimationComplete: useCallback(() => {
454
+ onCloseAnimationComplete?.();
455
+ }, [onCloseAnimationComplete])
562
456
  });
563
- return () => {
564
- if (requestID) cancelAnimationFrame(requestID);
565
- cleanup();
566
- };
567
- }, [invoker, popover, updatePosition, openState]);
568
- popover?.getRootNode();
569
- const popoverId = id ?? `popover-${uid.replace(/:/g, "")}`;
570
- const isControlled = typeof open !== "undefined";
571
- const openPopover = useCallback(() => {
572
- if (!popover || !rootNode?.querySelector(`#${popoverId}`))
573
- return;
574
- setOpenState(true);
575
- }, [popover, rootNode, popoverId, setOpenState]);
576
- const closePopover = useCallback(
577
- (fn) => {
578
- if (!popover || !openState) return;
579
- if (!openOnHover) onClose?.();
580
- setOpenState(false);
581
- setTriggerHovered(false);
582
- setContentHovered(false);
583
- fn?.();
584
- },
585
- [
586
- popover,
587
- openState,
588
- openOnHover,
589
- onClose,
590
- setOpenState,
591
- setTriggerHovered,
592
- setContentHovered
593
- ]
594
- );
595
- useImperativeHandle(
596
- ref,
597
- () => ({
598
- openPopover,
599
- closePopover
600
- }),
601
- [openPopover, closePopover]
602
- );
603
- useEffect(() => {
604
- if (typeof openState === "undefined") return;
605
- if (openState) {
606
- if (dialogContext) {
607
- if (dialogContext?.ref?.current?.open) {
608
- safeShowPopover(popover);
609
- dialogContext?.setHasOpenPopover?.(true);
457
+ const updatePosition = useCallback(() => {
458
+ if (!invoker || !popover) return;
459
+ if (!openState) return;
460
+ computePosition(invoker, popover, {
461
+ placement,
462
+ middleware: [
463
+ offset(8),
464
+ size({
465
+ padding: 5,
466
+ apply({ rects, availableHeight, elements }) {
467
+ Object.assign(elements.floating.style, {
468
+ ...matchReferenceWidth ? { width: `${rects.reference.width}px` } : fixedWidth ? { width: "40dvw" } : {},
469
+ ...fillAvailableHeight ? {
470
+ height: `${availableHeight - 20}px`,
471
+ minHeight: processMinHeight
472
+ } : {},
473
+ ...maxHeight ? {
474
+ minHeight: processMinHeight,
475
+ height: fitScreen ? typeof maxHeight === "string" ? maxHeight : `${maxHeight}px` : void 0,
476
+ maxHeight: fitScreen ? `${availableHeight - 20}px` : typeof maxHeight === "string" ? maxHeight : `${maxHeight}px`
477
+ } : {},
478
+ ...fitScreen && !maxHeight ? {
479
+ minHeight: processMinHeight,
480
+ maxHeight: `${availableHeight - 20}px`
481
+ } : {},
482
+ zIndex: 1
483
+ });
484
+ }
485
+ }),
486
+ flip({
487
+ mainAxis: !disableFlip,
488
+ crossAxis: false,
489
+ fallbackAxisSideDirection: disableFlipFallback ? "none" : "end",
490
+ padding: 5
491
+ }),
492
+ shift({
493
+ padding: 5,
494
+ mainAxis: !disableShift,
495
+ crossAxis: false,
496
+ limiter: limitShift({
497
+ mainAxis: !disableShift
498
+ })
499
+ }),
500
+ arrow$1({
501
+ element: !disableCaret && arrowElement ? arrowElement : null,
502
+ padding: 5
503
+ })
504
+ ]
505
+ }).then(({ x, y, placement: placement2, middlewareData }) => {
506
+ setActualPlacement(placement2);
507
+ const side = placement2.split("-")[0];
508
+ const staticSide = {
509
+ top: "bottom",
510
+ right: "left",
511
+ bottom: "top",
512
+ left: "right"
513
+ }[side];
514
+ const arrowDeg = () => {
515
+ if (staticSide === "top") return 180;
516
+ if (staticSide === "bottom") return 0;
517
+ if (staticSide === "left") return 90;
518
+ return 270;
519
+ };
520
+ Object.assign(popover.style, {
521
+ left: `${x}px`,
522
+ top: `${y}px`
523
+ });
524
+ if (middlewareData.arrow && arrowElement) {
525
+ const { x: x2, y: y2 } = middlewareData.arrow;
526
+ Object.assign(arrowElement.style, {
527
+ left: x2 != null ? `${x2}px` : "",
528
+ top: y2 != null ? `${y2}px` : "",
529
+ right: "",
530
+ bottom: "",
531
+ [staticSide]: `${-arrowElement.offsetWidth + 2}px`,
532
+ transform: `rotate(${arrowDeg()}deg)`
533
+ });
610
534
  }
535
+ });
536
+ }, [
537
+ arrowElement,
538
+ disableCaret,
539
+ disableFlip,
540
+ disableFlipFallback,
541
+ disableShift,
542
+ fillAvailableHeight,
543
+ fitScreen,
544
+ fixedWidth,
545
+ invoker,
546
+ matchReferenceWidth,
547
+ maxHeight,
548
+ openState,
549
+ placement,
550
+ popover,
551
+ processMinHeight
552
+ ]);
553
+ useLayoutEffect(() => {
554
+ if (!popover || !invoker) return;
555
+ if (!openState) {
611
556
  return;
612
557
  }
613
- safeShowPopover(popover);
614
- } else {
615
- safeHidePopover(popover);
616
- dialogContext?.setHasOpenPopover?.(false);
617
- }
618
- }, [openState, openPopover, closePopover, dialogContext, popover]);
619
- useOnClickOutside({
620
- disable: disableCloseOnClickOutside || !openState,
621
- onClickOutsideBegin: (e) => {
622
- if (!openState) return;
623
- onClickOutside?.(e);
624
- },
625
- targets: [invoker, popover],
626
- onClickOutside: () => {
627
- if (openOnHover || isControlled) return;
628
- closePopover();
629
- }
630
- });
631
- const value = useMemo(() => {
632
- return {
558
+ let requestID = null;
559
+ const cleanup = autoUpdate(invoker, popover, () => {
560
+ requestID = requestAnimationFrame(updatePosition);
561
+ });
562
+ return () => {
563
+ if (requestID) cancelAnimationFrame(requestID);
564
+ cleanup();
565
+ };
566
+ }, [invoker, popover, updatePosition, openState]);
567
+ popover?.getRootNode();
568
+ const popoverId = id ?? `popover-${uid.replace(/:/g, "")}`;
569
+ const isControlled = typeof open !== "undefined";
570
+ const openPopover = useCallback(() => {
571
+ if (!popover || !rootNode?.querySelector(`#${popoverId}`))
572
+ return;
573
+ setOpenState(true);
574
+ }, [popover, rootNode, popoverId, setOpenState]);
575
+ const closePopover = useCallback(
576
+ (fn) => {
577
+ if (!popover || !openState) return;
578
+ if (!openOnHover) onClose?.();
579
+ setOpenState(false);
580
+ setTriggerHovered(false);
581
+ setContentHovered(false);
582
+ fn?.();
583
+ },
584
+ [
585
+ popover,
586
+ openState,
587
+ openOnHover,
588
+ onClose,
589
+ setOpenState,
590
+ setTriggerHovered,
591
+ setContentHovered
592
+ ]
593
+ );
594
+ useImperativeHandle(
595
+ ref,
596
+ () => ({
597
+ openPopover,
598
+ closePopover
599
+ }),
600
+ [openPopover, closePopover]
601
+ );
602
+ useEffect(() => {
603
+ if (typeof openState === "undefined") return;
604
+ if (openState) {
605
+ if (dialogContext) {
606
+ if (dialogContext?.ref?.current?.open) {
607
+ safeShowPopover(popover);
608
+ dialogContext?.setHasOpenPopover?.(true);
609
+ }
610
+ return;
611
+ }
612
+ safeShowPopover(popover);
613
+ } else {
614
+ safeHidePopover(popover);
615
+ dialogContext?.setHasOpenPopover?.(false);
616
+ }
617
+ }, [openState, openPopover, closePopover, dialogContext, popover]);
618
+ useOnClickOutside({
619
+ disable: disableCloseOnClickOutside || !openState,
620
+ onClickOutsideBegin: (e) => {
621
+ if (!openState) return;
622
+ onClickOutside?.(e);
623
+ },
624
+ targets: [invoker, popover],
625
+ onClickOutside: () => {
626
+ if (openOnHover || isControlled) return;
627
+ closePopover();
628
+ }
629
+ });
630
+ const value = useMemo(() => {
631
+ return {
632
+ popoverId,
633
+ invoker,
634
+ setInvoker,
635
+ popover,
636
+ setPopover,
637
+ arrowElement,
638
+ setArrowElement,
639
+ openPopover,
640
+ closePopover,
641
+ placement,
642
+ actualPlacement,
643
+ onClose,
644
+ openOnHover,
645
+ openState,
646
+ setOpenState,
647
+ disableCloseOnClickOutside,
648
+ fillAvailableHeight,
649
+ maxHeight,
650
+ matchReferenceWidth,
651
+ fixedWidth,
652
+ disableCaret,
653
+ disableFlipFallback,
654
+ disableTriggerFocus,
655
+ disableCloseOnEscape,
656
+ noPadding,
657
+ controlled: isControlled,
658
+ modal,
659
+ arrowRef,
660
+ rootNode,
661
+ setRootNode,
662
+ delay,
663
+ triggerHovered,
664
+ setTriggerHovered,
665
+ contentHovered,
666
+ setContentHovered
667
+ };
668
+ }, [
633
669
  popoverId,
634
670
  invoker,
635
- setInvoker,
636
671
  popover,
637
- setPopover,
638
672
  arrowElement,
639
- setArrowElement,
640
673
  openPopover,
641
674
  closePopover,
642
675
  placement,
@@ -655,130 +688,97 @@ const PopoverElement = forwardRef((props, ref) => {
655
688
  disableTriggerFocus,
656
689
  disableCloseOnEscape,
657
690
  noPadding,
658
- controlled: isControlled,
691
+ isControlled,
659
692
  modal,
660
- arrowRef,
661
693
  rootNode,
662
- setRootNode,
663
694
  delay,
664
695
  triggerHovered,
665
696
  setTriggerHovered,
666
697
  contentHovered,
667
698
  setContentHovered
668
- };
669
- }, [
670
- popoverId,
671
- invoker,
672
- popover,
673
- arrowElement,
674
- openPopover,
675
- closePopover,
676
- placement,
677
- actualPlacement,
678
- onClose,
679
- openOnHover,
680
- openState,
681
- setOpenState,
682
- disableCloseOnClickOutside,
683
- fillAvailableHeight,
684
- maxHeight,
685
- matchReferenceWidth,
686
- fixedWidth,
687
- disableCaret,
688
- disableFlipFallback,
689
- disableTriggerFocus,
690
- disableCloseOnEscape,
691
- noPadding,
692
- isControlled,
693
- modal,
694
- rootNode,
695
- delay,
696
- triggerHovered,
697
- setTriggerHovered,
698
- contentHovered,
699
- setContentHovered
700
- ]);
701
- return /* @__PURE__ */ jsx(PopoverContext.Provider, { value, children });
702
- });
703
- PopoverElement.displayName = "Popover";
704
- const Popover = Object.assign(PopoverElement, {
705
- /**
706
- * PopoverTrigger component for creating custom trigger elements.
707
- *
708
- * Features:
709
- * - Supports custom trigger elements via render prop pattern
710
- * - Automatic focus management and keyboard interaction
711
- * - Hover and click event handling
712
- * - Accessibility attributes (aria-haspopup, aria-expanded, aria-details)
713
- * - Context integration with parent popover
714
- * - Automatic tracking ID generation for analytics
715
- *
716
- * @example
717
- * <Popover.Trigger>
718
- * {(props) => (
719
- * <button {...props}>
720
- * Click to open popover
721
- * </button>
722
- * )}
723
- * </Popover.Trigger>
724
- */
725
- Trigger: PopoverTrigger,
726
- /**
727
- * PopoverContent component for the main popover content area.
728
- *
729
- * Features:
730
- * - Automatic positioning and sizing based on trigger
731
- * - Screen boundary detection and fitting
732
- * - Scroll handling with custom scroller reference
733
- * - Focus management and keyboard navigation
734
- * - Hover interaction support for tooltip mode
735
- * - Escape key handling for closing
736
- * - Tab key trapping for modal popovers
737
- * - Arrow/caret indicator with automatic positioning
738
- * - Context integration with parent popover
739
- * - Accessibility support with proper ARIA roles
740
- *
741
- * @example
742
- * <Popover.Content>
743
- * <p>This is the popover content</p>
744
- * <Popover.Close>Close</Popover.Close>
745
- * </Popover.Content>
746
- */
747
- Content: PopoverContent,
748
- /**
749
- * PopoverClose component for closing the popover.
750
- *
751
- * Features:
752
- * - Automatic popover closing on click
753
- * - Supports all Button component props and styling
754
- * - Controlled and uncontrolled mode support
755
- * - Context integration with parent popover
756
- * - Accessibility support with proper button semantics
757
- * - Delayed closing for controlled mode
758
- * - Automatic tracking ID generation for analytics
759
- *
760
- * @example
761
- * <Popover.Close>Close</Popover.Close>
762
- */
763
- Close: PopoverClose,
764
- /**
765
- * PopoverButton component for creating button-style triggers.
766
- *
767
- * Features:
768
- * - Button styling and behavior with all Button props
769
- * - Automatic popover opening on click
770
- * - Hover interaction support for tooltip mode
771
- * - Focus management and keyboard navigation
772
- * - Accessibility attributes (aria-haspopup, aria-expanded, aria-details)
773
- * - Context integration with parent popover
774
- * - Event handling for mouse, keyboard, and focus events
775
- * - Automatic tracking ID generation for analytics
776
- *
777
- * @example
778
- * <Popover.Button>Click to open</Popover.Button>
779
- */
780
- Button: PopoverButton
781
- });
699
+ ]);
700
+ return /* @__PURE__ */ jsx(PopoverContext.Provider, { value, children });
701
+ }),
702
+ {
703
+ /**
704
+ * PopoverTrigger component for creating custom trigger elements.
705
+ *
706
+ * Features:
707
+ * - Supports custom trigger elements via render prop pattern
708
+ * - Automatic focus management and keyboard interaction
709
+ * - Hover and click event handling
710
+ * - Accessibility attributes (aria-haspopup, aria-expanded, aria-details)
711
+ * - Context integration with parent popover
712
+ * - Automatic tracking ID generation for analytics
713
+ *
714
+ * @example
715
+ * <Popover.Trigger>
716
+ * {(props) => (
717
+ * <button {...props}>
718
+ * Click to open popover
719
+ * </button>
720
+ * )}
721
+ * </Popover.Trigger>
722
+ */
723
+ Trigger: PopoverTrigger,
724
+ /**
725
+ * PopoverContent component for the main popover content area.
726
+ *
727
+ * Features:
728
+ * - Automatic positioning and sizing based on trigger
729
+ * - Screen boundary detection and fitting
730
+ * - Scroll handling with custom scroller reference
731
+ * - Focus management and keyboard navigation
732
+ * - Hover interaction support for tooltip mode
733
+ * - Escape key handling for closing
734
+ * - Tab key trapping for modal popovers
735
+ * - Arrow/caret indicator with automatic positioning
736
+ * - Context integration with parent popover
737
+ * - Accessibility support with proper ARIA roles
738
+ *
739
+ * @example
740
+ * <Popover.Content>
741
+ * <p>This is the popover content</p>
742
+ * <Popover.Close>Close</Popover.Close>
743
+ * </Popover.Content>
744
+ */
745
+ Content: PopoverContent,
746
+ /**
747
+ * PopoverClose component for closing the popover.
748
+ *
749
+ * Features:
750
+ * - Automatic popover closing on click
751
+ * - Supports all Button component props and styling
752
+ * - Controlled and uncontrolled mode support
753
+ * - Context integration with parent popover
754
+ * - Accessibility support with proper button semantics
755
+ * - Delayed closing for controlled mode
756
+ * - Automatic tracking ID generation for analytics
757
+ *
758
+ * @example
759
+ * <Popover.Close>Close</Popover.Close>
760
+ */
761
+ Close: PopoverClose,
762
+ /**
763
+ * PopoverButton component for creating button-style triggers.
764
+ *
765
+ * Features:
766
+ * - Button styling and behavior with all Button props
767
+ * - Automatic popover opening on click
768
+ * - Hover interaction support for tooltip mode
769
+ * - Focus management and keyboard navigation
770
+ * - Accessibility attributes (aria-haspopup, aria-expanded, aria-details)
771
+ * - Context integration with parent popover
772
+ * - Event handling for mouse, keyboard, and focus events
773
+ * - Automatic tracking ID generation for analytics
774
+ *
775
+ * @example
776
+ * <Popover.Button>Click to open</Popover.Button>
777
+ */
778
+ Button: PopoverButton
779
+ }
780
+ );
781
+ Popover.displayName = "Popover";
782
782
 
783
783
  export { Popover as P, usePopoverContext as u };
784
- //# sourceMappingURL=Popover-Br6qPgKe.js.map
784
+ //# sourceMappingURL=Popover-Rha0q-Pv.js.map