@navikt/ds-react 8.4.1 → 8.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/accordion/Accordion.d.ts +10 -0
- package/cjs/accordion/Accordion.js +2 -2
- package/cjs/accordion/Accordion.js.map +1 -1
- package/cjs/data/table/helpers/table-cell.d.ts +2 -2
- package/cjs/data/table/helpers/table-cell.js +2 -5
- package/cjs/data/table/helpers/table-cell.js.map +1 -1
- package/cjs/data/table/helpers/table-focus.d.ts +26 -2
- package/cjs/data/table/helpers/table-focus.js +60 -9
- package/cjs/data/table/helpers/table-focus.js.map +1 -1
- package/cjs/data/table/helpers/table-grid-nav.d.ts +45 -9
- package/cjs/data/table/helpers/table-grid-nav.js +108 -24
- package/cjs/data/table/helpers/table-grid-nav.js.map +1 -1
- package/cjs/data/table/helpers/table-keyboard.d.ts +24 -3
- package/cjs/data/table/helpers/table-keyboard.js +30 -5
- package/cjs/data/table/helpers/table-keyboard.js.map +1 -1
- package/cjs/data/table/hooks/useGridCache.d.ts +17 -0
- package/cjs/data/table/hooks/useGridCache.js +65 -0
- package/cjs/data/table/hooks/useGridCache.js.map +1 -0
- package/cjs/data/table/root/DataTableRoot.js +2 -2
- package/cjs/data/table/root/DataTableRoot.js.map +1 -1
- package/cjs/data/table/root/useTableKeyboardNav.d.ts +9 -3
- package/cjs/data/table/root/useTableKeyboardNav.js +53 -95
- package/cjs/data/table/root/useTableKeyboardNav.js.map +1 -1
- package/cjs/link-card/LinkCard.d.ts +13 -0
- package/cjs/link-card/LinkCard.js +2 -2
- package/cjs/link-card/LinkCard.js.map +1 -1
- package/cjs/process/Process.d.ts +1 -1
- package/cjs/utils/i18n/locales/nb.d.ts +154 -75
- package/cjs/utils/i18n/locales/nb.js +154 -75
- package/cjs/utils/i18n/locales/nb.js.map +1 -1
- package/esm/accordion/Accordion.d.ts +10 -0
- package/esm/accordion/Accordion.js +2 -2
- package/esm/accordion/Accordion.js.map +1 -1
- package/esm/data/table/helpers/table-cell.d.ts +2 -2
- package/esm/data/table/helpers/table-cell.js +2 -5
- package/esm/data/table/helpers/table-cell.js.map +1 -1
- package/esm/data/table/helpers/table-focus.d.ts +26 -2
- package/esm/data/table/helpers/table-focus.js +55 -9
- package/esm/data/table/helpers/table-focus.js.map +1 -1
- package/esm/data/table/helpers/table-grid-nav.d.ts +45 -9
- package/esm/data/table/helpers/table-grid-nav.js +102 -23
- package/esm/data/table/helpers/table-grid-nav.js.map +1 -1
- package/esm/data/table/helpers/table-keyboard.d.ts +24 -3
- package/esm/data/table/helpers/table-keyboard.js +29 -4
- package/esm/data/table/helpers/table-keyboard.js.map +1 -1
- package/esm/data/table/hooks/useGridCache.d.ts +17 -0
- package/esm/data/table/hooks/useGridCache.js +63 -0
- package/esm/data/table/hooks/useGridCache.js.map +1 -0
- package/esm/data/table/root/DataTableRoot.js +2 -2
- package/esm/data/table/root/DataTableRoot.js.map +1 -1
- package/esm/data/table/root/useTableKeyboardNav.d.ts +9 -3
- package/esm/data/table/root/useTableKeyboardNav.js +58 -100
- package/esm/data/table/root/useTableKeyboardNav.js.map +1 -1
- package/esm/link-card/LinkCard.d.ts +13 -0
- package/esm/link-card/LinkCard.js +2 -2
- package/esm/link-card/LinkCard.js.map +1 -1
- package/esm/process/Process.d.ts +1 -1
- package/esm/utils/i18n/locales/nb.d.ts +154 -75
- package/esm/utils/i18n/locales/nb.js +154 -75
- package/esm/utils/i18n/locales/nb.js.map +1 -1
- package/package.json +3 -3
- package/src/accordion/Accordion.tsx +19 -2
- package/src/data/table/helpers/table-cell.ts +2 -7
- package/src/data/table/helpers/table-focus.ts +70 -9
- package/src/data/table/helpers/table-grid-nav.ts +146 -31
- package/src/data/table/helpers/table-keyboard.test.ts +27 -27
- package/src/data/table/helpers/table-keyboard.ts +43 -4
- package/src/data/table/hooks/useGridCache.ts +73 -0
- package/src/data/table/root/DataTableRoot.tsx +1 -2
- package/src/data/table/root/useTableKeyboardNav.ts +95 -125
- package/src/link-card/LinkCard.tsx +15 -1
- package/src/process/Process.tsx +1 -1
- package/src/utils/i18n/locales/nb.ts +83 -4
|
@@ -2,217 +2,296 @@ import { nb } from "date-fns/locale";
|
|
|
2
2
|
export default {
|
|
3
3
|
global: {
|
|
4
4
|
dateLocale: nb,
|
|
5
|
-
/** @default "Vis mer"
|
|
5
|
+
/** @default "Vis mer"
|
|
6
|
+
* @default "Vis mer" */
|
|
6
7
|
showMore: "Vis mer",
|
|
7
|
-
/** @default "Vis mindre"
|
|
8
|
+
/** @default "Vis mindre"
|
|
9
|
+
* @default "Vis mindre" */
|
|
8
10
|
showLess: "Vis mindre",
|
|
9
|
-
/** @default "Skrivebeskyttet"
|
|
11
|
+
/** @default "Skrivebeskyttet"
|
|
12
|
+
* @default "Skrivebeskyttet" */
|
|
10
13
|
readOnly: "Skrivebeskyttet",
|
|
11
|
-
/** @default "Lukk"
|
|
14
|
+
/** @default "Lukk"
|
|
15
|
+
* @default "Lukk" */
|
|
12
16
|
close: "Lukk",
|
|
13
|
-
/** @default "Feil"
|
|
17
|
+
/** @default "Feil"
|
|
18
|
+
* @default "Feil" */
|
|
14
19
|
error: "Feil",
|
|
15
|
-
/** @default "Informasjon"
|
|
20
|
+
/** @default "Informasjon"
|
|
21
|
+
* @default "Informasjon" */
|
|
16
22
|
info: "Informasjon",
|
|
17
|
-
/** @default "Suksess"
|
|
23
|
+
/** @default "Suksess"
|
|
24
|
+
* @default "Suksess" */
|
|
18
25
|
success: "Suksess",
|
|
19
|
-
/** @default "Advarsel"
|
|
26
|
+
/** @default "Advarsel"
|
|
27
|
+
* @default "Advarsel" */
|
|
20
28
|
warning: "Advarsel",
|
|
21
|
-
/** @default "Kunngjøring"
|
|
29
|
+
/** @default "Kunngjøring"
|
|
30
|
+
* @default "Kunngjøring" */
|
|
22
31
|
announcement: "Kunngjøring",
|
|
23
32
|
},
|
|
24
33
|
Chips: {
|
|
25
34
|
Removable: {
|
|
26
35
|
/** Will be appended to the accessible name for the button.
|
|
36
|
+
* @default "slett"
|
|
27
37
|
* @default "slett" */
|
|
28
38
|
labelSuffix: "slett",
|
|
29
39
|
},
|
|
30
40
|
},
|
|
31
41
|
Combobox: {
|
|
32
42
|
/** The input value will be appended to the end of this text, e.g. `Legg til "input value"`.
|
|
43
|
+
* @default "Legg til"
|
|
33
44
|
* @default "Legg til" */
|
|
34
45
|
addOption: "Legg til",
|
|
35
|
-
/** @default "Ingen søketreff"
|
|
46
|
+
/** @default "Ingen søketreff"
|
|
47
|
+
* @default "Ingen søketreff" */
|
|
36
48
|
noMatches: "Ingen søketreff",
|
|
37
49
|
/** Loader title
|
|
50
|
+
* @default "Søker…"
|
|
38
51
|
* @default "Søker…" */
|
|
39
52
|
loading: "Søker…",
|
|
40
|
-
/** @default "{selected} av maks {limit} er valgt."
|
|
53
|
+
/** @default "{selected} av maks {limit} er valgt."
|
|
54
|
+
* @default "{selected} av maks {limit} er valgt." */
|
|
41
55
|
maxSelected: "{selected} av maks {limit} er valgt.",
|
|
42
56
|
},
|
|
43
57
|
CopyButton: {
|
|
44
|
-
/** @default "Kopier"
|
|
58
|
+
/** @default "Kopier"
|
|
59
|
+
* @default "Kopier" */
|
|
45
60
|
title: "Kopier",
|
|
46
|
-
/** @default "Kopiert!"
|
|
61
|
+
/** @default "Kopiert!"
|
|
62
|
+
* @default "Kopiert!" */
|
|
47
63
|
activeText: "Kopiert!",
|
|
48
64
|
},
|
|
49
65
|
DatePicker: {
|
|
50
|
-
/** @default "Velg dato"
|
|
66
|
+
/** @default "Velg dato"
|
|
67
|
+
* @default "Velg dato" */
|
|
51
68
|
chooseDate: "Velg dato",
|
|
52
|
-
/** @default "Velg datoer"
|
|
69
|
+
/** @default "Velg datoer"
|
|
70
|
+
* @default "Velg datoer" */
|
|
53
71
|
chooseDates: "Velg datoer",
|
|
54
|
-
/** @default "Velg start- og sluttdato"
|
|
72
|
+
/** @default "Velg start- og sluttdato"
|
|
73
|
+
* @default "Velg start- og sluttdato" */
|
|
55
74
|
chooseDateRange: "Velg start- og sluttdato",
|
|
56
|
-
/** @default "Velg måned"
|
|
75
|
+
/** @default "Velg måned"
|
|
76
|
+
* @default "Velg måned" */
|
|
57
77
|
chooseMonth: "Velg måned",
|
|
58
|
-
/** @default "Uke"
|
|
78
|
+
/** @default "Uke"
|
|
79
|
+
* @default "Uke" */
|
|
59
80
|
week: "Uke",
|
|
60
|
-
/** @default "Uke {week}"
|
|
81
|
+
/** @default "Uke {week}"
|
|
82
|
+
* @default "Uke {week}" */
|
|
61
83
|
weekNumber: "Uke {week}",
|
|
62
|
-
/** @default "Velg uke {week}"
|
|
84
|
+
/** @default "Velg uke {week}"
|
|
85
|
+
* @default "Velg uke {week}" */
|
|
63
86
|
selectWeekNumber: "Velg uke {week}",
|
|
64
|
-
/** @default "Måned"
|
|
87
|
+
/** @default "Måned"
|
|
88
|
+
* @default "Måned" */
|
|
65
89
|
month: "Måned",
|
|
66
|
-
/** @default "Gå til neste måned"
|
|
90
|
+
/** @default "Gå til neste måned"
|
|
91
|
+
* @default "Gå til neste måned" */
|
|
67
92
|
goToNextMonth: "Gå til neste måned",
|
|
68
|
-
/** @default "Gå til forrige måned"
|
|
93
|
+
/** @default "Gå til forrige måned"
|
|
94
|
+
* @default "Gå til forrige måned" */
|
|
69
95
|
goToPreviousMonth: "Gå til forrige måned",
|
|
70
|
-
/** @default "År"
|
|
96
|
+
/** @default "År"
|
|
97
|
+
* @default "År" */
|
|
71
98
|
year: "År",
|
|
72
|
-
/** @default "Gå til neste år"
|
|
99
|
+
/** @default "Gå til neste år"
|
|
100
|
+
* @default "Gå til neste år" */
|
|
73
101
|
goToNextYear: "Gå til neste år",
|
|
74
|
-
/** @default "Gå til forrige år"
|
|
102
|
+
/** @default "Gå til forrige år"
|
|
103
|
+
* @default "Gå til forrige år" */
|
|
75
104
|
goToPreviousYear: "Gå til forrige år",
|
|
76
|
-
/** @default "Åpne datovelger"
|
|
105
|
+
/** @default "Åpne datovelger"
|
|
106
|
+
* @default "Åpne datovelger" */
|
|
77
107
|
openDatePicker: "Åpne datovelger",
|
|
78
|
-
/** @default "Åpne månedsvelger"
|
|
108
|
+
/** @default "Åpne månedsvelger"
|
|
109
|
+
* @default "Åpne månedsvelger" */
|
|
79
110
|
openMonthPicker: "Åpne månedsvelger",
|
|
80
|
-
/** @default "Lukk datovelger"
|
|
111
|
+
/** @default "Lukk datovelger"
|
|
112
|
+
* @default "Lukk datovelger" */
|
|
81
113
|
closeDatePicker: "Lukk datovelger",
|
|
82
|
-
/** @default "Lukk månedsvelger"
|
|
114
|
+
/** @default "Lukk månedsvelger"
|
|
115
|
+
* @default "Lukk månedsvelger" */
|
|
83
116
|
closeMonthPicker: "Lukk månedsvelger",
|
|
84
117
|
},
|
|
85
118
|
ErrorSummary: {
|
|
86
|
-
/** @default "Du må rette disse feilene før du kan fortsette:"
|
|
119
|
+
/** @default "Du må rette disse feilene før du kan fortsette:"
|
|
120
|
+
* @default "Du må rette disse feilene før du kan fortsette:" */
|
|
87
121
|
heading: "Du må rette disse feilene før du kan fortsette:",
|
|
88
122
|
},
|
|
89
123
|
FileUpload: {
|
|
90
124
|
dropzone: {
|
|
91
|
-
/** @default "Velg fil"
|
|
125
|
+
/** @default "Velg fil"
|
|
126
|
+
* @default "Velg fil" */
|
|
92
127
|
button: "Velg fil",
|
|
93
|
-
/** @default "Velg filer"
|
|
128
|
+
/** @default "Velg filer"
|
|
129
|
+
* @default "Velg filer" */
|
|
94
130
|
buttonMultiple: "Velg filer",
|
|
95
|
-
/** @default "Dra og slipp filen her"
|
|
131
|
+
/** @default "Dra og slipp filen her"
|
|
132
|
+
* @default "Dra og slipp filen her" */
|
|
96
133
|
dragAndDrop: "Dra og slipp filen her",
|
|
97
|
-
/** @default "Dra og slipp filer her"
|
|
134
|
+
/** @default "Dra og slipp filer her"
|
|
135
|
+
* @default "Dra og slipp filer her" */
|
|
98
136
|
dragAndDropMultiple: "Dra og slipp filer her",
|
|
99
|
-
/** @default "Slipp"
|
|
137
|
+
/** @default "Slipp"
|
|
138
|
+
* @default "Slipp" */
|
|
100
139
|
drop: "Slipp",
|
|
101
|
-
/** @default "eller"
|
|
140
|
+
/** @default "eller"
|
|
141
|
+
* @default "eller" */
|
|
102
142
|
or: "eller",
|
|
103
|
-
/** @default "Filopplasting er deaktivert"
|
|
143
|
+
/** @default "Filopplasting er deaktivert"
|
|
144
|
+
* @default "Filopplasting er deaktivert" */
|
|
104
145
|
disabled: "Filopplasting er deaktivert",
|
|
105
|
-
/** @default "Du kan ikke laste opp flere filer"
|
|
146
|
+
/** @default "Du kan ikke laste opp flere filer"
|
|
147
|
+
* @default "Du kan ikke laste opp flere filer" */
|
|
106
148
|
disabledFilelimit: "Du kan ikke laste opp flere filer",
|
|
107
149
|
},
|
|
108
150
|
item: {
|
|
109
|
-
/** @default "Prøv å laste opp filen på nytt"
|
|
151
|
+
/** @default "Prøv å laste opp filen på nytt"
|
|
152
|
+
* @default "Prøv å laste opp filen på nytt" */
|
|
110
153
|
retryButtonTitle: "Prøv å laste opp filen på nytt",
|
|
111
|
-
/** @default "Slett filen"
|
|
154
|
+
/** @default "Slett filen"
|
|
155
|
+
* @default "Slett filen" */
|
|
112
156
|
deleteButtonTitle: "Slett filen",
|
|
113
|
-
/** @default "Laster opp…"
|
|
157
|
+
/** @default "Laster opp…"
|
|
158
|
+
* @default "Laster opp…" */
|
|
114
159
|
uploading: "Laster opp…",
|
|
115
|
-
/** @default "Laster ned…"
|
|
160
|
+
/** @default "Laster ned…"
|
|
161
|
+
* @default "Laster ned…" */
|
|
116
162
|
downloading: "Laster ned…",
|
|
117
163
|
},
|
|
118
164
|
},
|
|
119
165
|
FormProgress: {
|
|
120
|
-
/** @default "Steg {activeStep} av {totalSteps}"
|
|
166
|
+
/** @default "Steg {activeStep} av {totalSteps}"
|
|
167
|
+
* @default "Steg {activeStep} av {totalSteps}" */
|
|
121
168
|
step: "Steg {activeStep} av {totalSteps}",
|
|
122
|
-
/** @default "Vis alle steg"
|
|
169
|
+
/** @default "Vis alle steg"
|
|
170
|
+
* @default "Vis alle steg" */
|
|
123
171
|
showAllSteps: "Vis alle steg",
|
|
124
|
-
/** @default "Skjul alle steg"
|
|
172
|
+
/** @default "Skjul alle steg"
|
|
173
|
+
* @default "Skjul alle steg" */
|
|
125
174
|
hideAllSteps: "Skjul alle steg",
|
|
126
175
|
},
|
|
127
176
|
FormSummary: {
|
|
128
|
-
/** @default "Endre svar"
|
|
177
|
+
/** @default "Endre svar"
|
|
178
|
+
* @default "Endre svar" */
|
|
129
179
|
editAnswer: "Endre svar",
|
|
130
180
|
},
|
|
131
181
|
GuidePanel: {
|
|
132
|
-
/** @default "Illustrasjon av veileder"
|
|
182
|
+
/** @default "Illustrasjon av veileder"
|
|
183
|
+
* @default "Illustrasjon av veileder" */
|
|
133
184
|
illustrationLabel: "Illustrasjon av veileder",
|
|
134
185
|
},
|
|
135
186
|
HelpText: {
|
|
136
|
-
/** @default "Mer informasjon"
|
|
187
|
+
/** @default "Mer informasjon"
|
|
188
|
+
* @default "Mer informasjon" */
|
|
137
189
|
title: "Mer informasjon",
|
|
138
190
|
},
|
|
139
191
|
Loader: {
|
|
140
|
-
/** @default "Venter…"
|
|
192
|
+
/** @default "Venter…"
|
|
193
|
+
* @default "Venter…" */
|
|
141
194
|
title: "Venter…",
|
|
142
195
|
},
|
|
143
196
|
Pagination: {
|
|
144
|
-
/** @default "Forrige"
|
|
197
|
+
/** @default "Forrige"
|
|
198
|
+
* @default "Forrige" */
|
|
145
199
|
previous: "Forrige",
|
|
146
|
-
/** @default "Neste"
|
|
200
|
+
/** @default "Neste"
|
|
201
|
+
* @default "Neste" */
|
|
147
202
|
next: "Neste",
|
|
148
203
|
},
|
|
149
204
|
Process: {
|
|
150
|
-
/** @default "Aktiv"
|
|
205
|
+
/** @default "Aktiv"
|
|
206
|
+
* @default "Aktiv" */
|
|
151
207
|
active: "Aktiv",
|
|
152
208
|
},
|
|
153
209
|
ProgressBar: {
|
|
154
|
-
/** @default "{current} av {max}"
|
|
210
|
+
/** @default "{current} av {max}"
|
|
211
|
+
* @default "{current} av {max}" */
|
|
155
212
|
progress: "{current} av {max}",
|
|
156
|
-
/** @default "Fremdrift kan ikke beregnes, antatt tid er {seconds} sekunder."
|
|
213
|
+
/** @default "Fremdrift kan ikke beregnes, antatt tid er {seconds} sekunder."
|
|
214
|
+
* @default "Fremdrift kan ikke beregnes, antatt tid er {seconds} sekunder." */
|
|
157
215
|
progressUnknown: "Fremdrift kan ikke beregnes, antatt tid er {seconds} sekunder.",
|
|
158
216
|
},
|
|
159
217
|
Search: {
|
|
160
|
-
/** @default "Tøm feltet"
|
|
218
|
+
/** @default "Tøm feltet"
|
|
219
|
+
* @default "Tøm feltet" */
|
|
161
220
|
clear: "Tøm feltet",
|
|
162
|
-
/** @default "Søk"
|
|
221
|
+
/** @default "Søk"
|
|
222
|
+
* @default "Søk" */
|
|
163
223
|
search: "Søk",
|
|
164
224
|
},
|
|
165
225
|
Textarea: {
|
|
166
226
|
/** Screen readers only
|
|
227
|
+
* @default "Tekstområde med plass til {maxLength} tegn."
|
|
167
228
|
* @default "Tekstområde med plass til {maxLength} tegn." */
|
|
168
229
|
maxLength: "Tekstområde med plass til {maxLength} tegn.",
|
|
169
|
-
/** @default "{chars} tegn for mye"
|
|
230
|
+
/** @default "{chars} tegn for mye"
|
|
231
|
+
* @default "{chars} tegn for mye" */
|
|
170
232
|
charsTooMany: "{chars} tegn for mye",
|
|
171
|
-
/** @default "{chars} tegn igjen"
|
|
233
|
+
/** @default "{chars} tegn igjen"
|
|
234
|
+
* @default "{chars} tegn igjen" */
|
|
172
235
|
charsLeft: "{chars} tegn igjen",
|
|
173
236
|
},
|
|
174
237
|
Timeline: {
|
|
175
|
-
/** @default "dd.MM.yyyy"
|
|
238
|
+
/** @default "dd.MM.yyyy"
|
|
239
|
+
* @default "dd.MM.yyyy" */
|
|
176
240
|
dateFormat: "dd.MM.yyyy",
|
|
177
|
-
/** @default "dd.MM"
|
|
241
|
+
/** @default "dd.MM"
|
|
242
|
+
* @default "dd.MM" */
|
|
178
243
|
dayFormat: "dd.MM",
|
|
179
|
-
/** @default "MMM yy"
|
|
244
|
+
/** @default "MMM yy"
|
|
245
|
+
* @default "MMM yy" */
|
|
180
246
|
monthFormat: "MMM yy",
|
|
181
|
-
/** @default "yyyy"
|
|
247
|
+
/** @default "yyyy"
|
|
248
|
+
* @default "yyyy" */
|
|
182
249
|
yearFormat: "yyyy",
|
|
183
250
|
Row: {
|
|
184
|
-
/** @default "Ingen perioder"
|
|
251
|
+
/** @default "Ingen perioder"
|
|
252
|
+
* @default "Ingen perioder" */
|
|
185
253
|
noPeriods: "Ingen perioder",
|
|
186
|
-
/** @default "{start} til {end}"
|
|
254
|
+
/** @default "{start} til {end}"
|
|
255
|
+
* @default "{start} til {end}" */
|
|
187
256
|
period: "{start} til {end}",
|
|
188
257
|
},
|
|
189
258
|
Period: {
|
|
190
|
-
/** @default "Suksess"
|
|
259
|
+
/** @default "Suksess"
|
|
260
|
+
* @default "Suksess" */
|
|
191
261
|
success: "Suksess",
|
|
192
|
-
/** @default "Advarsel"
|
|
262
|
+
/** @default "Advarsel"
|
|
263
|
+
* @default "Advarsel" */
|
|
193
264
|
warning: "Advarsel",
|
|
194
|
-
/** @default "Fare"
|
|
265
|
+
/** @default "Fare"
|
|
266
|
+
* @default "Fare" */
|
|
195
267
|
danger: "Fare",
|
|
196
|
-
/** @default "Info"
|
|
268
|
+
/** @default "Info"
|
|
269
|
+
* @default "Info" */
|
|
197
270
|
info: "Info",
|
|
198
|
-
/** @default "Nøytral"
|
|
271
|
+
/** @default "Nøytral"
|
|
272
|
+
* @default "Nøytral" */
|
|
199
273
|
neutral: "Nøytral",
|
|
200
|
-
/** @default "{status} fra {start} til {end}"
|
|
274
|
+
/** @default "{status} fra {start} til {end}"
|
|
275
|
+
* @default "{status} fra {start} til {end}" */
|
|
201
276
|
period: "{status} fra {start} til {end}",
|
|
202
277
|
},
|
|
203
278
|
Pin: {
|
|
204
|
-
/** @default "Pin: {date}"
|
|
279
|
+
/** @default "Pin: {date}"
|
|
280
|
+
* @default "Pin: {date}" */
|
|
205
281
|
pin: "Pin: {date}",
|
|
206
282
|
},
|
|
207
283
|
Zoom: {
|
|
208
|
-
/** @default "Zoom tidslinjen {start} til {end}"
|
|
284
|
+
/** @default "Zoom tidslinjen {start} til {end}"
|
|
285
|
+
* @default "Zoom tidslinjen {start} til {end}" */
|
|
209
286
|
zoom: "Zoom tidslinjen {start} til {end}",
|
|
210
|
-
/** @default "Tilbakestill tidsperspektiv"
|
|
287
|
+
/** @default "Tilbakestill tidsperspektiv"
|
|
288
|
+
* @default "Tilbakestill tidsperspektiv" */
|
|
211
289
|
reset: "Tilbakestill tidsperspektiv",
|
|
212
290
|
},
|
|
213
291
|
},
|
|
214
292
|
Tooltip: {
|
|
215
|
-
/** @default "eller"
|
|
293
|
+
/** @default "eller"
|
|
294
|
+
* @default "eller" */
|
|
216
295
|
shortcutSeparator: "eller",
|
|
217
296
|
},
|
|
218
297
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nb.js","sourceRoot":"","sources":["../../../../src/utils/i18n/locales/nb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAM7C,eAAe;IACb,MAAM,EAAE;QACN,UAAU,EAAE,EAAE;QACd
|
|
1
|
+
{"version":3,"file":"nb.js","sourceRoot":"","sources":["../../../../src/utils/i18n/locales/nb.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@navikt/ds-react",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.5.0",
|
|
4
4
|
"description": "React components from the Norwegian Labour and Welfare Administration.",
|
|
5
5
|
"author": "Aksel, a team part of the Norwegian Labour and Welfare Administration.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -705,8 +705,8 @@
|
|
|
705
705
|
"dependencies": {
|
|
706
706
|
"@floating-ui/react": "0.27.8",
|
|
707
707
|
"@floating-ui/react-dom": "^2.1.6",
|
|
708
|
-
"@navikt/aksel-icons": "^8.
|
|
709
|
-
"@navikt/ds-tokens": "^8.
|
|
708
|
+
"@navikt/aksel-icons": "^8.5.0",
|
|
709
|
+
"@navikt/ds-tokens": "^8.5.0",
|
|
710
710
|
"date-fns": "^4.0.0",
|
|
711
711
|
"react-day-picker": "9.7.0"
|
|
712
712
|
},
|
|
@@ -57,6 +57,16 @@ interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
57
57
|
* @see [📝 Documentation](https://aksel.nav.no/grunnleggende/styling/farger-tokens)
|
|
58
58
|
*/
|
|
59
59
|
"data-color"?: Exclude<AkselColor, AkselStatusColorRole>;
|
|
60
|
+
/**
|
|
61
|
+
* Changes the HTML element used for the root element.
|
|
62
|
+
*
|
|
63
|
+
* **When using `section`, provide either `aria-label` or `aria-labelledby` for better accessibility.**
|
|
64
|
+
* `axe-core` might warn about unique landmarks if you have multiple Accordions on page with the same label.
|
|
65
|
+
* In those cases consider updating to unique `aria-label` or `aria-labelledby` props.
|
|
66
|
+
* @see [📝 Landmarks unique](https://dequeuniversity.com/rules/axe/4.6/landmark-unique)
|
|
67
|
+
* @default "div"
|
|
68
|
+
*/
|
|
69
|
+
as?: "div" | "section";
|
|
60
70
|
}
|
|
61
71
|
|
|
62
72
|
/**
|
|
@@ -81,7 +91,14 @@ interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
81
91
|
*/
|
|
82
92
|
export const Accordion = forwardRef<HTMLDivElement, AccordionProps>(
|
|
83
93
|
(
|
|
84
|
-
{
|
|
94
|
+
{
|
|
95
|
+
className,
|
|
96
|
+
variant = "default",
|
|
97
|
+
size = "medium",
|
|
98
|
+
indent = true,
|
|
99
|
+
as: Component = "div",
|
|
100
|
+
...rest
|
|
101
|
+
},
|
|
85
102
|
ref,
|
|
86
103
|
) => {
|
|
87
104
|
const localRef = useRef<HTMLDivElement | null>(null);
|
|
@@ -117,7 +134,7 @@ export const Accordion = forwardRef<HTMLDivElement, AccordionProps>(
|
|
|
117
134
|
variant,
|
|
118
135
|
}}
|
|
119
136
|
>
|
|
120
|
-
<
|
|
137
|
+
<Component
|
|
121
138
|
{...omit(rest, ["headingSize"])}
|
|
122
139
|
className={cl(
|
|
123
140
|
"aksel-accordion",
|
|
@@ -4,20 +4,15 @@ function getFirstCell(tableRef: HTMLTableElement): Element | null {
|
|
|
4
4
|
return tableRef.querySelector("td, th");
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
function
|
|
7
|
+
function focusInitialTableTarget(
|
|
8
8
|
tableRef: HTMLTableElement | null,
|
|
9
|
-
activeCell: Element | null,
|
|
10
9
|
): Element | null {
|
|
11
10
|
if (!tableRef) {
|
|
12
11
|
return null;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
if (activeCell) {
|
|
16
|
-
return activeCell;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
14
|
const firstCell = getFirstCell(tableRef);
|
|
20
15
|
return firstCell ? focusCell(firstCell) : null;
|
|
21
16
|
}
|
|
22
17
|
|
|
23
|
-
export {
|
|
18
|
+
export { getFirstCell, focusInitialTableTarget };
|
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WeakMap to store original tabIndex values for cells.
|
|
3
|
+
* Used to restore tabIndex when navigation moves away from a cell.
|
|
4
|
+
*/
|
|
5
|
+
const originalTabIndexMap = new WeakMap<Element, number>();
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Stores the original tabIndex of a cell if not already stored, and returns it.
|
|
9
|
+
*/
|
|
10
|
+
function syncOriginalTabIndex(cell: Element): void {
|
|
11
|
+
if (!originalTabIndexMap.has(cell)) {
|
|
12
|
+
const current = (cell as HTMLElement).tabIndex;
|
|
13
|
+
originalTabIndexMap.set(cell, current);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Restores the original tabIndex for a cell.
|
|
19
|
+
*/
|
|
20
|
+
function restoreTabIndex(cell: Element): void {
|
|
21
|
+
const original = originalTabIndexMap.get(cell);
|
|
22
|
+
if (original !== undefined) {
|
|
23
|
+
(cell as HTMLElement).tabIndex = original;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
1
27
|
/**
|
|
2
28
|
* Makes sure only focusable and non-disabled elements are targeted when navigating through the table using keyboard interactions.
|
|
3
29
|
* Tries to find the most logical focus target inside a cell, by looking for commonly used interactive elements,
|
|
@@ -6,7 +32,7 @@
|
|
|
6
32
|
* If the assumed focus target is not the cell itself, we check if that element is hidden or disabled, and fall back to the cell if so,
|
|
7
33
|
* since we want to avoid/can't focus hidden/disabled elements.
|
|
8
34
|
*/
|
|
9
|
-
function
|
|
35
|
+
function findFocusableElementInCell(cell: Element): HTMLElement | null {
|
|
10
36
|
const el = cell as HTMLElement | null;
|
|
11
37
|
if (!el || isHiddenElement(el)) {
|
|
12
38
|
return null;
|
|
@@ -31,8 +57,7 @@ function getFocusableTarget(cell: Element): HTMLElement | null {
|
|
|
31
57
|
}
|
|
32
58
|
|
|
33
59
|
/**
|
|
34
|
-
*
|
|
35
|
-
* - validate this implementation against SR-only elements
|
|
60
|
+
* Checks if an element is visually hidden (but not SR-only).
|
|
36
61
|
*/
|
|
37
62
|
function isHiddenElement(el: HTMLElement): boolean {
|
|
38
63
|
if (el.hidden) {
|
|
@@ -43,6 +68,9 @@ function isHiddenElement(el: HTMLElement): boolean {
|
|
|
43
68
|
return style.display === "none" || style.visibility === "hidden";
|
|
44
69
|
}
|
|
45
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Checks if an element is disabled (via aria-disabled, fieldset, or native disabled property).
|
|
73
|
+
*/
|
|
46
74
|
function isDisabledElement(el: HTMLElement): boolean {
|
|
47
75
|
if (el.getAttribute("aria-disabled") === "true") {
|
|
48
76
|
return true;
|
|
@@ -64,8 +92,12 @@ function isDisabledElement(el: HTMLElement): boolean {
|
|
|
64
92
|
return false;
|
|
65
93
|
}
|
|
66
94
|
|
|
67
|
-
|
|
68
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Determines the focus target and updates tabIndex if the cell itself should be focused.
|
|
97
|
+
* Returns null if no focusable target found.
|
|
98
|
+
*/
|
|
99
|
+
function prepareCellFocus(cell: Element): HTMLElement | null {
|
|
100
|
+
const focusTarget = findFocusableElementInCell(cell);
|
|
69
101
|
if (!focusTarget) {
|
|
70
102
|
return null;
|
|
71
103
|
}
|
|
@@ -74,15 +106,34 @@ function focusCell(cell: Element): Element | null {
|
|
|
74
106
|
(cell as HTMLElement).tabIndex = 0;
|
|
75
107
|
}
|
|
76
108
|
|
|
77
|
-
focusTarget
|
|
109
|
+
return focusTarget;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Applies focus and scroll to an element.
|
|
114
|
+
*/
|
|
115
|
+
function applyFocusAndScroll(element: HTMLElement): void {
|
|
116
|
+
element.focus({
|
|
78
117
|
preventScroll: true,
|
|
79
118
|
});
|
|
80
119
|
|
|
81
|
-
|
|
120
|
+
element.scrollIntoView({
|
|
82
121
|
behavior: "smooth",
|
|
83
122
|
block: "nearest",
|
|
84
123
|
inline: "nearest",
|
|
85
124
|
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Focuses a cell by finding its focusable target and applying focus with scroll.
|
|
129
|
+
*/
|
|
130
|
+
function focusCell(cell: Element): Element | null {
|
|
131
|
+
const focusTarget = prepareCellFocus(cell);
|
|
132
|
+
if (!focusTarget) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
applyFocusAndScroll(focusTarget);
|
|
86
137
|
return cell;
|
|
87
138
|
}
|
|
88
139
|
|
|
@@ -92,7 +143,8 @@ function focusCellAndUpdateTabIndex(
|
|
|
92
143
|
{ shouldFocus = true }: { shouldFocus?: boolean } = {},
|
|
93
144
|
): Element | null {
|
|
94
145
|
if (previousCell && previousCell !== nextCell) {
|
|
95
|
-
(previousCell
|
|
146
|
+
syncOriginalTabIndex(previousCell);
|
|
147
|
+
restoreTabIndex(previousCell);
|
|
96
148
|
}
|
|
97
149
|
|
|
98
150
|
if (!shouldFocus) {
|
|
@@ -102,4 +154,13 @@ function focusCellAndUpdateTabIndex(
|
|
|
102
154
|
return focusCell(nextCell);
|
|
103
155
|
}
|
|
104
156
|
|
|
105
|
-
export {
|
|
157
|
+
export {
|
|
158
|
+
applyFocusAndScroll,
|
|
159
|
+
focusCell,
|
|
160
|
+
focusCellAndUpdateTabIndex,
|
|
161
|
+
findFocusableElementInCell,
|
|
162
|
+
isDisabledElement,
|
|
163
|
+
isHiddenElement,
|
|
164
|
+
prepareCellFocus,
|
|
165
|
+
restoreTabIndex,
|
|
166
|
+
};
|