You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

384 lines
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"use strict";
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.proFormItemRender = exports.formInputRender = void 0;
require("antd/es/form/style");
var _form = _interopRequireDefault(require("antd/es/form"));
var _react = _interopRequireWildcard(require("react"));
var _proProvider = require("@ant-design/pro-provider");
var _proForm = _interopRequireWildcard(require("@ant-design/pro-form"));
var _classnames = _interopRequireDefault(require("classnames"));
var _context2 = require("antd/lib/config-provider/context");
var _proUtils = require("@ant-design/pro-utils");
var _utils = require("../utils");
var _container = _interopRequireDefault(require("../container"));
require("./index.less");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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; }
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; }
var formInputRender = function formInputRender(props, ref) {
var item = props.item,
intl = props.intl,
form = props.form,
type = props.type,
rest = _objectWithoutProperties(props, ["item", "intl", "form", "type"]);
var _item$valueType = item.valueType,
itemValueType = _item$valueType === void 0 ? 'text' : _item$valueType; // if function run it
var valueType = (typeof itemValueType === 'function' ? itemValueType({}) : itemValueType) || 'text';
/**
* 自定义 render
*/
if (item.renderFormItem) {
/**
*删除 renderFormItem 防止重复的 dom 渲染
*/
var renderFormItem = item.renderFormItem,
restItem = _objectWithoutProperties(item, ["renderFormItem"]);
var defaultRender = function defaultRender(newItem) {
return formInputRender(_objectSpread({}, _objectSpread(_objectSpread({}, props), {}, {
item: newItem
}) || null));
}; // 自动注入 onChange 和 value,用户自己很有肯能忘记
var dom = renderFormItem(restItem, _objectSpread(_objectSpread({}, rest), {}, {
type: type,
defaultRender: defaultRender
}), form); // 有可能不是不是一个组件
if (!_react.default.isValidElement(dom)) {
return dom;
}
var defaultProps = dom.props;
if (defaultProps.isDefaultDom) {
return dom;
} // 已用户的为主,不然过于 magic
return /*#__PURE__*/_react.default.createElement(_proForm.ProFormField, _extends({}, rest, {
ref: ref,
name: item.dataIndex
}), _react.default.cloneElement(dom, _objectSpread(_objectSpread({}, rest), defaultProps)));
}
return /*#__PURE__*/_react.default.createElement(_proForm.ProFormField, _extends({
ref: ref,
isDefaultDom: true,
valueEnum: item.valueEnum,
name: item.dataIndex,
formItemProps: item.formItemProps // valueType = textarea但是在 查询表单这里,应该是个 input 框
,
valueType: !valueType || valueType === 'textarea' ? 'text' : valueType
}, rest));
};
exports.formInputRender = formInputRender;
var proFormItemRender = function proFormItemRender(_ref) {
var item = _ref.item,
intl = _ref.intl,
formInstance = _ref.formInstance,
type = _ref.type;
var valueType = item.valueType,
dataIndex = item.dataIndex,
valueEnum = item.valueEnum,
renderFormItem = item.renderFormItem,
render = item.render,
hideInForm = item.hideInForm,
hideInSearch = item.hideInSearch,
hideInTable = item.hideInTable,
renderText = item.renderText,
order = item.order,
initialValue = item.initialValue,
ellipsis = item.ellipsis,
formItemProps = item.formItemProps,
index = item.index,
rest = _objectWithoutProperties(item, ["valueType", "dataIndex", "valueEnum", "renderFormItem", "render", "hideInForm", "hideInSearch", "hideInTable", "renderText", "order", "initialValue", "ellipsis", "formItemProps", "index"]); // 支持 function 的 title
var getTitle = function getTitle() {
if (rest.title && typeof rest.title === 'function') {
return rest.title(item, 'form', '');
}
return rest.title;
};
var dom = formInputRender({
item: item,
type: type,
intl: intl,
form: formInstance,
label: getTitle()
});
if (!dom) {
return null;
}
return dom;
};
exports.proFormItemRender = proFormItemRender;
var FormSearch = function FormSearch(_ref2) {
var onSubmit = _ref2.onSubmit,
formRef = _ref2.formRef,
_ref2$dateFormatter = _ref2.dateFormatter,
dateFormatter = _ref2$dateFormatter === void 0 ? 'string' : _ref2$dateFormatter,
type = _ref2.type,
onReset = _ref2.onReset,
searchConfig = _ref2.search,
_ref2$form = _ref2.form,
formConfig = _ref2$form === void 0 ? {} : _ref2$form;
/**
* 为了支持 dom 的消失,支持了这个 api
*/
var intl = (0, _proProvider.useIntl)();
var _Form$useForm = _form.default.useForm(),
_Form$useForm2 = _slicedToArray(_Form$useForm, 1),
form = _Form$useForm2[0];
var formInstanceRef = (0, _react.useRef)(form);
var counter = _container.default.useContainer();
/**
* 保存 valueTypeRef用于分辨是用什么方式格式化数据
*/
var valueTypeRef = (0, _react.useRef)({}); // 这么做是为了在用户修改了输入的时候触发一下子节点的render
var _React$useState = _react.default.useState(),
_React$useState2 = _slicedToArray(_React$useState, 2),
updateState = _React$useState2[1];
var forceUpdate = (0, _react.useCallback)(function () {
return updateState({});
}, []);
var isForm = type === 'form';
/**
*提交表单,根据两种模式不同,方法不相同
*/
var _submit = /*#__PURE__*/function () {
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
var value, _value;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (isForm) {
_context.next = 4;
break;
}
value = form.getFieldsValue();
if (onSubmit) {
onSubmit((0, _proUtils.conversionSubmitValue)(value, dateFormatter, valueTypeRef.current));
}
return _context.abrupt("return");
case 4:
_context.prev = 4;
_context.next = 7;
return form.validateFields();
case 7:
_value = _context.sent;
if (onSubmit) {
onSubmit((0, _proUtils.conversionSubmitValue)(_value, dateFormatter, valueTypeRef.current));
}
_context.next = 13;
break;
case 11:
_context.prev = 11;
_context.t0 = _context["catch"](4);
case 13:
case "end":
return _context.stop();
}
}
}, _callee, null, [[4, 11]]);
}));
return function submit() {
return _ref3.apply(this, arguments);
};
}();
(0, _react.useEffect)(function () {
if (!formRef) {
return;
}
if (typeof formRef === 'function') {
formRef(form);
}
if (formRef && typeof formRef !== 'function') {
// eslint-disable-next-line no-param-reassign
formRef.current = _objectSpread(_objectSpread({}, form), {}, {
submit: function submit() {
_submit();
form.submit();
}
});
}
}, []);
(0, _proUtils.useDeepCompareEffect)(function () {
if (counter.proColumns.length < 1) {
return;
}
var tempMap = {};
counter.proColumns.forEach(function (item) {
tempMap[(0, _utils.genColumnKey)(item.key, item.index)] = item.valueType;
});
valueTypeRef.current = tempMap;
}, [counter.proColumns]);
var _useContext = (0, _react.useContext)(_context2.ConfigContext),
getPrefixCls = _useContext.getPrefixCls;
var columnsList = counter.proColumns.filter(function (item) {
var valueType = item.valueType;
if (item.hideInSearch && type !== 'form') {
return false;
}
if (type === 'form' && item.hideInForm) {
return false;
}
if (valueType !== 'index' && valueType !== 'indexBorder' && valueType !== 'option' && (item.key || item.dataIndex)) {
return true;
}
return false;
}).sort(function (a, b) {
if (a && b) {
return (b.order || 0) - (a.order || 0);
}
if (a && a.order) {
return -1;
}
if (b && b.order) {
return 1;
}
return 0;
});
var domList = columnsList.map(function (item, index) {
var _item$dataIndex;
return proFormItemRender({
isForm: isForm,
formInstance: formInstanceRef.current,
item: _objectSpread({
key: ((_item$dataIndex = item.dataIndex) === null || _item$dataIndex === void 0 ? void 0 : _item$dataIndex.toString()) || index,
index: index
}, item),
type: type,
intl: intl
});
}).filter(function (item) {
return !!item;
});
var className = getPrefixCls('pro-table-search');
var formClassName = getPrefixCls('pro-table-form');
var FormCompetent = isForm ? _proForm.default : _proForm.QueryFilter;
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)(className, _defineProperty({}, formClassName, isForm))
}, /*#__PURE__*/_react.default.createElement(FormCompetent, _extends({}, searchConfig || {}, formConfig, {
form: form,
onValuesChange: function onValuesChange() {
forceUpdate();
},
onReset: onReset,
onFinish: function onFinish() {
_submit();
},
defaultCollapsed: true,
initialValues: columnsList.reduce(function (pre, item) {
var key = item.key || item.dataIndex;
if (item.initialValue) {
return _objectSpread(_objectSpread({}, pre), {}, _defineProperty({}, key, item.initialValue));
}
return pre;
}, _objectSpread({}, formConfig.initialValues)),
labelWidth: searchConfig ? searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.labelWidth : 80
}), domList));
};
var _default = FormSearch;
exports.default = _default;