UNPKG

@formily/core

Version:
78 lines 3.79 kB
import { FormPath, isFn, toArr } from '@formily/shared'; import { autorun, reaction, batch } from '@formily/reactive'; import { LifeCycleTypes, } from '../types'; import { createEffectHook, useEffectForm } from '../shared/effective'; function createFieldEffect(type) { return createEffectHook(type, function (field, form) { return function (pattern, callback) { if (FormPath.parse(pattern).matchAliasGroup(field.address, field.path)) { batch(function () { callback(field, form); }); } }; }); } var _onFieldInit = createFieldEffect(LifeCycleTypes.ON_FIELD_INIT); export var onFieldMount = createFieldEffect(LifeCycleTypes.ON_FIELD_MOUNT); export var onFieldUnmount = createFieldEffect(LifeCycleTypes.ON_FIELD_UNMOUNT); export var onFieldValueChange = createFieldEffect(LifeCycleTypes.ON_FIELD_VALUE_CHANGE); export var onFieldInitialValueChange = createFieldEffect(LifeCycleTypes.ON_FIELD_INITIAL_VALUE_CHANGE); export var onFieldInputValueChange = createFieldEffect(LifeCycleTypes.ON_FIELD_INPUT_VALUE_CHANGE); export var onFieldValidateStart = createFieldEffect(LifeCycleTypes.ON_FIELD_VALIDATE_START); export var onFieldValidateEnd = createFieldEffect(LifeCycleTypes.ON_FIELD_VALIDATE_END); export var onFieldValidating = createFieldEffect(LifeCycleTypes.ON_FIELD_VALIDATING); export var onFieldValidateFailed = createFieldEffect(LifeCycleTypes.ON_FIELD_VALIDATE_FAILED); export var onFieldValidateSuccess = createFieldEffect(LifeCycleTypes.ON_FIELD_VALIDATE_SUCCESS); export var onFieldSubmit = createFieldEffect(LifeCycleTypes.ON_FIELD_SUBMIT); export var onFieldSubmitStart = createFieldEffect(LifeCycleTypes.ON_FIELD_SUBMIT_START); export var onFieldSubmitEnd = createFieldEffect(LifeCycleTypes.ON_FIELD_SUBMIT_END); export var onFieldSubmitValidateStart = createFieldEffect(LifeCycleTypes.ON_FIELD_SUBMIT_VALIDATE_START); export var onFieldSubmitValidateEnd = createFieldEffect(LifeCycleTypes.ON_FIELD_SUBMIT_VALIDATE_END); export var onFieldSubmitSuccess = createFieldEffect(LifeCycleTypes.ON_FIELD_SUBMIT_SUCCESS); export var onFieldSubmitFailed = createFieldEffect(LifeCycleTypes.ON_FIELD_SUBMIT_FAILED); export var onFieldSubmitValidateSuccess = createFieldEffect(LifeCycleTypes.ON_FIELD_SUBMIT_VALIDATE_SUCCESS); export var onFieldSubmitValidateFailed = createFieldEffect(LifeCycleTypes.ON_FIELD_SUBMIT_VALIDATE_FAILED); export var onFieldReset = createFieldEffect(LifeCycleTypes.ON_FIELD_RESET); export var onFieldLoading = createFieldEffect(LifeCycleTypes.ON_FIELD_LOADING); export function onFieldInit(pattern, callback) { var form = useEffectForm(); var count = form.query(pattern).reduce(function (count, field) { callback(field, form); return count + 1; }, 0); if (count === 0) { _onFieldInit(pattern, callback); } } export function onFieldReact(pattern, callback) { onFieldInit(pattern, function (field, form) { field.disposers.push(autorun(function () { if (isFn(callback)) callback(field, form); })); }); } export function onFieldChange(pattern, watches, callback) { if (isFn(watches)) { callback = watches; watches = ['value']; } else { watches = watches || ['value']; } onFieldInit(pattern, function (field, form) { if (isFn(callback)) callback(field, form); var dispose = reaction(function () { return toArr(watches).map(function (key) { return field[key]; }); }, function () { if (isFn(callback)) callback(field, form); }); field.disposers.push(dispose); }); } //# sourceMappingURL=onFieldEffects.js.map