UNPKG

amis

Version:

一种MIS页面生成工具

774 lines (773 loc) 35.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = tslib_1.__importDefault(require("react")); var factory_1 = require("../../factory"); var form_1 = require("../../store/form"); var tpl_1 = require("../../utils/tpl"); var classnames_1 = tslib_1.__importDefault(require("classnames")); var filter_schema_1 = tslib_1.__importDefault(require("../../utils/filter-schema")); var helper_1 = require("../../utils/helper"); var debouce = require("lodash/debounce"); var flatten = require("lodash/flatten"); var find = require("lodash/find"); var Scoped_1 = require("../../Scoped"); var qs = require("qs"); var tpl_builtin_1 = require("../../utils/tpl-builtin"); var api_1 = require("../../utils/api"); var Form = /** @class */ (function (_super) { tslib_1.__extends(Form, _super); function Form(props) { var _this = _super.call(this, props) || this; _this.hooks = {}; _this.shouldLoadInitApi = false; _this.onInit = _this.onInit.bind(_this); _this.handleAction = _this.handleAction.bind(_this); _this.handleDialogConfirm = _this.handleDialogConfirm.bind(_this); _this.handleDialogClose = _this.handleDialogClose.bind(_this); _this.handleDrawerConfirm = _this.handleDrawerConfirm.bind(_this); _this.handleDrawerClose = _this.handleDrawerClose.bind(_this); _this.handleFormSubmit = _this.handleFormSubmit.bind(_this); _this.validate = _this.validate.bind(_this); _this.submit = _this.submit.bind(_this); _this.addHook = _this.addHook.bind(_this); _this.removeHook = _this.removeHook.bind(_this); _this.handleChange = debouce(_this.handleChange.bind(_this), 250, { trailing: true, leading: false }); _this.renderFormItems = _this.renderFormItems.bind(_this); _this.reload = _this.reload.bind(_this); _this.silentReload = _this.silentReload.bind(_this); _this.initInterval = _this.initInterval.bind(_this); return _this; } Form.prototype.componentWillMount = function () { var _a = this.props, store = _a.store, canAccessSuperData = _a.canAccessSuperData, persistData = _a.persistData; store.setCanAccessSuperData(canAccessSuperData !== false); persistData && store.getPersistData(); if (store && store.parentStore && store.parentStore.storeType === 'ComboStore') { var combo = store.parentStore; combo.addForm(store); combo.forms.forEach(function (item) { return item.items.forEach(function (item) { return item.unique && item.syncOptions(); }); }); } }; Form.prototype.componentDidMount = function () { var _this = this; var _a = this.props, initApi = _a.initApi, initFetch = _a.initFetch, initFetchOn = _a.initFetchOn, initAsyncApi = _a.initAsyncApi, initFinishedField = _a.initFinishedField, initCheckInterval = _a.initCheckInterval, store = _a.store, _b = _a.messages, fetchSuccess = _b.fetchSuccess, fetchFailed = _b.fetchFailed, onValidate = _a.onValidate; this.mounted = true; if (onValidate) { var finnalValidate_1 = helper_1.promisify(onValidate); this.disposeOnValidate = this.addHook(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { var result; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, finnalValidate_1(store.data, store)]; case 1: result = _a.sent(); if (result && helper_1.isObject(result)) { Object.keys(result).forEach(function (key) { var msg = result[key]; var item = store.getItemByName(key); // 没有这个 formItem if (!item) { return; } if (msg) { msg = Array.isArray(msg) ? msg : [msg]; item.addError(msg); } else { item.clearError(); } }); } return [2 /*return*/]; } }); }); }); } if (api_1.isEffectiveApi(initApi, store.data, initFetch, initFetchOn)) { store .fetchInitData(initApi, store.data, { successMessage: fetchSuccess, errorMessage: fetchFailed, onSuccess: function () { if (!api_1.isEffectiveApi(initAsyncApi, store.data) || store.data[initFinishedField || 'finished']) { return; } return helper_1.until(function () { return store.checkRemote(initAsyncApi, store.data); }, function (ret) { return ret && ret[initFinishedField || 'finished']; }, function (cancel) { return (_this.asyncCancel = cancel); }, initCheckInterval); } }) .then(this.initInterval) .then(this.onInit); } else { this.onInit(); } }; Form.prototype.componentDidUpdate = function (prevProps) { var props = this.props; var store = props.store; if (api_1.isApiOutdated(prevProps.initApi, props.initApi, prevProps.data, props.data)) { var fetchSuccess = props.fetchSuccess, fetchFailed = props.fetchFailed; store .fetchData(props.initApi, store.data, { successMessage: fetchSuccess, errorMessage: fetchFailed }) .then(this.initInterval); } }; Form.prototype.componentWillUnmount = function () { this.mounted = false; clearTimeout(this.timer); this.handleChange.cancel(); this.asyncCancel && this.asyncCancel(); this.disposeOnValidate && this.disposeOnValidate(); var store = this.props.store; if (store && store.parentStore && store.parentStore.storeType === 'ComboStore') { var combo = store.parentStore; combo.removeForm(store); } }; Form.prototype.onInit = function () { return tslib_1.__awaiter(this, void 0, void 0, function () { var _a, onInit, store, submitOnInit, data, hooks; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: _a = this.props, onInit = _a.onInit, store = _a.store, submitOnInit = _a.submitOnInit; data = store.data; store.setInited(true); hooks = this.hooks['init'] || []; return [4 /*yield*/, Promise.all(hooks.map(function (hook) { return hook(data); }))]; case 1: _b.sent(); onInit && onInit(data); submitOnInit && this.handleAction(undefined, { type: 'submit' }, store.data); return [2 /*return*/]; } }); }); }; Form.prototype.reload = function (query, silent) { var _a; var _this = this; if (query) { return this.receive(query); } var _b = this.props, store = _b.store, initApi = _b.initApi, initAsyncApi = _b.initAsyncApi, initFinishedField = _b.initFinishedField, _c = _b.messages, fetchSuccess = _c.fetchSuccess, fetchFailed = _c.fetchFailed; api_1.isEffectiveApi(initAsyncApi, store.data) && store.updateData((_a = {}, _a[initFinishedField || 'finished'] = false, _a)); api_1.isEffectiveApi(initApi, store.data) ? store .fetchInitData(initApi, store.data, { successMessage: fetchSuccess, errorMessage: fetchFailed, silent: silent, onSuccess: function () { if (!api_1.isEffectiveApi(initAsyncApi, store.data) || store.data[initFinishedField || 'finished']) { return; } return helper_1.until(function () { return store.checkRemote(initAsyncApi, store.data); }, function (ret) { return ret && ret[initFinishedField || 'finished']; }, function (cancel) { return (_this.asyncCancel = cancel); }); } }) .then(this.initInterval) .then(function () { return store.reset(undefined, false); }) : store.reset(undefined, false); }; Form.prototype.receive = function (values) { var store = this.props.store; store.updateData(values); this.reload(); }; Form.prototype.silentReload = function (target, query) { this.reload(query, true); }; Form.prototype.initInterval = function (value) { var _a = this.props, interval = _a.interval, silentPolling = _a.silentPolling, stopAutoRefreshWhen = _a.stopAutoRefreshWhen, data = _a.data; clearTimeout(this.timer); interval && this.mounted && (!stopAutoRefreshWhen || !tpl_1.evalExpression(stopAutoRefreshWhen, data)) && (this.timer = setTimeout(silentPolling ? this.silentReload : this.reload, Math.max(interval, 3000))); return value; }; Form.prototype.isValidated = function () { return this.props.store.validated; }; Form.prototype.validate = function (forceValidate) { var store = this.props.store; return store.validate(this.hooks['validate'] || [], forceValidate); }; Form.prototype.clearErrors = function () { var store = this.props.store; return store.clearErrors(); }; Form.prototype.submit = function (fn) { var _a = this.props, store = _a.store, messages = _a.messages; return store.submit(fn, this.hooks['validate' || []], messages && messages.validateFailed); }; Form.prototype.reset = function () { var _a = this.props, store = _a.store, onReset = _a.onReset; store.reset(onReset); }; Form.prototype.addHook = function (fn, type) { var _this = this; if (type === void 0) { type = 'validate'; } this.hooks[type] = this.hooks[type] || []; this.hooks[type].push(helper_1.promisify(fn)); return function () { _this.removeHook(fn, type); fn = helper_1.noop; }; }; Form.prototype.removeHook = function (fn, type) { if (type === void 0) { type = 'validate'; } var hooks = this.hooks[type]; if (!hooks) { return; } for (var i = 0, len = hooks.length; i < len; i++) { var hook = hooks[i]; if (hook.raw === fn) { hooks.splice(i, 1); len--; i--; } } }; Form.prototype.handleChange = function (value, name, submit) { var _a = this.props, onChange = _a.onChange, store = _a.store, submitOnChange = _a.submitOnChange; onChange && onChange(store.data, helper_1.difference(store.data, store.pristine)); (submit || submitOnChange) && this.handleAction(undefined, { type: 'submit' }, store.data); }; Form.prototype.handleFormSubmit = function (e) { e.preventDefault(); return this.handleAction(e, { type: 'submit' }, this.props.store.data); }; Form.prototype.handleAction = function (e, action, data, throwErrors, delegate) { var _this = this; if (throwErrors === void 0) { throwErrors = false; } var _a = this.props, store = _a.store, onSubmit = _a.onSubmit, api = _a.api, asyncApi = _a.asyncApi, finishedField = _a.finishedField, checkInterval = _a.checkInterval, _b = _a.messages, saveSuccess = _b.saveSuccess, saveFailed = _b.saveFailed, resetAfterSubmit = _a.resetAfterSubmit, onAction = _a.onAction, onSaved = _a.onSaved, onReset = _a.onReset, onFinished = _a.onFinished, onFailed = _a.onFailed, redirect = _a.redirect, reload = _a.reload, target = _a.target, env = _a.env, onChange = _a.onChange, clearPersistDataAfterSubmit = _a.clearPersistDataAfterSubmit, trimValues = _a.trimValues; if (trimValues) { store.trimValues(); } if (Array.isArray(action.required) && action.required.length) { return store.validateFields(action.required).then(function (result) { if (!result) { env.notify('error', '依赖的部分字段没有通过验证,请注意填写!'); } else { _this.handleAction(e, tslib_1.__assign(tslib_1.__assign({}, action), { required: undefined }), data, throwErrors, delegate); } }); } delegate || store.setCurrentAction(action); if (action.type === 'submit' || action.actionType === 'submit' || action.actionType === 'confirm') { return this.submit(function (values) { var _a; if (onSubmit && onSubmit(values, action) === false) { return Promise.resolve(values); } if (target) { _this.submitToTarget(target, values); } else if (action.actionType === 'reload') { action.target && _this.reloadTarget(action.target, values); } else if (action.actionType === 'dialog') { store.openDialog(data); } else if (action.actionType === 'drawer') { store.openDrawer(data); } else if (api_1.isEffectiveApi(action.api || api, values)) { var finnalAsyncApi_1 = action.asyncApi || asyncApi; api_1.isEffectiveApi(finnalAsyncApi_1, store.data) && store.updateData((_a = {}, _a[finishedField || 'finished'] = false, _a)); return store .saveRemote(action.api || api, values, { successMessage: saveSuccess, errorMessage: saveFailed, onSuccess: function () { if (!api_1.isEffectiveApi(finnalAsyncApi_1, store.data) || store.data[finishedField || 'finished']) { return; } return helper_1.until(function () { return store.checkRemote(finnalAsyncApi_1, store.data); }, function (ret) { return ret && ret[finishedField || 'finished']; }, function (cancel) { return (_this.asyncCancel = cancel); }, checkInterval); } }) .then(function (response) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: onSaved && onSaved(values, response); if (!(action.feedback && helper_1.isVisible(action.feedback, store.data))) return [3 /*break*/, 2]; return [4 /*yield*/, this.openFeedback(action.feedback, store.data)]; case 1: _a.sent(); _a.label = 2; case 2: return [2 /*return*/, values]; } }); }); }); } return Promise.resolve(values); }) .then(function (values) { if (onFinished && onFinished(values, action) === false) { return values; } resetAfterSubmit && store.reset(onReset); clearPersistDataAfterSubmit && store.clearPersistData(); if (action.redirect || redirect) { env.updateLocation(tpl_1.filter(action.redirect || redirect, store.data)); } else if (action.reload || reload) { _this.reloadTarget(action.reload || reload, store.data); } return values; }) .catch(function (reason) { onFailed && onFailed(reason, store.errors); if (throwErrors) { throw reason; } }); } else if (action.type === 'reset') { store.reset(onReset); } else if (action.actionType === 'dialog') { store.openDialog(data); } else if (action.actionType === 'drawer') { store.openDrawer(data); } else if (action.actionType === 'ajax') { if (!api_1.isEffectiveApi(action.api)) { return env.alert("\u5F53 actionType \u4E3A ajax \u65F6\uFF0C\u8BF7\u8BBE\u7F6E api \u5C5E\u6027"); } return store .saveRemote(action.api, data, { successMessage: (action.messages && action.messages.success) || saveSuccess, errorMessage: (action.messages && action.messages.failed) || saveFailed }) .then(function (response) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: response && onChange && onChange(store.data, helper_1.difference(store.data, store.pristine)); if (!store.validated) return [3 /*break*/, 2]; return [4 /*yield*/, this.validate(true)]; case 1: _a.sent(); _a.label = 2; case 2: if (!(action.feedback && helper_1.isVisible(action.feedback, store.data))) return [3 /*break*/, 4]; return [4 /*yield*/, this.openFeedback(action.feedback, store.data)]; case 3: _a.sent(); _a.label = 4; case 4: action.redirect && env.updateLocation(tpl_1.filter(action.redirect, store.data)); action.reload && this.reloadTarget(action.reload, store.data); return [2 /*return*/]; } }); }); }) .catch(function () { }); } else if (action.actionType === 'reload') { action.target && this.reloadTarget(action.target, data); } else if (onAction) { // 不识别的丢给上层去处理。 return onAction(e, action, data, throwErrors); } }; Form.prototype.handleDialogConfirm = function (values, action, ctx, targets) { var _a = this.props, store = _a.store, onChange = _a.onChange; if ((action.mergeData || store.action.mergeData) && values.length === 1 && values[0] && targets[0].props.type === 'form') { store.updateData(values[0]); onChange && onChange(store.data, helper_1.difference(store.data, store.pristine)); } store.closeDialog(true); }; Form.prototype.handleDialogClose = function () { var store = this.props.store; store.closeDialog(false); }; Form.prototype.handleDrawerConfirm = function (values, action, ctx, targets) { var _a = this.props, store = _a.store, onChange = _a.onChange; if ((action.mergeData || store.action.mergeData) && values.length === 1 && values[0] && targets[0].props.type === 'form') { store.updateData(values[0]); onChange && onChange(store.data, helper_1.difference(store.data, store.pristine)); } store.closeDrawer(true); }; Form.prototype.handleDrawerClose = function () { var store = this.props.store; store.closeDrawer(false); }; Form.prototype.submitToTarget = function (target, values) { // 会被覆写 }; Form.prototype.reloadTarget = function (target, data) { // 会被覆写 }; Form.prototype.openFeedback = function (dialog, ctx) { var _this = this; return new Promise(function (resolve) { var store = _this.props.store; store.setCurrentAction({ type: 'button', actionType: 'dialog', dialog: dialog }); store.openDialog(ctx, undefined, function (confirmed) { resolve(confirmed); }); }); }; Form.prototype.buildActions = function () { var _a = this.props, actions = _a.actions, submitText = _a.submitText, controls = _a.controls; if (typeof actions !== 'undefined' || !submitText || (Array.isArray(controls) && controls.some(function (item) { return !!~['submit', 'button', 'reset', 'button-group'].indexOf(item.type); }))) { return actions; } return [ { type: 'submit', label: submitText, primary: true } ]; }; Form.prototype.renderFormItems = function (schema, region, otherProps) { if (region === void 0) { region = ''; } if (otherProps === void 0) { otherProps = {}; } return this.renderControls(schema.controls, region, otherProps); // return schema.tabs ? this.renderTabs(schema.tabs, schema, region) // : schema.fieldSet ? this.renderFiledSet(schema.fieldSet, schema, region) : this.renderControls(schema.controls as SchemaNode, schema, region); }; Form.prototype.renderControls = function (controls, region, otherProps) { var _this = this; if (otherProps === void 0) { otherProps = {}; } controls = controls || []; if (!Array.isArray(controls)) { controls = [controls]; } if (this.props.mode === 'row') { var ns_1 = this.props.classPrefix; controls = flatten(controls).filter(function (item) { if (item.hidden || item.visible === false) { return false; } var exprProps = filter_schema_1.default(item, _this.props.store.data); if (exprProps.hidden || exprProps.visible === false) { return false; } return true; }); if (!controls.length) { return null; } return (react_1.default.createElement("div", { className: ns_1 + "Form-row" }, controls.map(function (control, key) { return ~['hidden', 'formula'].indexOf(control.type) || control.mode === 'inline' ? (_this.renderControl(control, key, otherProps)) : (react_1.default.createElement("div", { key: key, className: classnames_1.default(ns_1 + "Form-col", control.columnClassName) }, _this.renderControl(control, '', tslib_1.__assign(tslib_1.__assign({}, otherProps), { mode: 'row' })))); }))); } return controls.map(function (control, key) { return _this.renderControl(control, key, otherProps, region); }); }; Form.prototype.renderControl = function (control, key, otherProps, region) { if (key === void 0) { key = ''; } if (otherProps === void 0) { otherProps = {}; } if (region === void 0) { region = ''; } if (!control) { return null; } else if (typeof control === 'string') { control = { type: 'tpl', tpl: control }; } var props = tslib_1.__assign(tslib_1.__assign({}, this.props), otherProps); var form = this.props.store; var render = props.render, mode = props.mode, horizontal = props.horizontal, store = props.store, disabled = props.disabled, controlWidth = props.controlWidth, resolveDefinitions = props.resolveDefinitions; var subProps = { formStore: form, data: store.data, key: key, formInited: form.inited, formMode: mode, formHorizontal: horizontal, controlWidth: controlWidth, disabled: disabled || control.disabled || form.loading, btnDisabled: form.loading || form.validating, onAction: this.handleAction, onChange: this.handleChange, addHook: this.addHook, removeHook: this.removeHook, renderFormItems: this.renderFormItems, formPristine: form.pristine }; var subSchema = control && control.type === 'control' ? control : { type: 'control', control: control }; if (subSchema.control) { var control_1 = subSchema.control; if (control_1.$ref) { subSchema.control = control_1 = tslib_1.__assign(tslib_1.__assign({}, resolveDefinitions(control_1.$ref)), control_1); delete control_1.$ref; } control_1.hiddenOn && (subSchema.hiddenOn = control_1.hiddenOn); control_1.visibleOn && (subSchema.visibleOn = control_1.visibleOn); } return render("" + (region ? region + "/" : '') + key, subSchema, subProps); }; Form.prototype.renderBody = function () { var _a = this.props, tabs = _a.tabs, fieldSet = _a.fieldSet, controls = _a.controls; return this.renderFormItems({ tabs: tabs, fieldSet: fieldSet, controls: controls }); }; Form.prototype.render = function () { var _a = this.props, className = _a.className, wrapWithPanel = _a.wrapWithPanel, render = _a.render, title = _a.title, store = _a.store, panelClassName = _a.panelClassName, debug = _a.debug, headerClassName = _a.headerClassName, footerClassName = _a.footerClassName, actionsClassName = _a.actionsClassName, bodyClassName = _a.bodyClassName, ns = _a.classPrefix, cx = _a.classnames, $path = _a.$path, affixFooter = _a.affixFooter, mode = _a.mode; var WrapperComponent = this.props.wrapperComponent || (/(?:\/|^)form\//.test($path) ? 'div' : 'form'); var body = (react_1.default.createElement(WrapperComponent, { onSubmit: this.handleFormSubmit, className: cx("Form", "Form--" + (mode || 'normal'), className), noValidate: true }, debug ? (react_1.default.createElement("pre", null, react_1.default.createElement("code", null, JSON.stringify(store.data, null, 2)))) : null, this.renderBody(), render('modal', tslib_1.__assign(tslib_1.__assign({}, (store.action && store.action.dialog)), { type: 'dialog' }), { key: 'dialog', data: store.dialogData, onConfirm: this.handleDialogConfirm, onClose: this.handleDialogClose, show: store.dialogOpen }), render('modal', tslib_1.__assign(tslib_1.__assign({}, (store.action && store.action.drawer)), { type: 'drawer' }), { key: 'drawer', data: store.drawerData, onConfirm: this.handleDrawerConfirm, onClose: this.handleDrawerClose, show: store.drawerOpen }))); if (wrapWithPanel) { body = render('body', { type: 'panel', title: title }, { className: cx(panelClassName, 'Panel--form'), children: body, actions: this.buildActions(), onAction: this.handleAction, disabled: store.loading, btnDisabled: store.loading || store.validating, headerClassName: headerClassName, footerClassName: footerClassName, actionsClassName: actionsClassName, bodyClassName: bodyClassName, affixFooter: affixFooter }); } return body; }; Form.defaultProps = { title: '表单', submitText: '提交', initFetch: true, wrapWithPanel: true, mode: 'normal', collapsable: false, controlWidth: 'full', horizontal: { left: 2, right: 10, offset: 2 }, panelClassName: 'Panel--default', messages: { fetchFailed: '初始化失败', saveSuccess: '保存成功', saveFailed: '保存失败' }, wrapperComponent: '', finishedField: 'finished', initFinishedField: 'finished' }; Form.propsList = [ 'title', 'controls', 'tabs', 'fieldSet', 'submitText', 'initFetch', 'wrapWithPanel', 'mode', 'collapsable', 'horizontal', 'panelClassName', 'messages', 'wrapperComponent', 'resetAfterSubmit', 'submitOnInit', 'submitOnChange', 'onInit', 'onReset', 'onSubmit', 'onChange', 'onFailed', 'onFinished', 'canAccessSuperData' ]; return Form; }(react_1.default.Component)); exports.default = Form; var FormRenderer = /** @class */ (function (_super) { tslib_1.__extends(FormRenderer, _super); function FormRenderer() { return _super !== null && _super.apply(this, arguments) || this; } FormRenderer.prototype.componentWillMount = function () { var scoped = this.context; scoped.registerComponent(this); _super.prototype.componentWillMount.call(this); }; FormRenderer.prototype.componentDidMount = function () { _super.prototype.componentDidMount.call(this); if (this.props.autoFocus) { var scoped = this.context; var inputs = scoped.getComponents(); var focuableInput_1 = find(inputs, function (input) { return input.focus; }); focuableInput_1 && setTimeout(function () { return focuableInput_1.focus(); }, 200); } }; FormRenderer.prototype.componentWillUnmount = function () { var scoped = this.context; scoped.unRegisterComponent(this); }; FormRenderer.prototype.doAction = function (action, data, throwErrors) { if (throwErrors === void 0) { throwErrors = false; } return this.handleAction(undefined, action, data, throwErrors); }; FormRenderer.prototype.handleAction = function (e, action, ctx, throwErrors, delegate) { if (throwErrors === void 0) { throwErrors = false; } if (action.target && action.actionType !== 'reload') { var scoped_1 = this.context; return Promise.all(action.target.split(',').map(function (name) { var target = scoped_1.getComponentByName(name); return (target && target.doAction && target.doAction(tslib_1.__assign(tslib_1.__assign({}, action), { target: undefined }), ctx, throwErrors)); })); } else { return _super.prototype.handleAction.call(this, e, action, ctx, throwErrors, delegate); } }; FormRenderer.prototype.handleDialogConfirm = function (values, action, ctx, targets) { _super.prototype.handleDialogConfirm.call(this, values, action, ctx, targets); var store = this.props.store; var scoped = this.context; if (action.reload) { scoped.reload(action.reload, ctx); } else if (store.action && store.action.reload) { scoped.reload(store.action.reload, ctx); } }; FormRenderer.prototype.submitToTarget = function (target, values) { var scoped = this.context; scoped.send(target, values); }; FormRenderer.prototype.reloadTarget = function (target, data) { var scoped = this.context; scoped.reload(target, data); }; FormRenderer.prototype.reload = function (target, query, ctx) { if (query) { return this.receive(query); } var scoped = this.context; var subPath = ''; var idx; var subQuery = null; if (target && ~(idx = target.indexOf('.'))) { subPath = target.substring(idx + 1); target = target.substring(0, idx); } var idx2 = target ? target.indexOf('?') : -1; if (~idx2) { subQuery = tpl_builtin_1.dataMapping(qs.parse(target.substring(idx2 + 1)), ctx); target = target.substring(0, idx2); } var component; if (target && (component = scoped.getComponentByName(target)) && component.reload) { component.reload(subPath, subQuery, ctx); } else if (target === '*') { _super.prototype.reload.call(this); var components = scoped.getComponents(); components.forEach(function (component) { return component.reload && component.reload('', subQuery, ctx); }); } else { _super.prototype.reload.call(this); } }; FormRenderer.prototype.receive = function (values, name) { if (name) { var scoped = this.context; var idx = name.indexOf('.'); var subPath = ''; if (~idx) { subPath = name.substring(1 + idx); name = name.substring(0, idx); } var component = scoped.getComponentByName(name); component && component.receive && component.receive(values, subPath); return; } return _super.prototype.receive.call(this, values); }; FormRenderer.contextType = Scoped_1.ScopedContext; FormRenderer = tslib_1.__decorate([ factory_1.Renderer({ test: function (path) { return /(^|\/)form$/.test(path) && !/(^|\/)form(?:\/.+)?\/control\/form$/.test(path); }, storeType: form_1.FormStore.name, name: 'form', isolateScope: true }) ], FormRenderer); return FormRenderer; }(Form)); exports.FormRenderer = FormRenderer; //# sourceMappingURL=./renderers/Form/index.js.map