balik awal

This commit is contained in:
faisolavolut 2024-06-18 15:00:34 +07:00
parent 540d37dd1c
commit 14120c8465
1 changed files with 91 additions and 21 deletions

View File

@ -295,13 +295,95 @@ export const EdPropInstanceOptions: FC<{
` `
)} )}
> >
<CheckboxLayer <div className={cx("flex flex-col bg-white")}>
value={local.options} {Array.isArray(local.options) &&
render={local.render} local.options.map((item, idx) => {
evalue={evalue} const val: any[] = Array.isArray(evalue)
onChange={onChange} ? evalue
: [];
const found = val.find((e) => {
if (!item.options) {
return e === item.value;
} else {
if (
typeof e === "object" &&
e.value === item.value
) {
return true;
}
return false;
}
});
return (
<Fragment key={idx}>
<SingleCheckbox
item={item}
idx={idx}
val={val}
depth={0} depth={0}
onChange={(val) => {
onChange(JSON.stringify(val), item);
local.render();
}}
/> />
{item.options &&
found &&
item.options.map((child, idx) => {
const sub_found = found.checked.find(
(e: any) => {
if (!item.options) {
return e === child.value;
} else {
if (
typeof e === "object" &&
e.value === child.value
) {
return true;
}
return false;
}
}
);
return (
<Fragment key={idx}>
<SingleCheckbox
key={idx}
item={child}
idx={idx}
depth={1}
val={found.checked}
onChange={(newval) => {
onChange(JSON.stringify(val), child);
local.render();
}}
/>
{child.options &&
sub_found &&
child.options.map((item, sidx) => {
return (
<SingleCheckbox
item={item}
idx={idx}
key={sidx}
depth={2}
val={sub_found.checked}
onChange={(newval) => {
onChange(
JSON.stringify(val),
item
);
local.render();
}}
/>
);
})}
</Fragment>
);
})}
</Fragment>
);
})}
</div>
</div> </div>
} }
asChild asChild
@ -344,25 +426,14 @@ const CheckboxLayer = ({
render, render,
evalue, evalue,
onChange, onChange,
depth,
}: { }: {
value: MetaOption[]; value: MetaOption[];
render: () => void; render: () => void;
onChange: (val: string, item: MetaOption | undefined) => void; onChange: (val: string, item: MetaOption | undefined) => void;
evalue: Array<any>; evalue: Array<any>;
depth: number;
}) => { }) => {
return ( return (
<div <div className={cx("flex flex-col bg-white")}>
className={cx(
"flex flex-col bg-white",
!depth ? "" : "border-t",
depth &&
css`
padding-left: ${depth * 20}px;
`
)}
>
{Array.isArray(value) && {Array.isArray(value) &&
value.map((item, idx) => { value.map((item, idx) => {
const val: any[] = Array.isArray(evalue) ? evalue : []; const val: any[] = Array.isArray(evalue) ? evalue : [];
@ -382,7 +453,7 @@ const CheckboxLayer = ({
item={item} item={item}
idx={idx} idx={idx}
val={val} val={val}
depth={depth} depth={0}
onChange={(val) => { onChange={(val) => {
onChange(JSON.stringify(val), item); onChange(JSON.stringify(val), item);
render(); render();
@ -394,7 +465,6 @@ const CheckboxLayer = ({
render={render} render={render}
evalue={found.checked} evalue={found.checked}
onChange={onChange} onChange={onChange}
depth={depth + 1}
/> />
)} )}
</Fragment> </Fragment>