@altiore/form
Advanced tools
Comparing version 0.3.8 to 0.3.9
@@ -1,2 +0,2 @@ | ||
/// <reference types="react" /> | ||
import { MouseEventHandler } from 'react'; | ||
export interface ListItem { | ||
@@ -8,21 +8,23 @@ key: string; | ||
} | ||
export interface ListInterface { | ||
export declare type ListInterface<Item extends Record<string, any> = Record<string, any>> = { | ||
map: (arg: (el: ListItem, index: number) => JSX.Element) => JSX.Element[]; | ||
add: (index?: any) => void; | ||
add: MouseEventHandler | (() => void) | ((item: Item, index?: number) => void); | ||
remove: (index: number) => void; | ||
} | ||
export declare type RegisterField = (fieldName: string, isArray?: boolean, prevList?: any) => void; | ||
}; | ||
export declare type RegisterField = (fieldName: string, isArray: boolean, prevList?: number[]) => void; | ||
export declare type SetErrors = (name: string, errors: string[] | undefined) => void; | ||
export interface FormContextState { | ||
defaultValues: Record<string, any>; | ||
errors: Record<string, string[]>; | ||
fields: Record<string, { | ||
registered: boolean; | ||
list?: ListInterface; | ||
}>; | ||
export declare type FieldMeta<Item extends Record<string, any> = Record<string, any>> = { | ||
name: string; | ||
defaultValue?: any; | ||
errors: string[]; | ||
list?: ListInterface<Item>; | ||
setErrors: (errors: string[]) => void; | ||
}; | ||
export declare type FormContextState = { | ||
fields: Record<string, FieldMeta<any>>; | ||
registerField: RegisterField; | ||
setErrors: SetErrors; | ||
} | ||
}; | ||
export interface ArrayFieldState { | ||
name: string; | ||
} | ||
export declare type ValidateFuncType = (value: string | number) => string | undefined; |
@@ -1,23 +0,8 @@ | ||
import React from 'react'; | ||
/// <reference types="react" /> | ||
import { ValidateFuncType } from '../@common/types'; | ||
import { InternalFieldProps } from './validated-field'; | ||
export declare type FieldProps = { | ||
name: string; | ||
validators?: Array<(v: any) => string | undefined>; | ||
validators?: Array<ValidateFuncType>; | ||
}; | ||
declare type InternalFieldProps = { | ||
defaultValue: any; | ||
errors: string[]; | ||
inputRef: any; | ||
}; | ||
/** | ||
* Компонент принимает пользовательский компонент и возвращает {name, validators, ...props} | ||
* | ||
* @component | ||
* | ||
* @typedef CreateField | ||
* @prop {React.ReactNode} [component] Пользовательский компонент | ||
* | ||
* @example | ||
* return (any) | ||
*/ | ||
export declare const createField: <T extends FieldProps>(component: React.FC<T & InternalFieldProps>) => (props: T) => JSX.Element; | ||
export {}; | ||
export declare const createField: <T extends FieldProps>(component: (props: Omit<T, "validators"> & InternalFieldProps) => JSX.Element) => (props: T) => JSX.Element; |
@@ -1,12 +0,1 @@ | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
var __rest = (this && this.__rest) || function (s, e) { | ||
@@ -24,26 +13,17 @@ var t = {}; | ||
import React from 'react'; | ||
import { FormContext } from '../@common/form-context'; | ||
import FieldComponentInsideForm from './field-component-inside-form'; | ||
import FieldComponentOutsideForm from './field-component-outside-form'; | ||
/** | ||
* Компонент принимает пользовательский компонент и возвращает {name, validators, ...props} | ||
* | ||
* @component | ||
* | ||
* @typedef CreateField | ||
* @prop {React.ReactNode} [component] Пользовательский компонент | ||
* | ||
* @example | ||
* return (any) | ||
*/ | ||
import ArrayFieldChild from '../@common/array-field.child'; | ||
import FormChild from '../@common/form.child'; | ||
import ValidatedField from './validated-field'; | ||
export var createField = function (component) { | ||
return function (_a) { | ||
var name = _a.name, props = __rest(_a, ["name"]); | ||
return (React.createElement(FormContext.Consumer, null, function (value) { | ||
if (!value) { | ||
return (React.createElement(FieldComponentOutsideForm, __assign({}, __assign({ component: component, name: name }, props)))); | ||
} | ||
return (React.createElement(FieldComponentInsideForm, __assign({}, __assign({ component: component, form: value, name: name }, props)))); | ||
})); | ||
}; | ||
return React.memo(function (_a) { | ||
var name = _a.name, validators = _a.validators, props = __rest(_a, ["name", "validators"]); | ||
return (React.createElement(FormChild, { component: ArrayFieldChild, componentProps: { | ||
component: ValidatedField, | ||
componentProps: { | ||
component: component, | ||
componentProps: props, | ||
validators: validators, | ||
}, | ||
}, isArray: false, name: name })); | ||
}); | ||
}; |
@@ -13,5 +13,7 @@ var __assign = (this && this.__assign) || function () { | ||
import React, { useCallback, useRef, useState, } from 'react'; | ||
import get from 'lodash/get'; | ||
import isEqual from 'lodash/isEqual'; | ||
import set from 'lodash/set'; | ||
import { FormContext } from '../@common/form-context'; | ||
import { List } from '../create-field-array/list'; | ||
import { List } from '../create-array-field/list'; | ||
/** | ||
@@ -38,4 +40,2 @@ * Компонент Form принимает children, defaultValues, onSubmit | ||
var _b = useState({ | ||
defaultValues: defaultValues, | ||
errors: {}, | ||
fields: {}, | ||
@@ -46,3 +46,8 @@ }), formState = _b[0], setFormState = _b[1]; | ||
var _a; | ||
return (__assign(__assign({}, s), { errors: __assign(__assign({}, s.errors), (_a = {}, _a[fieldName] = errors, _a)) })); | ||
if (isEqual(s.fields[fieldName].errors, errors)) { | ||
return s; | ||
} | ||
return __assign(__assign({}, s), { fields: (_a = {}, | ||
_a[fieldName] = __assign(__assign({}, s.fields[fieldName]), { errors: errors }), | ||
_a) }); | ||
}); | ||
@@ -53,11 +58,15 @@ }, [setFormState]); | ||
var _a; | ||
var _b; | ||
return (__assign(__assign({}, s), { fields: __assign(__assign({}, s.fields), (_a = {}, _a[fieldName] = { | ||
var defaultValue = get(defaultValues, fieldName.split('.')); | ||
return __assign(__assign({}, s), { fields: __assign(__assign({}, s.fields), (_a = {}, _a[fieldName] = { | ||
defaultValue: defaultValue, | ||
errors: [], | ||
items: isArray ? [] : undefined, | ||
list: isArray | ||
? new List(registerField, (_b = s.defaultValues) === null || _b === void 0 ? void 0 : _b[fieldName], fieldName, prevList) | ||
? new List(registerField, defaultValue, fieldName, prevList) | ||
: undefined, | ||
registered: true, | ||
}, _a)) })); | ||
name: fieldName, | ||
setErrors: setErrors.bind({}, fieldName), | ||
}, _a)) }); | ||
}); | ||
}, [setFormState]); | ||
}, [defaultValues, setFormState]); | ||
var handleSubmit = useCallback(function (evt) { | ||
@@ -75,3 +84,3 @@ var _a; | ||
return (React.createElement("form", { onSubmit: handleSubmit, ref: formRef }, | ||
React.createElement(FormContext.Provider, { value: __assign(__assign({}, formState), { registerField: registerField, setErrors: setErrors }) }, children))); | ||
React.createElement(FormContext.Provider, { value: __assign(__assign({}, formState), { registerField: registerField }) }, children))); | ||
}; |
@@ -0,3 +1,4 @@ | ||
export * from './create-array-field'; | ||
export * from './create-field'; | ||
export * from './form'; | ||
export * from './validators'; |
@@ -0,3 +1,4 @@ | ||
export * from './create-array-field'; | ||
export * from './create-field'; | ||
export * from './form'; | ||
export * from './validators'; |
@@ -1,2 +0,2 @@ | ||
import { ValidateFuncType } from '../../@common'; | ||
import { ValidateFuncType } from '../../@common/types'; | ||
export declare const maxLength: (length: number) => ValidateFuncType; |
@@ -1,2 +0,2 @@ | ||
import { ValidateFuncType } from '../../@common'; | ||
import { ValidateFuncType } from '../../@common/types'; | ||
export declare const minLength: (length: number) => ValidateFuncType; |
@@ -7,3 +7,3 @@ export var minLength = function (length) { | ||
} | ||
if (stringedValue.length != 0 && stringedValue.length < length) { | ||
if (stringedValue.length < length) { | ||
return "The length of the entered value should be no more than " + length + " characters"; | ||
@@ -10,0 +10,0 @@ } |
@@ -1,2 +0,2 @@ | ||
import { ValidateFuncType } from '../../@common'; | ||
import { ValidateFuncType } from '../../@common/types'; | ||
export declare const regexp: (regex: RegExp) => ValidateFuncType; |
{ | ||
"name": "@altiore/form", | ||
"version": "0.3.8", | ||
"version": "0.3.9", | ||
"description": "Form helper for building powerful forms", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
37929
74
755
1