react-antd-dashboard
Version:
React dashboard layout solution created using AntD and permission based navigation. Supports theming with Less, parameterized routes and private routing. Contains useful components for dashboard application.
71 lines (61 loc) • 2.07 kB
JavaScript
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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import React from 'react';
import { Modal } from 'antd';
const withModal = defaultModalData => Component => {
class HOC extends React.Component {
constructor(props) {
super(props);
_defineProperty(this, "showDialog", modalData => {
if (modalData && modalData != undefined) {
this.setState({
visible: true,
modalData
});
} else {
this.setState({
visible: true,
modalData: defaultModalData || null
});
}
});
_defineProperty(this, "closeDialog", () => {
return new Promise(resolve => {
this.setState({
visible: false,
modalData: defaultModalData || null
}, () => {
return resolve();
});
});
});
this.state = {
modalData: defaultModalData || null,
visible: false
};
}
render() {
const {
modalData,
visible
} = this.state;
const modalProps = {
visible,
destroyOnClose: true,
onCancel: e => {
this.closeDialog().then(() => {
if (this.props.onCancel) this.props.onCancel(e);
});
}
};
return /*#__PURE__*/React.createElement(Component, _extends({}, this.props, {
closeDialog: this.closeDialog,
showDialog: this.showDialog,
modalProps: modalProps,
modalData: modalData
}));
}
}
return HOC;
};
export default withModal;