UNPKG

@vtaits/form-schema

Version:

Serialization and parsing form values by schema

116 lines (113 loc) 2.93 kB
import { defaultErrorMessages } from "./chunk-O5F4Y5EZ.js"; // src/fields/asyncSelect/constants.ts var DEFAULT_VALUE_KEY = "value"; var DEFAULT_LABEL_KEY = "label"; // src/fields/asyncSelect/asyncMultiSelect.ts function parseValueArray(value) { if (value === null || value === void 0) { return []; } if (Array.isArray(value)) { return value; } if (typeof value === "object") { return Object.values(value); } return [value]; } var asyncMultiSelect = { serializerSingle: ({ value, fieldSchema: { getOptionValue, valueKey = DEFAULT_VALUE_KEY } }) => { if (!value) { return []; } const valueArr = Array.isArray(value) ? value : [value]; if (getOptionValue) { return valueArr.map(getOptionValue); } return valueArr.map( (valueItem) => valueItem[valueKey] ); }, parserSingle: ({ value, fieldSchema: { loadSingleOption } }) => { const valueArr = parseValueArray(value); return Promise.all( valueArr.map((value2) => { if (!value2) { return null; } if (loadSingleOption) { return loadSingleOption(value2); } return value2; }) ).then((parsedValues) => parsedValues.filter(Boolean)); }, validatorBeforeSubmit: ({ setCurrentError, value, fieldSchema }) => { const { errorMessages: errorMessagesParam, minLength, maxLength, required } = fieldSchema; const errorMessages = { ...defaultErrorMessages, ...errorMessagesParam }; const valueArr = Array.isArray(value) ? value : [value]; if (required && valueArr.length === 0) { setCurrentError(errorMessages.required); } if (minLength && valueArr.length < minLength) { setCurrentError(errorMessages.minLength(minLength)); } if (maxLength && valueArr.length > maxLength) { setCurrentError(errorMessages.maxLength(maxLength)); } } }; // src/fields/asyncSelect/asyncSelect.ts var asyncSelect = { serializerSingle: ({ value, fieldSchema: { getOptionValue, valueKey = DEFAULT_VALUE_KEY } }) => { if (!value) { return null; } if (getOptionValue) { return getOptionValue(value); } return value[valueKey]; }, parserSingle: ({ value, fieldSchema: { loadSingleOption } }) => { if (!value) { return null; } if (loadSingleOption) { return loadSingleOption(value); } return value; }, validatorBeforeSubmit: ({ setCurrentError, value, fieldSchema }) => { const { errorMessages: errorMessagesParam, required } = fieldSchema; const errorMessages = { ...defaultErrorMessages, ...errorMessagesParam }; if (required && !value) { setCurrentError(errorMessages.required); } } }; export { DEFAULT_LABEL_KEY, DEFAULT_VALUE_KEY, asyncMultiSelect, asyncSelect }; //# sourceMappingURL=fields_asyncSelect.js.map