Repository URL to install this package:
|
Version:
3.5.7 ▾
|
"use strict";
// tslint:disable:max-classes-per-file
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const React = require("react");
const utils_1 = require("@skava/utils");
const exotic_1 = require("exotic");
const mobx_1 = require("xmobx/mobx");
const forms_1 = require("../forms");
const mobx_react_1 = require("xmobx/mobx-react");
const PluginsContext_1 = require("../plugins/PluginsContext");
const renderInput_1 = require("./renderInput");
const fromObserverFormPropsToState_1 = require("./fromObserverFormPropsToState");
const ObserverForm_1 = require("./adapters/ObserverForm");
var OneFormState_1 = require("./OneFormState");
exports.OneFormState = OneFormState_1.OneFormState;
var deps_1 = require("../forms/deps");
exports.resetInput = deps_1.resetInput;
var toFormState_1 = require("./toFormState");
exports.toFormState = toFormState_1.toFormState;
var ObserverForm_2 = require("./adapters/ObserverForm");
exports.OldObserverFormAdapter = ObserverForm_2.OldObserverFormAdapter;
var ObserverInput_1 = require("./adapters/ObserverInput");
exports.OldInputConfigAdapter = ObserverInput_1.OldInputConfigAdapter;
var renderInput_2 = require("./renderInput");
exports.renderInput = renderInput_2.renderInput;
/**
* this will adapt FormState & FormView for old & new
* @invariant we won't need OneInput
* since previously there is no config for customizing input
* and almost all is in Form
*/
let OneObserverForm = class OneObserverForm extends ObserverForm_1.OldObserverFormAdapter {
/**
* @todo remove this or see example of it
*/
get isToPreFill() {
return this.props.state.formState.isToPreFill || false;
}
// @todo @@strict componentDidMount...
componentWillMount() {
const { state } = fromObserverFormPropsToState_1.fromObserverFormPropsToState(this.props);
state.setInputPluginsList(this.context);
this.makePreFill();
}
componentDidMount() {
// @note could bind... though this is only called ~once
// @todo @@perf - not sure if we need as a prop...
// @note - removed forceUpdate because it should not be needed
this.disposer = mobx_1.observe(this, 'isToPreFill', () => {
console.debug('[form] updated using preFill');
this.makePreFill();
});
}
makePreFill() {
const onPreFill = this.onPreFill || this.props.onPreFill;
if (exotic_1.isFunction(onPreFill)) {
this.props.state.inputsList.forEach(inputItemState => {
onPreFill(inputItemState);
});
}
}
render() {
const remainingProps = utils_1.omit(this.props, ['state', 'inputsList']);
const { state } = fromObserverFormPropsToState_1.fromObserverFormPropsToState(this.props);
// @todo - should provide only if it's not already provided
// <ValidationStrategyContext.Provider value={}>
return (React.createElement(forms_1.ObserverForm, Object.assign({}, remainingProps, { state: state, renderInput: renderInput_1.renderInput })));
}
};
OneObserverForm.contextType = PluginsContext_1.PluginsContext;
tslib_1.__decorate([
mobx_1.computed
], OneObserverForm.prototype, "isToPreFill", null);
OneObserverForm = tslib_1.__decorate([
mobx_react_1.observer
], OneObserverForm);
exports.OneObserverForm = OneObserverForm;
//# sourceMappingURL=OneForm.js.map