Skip to content

Commit 68796b0

Browse files
committed
FO-2760 La til filtrering på enhet
1 parent b47ee9f commit 68796b0

File tree

16 files changed

+318
-38
lines changed

16 files changed

+318
-38
lines changed

package-lock.json

Lines changed: 168 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"react": "^16.13.0",
6363
"react-dom": "^16.11.0",
6464
"react-scripts": "3.0.1",
65+
"react-select": "^3.0.8",
6566
"typescript": "3.4.5"
6667
},
6768
"devDependencies": {

src/components/enhet-filter/enhet-filter.tsx

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/components/filter-etiketter/filter-etiketter.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,40 @@ import React from 'react';
22
import { Filters, useFilterStore } from '../../stores/filter-store';
33
import { FilterEtikett } from './etikett/filter-etikett';
44
import './filter-etiketter.less';
5+
import { isEmpty } from '../../utils';
56

67
export type OnRemoveClicked = (id: string) => void;
78

89
const NAVN_ELLER_FNR_FILTER = 'NAVN_ELLER_FNR_FILTER';
10+
const ENHET_FILTER = 'ENHET_FILTER';
911

1012
function lagFilterEtiketter(filters: Filters, onRemoveClicked: OnRemoveClicked) {
11-
const { fnrOrName } = filters;
13+
const { fnrOrName, enheter } = filters;
1214
const filterEtiketter = [];
1315

14-
if (fnrOrName && fnrOrName.trim().length > 0) {
16+
if (!isEmpty(fnrOrName)) {
1517
filterEtiketter.push(
16-
<FilterEtikett id={NAVN_ELLER_FNR_FILTER} tekst="Søk på navn eller fnr" onRemoveClicked={onRemoveClicked} />
18+
<FilterEtikett key={NAVN_ELLER_FNR_FILTER} id={NAVN_ELLER_FNR_FILTER} tekst="Søk på navn eller fnr" onRemoveClicked={onRemoveClicked} />
19+
);
20+
}
21+
22+
if (enheter.length > 0) {
23+
filterEtiketter.push(
24+
<FilterEtikett key={ENHET_FILTER} id={ENHET_FILTER} tekst="Søk på enhet" onRemoveClicked={onRemoveClicked} />
1725
);
1826
}
1927

2028
return filterEtiketter;
2129
}
2230

2331
export const FilterEtiketter = () => {
24-
const { filters, setFnrOrNameFilter } = useFilterStore();
32+
const { filters, setFnrOrNameFilter, setEnheterFilter } = useFilterStore();
2533

2634
function handleOnRemoveClicked(id: string) {
2735
if (id === NAVN_ELLER_FNR_FILTER) {
2836
setFnrOrNameFilter('');
37+
} else if (id === ENHET_FILTER) {
38+
setEnheterFilter([]);
2939
}
3040
}
3141

src/components/filter-panel/filter-panel.tsx

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
@import "~nav-frontend-core/less/_variabler";
2+
3+
.enhet-dropdown {
4+
margin-top: 1rem;
5+
font-family: 'Source Sans Pro', Arial, sans-serif;
6+
7+
.enhet-dropdown__control {
8+
border: 1px solid #78706A;
9+
height: 40px;
10+
}
11+
12+
.enhet-dropdown__value-container {
13+
margin-top: 3px;
14+
}
15+
16+
.enhet-dropdown__control--is-focused {
17+
box-shadow: 0 0 0 3px #254b6d;
18+
}
19+
20+
.enhet-dropdown__indicator {
21+
color: #3E3832;
22+
}
23+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import React from 'react';
2+
import Select from 'react-select';
3+
import { Enhet } from '../../../../rest/data/innlogget-veileder';
4+
import './enhet-dropdown.less';
5+
6+
interface EnhetDropdownProps {
7+
enheter: DropdownOption[];
8+
valgteEnheter: DropdownOption[];
9+
onChange?: (selectedOption: DropdownOption[] | null) => void;
10+
}
11+
12+
export interface DropdownOption {
13+
value: string;
14+
label: string;
15+
}
16+
17+
export function mapEnhetTilDropdownOption(enhet: Enhet): DropdownOption {
18+
return { value: enhet.enhetId, label: enhet.navn };
19+
}
20+
21+
export function mapDropdownOptionTilEnhet(dropdownOption: DropdownOption): Enhet {
22+
return { enhetId: dropdownOption.value, navn: dropdownOption.label };
23+
}
24+
25+
export const EnhetDropdown = (props: EnhetDropdownProps) => {
26+
const {enheter, onChange} = props;
27+
return (
28+
<div className="enhet-dropdown">
29+
<Select
30+
inputId="enhet-filter"
31+
placeholder="Velg enheter"
32+
isMulti={true}
33+
value={props.valgteEnheter}
34+
isClearable
35+
isSearchable
36+
clearValueText="Fjern enhet"
37+
noResultsText="Listen er tom"
38+
searchPromptText="Skriv inn for å søke"
39+
options={enheter}
40+
onChange={onChange as any}
41+
/>
42+
</div>
43+
);
44+
};
File renamed without changes.

0 commit comments

Comments
 (0)