import { FC, useEffect } from "react"; import { BaseField } from "../form/base/BaseField"; import { FilterFieldType, FilterLocal, filter_window } from "./utils/types"; import { FieldTypeInput } from "../form/field/type/TypeInput"; import { FieldModifier } from "./FieldModifier"; import { useLocal } from "lib/utils/use-local"; import { FieldCheckbox } from "../form/field/type/TypeCheckbox"; import { SingleOption } from "../form/field/type/TypeSingleOption"; import { MultiOption } from "../form/field/type/TypeMultiOption"; export const FilterField: FC<{ filter: FilterLocal; name?: string; label?: string; type: FilterFieldType; modifiers?: any[]; }> = ({ filter, name, label, type, modifiers }) => { const internal = useLocal({ render_timeout: null as any, search_timeout: null as any, }); if (!name) return <>No Name; if (!filter.form) return
Loading...
; filter.types[name] = type; const singleOptions = ["equal", "not_equal"]; const multiOptions = ["includes", "excludes"]; useEffect(() => { clearTimeout(internal.render_timeout); internal.render_timeout = setTimeout(() => { filter_window.prasiContext.render(); }, 500); }, [filter.form]); 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); // }} // /> //
// ); // } // 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]) && ( // // )} // // )} // // ); // }} //
// ); };