@deque/cauldron-react 6.17.0 → 6.17.1-canary.4218550

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.
@@ -4,6 +4,8 @@ type ActionMenuTriggerFunction = (props: ActionMenuTriggerProps, open: boolean)
4
4
  declare const ActionMenu: React.ForwardRefExoticComponent<{
5
5
  children: React.ReactElement;
6
6
  trigger: React.ReactElement | ActionMenuTriggerFunction;
7
+ /** Render the action menu in a different location in the dom. */
8
+ portal?: HTMLElement | React.RefObject<HTMLElement> | undefined;
7
9
  } & Pick<{
8
10
  target: HTMLElement | React.RefObject<HTMLElement> | React.MutableRefObject<HTMLElement>;
9
11
  placement?: "auto" | import("@floating-ui/utils").Placement | "auto-start" | "auto-end" | undefined;
@@ -19,6 +21,7 @@ declare const ActionMenu: React.ForwardRefExoticComponent<{
19
21
  returnFocus?: boolean | undefined;
20
22
  returnFocusElement?: import("../../types").ElementOrRef<HTMLElement> | undefined;
21
23
  } | undefined;
24
+ portal?: HTMLElement | React.RefObject<HTMLElement> | undefined;
22
25
  children?: React.ReactNode;
23
26
  } & React.HTMLAttributes<HTMLElement> & {
24
27
  as?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
@@ -20,6 +20,8 @@ declare const AnchoredOverlay: React.ForwardRefExoticComponent<{
20
20
  focusTrap?: boolean | undefined;
21
21
  /** When `focusTrap` is true, optional arguments to configure the focus trap. */
22
22
  focusTrapOptions?: Parameters<typeof useFocusTrap>[1];
23
+ /** Render the anchored overlay in a different location in the dom. */
24
+ portal?: HTMLElement | React.RefObject<HTMLElement> | undefined;
23
25
  children?: React.ReactNode;
24
26
  } & React.HTMLAttributes<HTMLElement> & {
25
27
  as?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
@@ -8,6 +8,7 @@ type BaseProps = React.HTMLAttributes<HTMLDivElement> & {
8
8
  show: boolean;
9
9
  onClose: () => void;
10
10
  placement?: React.ComponentProps<typeof AnchoredOverlay>['placement'];
11
+ /** Render the popover in a different location in the dom. */
11
12
  portal?: React.RefObject<HTMLElement> | HTMLElement;
12
13
  };
13
14
  type CustomProps = BaseProps & {
@@ -14,7 +14,7 @@ export declare const Step: {
14
14
  (props: StepProps): React.JSX.Element;
15
15
  displayName: string;
16
16
  };
17
- interface StepperProps extends React.HTMLAttributes<HTMLOListElement> {
17
+ interface StepperProps extends React.OlHTMLAttributes<HTMLOListElement> {
18
18
  children: React.ReactNode;
19
19
  className?: string;
20
20
  }
@@ -9,6 +9,7 @@ export interface TooltipProps extends React.HTMLAttributes<HTMLDivElement> {
9
9
  show?: boolean | undefined;
10
10
  defaultShow?: boolean;
11
11
  placement?: React.ComponentProps<typeof AnchoredOverlay>['placement'];
12
+ /** Render the tooltip in a different location in the dom. */
12
13
  portal?: React.RefObject<HTMLElement> | HTMLElement;
13
14
  hideElementOnHidden?: boolean;
14
15
  }
package/lib/index.js CHANGED
@@ -826,7 +826,8 @@ function ClickOutsideListener(_a, ref) {
826
826
  // target instead of a child element target
827
827
  return;
828
828
  }
829
- if (childElementRef.current &&
829
+ if (!target &&
830
+ childElementRef.current &&
830
831
  !childElementRef.current.contains(eventTarget)) {
831
832
  onClickOutside(event);
832
833
  }
@@ -1783,7 +1784,7 @@ function getAutoAlignment(placement) {
1783
1784
  }
1784
1785
  var AnchoredOverlay = React.forwardRef(function (_a, refProp) {
1785
1786
  var _b, _c;
1786
- var as = _a.as, _d = _a.placement, initialPlacement = _d === void 0 ? 'auto' : _d, target = _a.target, children = _a.children, style = _a.style, _e = _a.open, open = _e === void 0 ? false : _e, offset = _a.offset, focusTrap = _a.focusTrap, focusTrapOptions = _a.focusTrapOptions, onOpenChange = _a.onOpenChange, onPlacementChange = _a.onPlacementChange, onShiftChange = _a.onShiftChange, props = tslib.__rest(_a, ["as", "placement", "target", "children", "style", "open", "offset", "focusTrap", "focusTrapOptions", "onOpenChange", "onPlacementChange", "onShiftChange"]);
1787
+ var as = _a.as, _d = _a.placement, initialPlacement = _d === void 0 ? 'auto' : _d, target = _a.target, children = _a.children, style = _a.style, _e = _a.open, open = _e === void 0 ? false : _e, offset = _a.offset, focusTrap = _a.focusTrap, focusTrapOptions = _a.focusTrapOptions, onOpenChange = _a.onOpenChange, onPlacementChange = _a.onPlacementChange, onShiftChange = _a.onShiftChange, portal = _a.portal, props = tslib.__rest(_a, ["as", "placement", "target", "children", "style", "open", "offset", "focusTrap", "focusTrapOptions", "onOpenChange", "onPlacementChange", "onShiftChange", "portal"]);
1787
1788
  var ref = useSharedRef(refProp);
1788
1789
  var Component = as || 'div';
1789
1790
  var _f = reactDom$1.useFloating({
@@ -1835,7 +1836,18 @@ var AnchoredOverlay = React.forwardRef(function (_a, refProp) {
1835
1836
  });
1836
1837
  }
1837
1838
  }, [onShiftChange, (_b = middlewareData.shift) === null || _b === void 0 ? void 0 : _b.x, (_c = middlewareData.shift) === null || _c === void 0 ? void 0 : _c.y]);
1838
- return (React__default["default"].createElement(Component, tslib.__assign({ ref: ref }, props, { style: tslib.__assign(tslib.__assign({}, floatingStyles), style) }), children));
1839
+ var AnchoredOverlayComponent = (React__default["default"].createElement(Component, tslib.__assign({ ref: ref }, props, { style: tslib.__assign(tslib.__assign({}, floatingStyles), style) }), children));
1840
+ if (portal && !isBrowser()) {
1841
+ return null;
1842
+ }
1843
+ if (portal && typeof portal !== 'undefined') {
1844
+ var portalElement = (portal && 'current' in portal ? portal.current : portal) ||
1845
+ (
1846
+ // eslint-disable-next-line ssr-friendly/no-dom-globals-in-react-fc
1847
+ document === null || document === void 0 ? void 0 : document.body);
1848
+ return reactDom.createPortal(AnchoredOverlayComponent, portalElement);
1849
+ }
1850
+ return AnchoredOverlayComponent;
1839
1851
  });
1840
1852
  AnchoredOverlay.displayName = 'AnchoredOverlay';
1841
1853
 
@@ -1985,18 +1997,18 @@ function Tooltip(_a) {
1985
1997
  // that the arrow needs to shift
1986
1998
  setArrowShift(x * -1);
1987
1999
  }, [variant]);
1988
- return (React__default["default"].createElement(React__default["default"].Fragment, null, (showTooltip || hideElementOnHidden) && isBrowser()
1989
- ? reactDom.createPortal(React__default["default"].createElement(AnchoredOverlay, tslib.__assign({ id: id, target: target, placement: initialPlacement, onPlacementChange: setPlacement, open: showTooltip && typeof showProp !== 'boolean', onOpenChange: setShowTooltip, onShiftChange: updateArrowShiftPosition, className: classNames__default["default"]('Tooltip', "Tooltip--".concat(placement), className, {
1990
- TooltipInfo: variant === 'info',
1991
- 'Tooltip--hidden': !showTooltip && hideElementOnHidden,
1992
- 'Tooltip--big': variant === 'big'
1993
- }), ref: setTooltipElement, role: "tooltip", offset: 8 }, props),
1994
- variant !== 'big' && React__default["default"].createElement("div", { className: "TooltipArrow", style: arrowShift ? { transform: "translateX(".concat(arrowShift, "px)") } : undefined }),
1995
- children), (portal && 'current' in portal ? portal.current : portal) ||
1996
- (
1997
- // eslint-disable-next-line ssr-friendly/no-dom-globals-in-react-fc
1998
- document === null || document === void 0 ? void 0 : document.body))
1999
- : null));
2000
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, (showTooltip || hideElementOnHidden) && isBrowser() ? (React__default["default"].createElement(AnchoredOverlay, tslib.__assign({ id: id, target: target, placement: initialPlacement, onPlacementChange: setPlacement, open: showTooltip && typeof showProp !== 'boolean', onOpenChange: setShowTooltip, onShiftChange: updateArrowShiftPosition, className: classNames__default["default"]('Tooltip', "Tooltip--".concat(placement), className, {
2001
+ TooltipInfo: variant === 'info',
2002
+ 'Tooltip--hidden': !showTooltip && hideElementOnHidden,
2003
+ 'Tooltip--big': variant === 'big'
2004
+ }), ref: setTooltipElement, role: "tooltip", offset: 8,
2005
+ // guarded by isBrowser() check
2006
+ // eslint-disable-next-line ssr-friendly/no-dom-globals-in-react-fc
2007
+ portal: portal || (document === null || document === void 0 ? void 0 : document.body) }, props),
2008
+ variant !== 'big' && (React__default["default"].createElement("div", { className: "TooltipArrow", style: arrowShift
2009
+ ? { transform: "translateX(".concat(arrowShift, "px)") }
2010
+ : undefined })),
2011
+ children)) : null));
2000
2012
  }
2001
2013
  Tooltip.displayName = 'Tooltip';
2002
2014
  var TooltipHead = function (_a) {
@@ -4643,19 +4655,20 @@ var Popover = React.forwardRef(function (_a, ref) {
4643
4655
  active: show
4644
4656
  }, [show]);
4645
4657
  useFocusTrap(popoverRef, { disabled: !show, returnFocus: true });
4646
- if (!show || !isBrowser())
4658
+ if (!show || !isBrowser()) {
4647
4659
  return null;
4648
- return reactDom.createPortal(React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: handleClickOutside },
4660
+ }
4661
+ return (React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: handleClickOutside },
4649
4662
  React__default["default"].createElement(AnchoredOverlay, tslib.__assign({ id: id, className: classNames__default["default"]('Popover', "Popover--".concat(placement), className, {
4650
4663
  'Popover--hidden': !show,
4651
4664
  'Popover--prompt': variant === 'prompt'
4652
- }), ref: popoverRef, role: "dialog", target: target, open: show, placement: initialPlacement, onPlacementChange: setPlacement, offset: 8 }, additionalProps, props),
4665
+ }), ref: popoverRef, role: "dialog", target: target, open: show, placement: initialPlacement, onPlacementChange: setPlacement, offset: 8,
4666
+ // guarded by isBrowser() check
4667
+ // eslint-disable-next-line ssr-friendly/no-dom-globals-in-react-fc
4668
+ portal: portal || (document === null || document === void 0 ? void 0 : document.body) }, additionalProps, props),
4653
4669
  React__default["default"].createElement("div", { className: "Popover__popoverArrow" }),
4654
4670
  React__default["default"].createElement("div", { className: "Popover__borderLeft" }),
4655
- variant === 'prompt' ? (React__default["default"].createElement(PromptPopoverContent, { applyButtonText: applyButtonText, onApply: onApply, closeButtonText: closeButtonText, infoText: infoText || '', onClose: handleClosePopover, infoTextId: "".concat(id, "-label") })) : (children))), (portal && 'current' in portal ? portal.current : portal) ||
4656
- // Dependent on "isBrowser" check above:
4657
- // eslint-disable-next-line ssr-friendly/no-dom-globals-in-react-fc
4658
- document.body);
4671
+ variant === 'prompt' ? (React__default["default"].createElement(PromptPopoverContent, { applyButtonText: applyButtonText, onApply: onApply, closeButtonText: closeButtonText, infoText: infoText || '', onClose: handleClosePopover, infoTextId: "".concat(id, "-label") })) : (children))));
4659
4672
  });
4660
4673
  Popover.displayName = 'Popover';
4661
4674
 
@@ -5070,7 +5083,7 @@ ActionListLinkItem.displayName = 'ActionListLinkItem';
5070
5083
 
5071
5084
  var _a = tslib.__read(['ArrowDown', 'ArrowUp'], 2), ArrowDown = _a[0], ArrowUp = _a[1];
5072
5085
  var ActionMenu = React.forwardRef(function (_a, ref) {
5073
- var className = _a.className, style = _a.style, trigger = _a.trigger, _b = _a.placement, placement = _b === void 0 ? 'bottom-start' : _b, actionMenuList = _a.children, props = tslib.__rest(_a, ["className", "style", "trigger", "placement", "children"]);
5086
+ var className = _a.className, style = _a.style, trigger = _a.trigger, _b = _a.placement, placement = _b === void 0 ? 'bottom-start' : _b, actionMenuList = _a.children, portal = _a.portal, props = tslib.__rest(_a, ["className", "style", "trigger", "placement", "children", "portal"]);
5074
5087
  var _c = tslib.__read(React.useState(false), 2), open = _c[0], setOpen = _c[1];
5075
5088
  var _d = tslib.__read(React.useState('first'), 2), focusStrategy = _d[0], setFocusStrategy = _d[1];
5076
5089
  var triggerRef = React.useRef(null);
@@ -5138,7 +5151,7 @@ var ActionMenu = React.forwardRef(function (_a, ref) {
5138
5151
  }, [open]);
5139
5152
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
5140
5153
  React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: handleClickOutside, mouseEvent: open ? undefined : false, touchEvent: open ? undefined : false }, actionMenuTrigger),
5141
- React__default["default"].createElement(AnchoredOverlay, tslib.__assign({ ref: actionMenuRef, role: "presentation", className: classNames__default["default"]('ActionMenu', className), open: open, onOpenChange: setOpen, target: triggerRef, placement: placement, offset: 4, style: tslib.__assign({ display: !open ? 'none' : undefined }, style) }, props), React__default["default"].cloneElement(actionMenuList, {
5154
+ React__default["default"].createElement(AnchoredOverlay, tslib.__assign({ ref: actionMenuRef, role: "presentation", className: classNames__default["default"]('ActionMenu', className), open: open, onOpenChange: setOpen, target: triggerRef, placement: placement, offset: 4, portal: portal, style: tslib.__assign({ display: !open ? 'none' : undefined }, style) }, props), React__default["default"].cloneElement(actionMenuList, {
5142
5155
  ref: actionMenuListRef,
5143
5156
  role: 'menu',
5144
5157
  onAction: handleAction,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deque/cauldron-react",
3
- "version": "6.17.0",
3
+ "version": "6.17.1-canary.4218550",
4
4
  "license": "MPL-2.0",
5
5
  "description": "Fully accessible react components library for Deque Cauldron",
6
6
  "homepage": "https://cauldron.dequelabs.com/",