This commit is contained in:
2026-05-24 01:34:52 +05:30
parent a3970d6a7b
commit 653c8caecf
6 changed files with 23 additions and 13 deletions

View File

@@ -61,7 +61,7 @@ export default function EnhancedTable({
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
const navigate = useNavigate();
const isServer = config.mode !== "client";
const isServer = config.filterOptions?.mode !== "client";
const [internalPaginationModel, setInternalPaginationModel] = React.useState<GridPaginationModel>({
page: 0,
pageSize: 10,

View File

@@ -102,7 +102,7 @@ export default function ResourceView({ config, onNavigateToResource }: ResourceV
const isView = !!id && !isEdit;
const isList = !id && !isCreate;
const isServer = config.mode !== "client";
const isServer = config.filterOptions?.mode !== "client";
const [paginationModel, setPaginationModel] = React.useState<GridPaginationModel>({
page: 0,
@@ -170,11 +170,11 @@ export default function ResourceView({ config, onNavigateToResource }: ResourceV
<Box>
{isList ? (
<Box>
{!isServer && config.filterableFields && config.filterableFields.length > 0 && (
{!isServer && config.filterOptions?.fields && config.filterOptions.fields.length > 0 && (
<FilterBar
fields={config.fields}
filterableFields={config.filterableFields!}
mode={config.mode}
filterableFields={config.filterOptions.fields}
mode={config.filterOptions?.mode || "server"}
data={rawData}
appliedValues={appliedFilters}
onApply={setAppliedFilters}

View File

@@ -34,8 +34,10 @@ export interface ResourceConfig {
fields: Record<string, ResourceField>;
pagination?: boolean;
hidden?: boolean;
mode: ResourceMode;
filterableFields?: string[];
filterOptions?: {
mode?: ResourceMode;
fields?: string[];
};
}
export interface AppConfig {

View File

@@ -14,6 +14,8 @@ export interface ResourceOverride {
fields?: Record<string, FieldOverride>;
pagination?: boolean;
hidden?: boolean;
mode?: "server" | "client";
filterableFields?: string[];
filterOptions?: {
mode?: "server" | "client";
fields?: string[];
};
}

View File

@@ -154,6 +154,8 @@ export async function loadConfigFromOpenApi(baseUrl: string, configuration: Reco
const resourceOverride = configuration[name] || {};
const fo = resourceOverride.filterOptions || {};
resources.push({
name,
label: schema.title || label,
@@ -163,8 +165,10 @@ export async function loadConfigFromOpenApi(baseUrl: string, configuration: Reco
fields,
pagination: resourceOverride.pagination,
hidden: resourceOverride.hidden,
mode: resourceOverride.mode || "server",
filterableFields: resourceOverride.filterableFields,
filterOptions: {
mode: fo.mode || "server",
fields: fo.fields,
},
});
}

View File

@@ -2,8 +2,10 @@ import { ResourceOverride } from "../react-openapi/types/overrides";
export const configuration: Record<string, ResourceOverride> = {
expenses: {
mode: "client",
filterableFields: ["payee", "account", "tags", "occurred_at", "amount"],
filterOptions: {
mode: "client",
fields: ["payee", "account", "tags", "occurred_at", "amount"],
},
fields: {
payee: {
displayField: "name",