1
- import { ReactNode } from 'react' ;
1
+ import { ReactNode , useMemo } from 'react' ;
2
2
import styled from '@emotion/styled' ;
3
3
import { useRecoilValue } from 'recoil' ;
4
4
@@ -14,6 +14,8 @@ import { useGetCurrentView } from '@/views/hooks/useGetCurrentView';
14
14
import { useResetCurrentView } from '@/views/hooks/useResetCurrentView' ;
15
15
import { mapViewFiltersToFilters } from '@/views/utils/mapViewFiltersToFilters' ;
16
16
import { mapViewSortsToSorts } from '@/views/utils/mapViewSortsToSorts' ;
17
+ import { VariantFilterChip } from './VariantFilterChip' ;
18
+ import { Filter } from '@/object-record/object-filter-dropdown/types/Filter' ;
17
19
18
20
export type ViewBarDetailsProps = {
19
21
hasFilterButton ?: boolean ;
@@ -118,6 +120,29 @@ export const ViewBarDetails = ({
118
120
const { resetCurrentView } = useResetCurrentView ( ) ;
119
121
const canResetView = canPersistView && ! hasFiltersQueryParams ;
120
122
123
+ const { otherViewFilters, defaultViewFilters } = useMemo ( ( ) => {
124
+ if ( ! currentViewWithCombinedFiltersAndSorts ) {
125
+ return {
126
+ otherViewFilters : [ ] ,
127
+ defaultViewFilters : [ ] ,
128
+ } ;
129
+ }
130
+
131
+ const otherViewFilters =
132
+ currentViewWithCombinedFiltersAndSorts . viewFilters . filter (
133
+ ( viewFilter ) => viewFilter . variant && viewFilter . variant !== 'default' ,
134
+ ) ;
135
+ const defaultViewFilters =
136
+ currentViewWithCombinedFiltersAndSorts . viewFilters . filter (
137
+ ( viewFilter ) => ! viewFilter . variant || viewFilter . variant === 'default' ,
138
+ ) ;
139
+
140
+ return {
141
+ otherViewFilters,
142
+ defaultViewFilters,
143
+ } ;
144
+ } , [ currentViewWithCombinedFiltersAndSorts ] ) ;
145
+
121
146
const handleCancelClick = ( ) => {
122
147
resetCurrentView ( ) ;
123
148
} ;
@@ -132,24 +157,44 @@ export const ViewBarDetails = ({
132
157
return null ;
133
158
}
134
159
160
+ console . log (
161
+ 'currentViewWithCombinedFiltersAndSorts?.viewFilters: ' ,
162
+ currentViewWithCombinedFiltersAndSorts ?. viewFilters ,
163
+ ) ;
164
+
135
165
return (
136
166
< StyledBar >
137
167
< StyledFilterContainer >
138
168
< StyledChipcontainer >
169
+ { otherViewFilters . map ( ( viewFilter ) => (
170
+ < VariantFilterChip
171
+ key = { viewFilter . fieldMetadataId }
172
+ // Why do we have two types, Filter and ViewFilter?
173
+ // Why key defition is already present in the Filter type and added on the fly here with mapViewFiltersToFilters ?
174
+ // FixMe: Ugly hack to make it work
175
+ viewFilter = { viewFilter as unknown as Filter }
176
+ />
177
+ ) ) }
178
+ { ! ! otherViewFilters . length &&
179
+ ! ! currentViewWithCombinedFiltersAndSorts ?. viewSorts ?. length && (
180
+ < StyledSeperatorContainer >
181
+ < StyledSeperator />
182
+ </ StyledSeperatorContainer >
183
+ ) }
139
184
{ mapViewSortsToSorts (
140
185
currentViewWithCombinedFiltersAndSorts ?. viewSorts ?? [ ] ,
141
186
availableSortDefinitions ,
142
187
) . map ( ( sort ) => (
143
188
< EditableSortChip key = { sort . fieldMetadataId } viewSort = { sort } />
144
189
) ) }
145
190
{ ! ! currentViewWithCombinedFiltersAndSorts ?. viewSorts ?. length &&
146
- ! ! currentViewWithCombinedFiltersAndSorts ?. viewFilters ? .length && (
191
+ ! ! defaultViewFilters . length && (
147
192
< StyledSeperatorContainer >
148
193
< StyledSeperator />
149
194
</ StyledSeperatorContainer >
150
195
) }
151
196
{ mapViewFiltersToFilters (
152
- currentViewWithCombinedFiltersAndSorts ?. viewFilters ?? [ ] ,
197
+ defaultViewFilters ,
153
198
availableFilterDefinitions ,
154
199
) . map ( ( viewFilter ) => (
155
200
< ObjectFilterDropdownScope
0 commit comments