Skip to main content

API Reference

Complete API reference for FloTable components and utilities.

FloTableWithViews​

Main component for displaying data tables with customizable views, filtering, and mobile optimization.

Core Props​

PropTypeRequiredDescription
idKey✅Unique identifier for the table instance
titlestring✅Title displayed above the table
columnsProColumns<T>[]✅Column definitions (Ant Design Pro format)
requestFloRequest<T>✅Data fetching function
descriptionstring❌Optional description text below title
dataNamestring❌Name for the data being displayed (e.g., "users", "products")
rowKeystring❌Key field for table rows (default: "id")

Feature Props​

PropTypeDefaultDescription
viewsView[][]Predefined filtered views of data
actionsFloTableActionConfig[][]Action buttons in toolbar
initQuickFilterColumnsstring[][]Initial columns for quick filtering
enableInfiniteScrollbooleantrueEnable infinite scroll on mobile
defaultMobilePageSizenumber20Items per page on mobile
defaultPageSizenumber10Items per page on desktop

Styling Props​

PropTypeDescription
classNamestringCSS class for the main container
headerClassNamestringCSS class for the header section
titleClassNamestringCSS class for the title element
descriptionClassNamestringCSS class for the description text
cardClassNamestringCSS class for the card wrapper
tabsClassNamestringCSS class for the tabs component
styleReact.CSSPropertiesInline styles for main container

Example Usage​

<FloTableWithViews
id="users-table"
title="User Management"
description="Manage all users in your system"
columns={userColumns}
request={fetchUsers}
views={userViews}
actions={userActions}
enableInfiniteScroll={true}
initQuickFilterColumns={['name', 'email']}
/>

FloTable (Simple)​

Basic table component without views system, used internally by FloTableWithViews.

Props​

PropTypeRequiredDescription
idKey✅Unique identifier
columnsProColumns<T>[]✅Column definitions
requestFloRequest<T>✅Data fetching function
dataNamestring❌Data name for display
rowKeystring❌Row key field (default: "id")
initQuickFilterColumnsstring[]❌Quick filter columns
enableInfiniteScrollboolean❌Enable infinite scroll
defaultMobilePageSizenumber❌Mobile page size
defaultPageSizenumber❌Desktop page size
classNamestring❌Container CSS class
tableClassNamestring❌Table CSS class
styleReact.CSSProperties❌Inline styles

FloTableActions​

Action buttons component for table toolbars.

Props​

PropTypeRequiredDescription
idKey✅Unique identifier
actionsFloTableActionConfig[]✅Action configurations

FloTableFilters​

Advanced filtering component with drawer interface.

Props​

PropTypeRequiredDescription
idKey✅Unique identifier
columnsProColumns<T>[]✅Column definitions
quickFilterColumnsstring[]✅Current quick filter columns
initQuickFilterColumnsstring[]✅Initial quick filter columns
setFilterVisible(visible: boolean) => void✅Filter drawer visibility control
filtersFloFilters<T>✅Current filter values
onFiltersChange(filters: FloFilters<T>) => void❌Filter change handler
onQuickFilterColumnsChange(columns: string[]) => void❌Quick filter change handler
classNamestring❌Container CSS class
buttonClassNamestring❌Button CSS class

Type Definitions​

View​

Defines a predefined filtered view of table data.

type View = {
key: string; // Unique view identifier
label: string; // Display name for desktop
shortLabel: string; // Display name for mobile
query: string; // Search query string
filters?: Record<string, any>; // Filter parameters
};

Example:

const views: View[] = [
{
key: 'all',
label: 'All Users',
shortLabel: 'All',
query: '',
filters: {},
},
{
key: 'active',
label: 'Active Users Only',
shortLabel: 'Active',
query: 'status:active',
filters: { status: 'active' },
},
];

FloTableActionConfig​

Configuration for action buttons in the toolbar.

type FloTableActionConfig = {
key: string; // Unique action identifier
label: string; // Button text
icon?: React.ReactNode; // Optional icon
tooltip?: string; // Tooltip text
onClick?: () => void; // Click handler
danger?: boolean; // Danger styling
disabled?: boolean; // Disabled state
type?: 'primary' | 'default' | 'dashed' | 'link' | 'text';
children?: FloTableActionConfig[]; // Dropdown menu items
};

Example:

const actions: FloTableActionConfig[] = [
{
key: 'add',
label: 'Add User',
icon: <PlusOutlined />,
type: 'primary',
onClick: () => setAddModalVisible(true),
},
{
key: 'more',
label: 'More Actions',
children: [
{
key: 'export',
label: 'Export Data',
onClick: handleExport,
},
{
key: 'import',
label: 'Import Data',
onClick: handleImport,
},
],
},
];

FloFilters​

Type-safe filter object for table data.

type FloFilterKey<T> = keyof T | "search";
type FloFilters<T> = Record<FloFilterKey<T>, any>;

FloRequest​

Data fetching function signature for table requests.

type FloRequest<T> = (params: {
current?: number; // Current page number
pageSize?: number; // Items per page
keyword?: string; // Search keyword
filters?: Record<string, any>; // Filter parameters
}) => Promise<{
data: T[]; // Array of table data
total: number; // Total number of items
success?: boolean; // Request success status
}>;

Example:

const fetchUsers: FloRequest<User> = async (params) => {
const response = await fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(params),
});

const result = await response.json();

return {
data: result.users,
total: result.total,
success: true,
};
};

Hooks​

useIsMobile​

Hook for detecting mobile devices and responsive behavior.

function useIsMobile(): boolean;

Usage:

import { useIsMobile } from 'flo-table-with-views';

function MyComponent() {
const isMobile = useIsMobile();
return <div>{isMobile ? 'Mobile View' : 'Desktop View'}</div>;
}

useInfiniteScroll​

Hook for implementing infinite scroll functionality.

function useInfiniteScroll<T>(options: {
request: FloRequest<T>;
filters: FloFilters<T>;
pageSize: number;
}): {
data: T[];
loading: boolean;
hasMore: boolean;
loadMore: () => void;
refresh: () => void;
};

Utilities​

cn (Class Names)​

Utility for conditional CSS class composition.

function cn(...classes: (string | undefined | null | false)[]): string;

Usage:

import { cn } from 'flo-table-with-views';

const className = cn(
'base-class',
isActive && 'active',
isMobile && 'mobile'
);

MobileTableType​

Enum for mobile table display types.

enum MobileTableType {
CARD = 'card',
LIST = 'list',
TABLE = 'table',
}