chowa
Version:
UI component library based on React
78 lines (77 loc) • 3.16 kB
JavaScript
/**
* @license chowa v1.1.3
*
* Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
const PropTypes = require("prop-types");
const classnames_1 = require("classnames");
const utils_1 = require("../utils");
const overlay_1 = require("../overlay");
const Popover = (props) => {
const { children, className, style, visible, defaultVisible, content, placement, onVisibleChange, title, withArrow, trigger, fixSpace, offsetX, offsetY, disabled, externalWheelHide, delay, onShow, onHide, onEnter, onLeave } = props;
const componentClass = classnames_1.default({
[utils_1.preClass('popover')]: true,
[utils_1.preClass('popover-with-arrow')]: withArrow,
[utils_1.preClass(`popover-${placement}`)]: withArrow,
[className]: utils_1.isExist(className)
});
return (React.createElement(overlay_1.default, { role: 'popover', trigger: children, enter: utils_1.preClass('zoom-center-enter'), appear: utils_1.preClass('zoom-appear'), leave: utils_1.preClass('zoom-center-leave'), className: componentClass, style: style, visible: visible, defaultVisible: defaultVisible, externalWheelHide: externalWheelHide, onVisibleChange: onVisibleChange, placement: placement, action: trigger, fixSpace: fixSpace, offsetX: offsetX, offsetY: offsetY, disabled: disabled, delay: delay, onShow: onShow, onHide: onHide, onEnter: onEnter, onLeave: onLeave },
React.createElement("div", { className: utils_1.preClass('popover-body') },
title && React.createElement("div", { className: utils_1.preClass('popover-title') }, title),
React.createElement("div", { className: utils_1.preClass('popover-content') }, content))));
};
Popover.propTypes = {
className: PropTypes.string,
style: PropTypes.object,
visible: PropTypes.bool,
defaultVisible: PropTypes.bool,
externalWheelHide: PropTypes.bool,
trigger: PropTypes.oneOf(['click', 'hover', 'focus', 'contextMenu']),
placement: PropTypes.oneOf([
'top',
'left',
'bottom',
'right',
'left-top',
'left-bottom',
'right-top',
'right-bottom',
'top-left',
'top-right',
'bottom-left',
'bottom-right'
]),
onVisibleChange: PropTypes.func,
fixSpace: PropTypes.number,
offsetX: PropTypes.number,
offsetY: PropTypes.number,
disabled: PropTypes.bool,
title: PropTypes.string,
content: PropTypes.node.isRequired,
withArrow: PropTypes.bool,
delay: PropTypes.number,
onShow: PropTypes.func,
onHide: PropTypes.func,
onEnter: PropTypes.func,
onLeave: PropTypes.func
};
Popover.defaultProps = {
visible: false,
defaultVisible: false,
externalWheelHide: true,
fixSpace: 2,
offsetX: 0,
offsetY: 0,
withArrow: true,
disabled: false,
trigger: 'hover',
placement: 'top',
delay: 200
};
exports.default = Popover;