fix: refactor TypeAsyncDropdown value handling for improved clarity and consistency

This commit is contained in:
faisolavolut 2025-03-05 13:55:04 +07:00
parent 57b87bf707
commit 5f69723075
1 changed files with 55 additions and 48 deletions

View File

@ -191,8 +191,55 @@ export const TypeAsyncDropdown: React.FC<any> = ({
const clearable = const clearable =
mode === "dropdown" && required ? false : mode === "multi" ? true : true; mode === "dropdown" && required ? false : mode === "multi" ? true : true;
let value = fm.data[name]; let value = fm.data[name];
if (mode === "multi") { if (value) {
if (Array.isArray(value) && value?.length) { if (mode === "multi") {
if (Array.isArray(value) && value?.length) {
value = value.map((e) => {
return {
...e,
value: getValue(e),
label: getLabel(e),
};
});
} else {
value = [];
}
} else if (typeof value === "object") {
value = value
? {
value: getValue(value),
label: getLabel(value),
}
: null;
} else if (
!target &&
typeof value !== "object" &&
typeof value === "string" &&
value
) {
value = value
? onValue === onLabel
? {
value: value,
label: value,
}
: {
value: value,
label: getLabel(value),
}
: null;
} else if (typeof value === "string") {
value =
onValue === onLabel
? {
value: value,
label: value,
}
: {
value: value,
label: typeof onLabel === "string" ? value : getLabel(value),
};
} else if (Array.isArray(value) && value?.length) {
value = value.map((e) => { value = value.map((e) => {
return { return {
...e, ...e,
@ -200,55 +247,15 @@ export const TypeAsyncDropdown: React.FC<any> = ({
label: getLabel(e), label: getLabel(e),
}; };
}); });
} else { } else if (typeof value === "object" && value) {
value = []; value = value
}
} else if (typeof value === "object") {
value = {
value: getValue(value),
label: getLabel(value),
};
} else if (
!target &&
typeof value !== "object" &&
typeof value === "string" &&
value
) {
value =
onValue === onLabel
? { ? {
value: value, ...value,
label: value, value: getValue(value),
}
: {
value: value,
label: getLabel(value), label: getLabel(value),
};
} else if (typeof value === "string") {
value =
onValue === onLabel
? {
value: value,
label: value,
} }
: { : value;
value: value, }
label: typeof onLabel === "string" ? value : getLabel(value),
};
} else if (Array.isArray(value) && value?.length) {
value = value.map((e) => {
return {
...e,
value: getValue(e),
label: getLabel(e),
};
});
} else if (typeof value === "object" && value) {
value = {
...value,
value: getValue(value),
label: getLabel(value),
};
} }
const CustomMenu = (props: any) => { const CustomMenu = (props: any) => {
return ( return (