Skip to content

Commit 2ee0aab

Browse files
committed
Feature - enum filters
1 parent 944066c commit 2ee0aab

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

package/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "zenstack-ui",
33
"description": "Customizable react components for zenstack (forms/lists/etc.)",
4-
"version": "0.0.8",
4+
"version": "0.0.9",
55
"repository": {
66
"type": "git",
77
"url": "https://github.com/kirankunigiri/zenstack-ui",

package/src/form/form.tsx

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -495,12 +495,23 @@ const ZenstackFormInputInternal = (props: ZenstackFormInputProps) => {
495495
if (zodFieldType === 'ZodEnum') {
496496
// Enum type - Update attributes
497497
fieldType = FieldType.Enum;
498-
labelData = zodDef['values'].map((value: any) => {
499-
return {
500-
label: enumLabelTransformer ? enumLabelTransformer(value) : value,
501-
value: value,
502-
};
503-
});
498+
499+
// Generate base enum values
500+
let enumValues = zodDef['values'].map((value: any) => ({
501+
label: enumLabelTransformer ? enumLabelTransformer(value) : value,
502+
value: value,
503+
}));
504+
505+
// Filter the enum values if a filter function exists
506+
if (field.filter) {
507+
const modelValues = props.form.getValues();
508+
// Fix an issue where values are strings ('undefined') instead of undefined
509+
Object.keys(modelValues).forEach(key => modelValues[key] === 'undefined' && (modelValues[key] = undefined));
510+
// Filter the enum values
511+
enumValues = enumValues.filter((enumItem: any) => field.filter!(modelValues, { value: enumItem.value }));
512+
}
513+
514+
labelData = enumValues;
504515
} else if (field.isForeignKey) {
505516
// Reference type - Update attributes
506517
fieldType = FieldType.ReferenceSingle;
@@ -526,9 +537,7 @@ const ZenstackFormInputInternal = (props: ZenstackFormInputProps) => {
526537
// Fix an issue where values are strings ('undefined') instead of undefined
527538
Object.keys(modelValues).forEach(key => modelValues[key] === 'undefined' && (modelValues[key] = undefined));
528539
// Filter the data
529-
filteredData = referenceFieldData.data.filter((referenceItem: any) =>
530-
field.filter!(modelValues, referenceItem),
531-
);
540+
filteredData = referenceFieldData.data.filter((referenceItem: any) => field.filter!(modelValues, referenceItem));
532541
}
533542

534543
// Generate label data

0 commit comments

Comments
 (0)