2022-10-20 11:57:30 -04:00
|
|
|
import controlComponent from './SelectControl';
|
|
|
|
import previewComponent from './SelectPreview';
|
|
|
|
import schema from './schema';
|
2022-12-01 19:29:33 -05:00
|
|
|
import { validateMinMax } from '@staticcms/core/lib/widgets/validations';
|
2022-10-20 11:57:30 -04:00
|
|
|
|
2022-12-01 19:29:33 -05:00
|
|
|
import type { SelectField, WidgetParam } from '@staticcms/core/interface';
|
2022-10-20 11:57:30 -04:00
|
|
|
|
2022-10-27 12:24:30 -04:00
|
|
|
const SelectWidget = (): WidgetParam<string | number | (string | number)[], SelectField> => {
|
2022-10-20 11:57:30 -04:00
|
|
|
return {
|
|
|
|
name: 'select',
|
|
|
|
controlComponent,
|
|
|
|
previewComponent,
|
|
|
|
options: {
|
|
|
|
validator: ({ field, value, t }) => {
|
|
|
|
const min = field.min;
|
|
|
|
const max = field.max;
|
|
|
|
|
|
|
|
if (!field.multiple || typeof value === 'string') {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
const error = validateMinMax(t, field.label ?? field.name, value, min, max);
|
|
|
|
|
|
|
|
return error ? error : false;
|
|
|
|
},
|
|
|
|
schema,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2022-12-01 19:29:33 -05:00
|
|
|
export {
|
|
|
|
controlComponent as SelectControl,
|
|
|
|
previewComponent as SelectPreview,
|
|
|
|
schema as SelectSchema,
|
|
|
|
};
|
|
|
|
|
2022-10-20 11:57:30 -04:00
|
|
|
export default SelectWidget;
|