dangerous-fuchsiaD
Refine3y ago
3 replies
dangerous-fuchsia

How to add filtering by date

I have a filter component in a ChakraUI table, I want to select the date with a dayzed date picker

In the table columns, I've defined the created_at field like this:

{
                id: "created_at",
                accessorKey: "created_at",
                header: translate("parcels.fields.created_at"),
                meta: {
                    filterOperator: "gte"
                },
                cell: function render({ getValue }) {
                    return <DateField format="DD/MM/YYYY" value={getValue<any>()} />;
                },
            },


This is the filter component:

import React, { useState } from "react";
import { Input, Menu, IconButton, MenuButton, MenuList, VStack, HStack } from "@chakra-ui/react";
import { IconFilter, IconX, IconCheck } from "@tabler/icons";
import type { Column } from "@tanstack/react-table";
import { SingleDatepicker } from "chakra-dayzed-datepicker"
import { parseISO, parse, formatISO, format } from "date-fns"

export const ColumnFilter: React.FC<{ column: Column<any, any> }> = ({ column }) => {
  const [state, setState] = useState(null as null | { value: any });

  if (!column.getCanFilter()) {
    return null;
  }

  const open = () =>
    setState({
      value: column.getFilterValue(),
    });

  const close = () => setState(null);

  const change = (value: any) => setState({ value });

  const renderFilterElement = () => {
    const FilterComponent = (column.columnDef?.meta as any)?.filterElement;

    if (column.id === "created_at" && !FilterComponent && !!state) {
      return (<SingleDatepicker
        date={state.value}
        configs={{
          dateFormat: "yyyy-dd-MM"
        }}
        onDateChange={(date) => {
          change(date)
        }}
    }


The problem I get is, I store dates like 2023-12-05 in Supabase, but the produced query from the frontend is filters[0][value]=2023-12-03T22:00:00.000Z
Was this page helpful?