@servicetitan/anvil2 1.46.2 → 1.46.4

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 (180) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/{Avatar-CyGjhToG.js → Avatar-3d5Kv2CF.js} +2 -2
  3. package/dist/{Avatar-CyGjhToG.js.map → Avatar-3d5Kv2CF.js.map} +1 -1
  4. package/dist/{Avatar-D07f9NH_.js → Avatar-DJ3oJNsv.js} +2 -2
  5. package/dist/{Avatar-D07f9NH_.js.map → Avatar-DJ3oJNsv.js.map} +1 -1
  6. package/dist/Avatar.js +2 -2
  7. package/dist/{Calendar-X9qUi6Vx.js → Calendar-BqOvsaby.js} +246 -195
  8. package/dist/Calendar-BqOvsaby.js.map +1 -0
  9. package/dist/Calendar.js +1 -1
  10. package/dist/{Checkbox-CcYtto5f.js → Checkbox-C5PX8wur.js} +2 -2
  11. package/dist/{Checkbox-CcYtto5f.js.map → Checkbox-C5PX8wur.js.map} +1 -1
  12. package/dist/{Checkbox-BDohwHXQ.js → Checkbox-DAODkzN3.js} +2 -2
  13. package/dist/{Checkbox-BDohwHXQ.js.map → Checkbox-DAODkzN3.js.map} +1 -1
  14. package/dist/Checkbox.js +2 -2
  15. package/dist/{Chip-Bz-vlQ4D.js → Chip-DLU13qe-.js} +2 -2
  16. package/dist/{Chip-Bz-vlQ4D.js.map → Chip-DLU13qe-.js.map} +1 -1
  17. package/dist/Chip.js +1 -1
  18. package/dist/{Combobox-DQmW8Tyl.js → Combobox-DO8cIvRQ.js} +6 -6
  19. package/dist/{Combobox-DQmW8Tyl.js.map → Combobox-DO8cIvRQ.js.map} +1 -1
  20. package/dist/Combobox.js +1 -1
  21. package/dist/{DateField-C43nfkbx.js → DateField-DLqKbCcm.js} +35 -101
  22. package/dist/DateField-DLqKbCcm.js.map +1 -0
  23. package/dist/DateField.js +1 -1
  24. package/dist/{DateFieldRange-g7n5QYww.js → DateFieldRange-DI-iF-sd.js} +54 -55
  25. package/dist/DateFieldRange-DI-iF-sd.js.map +1 -0
  26. package/dist/DateFieldRange.js +1 -1
  27. package/dist/{DateFieldSingle-D3tneqeG.js → DateFieldSingle-BXakaSIE.js} +50 -52
  28. package/dist/DateFieldSingle-BXakaSIE.js.map +1 -0
  29. package/dist/DateFieldSingle.js +1 -1
  30. package/dist/{DateFieldYearless-3JBVj3wn.js → DateFieldYearless-BmeKGaDc.js} +2 -2
  31. package/dist/{DateFieldYearless-3JBVj3wn.js.map → DateFieldYearless-BmeKGaDc.js.map} +1 -1
  32. package/dist/DateFieldYearless.js +1 -1
  33. package/dist/{DaysOfTheWeek-RcPgDoM3.js → DaysOfTheWeek-DPH13VCK.js} +3 -3
  34. package/dist/{DaysOfTheWeek-RcPgDoM3.js.map → DaysOfTheWeek-DPH13VCK.js.map} +1 -1
  35. package/dist/DaysOfTheWeek.js +1 -1
  36. package/dist/{Dialog-FNJ16gY6.js → Dialog-xsgqM6e1.js} +13 -20
  37. package/dist/Dialog-xsgqM6e1.js.map +1 -0
  38. package/dist/Dialog.js +1 -1
  39. package/dist/DndSort.js +46 -6
  40. package/dist/DndSort.js.map +1 -1
  41. package/dist/{Drawer-DT31CMRd.js → Drawer-DpN7wUNy.js} +14 -21
  42. package/dist/Drawer-DpN7wUNy.js.map +1 -0
  43. package/dist/Drawer.js +1 -1
  44. package/dist/{FieldLabel-BP8QK5UR.js → FieldLabel-Bgl3iu13.js} +2 -2
  45. package/dist/{FieldLabel-BP8QK5UR.js.map → FieldLabel-Bgl3iu13.js.map} +1 -1
  46. package/dist/FieldLabel.js +1 -1
  47. package/dist/{InputMask-CPuYMcw9.js → InputMask-B13KumrK.js} +2 -2
  48. package/dist/{InputMask-CPuYMcw9.js.map → InputMask-B13KumrK.js.map} +1 -1
  49. package/dist/InputMask.js +1 -1
  50. package/dist/{ListView-BJI8BQJ-.js → ListView-C-cVQZHp.js} +3 -3
  51. package/dist/{ListView-BJI8BQJ-.js.map → ListView-C-cVQZHp.js.map} +1 -1
  52. package/dist/ListView.js +1 -1
  53. package/dist/{Listbox-CUhMbFm2.js → Listbox-DxGx630W.js} +2 -2
  54. package/dist/{Listbox-CUhMbFm2.js.map → Listbox-DxGx630W.js.map} +1 -1
  55. package/dist/Listbox.js +1 -1
  56. package/dist/{Menu-t_11BIhU.js → Menu-DUZqzpwg.js} +6 -8
  57. package/dist/Menu-DUZqzpwg.js.map +1 -0
  58. package/dist/Menu.js +1 -1
  59. package/dist/{NumberField-Bjf9Tyvf.js → NumberField-DWPAy1eG.js} +7 -7
  60. package/dist/{NumberField-Bjf9Tyvf.js.map → NumberField-DWPAy1eG.js.map} +1 -1
  61. package/dist/NumberField.css +9 -6
  62. package/dist/NumberField.js +1 -1
  63. package/dist/{Page-BAyXnhz2.js → Page-CRuqAlNu.js} +7 -7
  64. package/dist/{Page-BAyXnhz2.js.map → Page-CRuqAlNu.js.map} +1 -1
  65. package/dist/Page.js +1 -1
  66. package/dist/{Pagination-DCBic619.js → Pagination-B_G9QcHf.js} +3 -3
  67. package/dist/{Pagination-DCBic619.js.map → Pagination-B_G9QcHf.js.map} +1 -1
  68. package/dist/Pagination.js +1 -1
  69. package/dist/{Popover-CrksxqKk.js → Popover-v8R920kj.js} +135 -200
  70. package/dist/Popover-v8R920kj.js.map +1 -0
  71. package/dist/Popover.js +1 -1
  72. package/dist/{ProgressBar-CgsAW2d8.js → ProgressBar-BWN2yv1s.js} +2 -2
  73. package/dist/{ProgressBar-CgsAW2d8.js.map → ProgressBar-BWN2yv1s.js.map} +1 -1
  74. package/dist/ProgressBar.js +1 -1
  75. package/dist/{Radio-C_rvxw74.js → Radio-C5riI-do.js} +2 -2
  76. package/dist/{Radio-C_rvxw74.js.map → Radio-C5riI-do.js.map} +1 -1
  77. package/dist/Radio.js +2 -2
  78. package/dist/{RadioGroup-DxBblSrx.js → RadioGroup-B7O06pVu.js} +2 -2
  79. package/dist/{RadioGroup-DxBblSrx.js.map → RadioGroup-B7O06pVu.js.map} +1 -1
  80. package/dist/{SearchField-Bb0uObwG.js → SearchField-CbwGErC4.js} +2 -2
  81. package/dist/{SearchField-Bb0uObwG.js.map → SearchField-CbwGErC4.js.map} +1 -1
  82. package/dist/SearchField.js +1 -1
  83. package/dist/{SegmentedControl-DC4BpdH5.js → SegmentedControl-CLDdes8W.js} +2 -2
  84. package/dist/{SegmentedControl-DC4BpdH5.js.map → SegmentedControl-CLDdes8W.js.map} +1 -1
  85. package/dist/SegmentedControl.js +1 -1
  86. package/dist/{SelectCard-DunNE9R3.js → SelectCard-Ca07K1FW.js} +3 -3
  87. package/dist/{SelectCard-DunNE9R3.js.map → SelectCard-Ca07K1FW.js.map} +1 -1
  88. package/dist/SelectCard.js +1 -1
  89. package/dist/{SelectTrigger-BYysLREL.js → SelectTrigger-CaXX1SHG.js} +3 -3
  90. package/dist/{SelectTrigger-BYysLREL.js.map → SelectTrigger-CaXX1SHG.js.map} +1 -1
  91. package/dist/SelectTrigger.js +1 -1
  92. package/dist/{SelectTriggerBase-DqUpJgzk.js → SelectTriggerBase-C7TLCna1.js} +3 -3
  93. package/dist/{SelectTriggerBase-DqUpJgzk.js.map → SelectTriggerBase-C7TLCna1.js.map} +1 -1
  94. package/dist/{SideNav-B9AWmF_H.js → SideNav-nqq5sAwz.js} +2 -2
  95. package/dist/{SideNav-B9AWmF_H.js.map → SideNav-nqq5sAwz.js.map} +1 -1
  96. package/dist/SideNav.js +1 -1
  97. package/dist/{Stepper-DHTrvfXw.js → Stepper-DQ_Hm-AI.js} +2 -2
  98. package/dist/{Stepper-DHTrvfXw.js.map → Stepper-DQ_Hm-AI.js.map} +1 -1
  99. package/dist/Stepper.js +1 -1
  100. package/dist/{Tab-0zx9hsw8.js → Tab-CzNx3IdF.js} +2 -2
  101. package/dist/{Tab-0zx9hsw8.js.map → Tab-CzNx3IdF.js.map} +1 -1
  102. package/dist/Tab.js +1 -1
  103. package/dist/{TextField-CFWs3lm9.js → TextField-D9gD-34Q.js} +3 -3
  104. package/dist/{TextField-CFWs3lm9.js.map → TextField-D9gD-34Q.js.map} +1 -1
  105. package/dist/{TextField-Cge6IRo5.js → TextField-uCHgwO5F.js} +2 -2
  106. package/dist/{TextField-Cge6IRo5.js.map → TextField-uCHgwO5F.js.map} +1 -1
  107. package/dist/TextField.js +1 -1
  108. package/dist/{Textarea-CXd3NKkW.js → Textarea-B2-6m291.js} +3 -3
  109. package/dist/{Textarea-CXd3NKkW.js.map → Textarea-B2-6m291.js.map} +1 -1
  110. package/dist/Textarea.js +1 -1
  111. package/dist/{TimeField-4v5aCwiG.js → TimeField-B5Jgy-Zg.js} +21 -8
  112. package/dist/TimeField-B5Jgy-Zg.js.map +1 -0
  113. package/dist/TimeField.js +1 -1
  114. package/dist/Toast.js +2 -2
  115. package/dist/{Toaster-bON5Xc1P.js → Toaster-CHyB-Mxs.js} +3 -3
  116. package/dist/{Toaster-bON5Xc1P.js.map → Toaster-CHyB-Mxs.js.map} +1 -1
  117. package/dist/{Toaster-D-rNSLTq.js → Toaster-CyiGDKMh.js} +3 -3
  118. package/dist/{Toaster-D-rNSLTq.js.map → Toaster-CyiGDKMh.js.map} +1 -1
  119. package/dist/{Toolbar-B2Jsuptz.js → Toolbar-DNErV9v8.js} +16 -15
  120. package/dist/Toolbar-DNErV9v8.js.map +1 -0
  121. package/dist/Toolbar.js +1 -1
  122. package/dist/{Tooltip-CtCLw_vx.js → Tooltip-DhtVlhah.js} +2 -2
  123. package/dist/{Tooltip-CtCLw_vx.js.map → Tooltip-DhtVlhah.js.map} +1 -1
  124. package/dist/Tooltip.js +1 -1
  125. package/dist/beta.js +1 -1
  126. package/dist/components/Calendar/Calendar.d.ts +5 -0
  127. package/dist/components/Calendar/CalendarNowButton.d.ts +3 -1
  128. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  129. package/dist/components/Dialog/internal/useInitialFocus.d.ts +15 -0
  130. package/dist/components/DndSort/internal/DndSortOverlay.d.ts +1 -1
  131. package/dist/components/NumberField/NumberField.d.ts +2 -2
  132. package/dist/components/Popover/Popover.d.ts +136 -1
  133. package/dist/components/Popover/PopoverTrigger.d.ts +0 -1
  134. package/dist/components/Popover/internal/PopoverContext.d.ts +5 -3
  135. package/dist/components/Popover/internal/usePopoverContext.d.ts +6 -4
  136. package/dist/components/Radio/Radio.d.ts +1 -1
  137. package/dist/hooks/useMergeRefs/useMergeRefs.d.ts +11 -0
  138. package/dist/index.js +43 -43
  139. package/dist/internal/components/index.d.ts +1 -0
  140. package/dist/internal/hooks/index.d.ts +2 -2
  141. package/dist/internal/hooks/useFocusWithin/useFocusWithin.d.ts +2 -1
  142. package/dist/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.d.ts +0 -1
  143. package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +5 -1
  144. package/dist/internal/hooks/usePlatform/index.d.ts +1 -1
  145. package/dist/internal/index.d.ts +5 -0
  146. package/dist/internal/types/argTypes.d.ts +154 -0
  147. package/dist/internal/types/index.d.ts +1 -0
  148. package/dist/{useFocusWithin-BhhgRXdZ.js → useFocusWithin-hi77jsrB.js} +6 -3
  149. package/dist/useFocusWithin-hi77jsrB.js.map +1 -0
  150. package/dist/useInitialFocus-CAFMgbJG.js +130 -0
  151. package/dist/useInitialFocus-CAFMgbJG.js.map +1 -0
  152. package/dist/useMergeRefs-Dfmtq9cI.js +22 -0
  153. package/dist/useMergeRefs-Dfmtq9cI.js.map +1 -0
  154. package/dist/useMergeRefs.js +1 -1
  155. package/dist/{useOnClickOutside-B1ddwORK.js → useOnClickOutside-C5AZE_I6.js} +6 -65
  156. package/dist/useOnClickOutside-C5AZE_I6.js.map +1 -0
  157. package/dist/utils-Dh3aegV3.js +50 -0
  158. package/dist/utils-Dh3aegV3.js.map +1 -0
  159. package/package.json +1 -1
  160. package/dist/Calendar-X9qUi6Vx.js.map +0 -1
  161. package/dist/DateField-C43nfkbx.js.map +0 -1
  162. package/dist/DateFieldRange-g7n5QYww.js.map +0 -1
  163. package/dist/DateFieldSingle-D3tneqeG.js.map +0 -1
  164. package/dist/Dialog-FNJ16gY6.js.map +0 -1
  165. package/dist/Drawer-DT31CMRd.js.map +0 -1
  166. package/dist/Menu-t_11BIhU.js.map +0 -1
  167. package/dist/Popover-CrksxqKk.js.map +0 -1
  168. package/dist/TimeField-4v5aCwiG.js.map +0 -1
  169. package/dist/Toolbar-B2Jsuptz.js.map +0 -1
  170. package/dist/components/DateFieldSingle/internal/useDateFieldOrchestration.d.ts +0 -17
  171. package/dist/useDateFieldOrchestration-DyAc3gPJ.js +0 -138
  172. package/dist/useDateFieldOrchestration-DyAc3gPJ.js.map +0 -1
  173. package/dist/useDialogTransitionStates-C1TtiwA_.js +0 -64
  174. package/dist/useDialogTransitionStates-C1TtiwA_.js.map +0 -1
  175. package/dist/useFocusWithin-BhhgRXdZ.js.map +0 -1
  176. package/dist/useMergeRefs-Bde85AWI.js +0 -21
  177. package/dist/useMergeRefs-Bde85AWI.js.map +0 -1
  178. package/dist/useOnClickOutside-B1ddwORK.js.map +0 -1
  179. package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js +0 -18
  180. package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +0 -1
@@ -7,11 +7,10 @@ import { B as Button } from './Button-VNQQgZ45.js';
7
7
  import { D as DialogContext } from './DrawerContext-D4tWTLVf.js';
8
8
  import { useTrackingId } from './useTrackingId.js';
9
9
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
10
- import { a as ToastProvider, b as ToasterPopover, c as ToasterContent } from './Toaster-D-rNSLTq.js';
11
- import { u as useDialogTransitionStates, a as useDialogScrollLock } from './useDialogTransitionStates-C1TtiwA_.js';
12
- import { a as useKeyboardFocusables, b as useOnClickOutside } from './useOnClickOutside-B1ddwORK.js';
13
- import { g as getActiveElement } from './getActiveElement-BcSyVE7S.js';
14
- import { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
10
+ import { a as ToastProvider, b as ToasterPopover, c as ToasterContent } from './Toaster-CyiGDKMh.js';
11
+ import { u as useDialogTransitionStates, a as useKeyboardFocusables, b as useDialogScrollLock, c as useInitialFocus } from './useInitialFocus-CAFMgbJG.js';
12
+ import { a as useOnClickOutside } from './useOnClickOutside-C5AZE_I6.js';
13
+ import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
15
14
 
16
15
  import './Dialog.css';function useDialogContext() {
17
16
  const context = useContext(DialogContext);
@@ -233,20 +232,14 @@ const DialogElement = forwardRef(
233
232
  onClose?.();
234
233
  }
235
234
  });
236
- useEffect(() => {
237
- if (!isOpenOrOpening) return;
238
- if (!focusables) return;
239
- const activeElement = getActiveElement(document);
240
- if (!activeElement) return;
241
- if (activeElement.dataset.anv !== "drawer-header-close-button" && (focusables.includes(activeElement) || activeElement.tagName === "DIALOG")) {
242
- return;
243
- }
244
- if (focusables[0]?.dataset.anv === "dialog-header-close-button" && focusables[1]) {
245
- focusables[1].focus();
246
- } else {
247
- focusables[0]?.focus();
248
- }
249
- }, [isOpenOrOpening, focusables]);
235
+ const computeFocus = useCallback((focusables2) => {
236
+ return focusables2.find(
237
+ (focusable) => focusable.dataset.anv !== "dialog-cancel-button"
238
+ ) || focusables2[0];
239
+ }, []);
240
+ useInitialFocus(elRef, {
241
+ computeFocus
242
+ });
250
243
  const onKeyDownHandler = (e) => {
251
244
  onKeyDown?.(e);
252
245
  if (e.code === "Escape") {
@@ -378,4 +371,4 @@ const Dialog = Object.assign(DialogElement, {
378
371
  });
379
372
 
380
373
  export { Dialog as D, DialogCancelButton as a, DialogContent as b, DialogFooter as c, DialogHeader as d };
381
- //# sourceMappingURL=Dialog-FNJ16gY6.js.map
374
+ //# sourceMappingURL=Dialog-xsgqM6e1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog-xsgqM6e1.js","sources":["../src/components/Dialog/internal/useDialogContext.ts","../src/components/Dialog/DialogCancelButton.tsx","../src/components/Dialog/DialogHeader.tsx","../src/components/Dialog/DialogFooter.tsx","../src/components/Dialog/DialogContent.tsx","../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { DialogContext } from \"./DialogContext\";\n\nexport function useDialogContext() {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error(\n \"useDialogContext must be used within a DialogContextProvider\",\n );\n }\n return context;\n}\n","import { MouseEvent, forwardRef } from \"react\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useDialogContext } from \"./internal/useDialogContext\";\nimport { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\n/**\n * Props for the DialogCancelButton component\n * @extends ButtonProps\n */\nexport type DialogCancelButtonProps = ButtonProps & DataTrackingId;\n\n/**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\nexport const DialogCancelButton = forwardRef<\n HTMLButtonElement,\n DialogCancelButtonProps\n>((props, ref) => {\n const { onClick, ...rest } = props;\n const { close } = useDialogContext();\n const data = {\n title: props.title,\n appearance: props.appearance,\n size: props.size,\n type: props.type,\n };\n\n const trackingId = useTrackingId({\n name: \"DialogCancelButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n close();\n };\n return (\n <Button\n aria-label=\"Close dialog\"\n data-anv=\"dialog-cancel-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n ref={ref}\n {...rest}\n />\n );\n});\n\nDialogCancelButton.displayName = \"DialogCancelButton\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport cx from \"classnames\";\n\nimport { Text } from \"../Text\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\n\nimport styles from \"./Dialog.module.scss\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\n/**\n * Props for the DialogHeader component\n * @extends ComponentPropsWithoutRef<\"header\">\n */\nexport type DialogHeaderProps = ComponentPropsWithoutRef<\"header\"> &\n DataTrackingId;\n\n/**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\nexport const DialogHeader = forwardRef<HTMLDivElement, DialogHeaderProps>(\n (props: DialogHeaderProps, ref) => {\n const { children, className, ...rest } = props;\n const data = {\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"Dialog\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const headerClassNames = cx(className, styles[\"header\"]);\n\n return (\n <header\n className={headerClassNames}\n data-anv=\"dialog-header\"\n data-tracking-id={trackingId}\n ref={ref}\n {...rest}\n >\n <Text variant=\"headline\" el=\"h1\">\n {children}\n </Text>\n <span className={styles[\"close-container\"]}>\n <DialogCancelButton\n className={styles[\"close-button\"]}\n size=\"small\"\n appearance=\"ghost\"\n aria-label=\"Close dialog\"\n icon={Close}\n />\n </span>\n </header>\n );\n },\n);\n\nDialogHeader.displayName = \"DialogHeader\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\n\n/**\n * Props for the DialogFooter component\n * @extends ComponentPropsWithoutRef<\"footer\">\n */\nexport type DialogFooterProps = ComponentPropsWithoutRef<\"footer\"> & {\n /**\n * @default false\n */\n sticky?: boolean;\n};\n\n/**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\nexport const DialogFooter = forwardRef<HTMLElement, DialogFooterProps>(\n (props, ref) => {\n const { children, className, sticky = false, ...rest } = props;\n\n const footerClassNames = cx(styles[\"footer\"], className, {\n [styles[\"sticky\"]]: sticky,\n });\n\n return (\n <footer\n className={footerClassNames}\n data-anv=\"dialog-footer\"\n ref={ref}\n {...rest}\n >\n {children}\n </footer>\n );\n },\n);\n\nDialogFooter.displayName = \"DialogFooter\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\n\n/**\n * Props for the DialogContent component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DialogContentProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n */\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (props, ref) => {\n const { children, className, ...rest } = props;\n\n const contentClassNames = cx(styles[\"content\"], className);\n\n return (\n <div\n className={contentClassNames}\n data-anv=\"dialog-content\"\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDialogContent.displayName = \"DialogContent\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n KeyboardEvent,\n} from \"react\";\nimport { DialogHeader } from \"./DialogHeader\";\nimport { DialogFooter } from \"./DialogFooter\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\nimport {\n OpenCloseTransitionStateEffects,\n useDialogScrollLock,\n useDialogTransitionStates,\n useKeyboardFocusables,\n useOnClickOutside,\n} from \"../../internal/hooks\";\nimport { DisableCloseOnEscapeOrClickProps, Size } from \"../../types\";\nimport { DialogContext, DialogContextProps } from \"./internal/DialogContext\";\nimport styles from \"./Dialog.module.scss\";\nimport { useMergeRefs } from \"../../hooks\";\nimport cx from \"classnames\";\n\nimport { ToastProvider } from \"../Toast/internal/ToastProvider\";\nimport { ToasterPopover } from \"../Toast/internal/ToasterPopover\";\nimport { ToasterContent } from \"../Toast/internal/Toaster\";\nimport { useInitialFocus } from \"./internal/useInitialFocus\";\nimport { FocusableElement } from \"tabbable\";\n\n/**\n * Props for the Dialog component\n * @extends ComponentPropsWithoutRef<\"dialog\">\n * @extends DialogTransitionStateEffects\n * @extends DisableCloseOnEscapeOrClickProps\n */\nexport type DialogProps = ComponentPropsWithoutRef<\"dialog\"> &\n OpenCloseTransitionStateEffects &\n DisableCloseOnEscapeOrClickProps & {\n /**\n * @default false\n */\n fullScreen?: boolean;\n /**\n * @default \"medium\"\n */\n size?: Extract<Size, \"medium\" | \"large\">;\n\n /**\n * @default false\n */\n open?: boolean;\n onClose?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpen?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Callback when clicking outside the dialog\n */\n onClickOutside?: (e: globalThis.MouseEvent) => void;\n /**\n * Enables scroll chaining\n * @link https://developer.mozilla.org/en-US/docs/Glossary/Scroll_chaining\n */\n enableScrollChaining?: boolean;\n };\n\nexport const DialogElement = forwardRef<HTMLDialogElement, DialogProps>(\n (props, ref) => {\n const {\n className,\n open = false,\n children,\n onOpen,\n onOpenChange,\n onClose,\n onKeyDown,\n fullScreen = false,\n disableCloseOnEscape = false,\n onClickOutside,\n disableCloseOnClickOutside = false,\n size,\n enableScrollChaining,\n onOpenAnimationStart,\n onOpenAnimationComplete,\n onCloseAnimationStart,\n onCloseAnimationComplete,\n ...rest\n } = props;\n\n const elRef = useRef<HTMLDialogElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const toasterRef = useRef<HTMLDivElement>(null);\n const [hasOpenPopover, setHasOpenPopover] =\n useState<DialogContextProps[\"hasOpenPopover\"]>(false);\n const id = useId();\n\n const { state, isOpenOrOpening } = useDialogTransitionStates(elRef, open, {\n onOpenAnimationStart: useCallback(() => {\n onOpenAnimationStart?.();\n }, [onOpenAnimationStart]),\n onOpenAnimationComplete: useCallback(() => {\n onOpenAnimationComplete?.();\n onOpen?.(); // DEPRECATED\n }, [onOpen, onOpenAnimationComplete]),\n onCloseAnimationStart: useCallback(() => {\n onCloseAnimationStart?.();\n }, [onCloseAnimationStart]),\n onCloseAnimationComplete: useCallback(() => {\n onCloseAnimationComplete?.();\n }, [onCloseAnimationComplete]),\n });\n\n // DEPRECATED\n const initial = useRef(true);\n useEffect(() => {\n if (initial.current) {\n initial.current = false;\n } else {\n onOpenChange?.(isOpenOrOpening);\n }\n }, [id, onOpenChange, isOpenOrOpening]);\n\n const classNames = cx([styles[\"dialog\"]], className, {\n [styles[\"closing\"]]: state === \"closing\",\n [styles[\"fullscreen\"]]: fullScreen,\n [styles[\"large\"]]: size === \"large\",\n });\n\n const { focusables } = useKeyboardFocusables(contentRef, {\n observeChange: true,\n });\n\n useDialogScrollLock({\n open: isOpenOrOpening,\n id,\n enableScrollChaining,\n elementRef: elRef,\n });\n\n useOnClickOutside({\n onOutsidePress: (e) => {\n if (!open) return;\n onClickOutside?.(e);\n },\n targets: [\n contentRef.current as HTMLElement,\n toasterRef.current as HTMLElement,\n ],\n onClose: () => {\n if (disableCloseOnClickOutside || !open) return;\n onClose?.();\n },\n });\n\n const computeFocus = useCallback((focusables: FocusableElement[]) => {\n return (\n focusables.find(\n (focusable) => focusable.dataset.anv !== \"dialog-cancel-button\",\n ) || focusables[0]\n );\n }, []);\n\n useInitialFocus(elRef, {\n computeFocus,\n });\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDialogElement>) => {\n onKeyDown?.(e);\n if (e.code === \"Escape\") {\n e.preventDefault();\n if (disableCloseOnEscape) return;\n if (hasOpenPopover) return;\n onClose?.();\n return;\n }\n\n if (e.code === \"Tab\") {\n if (e.shiftKey && e.target === focusables?.[0]) {\n e.preventDefault();\n (focusables[focusables.length - 1] as HTMLElement)?.focus();\n return;\n }\n if (e.target === focusables?.[focusables.length - 1] && !e.shiftKey) {\n e.preventDefault();\n focusables[0].focus();\n return;\n }\n }\n };\n\n return (\n // dialog element does seem to be interactive on MDN guideline\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <dialog\n className={classNames}\n data-anv=\"dialog\"\n data-anv-scroll-chaining={enableScrollChaining}\n data-anv-transition-state={state}\n ref={useMergeRefs([ref, elRef])}\n onKeyDown={onKeyDownHandler}\n {...rest}\n >\n <ToastProvider isDialogToaster={open}>\n <ToasterPopover>\n <ToasterContent id=\"dialog-toaster\" ref={toasterRef} />\n </ToasterPopover>\n </ToastProvider>\n <DialogContext.Provider\n value={{\n close: () => onClose?.(),\n ref: elRef,\n hasOpenPopover,\n setHasOpenPopover,\n }}\n >\n <section\n ref={contentRef}\n className={styles[\"container\"]}\n data-open={open}\n >\n {children}\n </section>\n </DialogContext.Provider>\n </dialog>\n );\n },\n);\n\nDialogElement.displayName = \"Dialog\";\n\n/**\n * Dialog component for creating modal dialogs and overlays.\n *\n * Features:\n * - Modal dialog with backdrop overlay\n * - Controlled and uncontrolled open state\n * - Smooth open/close animations\n * - Keyboard navigation and focus management\n * - Escape key and click outside to close\n * - Multiple size variants (medium, large, fullscreen)\n * - Scroll chaining support\n * - Toast integration for notifications\n * - Compound component pattern with Header, Footer, Content, and CancelButton sub-components\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog open={isOpen} onClose={() => setIsOpen(false)}>\n * <Dialog.Header>Confirm Action</Dialog.Header>\n * <Dialog.Content>Are you sure you want to proceed?</Dialog.Content>\n * <Dialog.Footer>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Confirm</Button>\n * </Dialog.Footer>\n * </Dialog>\n */\nexport const Dialog = Object.assign(DialogElement, {\n /**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\n Header: DialogHeader,\n /**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\n Footer: DialogFooter,\n /**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n */\n Content: DialogContent,\n /**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\n CancelButton: DialogCancelButton,\n});\n"],"names":["Close","focusables"],"mappings":"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"}
package/dist/Dialog.js CHANGED
@@ -1,2 +1,2 @@
1
- export { D as Dialog, a as DialogCancelButton, b as DialogContent, c as DialogFooter, d as DialogHeader, D as default } from './Dialog-FNJ16gY6.js';
1
+ export { D as Dialog, a as DialogCancelButton, b as DialogContent, c as DialogFooter, d as DialogHeader, D as default } from './Dialog-xsgqM6e1.js';
2
2
  //# sourceMappingURL=Dialog.js.map
package/dist/DndSort.js CHANGED
@@ -4225,22 +4225,62 @@ function calculateEventValidity(event) {
4225
4225
  function DndSortOverlay() {
4226
4226
  const [valid, setValid] = useState(true);
4227
4227
  const { previewRenderer } = useDndSortContext();
4228
+ const ref = useRef(null);
4229
+ const [offsetState, setOffsetState] = useState();
4228
4230
  useDndMonitor({
4229
4231
  onDragOver(event) {
4230
4232
  setValid(calculateEventValidity(event));
4231
4233
  }
4232
4234
  });
4233
- useEffect(() => {
4234
- previewRenderer({ valid });
4235
- }, [previewRenderer, valid]);
4236
4235
  const classes = cx(styles["drag-preview"], {
4237
4236
  [styles["can-be-dropped"]]: valid
4238
4237
  });
4239
4238
  const preview = previewRenderer({ valid });
4240
- if (!preview) {
4241
- return null;
4239
+ useLayoutEffect(() => {
4240
+ const dialogAncestor = resolveDialogAncestor(ref.current);
4241
+ if (dialogAncestor) {
4242
+ const offset = {
4243
+ top: dialogAncestor.getBoundingClientRect().top ?? 0,
4244
+ left: dialogAncestor.getBoundingClientRect().left ?? 0
4245
+ };
4246
+ if (offset.top !== offsetState?.top || offset.left !== offsetState?.left) {
4247
+ setOffsetState(offset);
4248
+ }
4249
+ } else if (!offsetState) {
4250
+ setOffsetState({ top: 0, left: 0 });
4251
+ }
4252
+ }, [preview, offsetState]);
4253
+ return /* @__PURE__ */ jsx("div", { ref, children: preview && offsetState ? /* @__PURE__ */ jsx(
4254
+ DragOverlay,
4255
+ {
4256
+ className: classes,
4257
+ modifiers: [offsetPosition(offsetState)],
4258
+ wrapperElement: "form",
4259
+ children: preview
4260
+ }
4261
+ ) : null });
4262
+ }
4263
+ function resolveDialogAncestor(el) {
4264
+ if (!el) return null;
4265
+ const rootNode = el.getRootNode();
4266
+ if (rootNode instanceof ShadowRoot) {
4267
+ const dialog = rootNode.host.closest("dialog");
4268
+ if (dialog) {
4269
+ return dialog;
4270
+ }
4271
+ return resolveDialogAncestor(rootNode.host);
4242
4272
  }
4243
- return /* @__PURE__ */ jsx(DragOverlay, { className: classes, children: previewRenderer({ valid }) });
4273
+ return el.closest("dialog");
4274
+ }
4275
+ function offsetPosition({ top, left }) {
4276
+ return function(args) {
4277
+ const { transform } = args;
4278
+ return {
4279
+ ...transform,
4280
+ x: transform.x - left,
4281
+ y: transform.y - top
4282
+ };
4283
+ };
4244
4284
  }
4245
4285
 
4246
4286
  const announcements = {