@altiore/form
Advanced tools
Comparing version 0.3.23 to 0.3.24
import { MutableRefObject } from 'react'; | ||
import { FieldMeta, ValidateFuncType } from '../types'; | ||
export declare const useValidateList: (inputRef: MutableRefObject<HTMLElement>, validators: Array<ValidateFuncType>, field?: FieldMeta) => string[]; | ||
import { ValidateFuncType } from '../types'; | ||
export declare const useValidateList: (inputRef: MutableRefObject<HTMLElement>, validators: Array<ValidateFuncType>, items: Array<number>) => string[]; |
@@ -1,6 +0,17 @@ | ||
import { useState } from 'react'; | ||
export var useValidateList = function (inputRef, validators, field) { | ||
var _a; | ||
var errors = useState([])[0]; | ||
return (_a = field === null || field === void 0 ? void 0 : field.errors) !== null && _a !== void 0 ? _a : errors; | ||
import { useMemo } from 'react'; | ||
export var useValidateList = function (inputRef, validators, items) { | ||
return useMemo(function () { | ||
console.log(items); | ||
var hasValidation = Boolean(validators === null || validators === void 0 ? void 0 : validators.length); | ||
var ers = []; | ||
if (hasValidation) { | ||
validators.forEach(function (validate) { | ||
var result = validate.validate(items); | ||
if (result === null || result === void 0 ? void 0 : result.error) { | ||
ers.push(result.error.message); | ||
} | ||
}); | ||
} | ||
return ers; | ||
}, [validators, items]); | ||
}; |
@@ -14,3 +14,3 @@ import React from 'react'; | ||
var key = _a.key; | ||
return React.createElement(Field, { key: key, label: "Title", name: "title" }); | ||
return (React.createElement(Field, { validators: [], key: key, label: "Title", name: "title" })); | ||
}))); | ||
@@ -17,0 +17,0 @@ }); |
@@ -8,2 +8,2 @@ /// <reference types="react" /> | ||
export declare const InsideFormFieldArraySimplest: ComponentStory<typeof FieldArray>; | ||
export declare const InsideFormFieldArray: ComponentStory<typeof FieldArray>; | ||
export declare const InsideFormFieldArrayWithValidators: ComponentStory<typeof FieldArray>; |
@@ -5,2 +5,3 @@ import React from 'react'; | ||
import FieldArray, { FieldArraySimplest } from './field-array'; | ||
import Joi from 'joi'; | ||
export default { | ||
@@ -20,8 +21,8 @@ argTypes: { onSubmit: { action: 'submit' } }, | ||
}; | ||
export var InsideFormFieldArray = function (_a) { | ||
export var InsideFormFieldArrayWithValidators = function (_a) { | ||
var onSubmit = _a.onSubmit; | ||
return (React.createElement(Form, { onSubmit: onSubmit }, | ||
React.createElement(Field, { label: "Title", name: "title" }), | ||
React.createElement(FieldArray, { name: "ingredients" }), | ||
React.createElement(FieldArray, { name: "ingredients", validators: [Joi.array().min(2)] }), | ||
React.createElement("button", { type: "submit" }, "Submit"))); | ||
}; |
@@ -18,3 +18,3 @@ import React, { useCallback } from 'react'; | ||
export var FieldArray = createFieldArray(function (_a) { | ||
var list = _a.list; | ||
var list = _a.list, errors = _a.errors; | ||
var cb = useCallback(function (_a) { | ||
@@ -31,2 +31,3 @@ var key = _a.key, remove = _a.remove, append = _a.append, prepend = _a.prepend; | ||
return (React.createElement("div", null, | ||
React.createElement("div", null, errors[0]), | ||
list.map(cb), | ||
@@ -47,3 +48,3 @@ React.createElement("button", { onClick: list.add, type: "button" }, "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0433\u0440\u0435\u0434\u0438\u0435\u043D\u0442"))); | ||
list.map(cb), | ||
React.createElement("button", { onClick: list.add, type: "button" }, "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0433\u0440\u0435\u0434\u0438\u0435\u043D\u0442"))); | ||
React.createElement("button", { onClick: list.add, type: "button" }, "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0433\u0440\u0435\u0434\u0438\u0435\u043D\u0442 1"))); | ||
}); |
@@ -18,6 +18,6 @@ var __assign = (this && this.__assign) || function () { | ||
var listRef = useRef(null); | ||
var list = useList(name, fieldMeta, setItems); | ||
var errors = useValidateList(listRef, validators, fieldMeta); | ||
var _b = useList(name, fieldMeta, setItems), list = _b[0], items = _b[1]; | ||
var errors = useValidateList(listRef, validators, items); | ||
return React.createElement(component, __assign(__assign({}, componentProps), { errors: errors, list: list, listRef: listRef, name: name })); | ||
}; | ||
export var ValidatedFieldArray = React.memo(ValidatedFieldArrayComponent); |
@@ -10,3 +10,3 @@ import { SyntheticEvent } from 'react'; | ||
export declare const remove: (list: number[], fieldName: string, index: number) => number[]; | ||
export declare const useList: (name: string, fieldMeta?: FieldMeta, setFormContextItems?: (fieldName: string, setItems: (i: number[]) => number[]) => void) => ListInterface; | ||
export declare const useList: (name: string, fieldMeta?: FieldMeta, setFormContextItems?: (fieldName: string, setItems: (i: number[]) => number[]) => void) => [ListInterface, number[]]; | ||
export {}; |
@@ -93,8 +93,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { | ||
return useMemo(function () { | ||
return { | ||
add: addHandler, | ||
map: mapHandler, | ||
remove: removeHandler, | ||
}; | ||
return [ | ||
{ | ||
add: addHandler, | ||
map: mapHandler, | ||
remove: removeHandler, | ||
}, | ||
items, | ||
]; | ||
}, [addHandler, fieldName, items, mapHandler, removeHandler]); | ||
}; |
{ | ||
"name": "@altiore/form", | ||
"version": "0.3.23", | ||
"version": "0.3.24", | ||
"description": "Form helper for building powerful forms", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
54951
1145