enumOptions and enum reader

This commit is contained in:
2026-06-04 03:37:44 +05:30
parent 2dbe9a5270
commit 7c33bd9c7c
8 changed files with 109 additions and 29 deletions

View File

@@ -0,0 +1,28 @@
import { ResourceField, SelectOption } from "../types/config";
export function getFieldOptions(field: ResourceField, relationData?: any[]): SelectOption[] {
if (field.type === 'enum' && field.options) {
return field.options.map(opt => ({
key: opt,
value: field.enumLabels?.[opt] ?? opt,
}));
}
if (field.relation) {
const data = relationData ?? [];
const enumOption = field.enumOption ?? { key: 'id', value: 'name' };
return data.map(item => ({
key: String(item[enumOption.key] ?? ''),
value: Array.isArray(enumOption.value)
? enumOption.value.map(k => item[k]).filter(v => v != null).join(' ')
: String(item[enumOption.value] ?? ''),
}));
}
return [];
}
export function toGridValueOptions(options: SelectOption[]): { value: string; label: string }[] {
return options.map(opt => ({ value: opt.key, label: opt.value }));
}