UNPKG

app-base-react

Version:
1 lines 8.09 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mapping=exports.useForm=exports.createWidget=exports.connectForm=void 0;var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r,o=arguments[t];for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(e[r]=o[r])}return e},_connectForm=require("./connectForm"),_createWidget=(Object.defineProperty(exports,"connectForm",{enumerable:!0,get:function(){return _interopRequireDefault(_connectForm).default}}),require("./createWidget")),_useForm=(Object.defineProperty(exports,"createWidget",{enumerable:!0,get:function(){return _createWidget.createWidget}}),require("./useForm")),_react=(Object.defineProperty(exports,"useForm",{enumerable:!0,get:function(){return _interopRequireDefault(_useForm).default}}),require("react")),_react2=_interopRequireDefault(_react),_core=(require("../../../../../css/form-render/atom.css"),require("./core")),_core2=_interopRequireDefault(_core),_hooks=require("./hooks"),_mapping=(require("../../../../../css/form-render/index.css"),require("./mapping")),_utils=require("./utils"),_Watcher=require("./Watcher"),_Watcher2=_interopRequireDefault(_Watcher);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _objectWithoutProperties(e,t){var r,o={};for(r in e)0<=t.indexOf(r)||Object.prototype.hasOwnProperty.call(e,r)&&(o[r]=e[r]);return o}var defaultFinish=function(e,t){console.log("onFinish:",{data:e,errors:t})};function App(e){var n=e.id,t=e.widgets,V=e.layoutWidgets,k=e.mapping,a=e.form,r=e.className,o=e.style,s=e.beforeFinish,i=e.onFinish,A=void 0===i?defaultFinish:i,i=e.displayType,l=void 0===i?"column":i,i=e.labelAlign,u=void 0===i?"right":i,i=e.colon,c=void 0===i||i,d=e.schema,m=e.debug,i=e.scrollToFirstError,f=void 0!==i&&i,i=e.debugCss,g=e.locale,p=void 0===g?"cn":g,g=e.debounceInput,_=void 0!==g&&g,g=e.size,h=(e.configProvider,e.theme),y=e.validateMessages,b=e.watch,S=void 0===b?{}:b,B=e.config,v=e.onMount,O=e.labelWidth,F=e.readOnly,T=e.disabled,b=e.allCollapsed,M=void 0!==b&&b,J=e.onValuesChange,b=e.column,E=e.removeHiddenData,j=void 0===E||E,E=e.globalProps,P=void 0===E?{}:E,E=e.methods,C=void 0===E?{}:E,U=e.renderTitle,K=e.requiredMark,H=_objectWithoutProperties(e,["id","widgets","layoutWidgets","mapping","form","className","style","beforeFinish","onFinish","displayType","labelAlign","colon","schema","debug","scrollToFirstError","debugCss","locale","debounceInput","size","configProvider","theme","validateMessages","watch","config","onMount","labelWidth","readOnly","disabled","allCollapsed","onValuesChange","column","removeHiddenData","globalProps","methods","renderTitle","requiredMark"]);try{a.submit}catch(e){console.error("form 为必填 props,<FormRender /> 没有接收到 form 属性!")}var N=d&&d.column||b,L=(a.onItemChange,a.setEditing,a.touchKey,a.setValueByPath,a.getSchemaByPath,a.setSchemaByPath,a.setSchema,a.setValues,a.getValues,a.resetFields,a.submit,a.endValidating),z=a.endSubmitting,G=a.setErrorFields,Q=(a.removeErrorField,a.removeTouched,a.changeTouchedKeys,a.syncStuff),x=a.logOnMount,I=a.logOnSubmit,X=a.setFirstMount,W=(a._setErrors,_objectWithoutProperties(a,["onItemChange","setEditing","touchKey","setValueByPath","getSchemaByPath","setSchemaByPath","setSchema","setValues","getValues","resetFields","submit","endValidating","endSubmitting","setErrorFields","removeErrorField","removeTouched","changeTouchedKeys","syncStuff","logOnMount","logOnSubmit","setFirstMount","_setErrors"])),D=W.submitData,q=W.errorFields,Y=W.isValidating,Z=W.outsideValidating,$=W.isSubmitting,ee=W.formData,E=W.flatten,te=W.showValidate,w=W.firstMount,re=((0,_react.useEffect)(function(){d&&d.type&&(X(!0),Q({schema:d,locale:p,validateMessages:y,beforeFinish:s,onMount:v,removeHiddenData:j}))},[JSON.stringify(d)]),(0,_react.useEffect)(function(){!w&&d&&d.type&&("function"==typeof v&&setTimeout(function(){v()},0),setTimeout(re,0))},[JSON.stringify(d),w]),function(){var e=(new Date).getTime();"function"!=typeof x&&"function"!=typeof I||(sessionStorage.setItem("FORM_MOUNT_TIME",e),sessionStorage.setItem("FORM_START",e)),"function"==typeof x&&(e={schema:d,url:location.href,formData:JSON.stringify(a.getValues()),formMount:(0,_utils.yymmdd)(e)},n&&(e.id=n),x(e)),"function"==typeof I&&(sessionStorage.setItem("NUMBER_OF_SUBMITS",0),sessionStorage.setItem("FAILED_ATTEMPTS",0))}),e=((0,_react.useEffect)(function(){return function(){a.resetFields()}},[]),(0,_react.useMemo)(function(){return _extends({},W,{globalProps:P},H)},[JSON.stringify(E),JSON.stringify(ee),JSON.stringify(q),JSON.stringify(P)])),b=(0,_react.useMemo)(function(){return{displayType:l,labelAlign:u,colon:c,theme:h,column:N,debounceInput:_,debug:m,labelWidth:O,locale:p,validateMessages:y,readOnly:F,disabled:T,allCollapsed:M,showValidate:te,watch:S}},[l,u,c,h,N,_,m,O,p,y,F,T,M,te,S]),E=(0,_react.useMemo)(function(){return _extends({widgets:t,layoutWidgets:V,mapping:_extends({},_mapping.mapping,k),onValuesChange:J,renderTitle:U,requiredMark:K,methods:C},a)},[t]),R=((0,_react.useEffect)(function(){var e,t,r,o,i;!0===Z?Promise.resolve(s(_extends({data:D,schema:d,errors:q},B))).then(function(e){e&&G(e),L()}):!1===Y&&!0===$&&(z(),A(D,q),f&&0<q.length&&(e={block:"center"},"object"===(void 0===f?"undefined":_typeof(f))&&(e=f),a.scrollToPath(q[0].name,e)),"function"==typeof I)&&(e=sessionStorage.getItem("FORM_START"),i=sessionStorage.getItem("FORM_MOUNT_TIME"),t=Number(sessionStorage.getItem("NUMBER_OF_SUBMITS"))+1,r=(new Date).getTime(),o=Number(sessionStorage.getItem("FAILED_ATTEMPTS")),0<q.length&&(o+=1),i={formMount:(0,_utils.yymmdd)(i),ms:r-e,duration:(0,_utils.msToTime)(r-e),numberOfSubmits:t,failedAttempts:o,url:location.href,formData:JSON.stringify(D),errors:JSON.stringify(q),schema:JSON.stringify(d)},n&&(i.id=n),I(i),sessionStorage.setItem("FORM_START",r),sessionStorage.setItem("NUMBER_OF_SUBMITS",t),sessionStorage.setItem("FAILED_ATTEMPTS",o))},[Y,$,Z]),""),g=("small"===g?R="fr-form-small":"large"===g&&(R="fr-form-large"),{className:"fr-container "+R+" "+(r||"")}),R=(o&&"object"===(void 0===o?"undefined":_typeof(o))&&(g.style=o),n&&-1<["number","string"].indexOf(void 0===n?"undefined":_typeof(n))&&(g.id=n),(0,_utils.getParamByName)("_debug_form")),r=(0,_utils.getParamByName)("_debug_form_css"),o=-1<location.href.indexOf("pre"),oe=Object.keys(S);return _react2.default.createElement(_hooks.StoreCtx.Provider,{value:e},_react2.default.createElement(_hooks.Store2Ctx.Provider,{value:b},_react2.default.createElement(_hooks.Ctx.Provider,{value:E},_react2.default.createElement("div",g,o&&R||m?_react2.default.createElement("div",{className:"mv2 bg-black-05 pa2 br2"},_react2.default.createElement("div",{style:{display:"flex"}},_react2.default.createElement("span",null,"formData:"),_react2.default.createElement("span",{style:{display:"inline-block",wordBreak:"break-all",whiteSpace:"pre-wrap",maxWidth:600}},JSON.stringify(a.formData,null,4))),_react2.default.createElement("div",null,"errorFields:"+JSON.stringify(a.errorFields)),_react2.default.createElement("div",null,"touchedKeys:"+JSON.stringify(a.touchedKeys)),_react2.default.createElement("div",null,"allTouched:"+JSON.stringify(a.allTouched)),_react2.default.createElement("div",null,"descriptor:"+JSON.stringify(window.descriptor))):null,0<oe.length?oe.map(function(e,t){return _react2.default.createElement(_Watcher2.default,{key:t.toString(),watchKey:e,watch:S,formData:ee,firstMount:w})}):null,_react2.default.createElement(_core2.default,{debugCss:o&&r||i})))))}exports.mapping=_mapping.mapping;var Wrapper=function(e){var e=e||{},t=e.isOldVersion,t=void 0===t||t,r=e.schema,e=_objectWithoutProperties(e,["isOldVersion","schema"]),o=(0,_react.useRef)(r);return t&&(o.current=(0,_utils.updateSchemaToNewVersion)(r)),_react2.default.createElement(App,_extends({schema:o.current},e))};exports.default=Wrapper;