diff --git a/comps/form/field/type/TypeDropdown.tsx b/comps/form/field/type/TypeDropdown.tsx index d92138e..6faadcf 100755 --- a/comps/form/field/type/TypeDropdown.tsx +++ b/comps/form/field/type/TypeDropdown.tsx @@ -29,9 +29,12 @@ export const TypeDropdown: FC<{ if (options instanceof Promise) { options.then((res) => { if (Array.isArray(res)) { - const list: any = res.map((e: any) => { + const list: any = res.map((e: any, idx: number) => { return { - label: arg.opt_get_label(e, "list"), + label: arg.opt_get_label(e, "list", { + prev: res[idx - 1], + next: res[idx + 1], + }), tag: arg.opt_get_label(e, "label"), value: e.value, data: e.data, diff --git a/comps/form/gen/gen-field.ts b/comps/form/gen/gen-field.ts index ebd80ef..fe9b7ca 100755 --- a/comps/form/gen/gen-field.ts +++ b/comps/form/gen/gen-field.ts @@ -133,7 +133,7 @@ export const generateField = async ( opt__label: `\ ( row: { value: string; label: string; data?: any }, - mode: "list" | "label", + mode: "list" | "label", opt: any ) => { const cols = ${JSON.stringify( getColumn(generateSelect(parseGenField(master.value.checked))) @@ -141,7 +141,7 @@ export const generateField = async ( const prefix = treePrefix({ //@ts-ignore - rel__feature, rel__id_parent, row, mode + rel__feature, rel__id_parent, row, mode, opt }); if (isEditor) { diff --git a/comps/form/gen/gen-label.ts b/comps/form/gen/gen-label.ts index 5551f5b..6a2b8dd 100755 --- a/comps/form/gen/gen-label.ts +++ b/comps/form/gen/gen-label.ts @@ -18,7 +18,7 @@ export const gen_label = ({ return `\ ( row: { value: string; label: string; data?: any }, - mode: "list" | "label", + mode: "list" | "label", opt: any ) => { const cols = ${JSON.stringify(cols)}; @@ -28,7 +28,7 @@ export const gen_label = ({ const prefix = treePrefix({ //@ts-ignore - rel__feature, rel__id_parent, row, mode + rel__feature, rel__id_parent, row, mode, opt }); const result = []; diff --git a/comps/form/gen/gen-rel-many.ts b/comps/form/gen/gen-rel-many.ts index 849a562..745254d 100755 --- a/comps/form/gen/gen-rel-many.ts +++ b/comps/form/gen/gen-rel-many.ts @@ -123,7 +123,7 @@ export const genRelMany = (prop: { const get_label = `\ ( row: { value: string; label: string; data?: any }, - mode: "list" | "label", + mode: "list" | "label", opt: any ) => { const cols = ${JSON.stringify(cols)}; @@ -133,7 +133,7 @@ export const genRelMany = (prop: { const prefix = treePrefix({ //@ts-ignore - rel__feature, rel__id_parent, row, mode + rel__feature, rel__id_parent, row, mode, opt }); const result = []; diff --git a/comps/form/typings.ts b/comps/form/typings.ts index 4d3ecb9..58431df 100755 --- a/comps/form/typings.ts +++ b/comps/form/typings.ts @@ -68,7 +68,11 @@ export type FieldProp = { ) => | { value: string; label: string }[] | Promise<{ value: string; label: string }[]>; - opt_get_label: (row: any, mode: "list" | "label") => string; + opt_get_label: ( + row: any, + mode: "list" | "label", + opt?: { next?: any; prev?: any } + ) => string; opt_get_value: (arg: { options: { label: string; value: string; item?: string }[]; fm: FMLocal; diff --git a/comps/list/utils/sort-tree.ts b/comps/list/utils/sort-tree.ts index 76624b2..19de33b 100755 --- a/comps/list/utils/sort-tree.ts +++ b/comps/list/utils/sort-tree.ts @@ -1,8 +1,10 @@ export const treePrefix = (props: any) => { if (!props) return ""; - const { rel__feature, rel__id_parent, row, mode } = props; + const { rel__feature, rel__id_parent, row, opt } = props; if (props.mode !== "list") return ""; + const next = opt?.next?.data?.__depth; + const prev = opt?.prev?.data?.__depth; if (!rel__feature || !rel__id_parent || !row) return ""; @@ -15,10 +17,16 @@ export const treePrefix = (props: any) => { let prefix = ``; if (is_tree && row.data && row.data.__depth) { + const cur = row.data.__depth; + let is_last = false; + if (cur !== next) { + is_last = true; + } + for (let i = 0; i < row.data.__depth; i++) { if (i === 0) { if (row.data.__depth === 1) { - prefix += "└"; + prefix += is_last ? "└" : "├"; } else { prefix += " "; } @@ -26,7 +34,7 @@ export const treePrefix = (props: any) => { if (row.data.__depth - 1 !== i) { prefix += " "; } else { - prefix += "└"; + prefix += is_last ? "└" : "├"; } } } @@ -98,9 +106,6 @@ export const sortTree = (list: any, parent_key: string, pk: string) => { } if (parent) { - if (parent.item.id === "f43ac927-9c0d-4241-a837-c0bf1c6a5245") { - console.log(parent, item); - } item.__depth = parent.depth + 1; meta[item[pk]] = {