Skip to content

Commit 3d4bf00

Browse files
committed
IS-1931: Changed from select to checkbox group
1 parent 925dcb2 commit 3d4bf00

File tree

8 files changed

+59
-63
lines changed

8 files changed

+59
-63
lines changed

src/components/PersonFilter.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ export const PersonFilter = ({
5050
});
5151
};
5252

53-
const onFristFilterChange = (fristFilter?: FristFilterOption) => {
53+
const onFristFilterChange = (fristFilters: FristFilterOption[]) => {
5454
dispatchFilterAction({
5555
type: ActionType.SetSelectedFristFilter,
56-
selectedFristFilter: fristFilter,
56+
selectedFristFilters: fristFilters,
5757
});
5858
};
5959

@@ -74,10 +74,7 @@ export const PersonFilter = ({
7474
onSelect={onBirthDateChange}
7575
selectedDates={filterState.selectedBirthDates}
7676
/>
77-
<FristFilter
78-
onSelect={onFristFilterChange}
79-
selectedFilterOption={filterState.selectedFristFilter}
80-
/>
77+
<FristFilter onChange={onFristFilterChange} />
8178
</SpacedFilters>
8279
</Ekspanderbartpanel>
8380
);

src/components/Sokeresultat.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ const Sokeresultat = ({ allEvents }: SokeresultatProps) => {
6969
const filteredEvents = allEvents
7070
.applyFilter((v) => filterOnCompany(v, filterState.selectedCompanies))
7171
.applyFilter((v) => filterOnBirthDates(v, filterState.selectedBirthDates))
72-
.applyFilter((v) => filterOnFrist(v, filterState.selectedFristFilter))
72+
.applyFilter((v) => filterOnFrist(v, filterState.selectedFristFilters))
7373
.applyFilter((v) => filterOnPersonregister(v, selectedHendelsetypeFilter))
7474
.applyFilter((v) =>
7575
filterOnFodselsnummerOrName(v, filterState.tekstFilter)
Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,33 @@
1-
import { Select } from '@navikt/ds-react';
1+
import { CheckboxGroup, Checkbox } from '@navikt/ds-react';
22
import { FristFilterOption } from '@/utils/hendelseFilteringUtils';
33
import React from 'react';
44

55
const texts = {
66
label: 'Frist',
77
option: {
88
noChoice: 'Velg visningsalternativ',
9-
todayOrPast: 'I dag og tidligere datoer',
9+
past: 'Tidligere datoer',
10+
today: 'Dagens dato',
1011
future: 'Fremtidige datoer',
1112
},
1213
};
1314

1415
interface Props {
15-
onSelect(value?: FristFilterOption): void;
16-
17-
selectedFilterOption?: FristFilterOption;
16+
onChange(value: FristFilterOption[]): void;
1817
}
1918

20-
export const FristFilter = ({ onSelect, selectedFilterOption }: Props) => {
19+
export const FristFilter = ({ onChange }: Props) => {
2120
return (
22-
<Select
23-
label="Frist"
24-
value={selectedFilterOption}
25-
onChange={(event) => {
26-
if (event.target.value === '') {
27-
onSelect();
28-
} else {
29-
onSelect(event.target.value as FristFilterOption);
30-
}
31-
}}
21+
<CheckboxGroup
22+
legend="Frist"
23+
onChange={(val: FristFilterOption[]) => onChange(val)}
24+
size="small"
3225
>
33-
<option value="">{texts.option.noChoice}</option>
34-
<option value={FristFilterOption.TodayOrPast}>
35-
{texts.option.todayOrPast}
36-
</option>
37-
<option value={FristFilterOption.Future}>{texts.option.future}</option>
38-
</Select>
26+
<Checkbox value={FristFilterOption.Past}>{texts.option.past}</Checkbox>
27+
<Checkbox value={FristFilterOption.Today}>{texts.option.today}</Checkbox>
28+
<Checkbox value={FristFilterOption.Future}>
29+
{texts.option.future}
30+
</Checkbox>
31+
</CheckboxGroup>
3932
);
4033
};

src/context/filters/filterContextActions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export interface SetSelectedCompanies {
3434

3535
export interface SetSelectedFristFilter {
3636
type: ActionType.SetSelectedFristFilter;
37-
selectedFristFilter?: FristFilterOption;
37+
selectedFristFilters: FristFilterOption[];
3838
}
3939

4040
export interface SetSelectedBirthDates {

src/context/filters/filterContextReducer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export const filterReducer = (
4545
case ActionType.SetSelectedFristFilter: {
4646
return {
4747
...state,
48-
selectedFristFilter: action.selectedFristFilter,
48+
selectedFristFilters: action.selectedFristFilters,
4949
};
5050
}
5151
case ActionType.SetSelectedVeilederIdents: {

src/context/filters/filterContextState.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export interface FilterState {
1919
selectedOptions: string[];
2020
selectedCompanies: string[];
2121
selectedBirthDates: string[];
22-
selectedFristFilter?: FristFilterOption;
22+
selectedFristFilters: FristFilterOption[];
2323
selectedHendelseType: HendelseTypeFilters;
2424
}
2525

@@ -29,7 +29,7 @@ export const filterInitialState: FilterState = {
2929
selectedOptions: [],
3030
selectedCompanies: [],
3131
selectedBirthDates: [],
32-
selectedFristFilter: undefined,
32+
selectedFristFilters: [],
3333
selectedHendelseType: {
3434
arbeidsgiverOnskerMote: false,
3535
onskerMote: false,

src/utils/dateUtils.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,24 @@ export const toReadableDate = (dateArg: Date | null): string => {
88
return dayjs(dateArg).format('DD.MM.YYYY');
99
};
1010

11-
export function isTodayOrPast(compareDate: Date): boolean {
11+
export function isPast(compareDate: Date): boolean {
1212
const currentDate = new Date();
1313
const date = new Date(compareDate);
14+
return date < currentDate;
15+
}
1416

15-
const isSameDay =
17+
export function isToday(compareDate: Date): boolean {
18+
const currentDate = new Date();
19+
const date = new Date(compareDate);
20+
return (
1621
date.getFullYear() === currentDate.getFullYear() &&
1722
date.getMonth() === currentDate.getMonth() &&
18-
date.getDate() === currentDate.getDate();
19-
const isPast = date < currentDate;
20-
21-
return isSameDay || isPast;
23+
date.getDate() === currentDate.getDate()
24+
);
2225
}
2326

2427
export function isFuture(compareDate: Date): boolean {
2528
const currentDate = new Date();
2629
const date = new Date(compareDate);
27-
2830
return currentDate < date;
2931
}

src/utils/hendelseFilteringUtils.tsx

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
} from './personDataUtil';
1010
import { Veileder } from '@/api/types/veiledereTypes';
1111
import { HendelseTypeFilters } from '@/context/filters/filterContextState';
12-
import { isFuture, isTodayOrPast } from '@/utils/dateUtils';
12+
import { isFuture, isPast, isToday } from '@/utils/dateUtils';
1313

1414
export class Filterable<T> {
1515
value: T;
@@ -83,15 +83,16 @@ export const filterOnBirthDates = (
8383
};
8484

8585
export enum FristFilterOption {
86-
TodayOrPast = 'TodayOrPast',
86+
Past = 'Past',
87+
Today = 'Today',
8788
Future = 'Future',
8889
}
8990

9091
export const filterOnFrist = (
9192
personregister: PersonregisterState,
92-
fristFilter?: FristFilterOption
93+
selectedFristFilters: FristFilterOption[]
9394
): PersonregisterState => {
94-
const isNoFilter = fristFilter === undefined;
95+
const isNoFilter = selectedFristFilters.length === 0;
9596
if (isNoFilter) {
9697
return personregister;
9798
}
@@ -105,30 +106,33 @@ export const filterOnFrist = (
105106
) {
106107
return true;
107108
}
109+
const isOppfolgingsoppgaveVisible = oppfolgingsoppgaveFrist
110+
? isInFristFilter(selectedFristFilters, oppfolgingsoppgaveFrist)
111+
: false;
112+
const isAktivitetskravVisible = aktivitetskravVurderingFrist
113+
? isInFristFilter(selectedFristFilters, aktivitetskravVurderingFrist)
114+
: false;
115+
return isOppfolgingsoppgaveVisible || isAktivitetskravVisible;
116+
});
117+
118+
return Object.fromEntries(filtered);
119+
};
108120

121+
function isInFristFilter(
122+
selectedFilters: FristFilterOption[],
123+
fristDate: Date
124+
): boolean {
125+
return selectedFilters.some((fristFilter) => {
109126
switch (fristFilter) {
110-
case FristFilterOption.TodayOrPast:
111-
return (
112-
(oppfolgingsoppgaveFrist
113-
? isTodayOrPast(oppfolgingsoppgaveFrist)
114-
: false) ||
115-
(aktivitetskravVurderingFrist
116-
? isTodayOrPast(aktivitetskravVurderingFrist)
117-
: false)
118-
);
127+
case FristFilterOption.Past:
128+
return isPast(fristDate);
129+
case FristFilterOption.Today:
130+
return isToday(fristDate);
119131
case FristFilterOption.Future:
120-
return (
121-
(oppfolgingsoppgaveFrist
122-
? isFuture(oppfolgingsoppgaveFrist)
123-
: false) ||
124-
(aktivitetskravVurderingFrist
125-
? isFuture(aktivitetskravVurderingFrist)
126-
: false)
127-
);
132+
return isFuture(fristDate);
128133
}
129134
});
130-
return Object.fromEntries(filtered);
131-
};
135+
}
132136

133137
type HendelseTypeFilterKey = keyof HendelseTypeFilters;
134138

0 commit comments

Comments
 (0)