Skip to content

Commit 09b1ec0

Browse files
committed
Add switch for filtering on empty translationRows
1 parent ee5d807 commit 09b1ec0

File tree

2 files changed

+49
-29
lines changed

2 files changed

+49
-29
lines changed

packages/bygger/src/translations/form/FormTranslationsTable.tsx

+24-14
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { SortState } from '@navikt/ds-react';
1+
import { SortState, Switch } from '@navikt/ds-react';
22
import { listSort } from '@navikt/skjemadigitalisering-shared-components';
33
import { FormsApiFormTranslation } from '@navikt/skjemadigitalisering-shared-domain';
44
import { useMemo, useState } from 'react';
@@ -12,6 +12,7 @@ interface Props {
1212
}
1313

1414
const FormTranslationsTable = ({ translations, loading = false }: Props) => {
15+
const [isFilterChecked, setIsFilterChecked] = useState(false);
1516
const [sortState, setSortState] = useState<SortState>();
1617
const { updateTranslation, errors, editState } = useEditFormTranslations();
1718

@@ -25,22 +26,31 @@ const FormTranslationsTable = ({ translations, loading = false }: Props) => {
2526
});
2627
};
2728

29+
const filteredRows = useMemo<FormsApiFormTranslation[] | undefined>(() => {
30+
return isFilterChecked ? translations?.filter((row) => !row.nn || !row.en) : translations;
31+
}, [isFilterChecked, translations]);
32+
2833
const sortedRows = useMemo<FormsApiFormTranslation[] | undefined>(() => {
29-
return translations?.slice().sort(listSort.getLocaleComparator(sortState?.orderBy, sortState?.direction));
30-
}, [translations, sortState?.orderBy, sortState?.direction]);
34+
return filteredRows?.slice().sort(listSort.getLocaleComparator(sortState?.orderBy, sortState?.direction));
35+
}, [filteredRows, sortState?.orderBy, sortState?.direction]);
3136

3237
return (
33-
<TranslationTable loading={loading || !sortedRows} sort={sortState} onSortChange={handleSort}>
34-
{sortedRows?.map((row) => (
35-
<TranslationRow
36-
key={row.key}
37-
translation={row}
38-
updateTranslation={updateTranslation}
39-
errors={errors}
40-
editState={editState}
41-
/>
42-
))}
43-
</TranslationTable>
38+
<>
39+
<Switch checked={isFilterChecked} onChange={(event) => setIsFilterChecked(event.target.checked)}>
40+
Vis kun manglende oversettelser
41+
</Switch>
42+
<TranslationTable loading={loading || !sortedRows} sort={sortState} onSortChange={handleSort}>
43+
{sortedRows?.map((row) => (
44+
<TranslationRow
45+
key={row.key}
46+
translation={row}
47+
updateTranslation={updateTranslation}
48+
errors={errors}
49+
editState={editState}
50+
/>
51+
))}
52+
</TranslationTable>
53+
</>
4454
);
4555
};
4656

packages/bygger/src/translations/global/GlobalTranslationsTable.tsx

+25-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { SortState } from '@navikt/ds-react';
1+
import { SortState, Switch } from '@navikt/ds-react';
22
import { listSort } from '@navikt/skjemadigitalisering-shared-components';
33
import { FormsApiGlobalTranslation } from '@navikt/skjemadigitalisering-shared-domain';
44
import { useMemo, useState } from 'react';
@@ -14,6 +14,7 @@ interface Props {
1414
}
1515

1616
const GlobalTranslationsTable = ({ translations, addNewRow, loading = false }: Props) => {
17+
const [isFilterChecked, setIsFilterChecked] = useState(false);
1718
const [sortState, setSortState] = useState<SortState>();
1819
const { updateTranslation, errors, editState } = useEditGlobalTranslations();
1920

@@ -27,25 +28,34 @@ const GlobalTranslationsTable = ({ translations, addNewRow, loading = false }: P
2728
});
2829
};
2930

31+
const filteredRows = useMemo<FormsApiGlobalTranslation[] | undefined>(() => {
32+
return isFilterChecked ? translations?.filter((row) => !row.nn || !row.en) : translations;
33+
}, [isFilterChecked, translations]);
34+
3035
const sortedRows = useMemo<FormsApiGlobalTranslation[] | undefined>(() => {
31-
return translations
36+
return filteredRows
3237
?.slice()
3338
.sort(listSort.getLocaleComparator(sortState?.orderBy, sortState?.direction, addNewRow));
34-
}, [translations, sortState?.orderBy, sortState?.direction, addNewRow]);
39+
}, [filteredRows, sortState?.orderBy, sortState?.direction, addNewRow]);
3540

3641
return (
37-
<TranslationTable loading={loading || !sortedRows} sort={sortState} onSortChange={handleSort}>
38-
{addNewRow && <NewTranslationRow />}
39-
{sortedRows?.map((row) => (
40-
<TranslationRow
41-
key={row.key}
42-
translation={row}
43-
updateTranslation={updateTranslation}
44-
errors={errors}
45-
editState={editState}
46-
/>
47-
))}
48-
</TranslationTable>
42+
<>
43+
<Switch checked={isFilterChecked} onChange={(event) => setIsFilterChecked(event.target.checked)}>
44+
Vis kun manglende oversettelser
45+
</Switch>
46+
<TranslationTable loading={loading || !sortedRows} sort={sortState} onSortChange={handleSort}>
47+
{addNewRow && <NewTranslationRow />}
48+
{sortedRows?.map((row) => (
49+
<TranslationRow
50+
key={row.key}
51+
translation={row}
52+
updateTranslation={updateTranslation}
53+
errors={errors}
54+
editState={editState}
55+
/>
56+
))}
57+
</TranslationTable>
58+
</>
4959
);
5060
};
5161

0 commit comments

Comments
 (0)