jobiqo-cl
Version:
[](https://circleci.com/gh/jobiqo/jobiqo-cl)
36 lines (33 loc) • 1.34 kB
JavaScript
import { __rest } from '../../../../node_modules/tslib/tslib.es6.js';
import React__default, { useRef, useState } from 'react';
import useOutsideClick from '../../../hooks/clickOustside.js';
import { PopoverWrapper, PopoverContent } from './styles.js';
/**
* @file index.tsx
*
* @fileoverview Shows contents inside a popover. Also displays a
* trigger for displaying the popover.
*/
const Popover = (_a) => {
var { children, trigger, position = 'bottom', onToggle, maxHeight } = _a, props = __rest(_a, ["children", "trigger", "position", "onToggle", "maxHeight"]);
const ref = useRef();
const [shown, setShown] = useState(false);
const Trigger = trigger;
useOutsideClick(ref, () => {
setShown(false);
if (onToggle) {
onToggle(false);
}
});
return (React__default.createElement(PopoverWrapper, Object.assign({ ref: ref, position: position }, props),
React__default.cloneElement(Trigger, {
onClick: e => {
setShown(!shown);
if (onToggle) {
onToggle(false);
}
}
}),
shown && (React__default.createElement(PopoverContent, Object.assign({ position: position, maxHeight: maxHeight }, props), children))));
};
export { Popover };