form-render
Version:
通过 JSON Schema 生成标准 Form,常用于自定义搭建配置界面生成
80 lines (79 loc) • 4.5 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = withProvider;
require("antd/es/config-provider/style");
var _configProvider = _interopRequireDefault(require("antd/es/config-provider"));
var _tslib = require("tslib");
var _react = _interopRequireWildcard(require("react"));
var _dayjs = _interopRequireDefault(require("dayjs"));
var _ahooks = require("ahooks");
var _zh_CN = _interopRequireDefault(require("antd/lib/locale/zh_CN"));
var _en_US = _interopRequireDefault(require("antd/lib/locale/en_US"));
var _locales = _interopRequireDefault(require("./locales"));
require("dayjs/locale/zh-cn");
var _store = require("./models/store");
var _context = require("./models/context");
var _validateMessage = require("./models/validateMessage");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function withProvider(Element, defaultWidgets) {
return function (props) {
var configProvider = props.configProvider,
_props$locale = props.locale,
locale = _props$locale === void 0 ? 'zh-CN' : _props$locale,
widgets = props.widgets,
methods = props.methods,
form = props.form,
validateMessages = props.validateMessages,
_props$globalProps = props.globalProps,
globalProps = _props$globalProps === void 0 ? {} : _props$globalProps,
_props$globalConfig = props.globalConfig,
globalConfig = _props$globalConfig === void 0 ? {} : _props$globalConfig,
otherProps = (0, _tslib.__rest)(props, ["configProvider", "locale", "widgets", "methods", "form", "validateMessages", "globalProps", "globalConfig"]);
var storeRef = (0, _react.useRef)((0, _store.createStore)());
var store = storeRef.current;
(0, _react.useEffect)(function () {
if (locale === 'en-US') {
_dayjs.default.locale('en');
return;
}
_dayjs.default.locale('zh-cn');
}, [locale]);
(0, _ahooks.useUnmount)(function () {
form.resetFields();
});
if (!form) {
console.warn('Please provide a form instance to FormRender');
return null;
}
var antdLocale = locale === 'zh-CN' ? _zh_CN.default : _en_US.default;
var formValidateMessages = locale === 'zh-CN' ? _validateMessage.validateMessagesCN : _validateMessage.validateMessagesEN;
var configContext = {
locale: locale,
widgets: Object.assign(Object.assign({}, defaultWidgets), widgets),
methods: methods,
form: form,
globalProps: globalProps,
globalConfig: globalConfig
};
var langPack = Object.assign(Object.assign(Object.assign({}, antdLocale), {
'FormRender': _locales.default[locale]
}), configProvider === null || configProvider === void 0 ? void 0 : configProvider.locale);
return /*#__PURE__*/_react.default.createElement(_configProvider.default, Object.assign({}, configProvider, {
locale: langPack,
form: {
validateMessages: Object.assign(Object.assign({}, formValidateMessages), validateMessages)
}
}), /*#__PURE__*/_react.default.createElement(_context.ConfigContext.Provider, {
value: configContext
}, /*#__PURE__*/_react.default.createElement(_context.FRContext.Provider, {
value: store
}, /*#__PURE__*/_react.default.createElement(Element, Object.assign({
form: form
}, otherProps)))));
};
}
;