@vnmfify/core
Version:
```shell npm i @vnmfify/core -S ```
48 lines (40 loc) • 1.53 kB
JavaScript
import { Cross } from "@vnmfify/icons";
import classNames from "classnames";
import * as React from "react";
import { useContext } from "react";
import { prefixClassname } from "../styles";
import PopupContext from "./popup.context";
function usePopupClosePlacement(placement) {
var {
placement: ctxPlacement
} = useContext(PopupContext);
if (placement) {
return placement;
}
if (ctxPlacement === "right") {
return "top-left";
}
return "top-right";
}
export default function PopupClose(props) {
var {
children = /*#__PURE__*/React.createElement(Cross, null)
} = props;
var {
onClose
} = useContext(PopupContext);
var placement = usePopupClosePlacement(props.placement);
if ( /*#__PURE__*/React.isValidElement(children)) {
var iconElement = children;
return /*#__PURE__*/React.cloneElement(iconElement, {
className: classNames(iconElement.props.classNames, prefixClassname("popup__close-icon"), {
[prefixClassname("popup__close-icon--top-left")]: placement === "top-left",
[prefixClassname("popup__close-icon--top-right")]: placement === "top-right",
[prefixClassname("popup__close-icon--bottom-left")]: placement === "bottom-left" || placement === "bottom-right"
}),
onClick: () => onClose === null || onClose === void 0 ? void 0 : onClose(false)
});
}
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
}
//# sourceMappingURL=popup-close.js.map