qt-public-ui
Version:
新设计规范下业务组件库
96 lines (94 loc) • 3.86 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _reactDom = require("react-dom");
var _antd = require("antd");
var _excluded = ["offset", "onVisibleChange"];
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var getPageOffset = function getPageOffset(dom) {
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
top: 0,
left: 0
};
if (dom === document.body || !dom) {
return offset;
}
// eslint-disable-next-line no-param-reassign
offset.top += dom.offsetTop;
// eslint-disable-next-line no-param-reassign
offset.left += dom.offsetLeft;
return getPageOffset(dom.offsetParent, offset);
};
var isHTMLElement = function isHTMLElement(value) {
return value instanceof HTMLElement;
};
var getClientStyle = function getClientStyle(meta) {
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _offset$x = offset.x,
x = _offset$x === void 0 ? 0 : _offset$x,
_offset$y = offset.y,
y = _offset$y === void 0 ? 0 : _offset$y;
var clientInfo = null;
if (isHTMLElement(meta)) {
var off = getPageOffset(meta);
clientInfo = {
width: meta.offsetWidth,
height: meta.offsetHeight,
left: off.left + x,
top: off.top + y
};
} else {
var _meta = meta;
clientInfo = {
width: 1,
height: 1,
left: _meta.pageX + x,
top: _meta.pageY + y
};
}
return clientInfo;
};
var createParent = function createParent() {
var div = document.createElement('div');
div.setAttribute('style', 'position: absolute; top: 0px; left: 0px; width: 100%;');
document.body.appendChild(div);
return div;
};
var _default = exports["default"] = function _default(meta, props) {
var offset = props.offset,
onVisibleChange = props.onVisibleChange,
popoverProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
var clientStyle = getClientStyle(meta, offset);
var parent = createParent();
var onVisChange = function onVisChange(visible) {
if (!visible) {
setTimeout(function () {
(0, _reactDom.unmountComponentAtNode)(parent);
parent.parentNode && parent.parentNode.removeChild(parent);
}, 10);
}
onVisibleChange && onVisibleChange(visible);
};
var close = function close() {
onVisChange(false);
};
var popOver = /*#__PURE__*/_react["default"].createElement(_antd.Popover, (0, _extends2["default"])({}, popoverProps, {
onVisibleChange: onVisChange
}), /*#__PURE__*/_react["default"].createElement("div", {
style: _objectSpread({
position: 'absolute'
}, clientStyle)
}));
(0, _reactDom.render)(popOver, parent);
return {
close: close
};
};