@vtaits/form-schema
Version:
Serialization and parsing form values by schema
127 lines (124 loc) • 3.37 kB
JavaScript
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