@deque/cauldron-react 6.17.1 → 6.18.0-canary.8b18ee78
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.
- package/lib/components/ActionMenu/ActionMenu.d.ts +3 -0
- package/lib/components/AnchoredOverlay/index.d.ts +2 -0
- package/lib/components/Popover/index.d.ts +1 -0
- package/lib/components/TextEllipsis/index.d.ts +1 -0
- package/lib/components/Tooltip/index.d.ts +1 -0
- package/lib/index.js +43 -25
- package/package.json +1 -1
|
@@ -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 & {
|
|
@@ -10,6 +10,7 @@ interface TextEllipsisBaseProps extends PolymorphicProps<React.HTMLAttributes<HT
|
|
|
10
10
|
* Only use this prop if you have an alternative way to make the full text accessible.
|
|
11
11
|
*/
|
|
12
12
|
hideTooltip?: boolean;
|
|
13
|
+
onOverflowChange?: (hasOverflow: boolean) => void;
|
|
13
14
|
}
|
|
14
15
|
interface TextEllipsisWithTooltipProps extends TextEllipsisBaseProps {
|
|
15
16
|
tooltipProps?: Omit<TooltipProps, 'target' | 'association' | 'children'>;
|
|
@@ -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 (
|
|
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
|
-
|
|
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
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
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
|
-
|
|
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
|
|
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)))
|
|
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
|
|
|
@@ -4672,7 +4685,7 @@ function TimelineItem(_a) {
|
|
|
4672
4685
|
}
|
|
4673
4686
|
|
|
4674
4687
|
var TextEllipsis = React__default["default"].forwardRef(function (_a, ref) {
|
|
4675
|
-
var className = _a.className, children = _a.children, maxLines = _a.maxLines, as = _a.as, tooltipProps = _a.tooltipProps, hideTooltip = _a.hideTooltip, props = tslib.__rest(_a, ["className", "children", "maxLines", "as", "tooltipProps", "hideTooltip"]);
|
|
4688
|
+
var className = _a.className, children = _a.children, maxLines = _a.maxLines, as = _a.as, tooltipProps = _a.tooltipProps, hideTooltip = _a.hideTooltip, onOverflowChange = _a.onOverflowChange, props = tslib.__rest(_a, ["className", "children", "maxLines", "as", "tooltipProps", "hideTooltip", "onOverflowChange"]);
|
|
4676
4689
|
var Element = 'div';
|
|
4677
4690
|
var sharedRef = useSharedRef(ref);
|
|
4678
4691
|
var _b = tslib.__read(React.useState(false), 2), hasOverflow = _b[0], setHasOverflow = _b[1];
|
|
@@ -4711,6 +4724,11 @@ var TextEllipsis = React__default["default"].forwardRef(function (_a, ref) {
|
|
|
4711
4724
|
observer === null || observer === void 0 ? void 0 : observer.disconnect();
|
|
4712
4725
|
};
|
|
4713
4726
|
}, [hideTooltip]);
|
|
4727
|
+
React.useEffect(function () {
|
|
4728
|
+
if (typeof onOverflowChange === 'function') {
|
|
4729
|
+
onOverflowChange(hasOverflow);
|
|
4730
|
+
}
|
|
4731
|
+
}, [hasOverflow]);
|
|
4714
4732
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
4715
4733
|
React__default["default"].createElement(Element, tslib.__assign({ className: classNames__default["default"]('TextEllipsis', className, {
|
|
4716
4734
|
'TextEllipsis--multiline': !!maxLines
|
|
@@ -5070,7 +5088,7 @@ ActionListLinkItem.displayName = 'ActionListLinkItem';
|
|
|
5070
5088
|
|
|
5071
5089
|
var _a = tslib.__read(['ArrowDown', 'ArrowUp'], 2), ArrowDown = _a[0], ArrowUp = _a[1];
|
|
5072
5090
|
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"]);
|
|
5091
|
+
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
5092
|
var _c = tslib.__read(React.useState(false), 2), open = _c[0], setOpen = _c[1];
|
|
5075
5093
|
var _d = tslib.__read(React.useState('first'), 2), focusStrategy = _d[0], setFocusStrategy = _d[1];
|
|
5076
5094
|
var triggerRef = React.useRef(null);
|
|
@@ -5138,7 +5156,7 @@ var ActionMenu = React.forwardRef(function (_a, ref) {
|
|
|
5138
5156
|
}, [open]);
|
|
5139
5157
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
5140
5158
|
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, {
|
|
5159
|
+
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
5160
|
ref: actionMenuListRef,
|
|
5143
5161
|
role: 'menu',
|
|
5144
5162
|
onAction: handleAction,
|
package/package.json
CHANGED