input-props
Version:
A React component that provides a two-way data-binding feel to your forms controlled by a mobx state.
3 lines (2 loc) • 6.71 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e,r=require("mobx-react"),t=require("react"),n=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,o=require("mobx"),i=require("tslib");function a(){return(a=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function l(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function u(e,r){var t;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return l(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?l(e,void 0):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(t=e[Symbol.iterator]()).next.bind(t)}function s(e){return"object"==typeof e&&(null==e?void 0:e.hasOwnProperty("value"))&&(null==e?void 0:e.hasOwnProperty("updated"))}function c(e,r,t){if(void 0===t&&(t={}),"numeric"===r)if(null==e)e="";else if("-"===(e=e.toString().trim())||"0."===e);else if("."===e)e="0.";else{var n,o=e.split("."),i=o[0];i=i.replace(/\B(?=(\d{3})+(?!\d))/g,t.thousandsSeparator||",");var a="number"==typeof t.numberOfDecimalsAlwaysAppearing&&(null!==(n=t.numberOfDecimalsAlwaysAppearing)&&void 0!==n?n:0)>0;o.length>1?(e=i+(t.decimalsSeparator||"."),e+=a?o[1].padEnd(t.numberOfDecimalsAlwaysAppearing,"0"):o[1]):(e=i,a&&(e+="."+"".padEnd(t.numberOfDecimalsAlwaysAppearing,"0")))}if(t.elementValueModifiers)for(var l,s=u(t.elementValueModifiers);!(l=s()).done;)e=(0,l.value)(e);return null==e?t.elementValueForUndefinedOrNull?t.elementValueForUndefinedOrNull(e):"":e}var f=function(){function e(){this.errors=[]}var r,t=e.prototype;return t.error=function(e,r){this.errors.push({field:e,error:r})},t.fieldHasError=function(e){return!!this.errors.find((function(r){return r.field===e}))},t.getFieldError=function(e){var r=this.errors.find((function(r){return r.field===e}));return r?{error:!0,helperText:r.error}:{error:!1,helperText:""}},t.resetFieldError=function(e){this.errors=this.errors.filter((function(r){return r.field!==e}))},t.reset=function(){this.errors=[]},(r=[{key:"hasError",get:function(){return!!this.errors.length}}])&&function(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(e.prototype,r),e}();i.__decorate([o.observable],f.prototype,"errors",void 0),i.__decorate([o.computed],f.prototype,"hasError",null),i.__decorate([o.action],f.prototype,"error",null),i.__decorate([o.action],f.prototype,"resetFieldError",null),i.__decorate([o.action],f.prototype,"reset",null),exports.FormErrorHandler=f,exports.InputProps=function(e){var i=e.config,l=void 0===i?{}:i,f=function(e,r){if(null==e)return{};var t,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r.indexOf(t=i[n])>=0||(o[t]=e[t]);return o}(e,["config"]),d=r.useObserver((function(){var e;return[f.stateObject,f.propertyName,f.onValueChange,f.onValueChanged,l.isCheckbox,f.errorHandler,f.variant,l,f.additionalChangeData,f.stateObject[f.propertyName],f.errorHandler&&f.errorHandler.errors&&f.errorHandler.getFieldError(f.propertyName),null===(e=f.stateObject[f.propertyName])||void 0===e?void 0:e.value]})),p=d[0],v=d[1],h=d[2],b=d[3],m=d[4],g=d[5],y=d[6],x=d[7],O=d[8],w=d[9],E=void 0===m?s(w)?"boolean"==typeof w.value:"boolean"==typeof w:m,P=function(e,r,t,n,i,a,l){void 0===n&&(n="all"),void 0===i&&(i={}),void 0===a&&(a=void 0),void 0===l&&(l={});var f=function(){var t=e[r];return s(t)?t.value:t},d=function(t){var n=f();!function(t){var n=e[r];s(n)?(n.value=t,n.updated||(n.updated=!0)):e[r]=t}(t),a&&a(n,t,l)};if(s(e[r])){if(!o.isObservableProp(e[r],"value"))throw new Error("Property 'value' on the updatable object is not a mobx observable.")}else if(!o.isObservableProp(e,r))throw new Error("Property "+r+" is not an mobx observable.");return{onChange:function(e){try{var r=e&&e.target?"checkbox"===e.target.type?function(e,r){if(!r)throw new Error("This element was configured or inferred as not being a 'checkbox' but it actually is because event.target.type is equal to 'checkbox'. Either pass config.isCheckbox as true to InputProps or change the children component to an input type that is not a checkbox.");return e}(e.target.checked,i.isCheckbox):function(e,r,t){if(void 0===t&&(t={}),t.isCheckbox)throw new Error("This element was configured or inferred as 'checkbox' but it's actually not because event.target.type is not equal to 'checkbox'. Either pass config.isCheckbox as false to InputProps or change the children component to an input type that is a checkbox.");if("numeric"===r)if(e){var n=t.thousandsSeparator||",";"."===(e=e.toString().trim())?e="0.":"0."===e||(e.length>1&&"0"===e[0]&&"."!==e[1]&&(e=e.replace("0","")),e=(e=e.replace(new RegExp(n,"g"),"")).replace(t.decimalsSeparator||".","."))}else e="";if(t.stateModifiers)for(var o,i=u(t.stateModifiers);!(o=i()).done;)e=(0,o.value)(e);return e}(e.target.value,n,i):e;return Promise.resolve(function(){if(f()!==r){if(!function(e,r,t){if(void 0===t&&(t={}),t.valueRestrictors)for(var n,o=u(t.valueRestrictors);!(n=o()).done;)if(!(0,n.value)(e))return!1;switch(r){case"onlyNumbers":case"numericString":case"numeric":if(null!=e&&""!==e&&"-"!==e){if(isNaN(e))return!1;if(void 0!==t.maxDecimalPlaces&&function(e){if(Math.floor(e.valueOf())===e.valueOf())return 0;var r=e.toString().split(".");return r.length>1&&r[1].length||0}(e)>t.maxDecimalPlaces)return!1;if(void 0!==t.maxIntegerLength&&(e.toString().split(".")[0].length||0)>t.maxIntegerLength)return!1;if(t.onlyPositives&&e<0)return!1;if(0===t.maxDecimalPlaces&&(e||"").includes("."))return!1}else if("-"===e&&t.onlyPositives)return!1}return!0}(r,n,i))return;var e=function(){if(t)return Promise.resolve(t(r,l)).then((function(e){("boolean"!=typeof e||e)&&d(r)}));d(r)}();if(e&&e.then)return e.then((function(){}))}}())}catch(e){return Promise.reject(e)}},value:c(f(),n,i)}}(p,v,h,y,a({},x,{isCheckbox:E}),b,O),k=t.useCallback(P.onChange,[p]),j=!!g&&g.getFieldError(v),C=a(E?{onChange:k,checked:P.value}:{onChange:k,value:P.value},j);return r.useObserver((function(){return n.cloneElement(f.children,C)}))};
//# sourceMappingURL=input-props.cjs.production.min.js.map