From 589937bc8fd61a673dce4b84dd9e4370175c1a14 Mon Sep 17 00:00:00 2001 From: Andrey Goncharov Date: Thu, 14 Sep 2023 04:48:12 -0700 Subject: [PATCH] Add boilerplate for data table power search config and processors Summary: Doc: https://docs.google.com/document/d/1miofxds9DJgWScj0zFyBbdpRH5Rj0T9FqiCapof5-vU/edit#heading=h.pg8svtdjlx7 Reviewed By: lblasa Differential Revision: D49230144 fbshipit-source-id: d6e6dfb340fd23c8655e331869600cb474c8e8bc --- .../DataTableDefaultPowerSearchOperators.tsx | 7 +++++++ .../ui/data-table/DataTableWithPowerSearch.tsx | 17 +++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx index f1fb27f9c..36248e3fa 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx @@ -17,3 +17,10 @@ export type PowerSearchOperatorProcessor = ( export type PowerSearchOperatorProcessorConfig = { [key: string]: PowerSearchOperatorProcessor; }; + +export const dataTablePowerSearchOperators = {} satisfies { + [key: string]: (...args: any[]) => OperatorConfig; +}; + +export const dataTablePowerSearchOperatorProcessorConfig = + {} satisfies PowerSearchOperatorProcessorConfig; diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx index 05675e6d9..0d9ab49e8 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx @@ -58,6 +58,10 @@ import { import {useLatestRef} from '../../utils/useLatestRef'; import {PowerSearch, OperatorConfig} from '../PowerSearch'; import {powerSearchExampleConfig} from '../PowerSearch/PowerSearchExampleConfig'; +import { + dataTablePowerSearchOperatorProcessorConfig, + dataTablePowerSearchOperators, +} from './DataTableDefaultPowerSearchOperators'; type DataTableBaseProps = { columns: DataTableColumn[]; @@ -116,7 +120,11 @@ export type DataTableColumn = { visible?: boolean; inversed?: boolean; sortable?: boolean; - powerSearchConfig?: {[key: string]: OperatorConfig}; + powerSearchConfig?: { + [K in keyof typeof dataTablePowerSearchOperators]: ReturnType< + (typeof dataTablePowerSearchOperators)[K] + >; + }; }; export interface TableRowRenderContext { @@ -369,7 +377,12 @@ export function DataTable( tableState.selection.current >= 0 ? dataView.getEntry(tableState.selection.current) : null; - dataView.setFilter(computeDataTableFilter(tableState.searchExpression, {})); + dataView.setFilter( + computeDataTableFilter( + tableState.searchExpression, + dataTablePowerSearchOperatorProcessorConfig, + ), + ); dataView.setFilterExpections( tableState.filterExceptions as T[keyof T][] | undefined, );