@lvxiaowu/antd4
Version:
antd4-components
70 lines (59 loc) • 3.09 kB
JavaScript
var _excluded = ["store", "children", "getProps"];
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import React, { useRef } from 'react';
import { Button, Modal, Space } from 'antd';
import { observer } from 'mobx-react-lite';
import { DataType } from '@lvxiaowu/utils';
var Footer = observer(function (_ref) {
var store = _ref.store;
var loading = store.loading;
return /*#__PURE__*/React.createElement(Space, {
style: {
width: '100%',
justifyContent: 'flex-end'
}
}, /*#__PURE__*/React.createElement(Button, {
disabled: loading,
onClick: store.close
}, "\u53D6\u6D88"), /*#__PURE__*/React.createElement(Button, {
loading: loading,
onClick: store.handleOk,
type: "primary"
}, "\u786E\u5B9A"));
});
function MyModal(_ref2) {
var store = _ref2.store,
children = _ref2.children,
getProps = _ref2.getProps,
rest = _objectWithoutProperties(_ref2, _excluded);
var modalStore = (store === null || store === void 0 ? void 0 : store.$modal) || store;
if (!modalStore) {
console.error('Modal组件必须传store属性,并且是ModalStore的实例');
return null;
}
var hasOpened = useRef(false);
var visible = modalStore.visible,
openValues = modalStore.openValues;
if (visible) {
hasOpened.current = true;
}
var propsByData = hasOpened.current ? getProps === null || getProps === void 0 ? void 0 : getProps(openValues) : {};
return /*#__PURE__*/React.createElement(Modal, _extends({
destroyOnClose: true,
visible: visible,
onCancel: modalStore.close,
footer: /*#__PURE__*/React.createElement(Footer, {
store: modalStore
})
}, rest, propsByData), hasOpened.current && (DataType.isFunc(children) ? children(openValues) : children));
}
var SdModal = observer(MyModal);
SdModal.confirm = Modal.confirm;
SdModal.info = Modal.info;
SdModal.success = Modal.success;
SdModal.error = Modal.error;
SdModal.warning = Modal.warning;
SdModal.useModal = Modal.useModal;
export default SdModal;