11import type {
2+ ColumnFilter ,
23 ColumnFiltersState ,
34 PaginationState ,
45 SortingState ,
56 VisibilityState
67} from '@tanstack/react-table'
78import type { Dispatch , SetStateAction } from 'react'
8- import type { DateFilterParameter , DatetimeFilterParameter , TableFilterValue } from '@helpwave/hightide'
9+ import type { DataType , FilterOperator , FilterParameter , FilterValue } from '@helpwave/hightide'
910import { useStorage } from '@/hooks/useStorage'
1011
1112const defaultPagination : PaginationState = {
@@ -59,24 +60,13 @@ export function useStorageSyncedTableState(
5960 defaultValue : initialFilters ,
6061 serialize : ( value ) => {
6162 const mappedColumnFilter = value . map ( ( filter ) => {
62- const tableFilterValue = filter . value as TableFilterValue
63- let parameter : Record < string , unknown > = tableFilterValue . parameter
64- if ( tableFilterValue . operator . startsWith ( 'dateTime' ) ) {
65- const dateTimeParameter : DatetimeFilterParameter = parameter as DatetimeFilterParameter
66- parameter = {
67- ...parameter ,
68- compareDatetime : dateTimeParameter . compareDatetime ? dateTimeParameter . compareDatetime . toISOString ( ) : undefined ,
69- min : dateTimeParameter . min ? dateTimeParameter . min . toISOString ( ) : undefined ,
70- max : dateTimeParameter . max ? dateTimeParameter . max . toISOString ( ) : undefined ,
71- }
72- } else if ( tableFilterValue . operator . startsWith ( 'date' ) ) {
73- const dateParameter : DateFilterParameter = parameter as DateFilterParameter
74- parameter = {
75- ...parameter ,
76- compareDate : dateParameter . compareDate ? dateParameter . compareDate . toISOString ( ) : undefined ,
77- min : dateParameter . min ? dateParameter . min . toISOString ( ) : undefined ,
78- max : dateParameter . max ? dateParameter . max . toISOString ( ) : undefined ,
79- }
63+ const tableFilterValue = filter . value as FilterValue
64+ const filterParameter = tableFilterValue . parameter
65+ const parameter : Record < string , unknown > = {
66+ ...filterParameter ,
67+ compareDate : filterParameter . compareDate ? filterParameter . compareDate . toISOString ( ) : undefined ,
68+ minDate : filterParameter . minDate ? filterParameter . minDate . toISOString ( ) : undefined ,
69+ maxDate : filterParameter . maxDate ? filterParameter . maxDate . toISOString ( ) : undefined ,
8070 }
8171 return {
8272 ...filter ,
@@ -91,34 +81,25 @@ export function useStorageSyncedTableState(
9181 } ,
9282 deserialize : ( value ) => {
9383 const mappedColumnFilter = JSON . parse ( value ) as Record < string , unknown > [ ]
94- return mappedColumnFilter . map ( ( filter ) => {
95- const filterValue = filter [ 'value' ] as Record < string , unknown >
96- const operator : string = filterValue [ 'operator' ] as string
97- let parameter : Record < string , unknown > = filterValue [ 'parameter' ] as Record < string , unknown >
98- if ( operator . startsWith ( 'dateTime' ) ) {
99- parameter = {
100- ...parameter ,
101- compareDatetime : parameter [ 'compareDatetime' ] ? new Date ( parameter [ 'compareDatetime' ] as string ) : undefined ,
102- min : parameter [ 'min' ] ? new Date ( parameter [ 'min' ] as string ) : undefined ,
103- max : parameter [ 'max' ] ? new Date ( parameter [ 'max' ] as string ) : undefined ,
104- }
84+ return mappedColumnFilter . map ( ( filter ) : ColumnFilter => {
85+ const value = filter [ 'value' ] as Record < string , unknown >
86+ const parameter : Record < string , unknown > = value [ 'parameter' ] as Record < string , unknown >
87+ const filterParameter : FilterParameter = {
88+ ...parameter ,
89+ compareDate : parameter [ 'compareDate' ] ? new Date ( parameter [ 'compareDate' ] as string ) : undefined ,
90+ minDate : parameter [ 'minDate' ] ? new Date ( parameter [ 'minDate' ] as string ) : undefined ,
91+ maxDate : parameter [ 'maxDate' ] ? new Date ( parameter [ 'maxDate' ] as string ) : undefined ,
10592 }
106- else if ( operator . startsWith ( 'date' ) ) {
107- parameter = {
108- ...parameter ,
109- compareDate : parameter [ 'compareDate' ] ? new Date ( parameter [ 'compareDate' ] as string ) : undefined ,
110- min : parameter [ 'min' ] ? new Date ( parameter [ 'min' ] as string ) : undefined ,
111- max : parameter [ 'max' ] ? new Date ( parameter [ 'max' ] as string ) : undefined ,
112- }
93+ const mappedValue : FilterValue = {
94+ operator : value [ 'operator' ] as FilterOperator ,
95+ dataType : value [ 'dataType' ] as DataType ,
96+ parameter : filterParameter ,
11397 }
11498 return {
11599 ...filter ,
116- value : {
117- ...filterValue ,
118- parameter,
119- } ,
120- }
121- } ) as unknown as ColumnFiltersState
100+ value : mappedValue ,
101+ } as ColumnFilter
102+ } )
122103 } ,
123104 } )
124105 const { value : columnVisibility , setValue : setColumnVisibility } = useStorage < VisibilityState > ( {
0 commit comments