x-ui-design 0.8.66 → 0.8.68
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/dist/esm/types/components/Popover/Popover.d.ts +1 -1
- package/dist/esm/types/hooks/usePosition.d.ts +3 -2
- package/dist/esm/types/types/popover.d.ts +2 -1
- package/dist/index.esm.js +20 -14
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +20 -14
- package/dist/index.js.map +1 -1
- package/lib/components/Popover/Popover.tsx +9 -7
- package/lib/hooks/usePosition.ts +8 -5
- package/lib/types/popover.ts +2 -1
- package/package.json +1 -1
- package/src/app/page.tsx +2 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { PopoverProps } from "../../types/popover";
|
|
3
3
|
import './style.css';
|
|
4
|
-
declare const Popover: ({ prefixCls, content, children, trigger, placement, open, visible, title, style, overlayClassName, overlayStyle,
|
|
4
|
+
declare const Popover: ({ prefixCls, content, children, trigger, placement, open, visible, title, style, overlayClassName, overlayStyle, listenPopoverPositions, placementPositionOffset, onVisibleChange, getPopupContainer }: PopoverProps) => React.JSX.Element;
|
|
5
5
|
export default Popover;
|
|
@@ -7,9 +7,10 @@ type TPosition = {
|
|
|
7
7
|
getPopupContainer?: HTMLElement;
|
|
8
8
|
placement?: Placement;
|
|
9
9
|
offset?: number;
|
|
10
|
-
|
|
10
|
+
placementPositionOffset?: number;
|
|
11
|
+
listenPopoverPositions?: CSSProperties;
|
|
11
12
|
};
|
|
12
|
-
export declare const usePosition: ({ isOpen, offset, popupRef, placement, triggerRef,
|
|
13
|
+
export declare const usePosition: ({ isOpen, offset, popupRef, placement, triggerRef, listenPopoverPositions, getPopupContainer, placementPositionOffset }: TPosition) => {
|
|
13
14
|
showPlacement: string;
|
|
14
15
|
dropdownPosition: CSSProperties;
|
|
15
16
|
};
|
|
@@ -10,7 +10,8 @@ export type PopoverProps = DefaultProps & {
|
|
|
10
10
|
overlayClassName?: string;
|
|
11
11
|
title?: string | ReactNode;
|
|
12
12
|
visible?: boolean;
|
|
13
|
-
|
|
13
|
+
listenPopoverPositions?: CSSProperties;
|
|
14
|
+
placementPositionOffset?: number;
|
|
14
15
|
onVisibleChange?: ((open: boolean) => void) | undefined;
|
|
15
16
|
getPopupContainer?: ((node: HTMLElement) => HTMLElement) | undefined;
|
|
16
17
|
};
|
package/dist/index.esm.js
CHANGED
|
@@ -2600,8 +2600,9 @@ const usePosition = ({
|
|
|
2600
2600
|
popupRef,
|
|
2601
2601
|
placement,
|
|
2602
2602
|
triggerRef,
|
|
2603
|
-
|
|
2604
|
-
getPopupContainer
|
|
2603
|
+
listenPopoverPositions,
|
|
2604
|
+
getPopupContainer,
|
|
2605
|
+
placementPositionOffset = 1
|
|
2605
2606
|
}) => {
|
|
2606
2607
|
const [showPlacement, setShowPlacement] = useState('');
|
|
2607
2608
|
const [_dropdownPosition, setDropdownPosition] = useState({});
|
|
@@ -2635,13 +2636,13 @@ const usePosition = ({
|
|
|
2635
2636
|
setDropdownPosition({
|
|
2636
2637
|
top: (_shouldShowAbove ? triggerRef.current.offsetTop - (popupRef.current?.offsetHeight || dropdownHeight) - offset * 2 : triggerRef.current.offsetTop + triggerRef.current?.offsetHeight) + offset,
|
|
2637
2638
|
...(hasRight ? {
|
|
2638
|
-
left: triggerRef.current.offsetLeft + (triggerRef.current?.offsetWidth || 0) - (popupRef.current?.offsetWidth || 0)
|
|
2639
|
+
left: triggerRef.current.offsetLeft + (triggerRef.current?.offsetWidth || 0) - (popupRef.current?.offsetWidth || 0) / placementPositionOffset
|
|
2639
2640
|
} : {
|
|
2640
2641
|
left: triggerRef.current.offsetLeft
|
|
2641
2642
|
})
|
|
2642
2643
|
});
|
|
2643
2644
|
}
|
|
2644
|
-
}, [offset, popupRef, placement, triggerRef, getPopupContainer]);
|
|
2645
|
+
}, [offset, popupRef, placement, triggerRef, getPopupContainer, placementPositionOffset]);
|
|
2645
2646
|
useEffect(() => {
|
|
2646
2647
|
if (!isOpen) return;
|
|
2647
2648
|
const _dropdownPosition = () => dropdownPosition();
|
|
@@ -2662,7 +2663,7 @@ const usePosition = ({
|
|
|
2662
2663
|
return () => {
|
|
2663
2664
|
controller.abort();
|
|
2664
2665
|
};
|
|
2665
|
-
}, [isOpen,
|
|
2666
|
+
}, [isOpen, listenPopoverPositions, triggerRef, getPopupContainer, dropdownPosition]);
|
|
2666
2667
|
return {
|
|
2667
2668
|
showPlacement,
|
|
2668
2669
|
dropdownPosition: {
|
|
@@ -5507,7 +5508,8 @@ const Popover = ({
|
|
|
5507
5508
|
style = {},
|
|
5508
5509
|
overlayClassName = '',
|
|
5509
5510
|
overlayStyle = {},
|
|
5510
|
-
|
|
5511
|
+
listenPopoverPositions,
|
|
5512
|
+
placementPositionOffset,
|
|
5511
5513
|
onVisibleChange,
|
|
5512
5514
|
getPopupContainer
|
|
5513
5515
|
}) => {
|
|
@@ -5524,7 +5526,8 @@ const Popover = ({
|
|
|
5524
5526
|
popupRef,
|
|
5525
5527
|
placement,
|
|
5526
5528
|
triggerRef,
|
|
5527
|
-
|
|
5529
|
+
listenPopoverPositions,
|
|
5530
|
+
placementPositionOffset,
|
|
5528
5531
|
getPopupContainer: getPopupContainer?.(triggerRef.current)
|
|
5529
5532
|
});
|
|
5530
5533
|
useEffect(() => {
|
|
@@ -5559,12 +5562,15 @@ const Popover = ({
|
|
|
5559
5562
|
setInnerOpen(false);
|
|
5560
5563
|
}
|
|
5561
5564
|
}, [triggers]);
|
|
5562
|
-
const childProps = useMemo(() =>
|
|
5563
|
-
|
|
5564
|
-
|
|
5565
|
-
|
|
5566
|
-
|
|
5567
|
-
|
|
5565
|
+
const childProps = useMemo(() => ({
|
|
5566
|
+
...(triggers.includes("click") ? {
|
|
5567
|
+
onClick: handleOnClick
|
|
5568
|
+
} : {}),
|
|
5569
|
+
...(triggers.includes("hover") ? {
|
|
5570
|
+
onMouseEnter: handleOnMouseEnter,
|
|
5571
|
+
onMouseLeave: handleOnMouseLeave
|
|
5572
|
+
} : {})
|
|
5573
|
+
}), [triggers]);
|
|
5568
5574
|
const _children = useMemo(() => {
|
|
5569
5575
|
if (Children.count(children) > 1) {
|
|
5570
5576
|
children = /*#__PURE__*/React.createElement("div", null, children);
|
|
@@ -5583,7 +5589,7 @@ const Popover = ({
|
|
|
5583
5589
|
}
|
|
5584
5590
|
});
|
|
5585
5591
|
});
|
|
5586
|
-
}, [children, style
|
|
5592
|
+
}, [children, style]);
|
|
5587
5593
|
return /*#__PURE__*/React.createElement(React.Fragment, null, _children, isOpen && /*#__PURE__*/React.createElement(ConditionalWrapper, {
|
|
5588
5594
|
condition: !!getPopupContainer,
|
|
5589
5595
|
wrapper: element => getPopupContainer ? /*#__PURE__*/createPortal(element, getPopupContainer(triggerRef.current)) : /*#__PURE__*/React.createElement(React.Fragment, null, element)
|