interface TableColumn {
dataKey: string; // データフィールド
title: string | I18n; // 列ヘッダーのタイトル
width?: string; // 列幅。px または % で指定可能。
dataType: 'text' | 'link' | 'file' | 'image' | 'timestamp' | 'cascadeTimestamp' | 'employee' | 'money' | 'moneyRange' | 'enum' | 'custom'; // データ型
float?: '' | 'left' | 'right'; // 画像のフロート(モバイルカードモードでのみ有効)
imageProps?: React.CSSProperties; // 画像のスタイル
imageWrapProps?: React.CSSProperties; // 画像コンテナのスタイル
imageOnClick?: (e: Event, column: number) => void; // 画像クリック時のコールバック
enumBadgeType?: '' | 'color' | 'background'; // enum のスタイル
enumData?: any; // enum データ
editType?: 'text' | 'link' | 'file' | 'image' | 'timestamp' | 'cascadeTimestamp' | 'employee' | 'money' | 'moneyRange' | 'enum' | 'custom'; // 編集フォーマット
timeFormatter?: 'YYYY-MM-DD HH:mm:ss' | 'YYYY-MM-DD HH:mm' | 'YYYY-MM-DD' | 'YYYY-MM' | 'YYYY'; // 時刻フォーマット
align?: 'left' | 'center' | 'right'; // 揃え
lock?: 'none' | 'left' | 'right'; // 列のロック
groupName?: string; // グループタイトル
message?: string; // ユーザー向けヒント
sortable?: boolean; // 列をソート可能にするかどうか
highlight?: boolean; // ハイライトするかどうか。モバイルカードモードでのみ有効。
hidden?: boolean; // 列を非表示にするかどうか。
resizable?: boolean; // 列幅を調整可能にするかどうか。列幅リセット時にトリガーされるイベントと併用する必要があります。
titleRender?: (title: string) => ReactNode; // タイトルのカスタムレンダリング
render?: (value: any, index: number, rowData) => ReactNode; // コンテンツのカスタムレンダリング
canEdit?: boolean; // 列を編集可能にするかどうか
renderField?: (props: any, value: any, rowData: any) => ReactNode; // 編集状態でのカスタムレンダリング
editProps?: any; // 編集設定
filters?: {
label: string;
value: string;
}[];
filterMode?: 'multiple' | 'single'; // フィルターモード
}