UNPKG

cw-form-render-mobile

Version:

通过 JSON Schema 生成标准 Form,常用于自定义搭建配置界面生成

79 lines (78 loc) 4.39 kB
"use strict"; 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; var _configProvider = _interopRequireDefault(require("antd-mobile/es/components/config-provider")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _dayjs = _interopRequireDefault(require("dayjs")); var _ahooks = require("ahooks"); var _enUS = _interopRequireDefault(require("antd-mobile/es/locales/en-US")); var _zhCN = _interopRequireDefault(require("antd-mobile/es/locales/zh-CN")); var _locales = _interopRequireDefault(require("./locales")); require("dayjs/locale/zh-cn"); var _store = require("./models/store"); var _context = require("./models/context"); var _validateMessage = require("cw-form-render/es/models/validateMessage"); var defaultWidgets = _interopRequireWildcard(require("./widgets")); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function withProvider(Element) { 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' ? _zhCN.default : _enUS.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))))); }; }