UNPKG

@flatbiz/antd

Version:
244 lines (236 loc) 9.64 kB
/*! @flatjs/forge MIT @flatbiz/antd */ import { classNames } from '@dimjs/utils/class-names/class-names'; import { a as _slicedToArray, b as _objectSpread2, _ as _objectWithoutProperties } from './_rollupPluginBabelHelpers-BspM60Sw.js'; import { Fragment, useState, useRef, useMemo } from 'react'; import { F as FormItemHidden } from './form-item-hidden-BtQvJEx7.js'; import { F as FormItemWrapper } from './form-item-wrapper-Ci7-5IKi.js'; import _RedoOutlined from '@ant-design/icons/es/icons/RedoOutlined.js'; import _QuestionCircleFilled from '@ant-design/icons/es/icons/QuestionCircleFilled.js'; import { Tooltip, Spin, Form } from 'antd'; import { isUndefinedOrNull, toArray } from '@flatbiz/utils'; import { T as TextOverflow } from './text-overflow-B4NevAuv.js'; import { T as TipsWrapper } from './tips-wrapper-DvbgHMwl.js'; import { jsx, jsxs } from 'react/jsx-runtime'; import { isDeepEqual } from '@dimjs/lang/is-deep-equal'; import { fbaHooks } from './fba-hooks/index.js'; var FormItemTextContent = function FormItemTextContent(props) { var originalValue = function () { if (isUndefinedOrNull(props.value)) return props.placeholderValue; return typeof props.value === 'string' ? props.value : JSON.stringify(props.value); }(); var valueFt = props.wrap ? originalValue : /*#__PURE__*/jsx(TextOverflow, { text: originalValue || '' }); if (props.status === 'error') { return /*#__PURE__*/jsx(Fragment, { children: /*#__PURE__*/jsx(TipsWrapper, { tipType: "tooltip", tooltipProps: { title: props.errorMsg }, icon: /*#__PURE__*/jsx(_QuestionCircleFilled, { style: { color: 'red' } }), gap: 6, children: /*#__PURE__*/jsx(Tooltip, { title: "\u70B9\u51FB\u67E5\u8BE2", children: /*#__PURE__*/jsx(_RedoOutlined, { style: { color: 'red' }, onClick: props.onRequest, className: "fitc-reload-icon" }) }) }) }); } if (props.loading) { return /*#__PURE__*/jsx("span", { className: "form-item-text-content fitc-loading", style: props.style, children: /*#__PURE__*/jsx(Spin, { spinning: props.loading, size: "small", children: /*#__PURE__*/jsx("span", { style: { textIndent: '-9999px', display: 'inline-block' }, children: "Loading" }) }) }); } return /*#__PURE__*/jsx("span", { className: "form-item-text-content", style: props.style, children: props.render ? props.render(props.value) : valueFt }); }; var useRequestFormItemText = function useRequestFormItemText(props) { var serviceConfig = props.serviceConfig; var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), loading = _useState2[0], setLoading = _useState2[1]; var _useState3 = useState(), _useState4 = _slicedToArray(_useState3, 2), respData = _useState4[0], setRespData = _useState4[1]; var prevParams = fbaHooks.usePrevious(serviceConfig === null || serviceConfig === void 0 ? void 0 : serviceConfig.params); var _useState5 = useState('init'), _useState6 = _slicedToArray(_useState5, 2), status = _useState6[0], setStatus = _useState6[1]; var errorMsgRef = useRef(); var form = Form.useFormInstance(); // 用于直接发起接口调用,不能用于比较 var serviceParams = useMemo(function () { var _serviceConfig$invali; if (!(serviceConfig !== null && serviceConfig !== void 0 && serviceConfig.params) || toArray(serviceConfig === null || serviceConfig === void 0 ? void 0 : serviceConfig.invalidParamKey).length === 0) { return serviceConfig === null || serviceConfig === void 0 ? void 0 : serviceConfig.params; } var newParams = _objectSpread2({}, serviceConfig === null || serviceConfig === void 0 ? void 0 : serviceConfig.params); serviceConfig === null || serviceConfig === void 0 || (_serviceConfig$invali = serviceConfig.invalidParamKey) === null || _serviceConfig$invali === void 0 || _serviceConfig$invali.forEach(function (key) { newParams[key] = undefined; }); return newParams; }, [serviceConfig === null || serviceConfig === void 0 ? void 0 : serviceConfig.invalidParamKey, serviceConfig === null || serviceConfig === void 0 ? void 0 : serviceConfig.params]); var onInnerRequest = function onInnerRequest(params) { return new Promise(function ($return, $error) { var $Try_1_Finally = function ($Try_1_Exit) { return function ($Try_1_Value) { try { setLoading(false); return $Try_1_Exit && $Try_1_Exit.call(this, $Try_1_Value); } catch ($boundEx) { return $error($boundEx); } }.bind(this); }.bind(this); var mergeProps, keys, target, _respData, value, respDataFt; if (!serviceConfig) return $return(); mergeProps = _objectSpread2(_objectSpread2({}, serviceParams), params); keys = serviceConfig === null || serviceConfig === void 0 ? void 0 : serviceConfig.requiredParamsKeys; if (keys !== null && keys !== void 0 && keys.length) { target = keys.find(function (item) { return isUndefinedOrNull(mergeProps[item]); }); if (target) { errorMsgRef.current = "\u7F3A\u5C11\u5FC5\u586B\u53C2\u6570\uFF1A".concat(keys.join('、')); console.warn(errorMsgRef.current); setStatus('error'); return $return(); } } var $Try_1_Post = function () { try { return $return(); } catch ($boundEx) { return $error($boundEx); } }; var $Try_1_Catch = function (error) { try { console.error(error); errorMsgRef.current = (error === null || error === void 0 ? void 0 : error.message) || '接口调用异常'; setStatus('error'); return $Try_1_Finally($Try_1_Post)(); } catch ($boundEx) { return $Try_1_Finally($error)($boundEx); } }; try { if (!loading) setLoading(true); setStatus('init'); return Promise.resolve(serviceConfig.onRequest(mergeProps)).then(function ($await_2) { try { _respData = $await_2; value = props.name ? form.getFieldValue(props.name) : undefined; respDataFt = serviceConfig.onResponseAdapter ? serviceConfig.onResponseAdapter(_respData, value) : _respData; setRespData(respDataFt); setStatus('success'); return $Try_1_Finally($Try_1_Post)(); } catch ($boundEx) { return $Try_1_Catch($boundEx); } }, $Try_1_Catch); } catch (error) { $Try_1_Catch(error); } }); }; fbaHooks.useEffectCustomAsync(onInnerRequest, []); fbaHooks.useEffectCustom(function () { if (!serviceConfig) return; if (prevParams) { if (!isDeepEqual(serviceConfig.params, prevParams)) { void onInnerRequest(); } } }, [prevParams, serviceConfig === null || serviceConfig === void 0 ? void 0 : serviceConfig.params]); if (!serviceConfig) { return undefined; } return { loading: loading, status: status, viewValue: respData, onRequest: onInnerRequest, errorMsg: errorMsgRef.current }; }; var _excluded$1 = ["wrap", "render", "placeholderValue", "serviceConfig"]; var RequestText = function RequestText(props) { var wrap = props.wrap, render = props.render, placeholderValue = props.placeholderValue, serviceConfig = props.serviceConfig, otherProps = _objectWithoutProperties(props, _excluded$1); var requestResult = useRequestFormItemText({ serviceConfig: serviceConfig, name: props.name }); return /*#__PURE__*/jsx(FormItemWrapper, _objectSpread2(_objectSpread2({}, otherProps), {}, { name: undefined, className: classNames('form-item-text', props.className), children: /*#__PURE__*/jsx(FormItemTextContent, { loading: requestResult === null || requestResult === void 0 ? void 0 : requestResult.loading, wrap: wrap, render: render, placeholderValue: placeholderValue, value: requestResult === null || requestResult === void 0 ? void 0 : requestResult.viewValue, status: requestResult === null || requestResult === void 0 ? void 0 : requestResult.status, onRequest: requestResult === null || requestResult === void 0 ? void 0 : requestResult.onRequest, errorMsg: requestResult === null || requestResult === void 0 ? void 0 : requestResult.errorMsg }) })); }; var _excluded = ["wrap", "render", "placeholderValue"]; var FormItemText = function FormItemText(props) { var wrap = props.wrap, render = props.render, placeholderValue = props.placeholderValue, otherProps = _objectWithoutProperties(props, _excluded); if (props.serviceConfig) { return /*#__PURE__*/jsxs(Fragment, { children: [/*#__PURE__*/jsx(FormItemHidden, { name: props.name }), /*#__PURE__*/jsx(RequestText, _objectSpread2({}, props))] }); } return /*#__PURE__*/jsx(FormItemWrapper, _objectSpread2(_objectSpread2({}, otherProps), {}, { className: classNames('form-item-text', props.className), children: /*#__PURE__*/jsx(FormItemTextContent, { wrap: wrap, render: render, placeholderValue: placeholderValue }) })); }; FormItemText['domTypeName'] = 'FormItemText'; export { FormItemText as F }; //# sourceMappingURL=form-item-text-lMeRus2l.js.map