diff --git a/src/create-form-unit.ts b/src/create-form-unit.ts deleted file mode 100644 index 2d40dbb..0000000 --- a/src/create-form-unit.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { createStore, createEvent, Domain, EventCallable, StoreWritable } - from "effector" - -type CreateStoreParams = { - init: Value - domain?: Domain - existing?: StoreWritable -} - -function store( - { init, domain, existing }: CreateStoreParams, - effectorData?: any -) { - if (existing) { - return existing - } - return domain - ? domain.createStore(init, effectorData) - : createStore(init, effectorData) -} - -type CreateEventParams = { - domain?: Domain - existing?: EventCallable -} - -function event({ domain, existing }: CreateEventParams) { - if (existing) { - return existing - } - return domain ? domain.createEvent() : createEvent() -} - -export const createFormUnit = { - store, - event, -} diff --git a/src/factory.ts b/src/factory.ts index 96e34d8..9fbf7a9 100644 --- a/src/factory.ts +++ b/src/factory.ts @@ -2,6 +2,7 @@ import { EventCallable, Store, combine, + createEvent, sample, } from "effector" import { @@ -18,7 +19,6 @@ import { bindValidation, bindChangeEvent, } from "./field" -import { createFormUnit } from "./create-form-unit" function createFormValuesStore( fields: AnyFields @@ -111,55 +111,45 @@ export function createForm( touched: $touched, }) - const validate = createFormUnit.event({ - domain, - existing: units?.validate, - }) + const validate = units?.validate + ? units.validate + : createEvent({ domain }) - const submitForm = createFormUnit.event({ - domain, - existing: units?.submit, - }) + const submitForm = units?.submit + ? units.submit + : createEvent({ domain }) - const formValidated = createFormUnit.event({ - domain, - existing: units?.formValidated, - }) + const formValidated = units?.formValidated + ? units.formValidated + : createEvent({ domain }) - const setInitialForm = createFormUnit.event>({ - domain, - existing: units?.setInitialForm as EventCallable> - }) + const setInitialForm = units?.setInitialForm + ? units.setInitialForm + : createEvent>({ domain }) - const setForm = createFormUnit.event>({ - domain, - existing: units?.setForm as EventCallable>, - }) + const setForm = units?.setForm + ? units.setForm + : createEvent>({ domain }) - const addErrors = createFormUnit.event({ - domain, - existing: units?.addErrors, - }) + const addErrors = units?.addErrors + ? units.addErrors + : createEvent({ domain }) - const resetForm = createFormUnit.event({ - domain, - existing: units?.reset, - }) + const resetForm = units?.reset + ? units.reset + : createEvent({ domain }) - const resetValues = createFormUnit.event({ - domain, - existing: units?.resetValues, - }) + const resetValues = units?.resetValues + ? units.resetValues + : createEvent({ domain }) - const resetErrors = createFormUnit.event({ - domain, - existing: units?.resetErrors, - }) + const resetErrors = units?.resetErrors + ? units.resetErrors + : createEvent({ domain }) - const resetTouched = createFormUnit.event({ - domain, - existing: units?.resetTouched, - }) + const resetTouched = units?.resetTouched + ? units.resetTouched + : createEvent({ domain }) const submitWithFormData = sample({ source: $form, diff --git a/src/field.ts b/src/field.ts index 76a7d99..ec6e2b4 100644 --- a/src/field.ts +++ b/src/field.ts @@ -7,6 +7,7 @@ import { sample, merge, Event, + createEvent, } from "effector" import { ValidationError, @@ -19,7 +20,6 @@ import { FieldUnitShape, } from "./types" import { createCombineValidator } from "./validation" -import { createFormUnit } from "./create-form-unit" /** * @group Factories @@ -33,82 +33,59 @@ export function createField( ? fieldConfig.init() : fieldConfig.init - const $value = createFormUnit.store({ - domain, - existing: fieldConfig.units?.$value, - init: initValue, - }, { - sid: `${fieldName}-$value` - }) - - const $errors = createFormUnit.store({ - domain, - existing: fieldConfig.units?.$errors, - init: [], - }, { - sid: `${fieldName}-$errors` - }) + const $value = fieldConfig.units?.$value + ? fieldConfig.units.$value + : createStore(initValue, { sid: `${fieldName}-$value`, domain }) + const $errors = fieldConfig.units?.$errors + ? fieldConfig.units.$errors + : createStore([], { sid: `${fieldName}-$errors`, domain }) - const $firstError = $errors.map( - (errors) => errors[0] ? errors[0] : null - ) + const $firstError = $errors.map((errors) => errors[0] ? errors[0] : null) - const $initValue = createFormUnit.store({ - domain, - existing: fieldConfig.units?.$initValue, - init: initValue, - }, { - sid: `${fieldName}-$initValue` - }) + const $initValue = fieldConfig.units?.$initValue + ? fieldConfig.units.$initValue + : createStore(initValue, { sid: `${fieldName}-$initValue`, domain }) - const $touched = createFormUnit.store({ - domain, - existing: fieldConfig.units?.$isTouched, - init: false, - }, { - sid: `${fieldName}-$touched` - }) + const $touched = fieldConfig.units?.$isTouched + ? fieldConfig.units.$isTouched + : createStore(false, { sid: `${fieldName}-$touched`, domain }) const $isDirty = combine($value, $initValue, (value, initValue) => value !== initValue, ) - const onChange = createFormUnit.event({ - domain, - existing: fieldConfig.units?.onChange, - }) - const onBlur = createFormUnit.event({ - domain, - existing: fieldConfig.units?.onBlur, - }) - const changed = createFormUnit.event({ - domain, - existing: fieldConfig.units?.changed, - }) - const addError = createFormUnit.event<{ - rule: string - errorText?: string - }>({ - domain, - existing: fieldConfig.units?.addError, - }) - const validate = createFormUnit.event({ - domain, - existing: fieldConfig.units?.validate, - }) - const resetErrors = createFormUnit.event({ - domain, - existing: fieldConfig.units?.resetErrors, - }) - const resetValue = createFormUnit.event({ - domain, - existing: fieldConfig.units?.resetValue, - }) - const reset = createFormUnit.event({ - domain, - existing: fieldConfig.units?.reset, - }) + const onChange = fieldConfig.units?.onChange + ? fieldConfig.units.onChange + : createEvent({ domain }) + + const onBlur = fieldConfig.units?.onBlur + ? fieldConfig.units.onBlur + : createEvent({ domain }) + + const changed = fieldConfig.units?.changed + ? fieldConfig.units.changed + : createEvent({ domain }) + + const addError = fieldConfig.units?.addError + ? fieldConfig.units.addError + : createEvent<{ rule: string; errorText?: string }>({ domain }) + + const validate = fieldConfig.units?.validate + ? fieldConfig.units.validate + : createEvent({ domain }) + + const resetErrors = fieldConfig.units?.resetErrors + ? fieldConfig.units.resetErrors + : createEvent({ domain }) + + const resetValue = fieldConfig.units?.resetValue + ? fieldConfig.units.resetValue + : createEvent({ domain }) + + const reset = fieldConfig.units?.reset + ? fieldConfig.units.reset + : createEvent({ domain }); const $isValid = $firstError.map((firstError) => firstError === null) const $errorText = $firstError.map(