fix: default value if mode single or multiple

This commit is contained in:
Firman Syah 2026-06-29 10:14:38 +07:00
parent 401eb26458
commit 77110e1e9a
3 changed files with 1887 additions and 1847 deletions

3668
dist/index.js vendored

File diff suppressed because it is too large Load Diff

View File

@ -14,15 +14,14 @@ const Testing = () => {
Authorization: `Bearer ${token}`, Authorization: `Bearer ${token}`,
}} }}
> >
{/* <ListVirtual <ListVirtual
id="company-select" id="company-select"
label="Company" label="Company"
name="name" name="name"
url="/company" url="/company"
defaultValue={"442"} defaultValue={442}
size="small" size="small"
multiple />
/> */}
<ListVirtual <ListVirtual
label="License Plate" label="License Plate"
name="license_plate" name="license_plate"
@ -35,7 +34,7 @@ const Testing = () => {
}} }}
size="small" size="small"
filter={[ filter={[
{name:"company_id",value: "740","logic_operator":"=","operator":"AND"} {name:"company_id",value: "442","logic_operator":"=","operator":"AND"}
]} ]}
/> />
</ApiProvider> </ApiProvider>

View File

@ -121,51 +121,58 @@ export default function ListVirtual({
} }
}, [open]); }, [open]);
const fetchById = async (id) => { const fetchDefaultValue = async (value) => {
setLoading(true); setLoading(true);
const payload = new FilterTableBuilder() const payload = new FilterTableBuilder().setPaging(0, lengthData);
.setPaging(0, 1)
.equal("id", id); if (multiple) {
payload.in("id", value); // value = [1,2,3]
} else {
payload.equal("id", value); // value = 1
}
try { try {
const res = await apiRequest.search( const res = await apiRequest.search(
url, url,
payload.build(), payload.build(),
{ {
headers: headersRequest headers: headersRequest,
}, },
isApiGo, isApiGo,
); );
const data = res.data?.[0]; const data = res.data || [];
if (data) { setSelected(multiple ? data : data[0] || null);
setSelected(data);
}
} catch (err) { } catch (err) {
console.error(err); console.error(err);
} finally {
setLoading(false);
} }
setLoading(false);
}; };
useEffect(() => { useEffect(() => {
if (!defaultValue) return; if (defaultValue == null) return;
if (multiple) { // Already object(s)
if (Array.isArray(defaultValue)) { if (typeof defaultValue === "object") {
setSelected(defaultValue); if (multiple) {
} else { if (
setSelected([defaultValue]); Array.isArray(defaultValue) &&
} defaultValue.length &&
} else { typeof defaultValue[0] === "object"
if (Array.isArray(defaultValue)) { ) {
setSelected(defaultValue[0] || null); setSelected(defaultValue);
} else { return;
}
} else if (!Array.isArray(defaultValue)) {
setSelected(defaultValue); setSelected(defaultValue);
return;
} }
} }
fetchDefaultValue(defaultValue);
}, [defaultValue, multiple]); }, [defaultValue, multiple]);
const handleSelect = (row) => { const handleSelect = (row) => {