import { type SavedFilter } from "@olenbetong/appframe-core"; import "./SavedFilterTree.css"; /** `null` is the "new filter" node, i.e. no saved filter selected. */ export type SavedFilterSelection = number | null; export type SavedFilterTreeProps = { mine: SavedFilter[]; shared: SavedFilter[]; /** `FilterID` of the selected filter, or `null` for "new filter". */ value: SavedFilterSelection; onChange: (filterId: SavedFilterSelection) => void; /** * Marks the selected filter as having unsaved changes; it is then rendered * in bold, like the Windows client does. */ dirty?: boolean; onRename?: (filter: SavedFilter) => void; onDelete?: (filter: SavedFilter) => void; /** Shows an "info" item in the context menu when supplied. */ onShowInfo?: (filter: SavedFilter) => void; loading?: boolean; className?: string; "data-size"?: "sm" | "md" | "lg"; }; /** * The saved-filter list of the filter builder: a "new filter" entry followed by * the user's own filters and the filters shared with them. * * Which actions a filter offers depends on the access the database resolved for * it — renaming and deleting are restricted to filters the user created, even * when they manage a filter someone else made. * * @example * ```jsx * let { mine, shared, rename, remove } = useSavedFilters({ dbObjectId: "aviw_Personnel_Persons" }); * * rename(filter.filterId, prompt("Name", filter.name))} * /> * ``` */ export declare function SavedFilterTree({ mine, shared, value, onChange, dirty, onRename, onDelete, onShowInfo, loading, className, "data-size": size, }: SavedFilterTreeProps): import("react").JSX.Element;