FilterPopoverNew() — supabase Function Reference
Architecture documentation for the FilterPopoverNew() function in FilterPopoverNew.tsx from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD 96d51f59_7e49_0f5a_9f70_b1fb8b707a01["FilterPopoverNew()"] ecf04e05_b4e3_21b7_2c3d_dfd17edca1bc["filtersToFilterGroup()"] 96d51f59_7e49_0f5a_9f70_b1fb8b707a01 -->|calls| ecf04e05_b4e3_21b7_2c3d_dfd17edca1bc 3839e821_8542_886e_a7d8_2c415ba2c2df["columnToFilterProperty()"] 96d51f59_7e49_0f5a_9f70_b1fb8b707a01 -->|calls| 3839e821_8542_886e_a7d8_2c415ba2c2df b3bae604_5cd0_7150_e294_d9c5645cd604["serializeFilterProperties()"] 96d51f59_7e49_0f5a_9f70_b1fb8b707a01 -->|calls| b3bae604_5cd0_7150_e294_d9c5645cd604 a61f95d9_d857_8ce3_7773_15efabdd7848["filterGroupToFilters()"] 96d51f59_7e49_0f5a_9f70_b1fb8b707a01 -->|calls| a61f95d9_d857_8ce3_7773_15efabdd7848 style 96d51f59_7e49_0f5a_9f70_b1fb8b707a01 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/studio/components/grid/components/header/filter/FilterPopoverNew.tsx lines 119–213
export const FilterPopoverNew = ({ isRefetching = false }: FilterPopoverProps) => {
const { filters, setFilters } = useTableFilterNew()
const snap = useTableEditorTableStateSnapshot()
const [freeformText, setFreeformText] = useState('')
const { mutateAsync: generateFilters, isPending: isGenerating } = useSqlFilterGenerateMutation()
// Convert filters to FilterGroup for the FilterBar
const filterGroup = useMemo(() => filtersToFilterGroup(filters), [filters])
const columns = useMemo(() => snap.table?.columns ?? [], [snap.table?.columns])
// Create filter properties from table columns
// Add the date picker component for date columns (can't be in utils due to React component)
const filterProperties: FilterProperty[] = useMemo(() => {
return columns.map((column) => {
const property = columnToFilterProperty(column)
if (property.type === 'date' && Array.isArray(property.options)) {
return {
...property,
options: [
...property.options,
{
label: 'Pick a date...',
component: (props: CustomOptionProps) => <DatePickerOption {...props} />,
},
],
}
}
return property
})
}, [columns])
const serializableFilterProperties = useMemo(
() => serializeFilterProperties(filterProperties),
[filterProperties]
)
// Handle filter changes from FilterBar
const handleFilterChange = useCallback(
(newFilterGroup: FilterGroup) => {
const newFilters = filterGroupToFilters(newFilterGroup)
setFilters(newFilters)
},
[setFilters]
)
const actions = useMemo(
() => [
{
value: 'ai-filter',
label: 'Filter by AI',
onSelect: async (
inputValue: string,
context: { path: number[]; activeFilters: FilterGroup }
) => {
const prompt = inputValue.trim()
if (!prompt) return
const aiGroup = await generateFilters({
prompt,
filterProperties: serializableFilterProperties,
currentPath: context.path ?? [],
})
const updatedGroup = updateGroupAtPath(context.activeFilters, context.path ?? [], aiGroup)
handleFilterChange(updatedGroup)
setFreeformText('')
},
},
],
[generateFilters, serializableFilterProperties, handleFilterChange, setFreeformText]
)
const icon = isRefetching ? (
<Loader2 className="animate-spin text-brand h-4 w-4 shrink-0" aria-label="Loading table data" />
) : null
return (
<div className="flex-1 min-w-0">
<FilterBar
filterProperties={filterProperties}
filters={filterGroup}
onFilterChange={handleFilterChange}
freeformText={freeformText}
onFreeformTextChange={setFreeformText}
actions={actions}
isLoading={isGenerating}
variant="pill"
className="bg-transparent border-0"
icon={icon}
/>
</div>
)
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does FilterPopoverNew() do?
FilterPopoverNew() is a function in the supabase codebase.
What does FilterPopoverNew() call?
FilterPopoverNew() calls 4 function(s): columnToFilterProperty, filterGroupToFilters, filtersToFilterGroup, serializeFilterProperties.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free