diff --git a/comps/filter/FilterContent.tsx b/comps/filter/FilterContent.tsx
index 663e48d..a71019b 100755
--- a/comps/filter/FilterContent.tsx
+++ b/comps/filter/FilterContent.tsx
@@ -13,7 +13,7 @@ export const FilterContent: FC<{
child: any;
_item: PrasiItem;
}> = ({ mode, filter, PassProp, child, _item, onSubmit }) => {
- const internal = useLocal({});
+ filter.PassProp = PassProp;
return (
{
- const fm = form.fm;
+ name={filter.name}
+ onSubmit={async ({ fm }) => {
try {
- if (typeof form.fm?.data === "object") {
- form.render();
- form.fm.render();
+ if (typeof fm.data === "object") {
+ fm.render();
+ }
+
+ if (mode === "raw" && fm) {
+ const submit = async (fm: FMLocal) => {
+ fm.render();
+ if (typeof onSubmit === "function") {
+ const data = await onSubmit(fm);
+ if (typeof fm.data === "object") {
+ fm.data = {
+ __status: "submit",
+ ...fm.data,
+ _where: data,
+ };
+ fm.render();
+ filter.data = {
+ __status: "submit",
+ ...fm.data,
+ _where: data,
+ };
+ filter.render();
+ }
+ }
+ };
+ await submit(fm);
+ }
+ const f = getFilter(filter.name);
+ if (f) {
+ for (const list of Object.values(f.list.ref)) {
+ list.reload();
+ }
}
} catch (ex) {}
-
- if (mode === "raw" && fm) {
- if (form && form.fm) {
- Object.keys(form.fm.data).map((e) => {
- if (!form?.fm.data?.[e]) {
- delete form.fm?.data[e];
- }
- });
- }
- const submit = async (fm: FMLocal) => {
- fm.render();
- if (typeof onSubmit === "function") {
- const data = await onSubmit(fm);
- if (typeof form.fm?.data === "object") {
- form.fm.data = {
- __status: "submit",
- ...form.fm.data,
- _where: data,
- };
- form.fm.render();
- filter.data = {
- __status: "submit",
- ...form.fm.data,
- _where: data,
- };
- filter.render();
- }
- }
- };
- await submit(fm);
- }
- const f = getFilter(filter.name);
- if (f) {
- for (const list of Object.values(f.list.ref)) {
- list.reload();
- }
- }
+ return true;
}}
- render={internal.render}
+ // onSubmit={async (form) => {
+ // const fm = form.fm;
+ // try {
+ // if (typeof form.fm?.data === "object") {
+ // form.render();
+ // form.fm.render();
+ // }
+ // } catch (ex) {}
+
+ // if (mode === "raw" && fm) {
+ // if (form && form.fm) {
+ // Object.keys(form.fm.data).map((e) => {
+ // if (!form?.fm.data?.[e]) {
+ // delete form.fm?.data[e];
+ // }
+ // });
+ // }
+ // const submit = async (fm: FMLocal) => {
+ // fm.render();
+ // if (typeof onSubmit === "function") {
+ // const data = await onSubmit(fm);
+ // if (typeof form.fm?.data === "object") {
+ // form.fm.data = {
+ // __status: "submit",
+ // ...form.fm.data,
+ // _where: data,
+ // };
+ // form.fm.render();
+ // filter.data = {
+ // __status: "submit",
+ // ...form.fm.data,
+ // _where: data,
+ // };
+ // filter.render();
+ // }
+ // }
+ // };
+ // await submit(fm);
+ // }
+ // const f = getFilter(filter.name);
+ // if (f) {
+ // for (const list of Object.values(f.list.ref)) {
+ // list.reload();
+ // }
+ // }
+ // }}
>
- {(form) => {
- filter.form = form;
+ {({ fm }) => {
+ filter.fm = fm;
return (
<>
{!!(PassProp && child) && (
-
+
{child}
)}
diff --git a/comps/filter/FilterField.tsx b/comps/filter/FilterField.tsx
index 8cc623b..9202255 100755
--- a/comps/filter/FilterField.tsx
+++ b/comps/filter/FilterField.tsx
@@ -20,8 +20,9 @@ export const FilterField: FC<{
search_timeout: null as any,
});
if (!name) return <>No Name>;
- if (!filter.form) return Loading...
;
+ if (!filter.fm) return Loading...
;
+ const fm = filter.fm;
filter.types[name] = type;
const singleOptions = ["equal", "not_equal"];
@@ -32,167 +33,183 @@ export const FilterField: FC<{
internal.render_timeout = setTimeout(() => {
filter_window.prasiContext.render();
}, 500);
- }, [filter.form]);
+ }, [fm]);
let show_modifier = filter.mode !== "inline";
- return null;
- // return (
- // (
- // {
- // filter.modifiers[name] = modifier;
- // filter.render();
- // filter_window.prasiContext.render();
- // }}
- // modifier={filter.modifiers[name]}
- // type={type}
- // />
- // )
- // : undefined,
- // onLoad() {
- // return [{ label: "halo", value: "asda" }];
- // },
- // subType: singleOptions.includes(filter.modifiers[name])
- // ? "dropdown"
- // : "typeahead",
- // })}
- // >
- // {(field) => {
- // if (type === "search-all") {
- // return (
- //
- //
- //
{
- // // clearTimeout(internal.search_timeout);
- // // filter.form?.submit();
- // }}
- // spellCheck={false}
- // className="c-flex-1 c-transition-all c-bg-transparent c-outline-none c-px-2 c-text-sm c-w-full"
- // onChange={(e) => {
- // field.fm.data[name] = e.currentTarget.value;
- // field.fm.render();
- // clearTimeout(internal.search_timeout);
- // internal.search_timeout = setTimeout(() => {
- // filter.form?.submit();
- // }, 1500);
- // }}
- // />
- //
- // );
- // }
+ const arg = {
+ name: name || "",
+ fm,
+ label: label || name || "",
+ render: internal.render,
+ prefix: show_modifier
+ ? () => (
+ {
+ filter.modifiers[name] = modifier;
+ filter.render();
+ filter_window.prasiContext.render();
+ }}
+ modifier={filter.modifiers[name]}
+ type={type}
+ />
+ )
+ : undefined,
+ onLoad() {
+ return [{ label: "halo", value: "asda" }];
+ },
+ subType: singleOptions.includes(filter.modifiers[name])
+ ? "dropdown"
+ : "typeahead",
+ };
- // return (
- // <>
- // {type === "text" && (
- //
- // )}
- // {type === "number" && (
- // <>
- //
- // {filter.modifiers[name] === "between" && (
- //
- // )}
- // >
- // )}
- // {type === "date" && (
- // <>
- //
- // {filter.modifiers[name] === "between" && (
- //
- // )}
- // >
- // )}
- // {type === "boolean" && (
- //
- // )}
- // {type === "options" && (
- // <>
- // {singleOptions.includes(filter.modifiers[name]) && (
- //
- // )}
- // {multiOptions.includes(filter.modifiers[name]) && (
- //
- // )}
- // >
- // )}
- // >
- // );
- // }}
- //
- // );
+ return (
+
+ {(field) => {
+ if (type === "search-all") {
+ return (
+
+
+
{
+ // clearTimeout(internal.search_timeout);
+ // filter.form?.submit();
+ }}
+ spellCheck={false}
+ className="c-flex-1 c-transition-all c-bg-transparent c-outline-none c-px-2 c-text-sm c-w-full"
+ onChange={(e) => {
+ field.fm.data[name] = e.currentTarget.value;
+ field.fm.render();
+ clearTimeout(internal.search_timeout);
+ if (!field.fm.data[name]) {
+ fm.submit();
+ } else {
+ internal.search_timeout = setTimeout(() => {
+ fm?.submit();
+ }, 1500);
+ }
+ }}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") {
+ clearTimeout(internal.search_timeout);
+ fm?.submit();
+ }
+ }}
+ />
+
+ );
+ }
+
+ return (
+ <>
+ {type === "text" && (
+
+ )}
+ {type === "number" && (
+ <>
+
+ {filter.modifiers[name] === "between" && (
+
+ )}
+ >
+ )}
+ {type === "date" && (
+ <>
+
+ {filter.modifiers[name] === "between" && (
+
+ )}
+ >
+ )}
+ {type === "boolean" && (
+
+ )}
+ {type === "options" && (
+ <>
+ {singleOptions.includes(filter.modifiers[name]) && (
+
+ )}
+ {multiOptions.includes(filter.modifiers[name]) && (
+
+ )}
+ >
+ )}
+ >
+ );
+ }}
+
+ );
};
diff --git a/comps/filter/MasterFilter.tsx b/comps/filter/MasterFilter.tsx
index 085ef94..0f96678 100755
--- a/comps/filter/MasterFilter.tsx
+++ b/comps/filter/MasterFilter.tsx
@@ -73,7 +73,6 @@ export const MasterFilter: FC = ({
}
filter.raw_status = "ready";
filter.render();
-
});
} else {
filter.raw_status = "ready";
@@ -95,6 +94,7 @@ export const MasterFilter: FC = ({
if (mode === "raw" && filter.raw_status !== "ready") {
return ;
}
+
return (
<>
,
+ fm: null as null | FMLocal,
+ PassProp: null as null | any,
modifiers: {} as Record,
types: {} as Record,
name: "",