UNPKG

@vtaits/form-schema

Version:

Serialization and parsing form values by schema

127 lines (124 loc) 3.37 kB
import { defaultErrorMessages } from "./chunk-O5F4Y5EZ.js"; // src/fields/select/constants.ts var DEFAULT_VALUE_KEY = "value"; var DEFAULT_LABEL_KEY = "label"; // src/fields/select/multiSelect.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 multiSelect = { 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: { getOptionValue, options, valueKey = DEFAULT_VALUE_KEY } }) => { const valueArr = parseValueArray(value); return options.filter((option) => { if (getOptionValue) { const optionValue2 = getOptionValue(option); return valueArr.some( (valueItem) => valueItem === optionValue2 || getOptionValue(valueItem) === optionValue2 ); } const optionValue = option[valueKey]; return valueArr.some( (valueItem) => valueItem === optionValue || valueItem[valueKey] === optionValue ); }); }, 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/select/select.ts var select = { serializerSingle: ({ value, fieldSchema: { getOptionValue, valueKey = DEFAULT_VALUE_KEY } }) => { if (!value) { return null; } if (getOptionValue) { return getOptionValue(value); } return value[valueKey]; }, parserSingle: ({ value, fieldSchema: { getOptionValue, options, valueKey = DEFAULT_VALUE_KEY } }) => { if (!value) { return null; } return options.find((option) => { if (getOptionValue) { const optionValue2 = getOptionValue(option); return value === optionValue2 || getOptionValue(value) === optionValue2; } const optionValue = option[valueKey]; return value === optionValue || value[valueKey] === optionValue; }); }, 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, multiSelect, select }; //# sourceMappingURL=fields_select.js.map