fix title md

This commit is contained in:
rizky 2024-07-18 19:38:26 -07:00
parent 4c8ad76035
commit b3eeaea11e
5 changed files with 29 additions and 3 deletions

View File

@ -25,15 +25,18 @@ export const MasterDetail: FC<MDProps> = (arg) => {
gen_table, gen_table,
on_init, on_init,
_item, _item,
title,
} = arg; } = arg;
const _ref = useRef({ PassProp, item: _item, childs: {} }); const _ref = useRef({ PassProp, item: _item, childs: {} });
const mdr = _ref.current; const mdr = _ref.current;
const md = useLocal<MDLocalInternal>({ const md = useLocal<MDLocalInternal>({
name, name,
title,
status: isEditor ? "init" : "ready", status: isEditor ? "init" : "ready",
actions: [], actions: [],
header: { header: {
breadcrumb: [], breadcrumb: [],
internalRender() {},
render: () => {}, render: () => {},
}, },
selected: null, selected: null,
@ -98,8 +101,18 @@ export const MasterDetail: FC<MDProps> = (arg) => {
} }
} }
if (isEditor) {
useEffect(() => {
md.title = title;
md.header.render();
}, [title]);
}
return ( return (
<div className={cx("master-detail c-flex-1 c-flex-col c-flex c-w-full c-h-full")}> <div
className={cx(
"master-detail c-flex-1 c-flex-col c-flex c-w-full c-h-full"
)}
>
{md.props.show_head === "always" && <MDHeader md={md} mdr={mdr} />} {md.props.show_head === "always" && <MDHeader md={md} mdr={mdr} />}
{md.status === "ready" && ( {md.status === "ready" && (
<> <>

View File

@ -57,7 +57,7 @@ export const generateMDForm = async (
() => { () => {
const breads: BreadItem[] = [ const breads: BreadItem[] = [
{ {
label: "List ${formatName(arg.table)}", label: md.title || "List ${formatName(arg.table)}",
onClick: () => { onClick: () => {
md.selected = null; md.selected = null;
md.tab.active = "master"; md.tab.active = "master";

View File

@ -10,6 +10,16 @@ export const generateMasterDetail: GenFn<{
}> = async (modify, data, arg) => { }> = async (modify, data, arg) => {
const { item } = arg; const { item } = arg;
try {
const fn_title = new Function(
`return ${item.edit.props?.title?.value || "''"}`
);
const title = fn_title();
if (!title && item.edit.props?.gen_table) {
item.edit.setProp('title', item.edit.props?.gen_table)
}
} catch (e) {}
await generateList(arg, data, false); await generateList(arg, data, false);
await generateMDForm(arg, data, false); await generateMDForm(arg, data, false);
await item.edit.commit(); await item.edit.commit();

View File

@ -113,7 +113,7 @@ idx: any;
value: `\ value: `\
() => { () => {
return [ return [
{ label: "List ${formatName(arg.table)}" }, { label: md.title || "List ${formatName(arg.table)}" },
] as BreadItem[]; ] as BreadItem[];
}; };
type BreadItem = { type BreadItem = {

View File

@ -24,6 +24,7 @@ export type MDProps = {
on_init: (md: MDLocal) => void; on_init: (md: MDLocal) => void;
_item: PrasiItem; _item: PrasiItem;
deps?: any[]; deps?: any[];
title: string;
}; };
export type MDActions = { export type MDActions = {
@ -34,6 +35,7 @@ export type MDActions = {
export type MDLocalInternal = { export type MDLocalInternal = {
name: string; name: string;
title: string;
status: "init" | "unready" | "ready"; status: "init" | "unready" | "ready";
header: { header: {
breadcrumb: BreadItem[]; breadcrumb: BreadItem[];
@ -94,6 +96,7 @@ export type MDLocal = MDLocalInternal & { render: (force?: boolean) => void };
export const MasterDetailType = `const md = { export const MasterDetailType = `const md = {
name: string; name: string;
title: string;
status: string; status: string;
header: { header: {
render: () => void; render: () => void;