@fremtind/jokul 6.0.0-next.3 → 6.0.0-next.4

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.
Files changed (71) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/flex/Flex.cjs +1 -1
  3. package/build/cjs/components/flex/Flex.cjs.map +1 -1
  4. package/build/cjs/components/flex/types.cjs +1 -1
  5. package/build/cjs/components/flex/types.cjs.map +1 -1
  6. package/build/cjs/components/flex/types.d.cts +36 -26
  7. package/build/cjs/components/image/Image.cjs +1 -1
  8. package/build/cjs/components/image/Image.cjs.map +1 -1
  9. package/build/cjs/components/number-input/NumberInput.cjs.map +1 -1
  10. package/build/cjs/components/segmented-control/SegmentedControl.cjs +1 -1
  11. package/build/cjs/components/segmented-control/SegmentedControl.cjs.map +1 -1
  12. package/build/cjs/components/select/Option.cjs.map +1 -1
  13. package/build/cjs/components/select/Select.cjs.map +1 -1
  14. package/build/cjs/components/select/Select.d.cts +1 -1
  15. package/build/cjs/components/select/utils.cjs.map +1 -1
  16. package/build/cjs/components/table/stories/assets/table-data.cjs +2 -0
  17. package/build/cjs/components/table/stories/assets/table-data.cjs.map +1 -0
  18. package/build/cjs/components/table/stories/assets/table-data.d.cts +8 -0
  19. package/build/es/components/flex/Flex.js +1 -1
  20. package/build/es/components/flex/Flex.js.map +1 -1
  21. package/build/es/components/flex/types.d.ts +36 -26
  22. package/build/es/components/flex/types.js +1 -1
  23. package/build/es/components/flex/types.js.map +1 -1
  24. package/build/es/components/image/Image.js +1 -1
  25. package/build/es/components/image/Image.js.map +1 -1
  26. package/build/es/components/number-input/NumberInput.js.map +1 -1
  27. package/build/es/components/segmented-control/SegmentedControl.js +1 -1
  28. package/build/es/components/segmented-control/SegmentedControl.js.map +1 -1
  29. package/build/es/components/select/Option.js.map +1 -1
  30. package/build/es/components/select/Select.d.ts +1 -1
  31. package/build/es/components/select/Select.js.map +1 -1
  32. package/build/es/components/select/utils.js.map +1 -1
  33. package/build/es/components/table/stories/assets/table-data.d.ts +8 -0
  34. package/build/es/components/table/stories/assets/table-data.js +2 -0
  35. package/build/es/components/table/stories/assets/table-data.js.map +1 -0
  36. package/codemods/CODEMODS.md +115 -83
  37. package/codemods/__tests__/import-paths.test.mjs +107 -1
  38. package/codemods/import-paths.mjs +5 -1
  39. package/codemods/transforms/select.mjs +237 -0
  40. package/package.json +1 -2
  41. package/styles/base.css +4 -3
  42. package/styles/base.min.css +1 -1
  43. package/styles/components/countdown/countdown.css +2 -2
  44. package/styles/components/countdown/countdown.min.css +1 -1
  45. package/styles/components/feedback/feedback.css +2 -2
  46. package/styles/components/feedback/feedback.min.css +1 -1
  47. package/styles/components/file-input/file-input.css +9 -9
  48. package/styles/components/file-input/file-input.min.css +1 -1
  49. package/styles/components/flex/flex.css +16 -1343
  50. package/styles/components/flex/flex.min.css +1 -1
  51. package/styles/components/flex/flex.scss +14 -280
  52. package/styles/components/input-group/input-group.css +2 -2
  53. package/styles/components/input-group/input-group.min.css +1 -1
  54. package/styles/components/loader/loader.css +6 -6
  55. package/styles/components/loader/loader.min.css +1 -1
  56. package/styles/components/loader/skeleton-loader.css +3 -3
  57. package/styles/components/loader/skeleton-loader.min.css +1 -1
  58. package/styles/components/message/message.css +2 -2
  59. package/styles/components/message/message.min.css +1 -1
  60. package/styles/components/progress-bar/progress-bar.css +1 -1
  61. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  62. package/styles/components/segmented-control/segmented-control.css +2 -2
  63. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  64. package/styles/components/system-message/system-message.css +2 -2
  65. package/styles/components/system-message/system-message.min.css +1 -1
  66. package/styles/components/toast/toast.css +4 -4
  67. package/styles/components/toast/toast.min.css +1 -1
  68. package/styles/components.css +37 -1367
  69. package/styles/components.min.css +2 -2
  70. package/styles/theme/_tokens.scss +2 -1
  71. package/styles/theme/brands/dnb/_color-scheme.scss +2 -2
@@ -32,28 +32,28 @@ Standardcodemoden for Jøkul 4 → 5-migrering. Kjøres automatisk med `jokul co
32
32
 
33
33
  #### Importstier for stilark og Sass-hjelpere
34
34
 
35
- | Gammel import | Ny import |
36
- |---|---|
37
- | `@fremtind/jokul/styles/core` | `@fremtind/jokul/styles/base.scss` |
38
- | `@fremtind/jokul/styles/core/core` | `@fremtind/jokul/styles/base` |
39
- | `@fremtind/jokul/styles/core/core.scss` | `@fremtind/jokul/styles/base.scss` |
40
- | `@fremtind/jokul/styles/core/core.css` | `@fremtind/jokul/styles/base.css` |
41
- | `@fremtind/jokul/styles/core/core.min.css` | `@fremtind/jokul/styles/base.min.css` |
42
- | `@fremtind/jokul/styles` | `@fremtind/jokul/styles/components.scss` |
43
- | `@fremtind/jokul/styles/styles` | `@fremtind/jokul/styles/components` |
44
- | `@fremtind/jokul/styles/styles.scss` | `@fremtind/jokul/styles/components.scss` |
45
- | `@fremtind/jokul/styles/styles.css` | `@fremtind/jokul/styles/components.css` |
46
- | `@fremtind/jokul/styles/styles.min.css` | `@fremtind/jokul/styles/components.min.css` |
47
- | `@fremtind/jokul/styles/core/jkl` | `@fremtind/jokul/styles/jkl` |
48
- | `@fremtind/jokul/styles/core/jkl/index` | `@fremtind/jokul/styles/jkl` |
49
- | `@fremtind/jokul/styles/fonts/webfonts` | `@fremtind/jokul/styles/theme/fonts` |
50
- | `@fremtind/jokul/styles/fonts/webfonts.scss` | `@fremtind/jokul/styles/theme/fonts` |
51
- | `@fremtind/jokul/styles/fonts` | `@fremtind/jokul/styles/theme/fonts` |
52
- | `@fremtind/jokul/tailwind/v4` | `@fremtind/jokul/styles/tailwind` |
53
- | `@fremtind/jokul/core` | `@fremtind/jokul/utilities` |
54
- | `../core/jkl` (relativ) | `../styles/jkl` |
55
- | `../../core/jkl` (relativ) | `../../styles/jkl` |
56
- | `../../../core/jkl` (relativ) | `../../../styles/jkl` |
35
+ | Gammel import | Ny import |
36
+ | -------------------------------------------- | ------------------------------------------- |
37
+ | `@fremtind/jokul/styles/core` | `@fremtind/jokul/styles/base.scss` |
38
+ | `@fremtind/jokul/styles/core/core` | `@fremtind/jokul/styles/base` |
39
+ | `@fremtind/jokul/styles/core/core.scss` | `@fremtind/jokul/styles/base.scss` |
40
+ | `@fremtind/jokul/styles/core/core.css` | `@fremtind/jokul/styles/base.css` |
41
+ | `@fremtind/jokul/styles/core/core.min.css` | `@fremtind/jokul/styles/base.min.css` |
42
+ | `@fremtind/jokul/styles` | `@fremtind/jokul/styles/components.scss` |
43
+ | `@fremtind/jokul/styles/styles` | `@fremtind/jokul/styles/components` |
44
+ | `@fremtind/jokul/styles/styles.scss` | `@fremtind/jokul/styles/components.scss` |
45
+ | `@fremtind/jokul/styles/styles.css` | `@fremtind/jokul/styles/components.css` |
46
+ | `@fremtind/jokul/styles/styles.min.css` | `@fremtind/jokul/styles/components.min.css` |
47
+ | `@fremtind/jokul/styles/core/jkl` | `@fremtind/jokul/styles/jkl` |
48
+ | `@fremtind/jokul/styles/core/jkl/index` | `@fremtind/jokul/styles/jkl` |
49
+ | `@fremtind/jokul/styles/fonts/webfonts` | `@fremtind/jokul/styles/theme/fonts` |
50
+ | `@fremtind/jokul/styles/fonts/webfonts.scss` | `@fremtind/jokul/styles/theme/fonts` |
51
+ | `@fremtind/jokul/styles/fonts` | `@fremtind/jokul/styles/theme/fonts` |
52
+ | `@fremtind/jokul/tailwind/v4` | `@fremtind/jokul/styles/tailwind` |
53
+ | `@fremtind/jokul/core` | `@fremtind/jokul/utilities` |
54
+ | `../core/jkl` (relativ) | `../styles/jkl` |
55
+ | `../../core/jkl` (relativ) | `../../styles/jkl` |
56
+ | `../../../core/jkl` (relativ) | `../../../styles/jkl` |
57
57
 
58
58
  #### Fjerning av `webfonts.css`-import (CSS)
59
59
 
@@ -63,11 +63,11 @@ Hvis `webfonts.css` fjernes uten at `base.css` eller `components.css` er importe
63
63
 
64
64
  #### Stilimporter for beta-komponenter
65
65
 
66
- | Gammel import | Ny import |
67
- |---|---|
66
+ | Gammel import | Ny import |
67
+ | ---------------------------------------------------- | --------------------------------------------------------- |
68
68
  | `@fremtind/jokul/styles/components/description-list` | `@fremtind/jokul/styles/components/beta/description-list` |
69
- | `@fremtind/jokul/styles/components/nav-link` | `@fremtind/jokul/styles/components/beta/nav-link` |
70
- | `@fremtind/jokul/styles/components/select` | `@fremtind/jokul/styles/components/beta/select` |
69
+ | `@fremtind/jokul/styles/components/nav-link` | `@fremtind/jokul/styles/components/beta/nav-link` |
70
+ | `@fremtind/jokul/styles/components/select` | `@fremtind/jokul/styles/components/beta/select` |
71
71
 
72
72
  Erstatningen skjer bare hvis beta-komponent-identifikatoren (`BETA_Select` o.l.) finnes i samme fil. Hvis stilimporten finnes uten komponentreferanse gis det et varsel om manuell vurdering.
73
73
 
@@ -77,44 +77,44 @@ I SCSS-filer flyttes `@use "@fremtind/jokul/styles/theme/fonts"` til å stå _f
77
77
 
78
78
  #### Font-familienavn
79
79
 
80
- | Gammelt navn | Nytt navn |
81
- |---|---|
82
- | `"Fremtind Material Symbols"` | `"Jokul Icons"` |
80
+ | Gammelt navn | Nytt navn |
81
+ | -------------------------------------- | ------------------------ |
82
+ | `"Fremtind Material Symbols"` | `"Jokul Icons"` |
83
83
  | `"Fremtind Material Symbols Fallback"` | `"Jokul Icons Fallback"` |
84
84
 
85
85
  #### CSS-fargetokens
86
86
 
87
87
  Semantiske `--jkl-color-*` custom properties omdøpt fra v4 til v5. Gjelder både `var()`-bruk og direktedefinerte properties.
88
88
 
89
- | Gammel token | Ny token |
90
- |---|---|
91
- | `--jkl-color-background-action` | `--jkl-color-background-contrast` |
92
- | `--jkl-color-text-on-action` | `--jkl-color-text-on-contrast` |
93
- | `--jkl-color-text-inverted` | `--jkl-color-text-on-contrast` |
94
- | `--jkl-color-background-container-high` | `--jkl-color-background-container` |
95
- | `--jkl-color-background-container-low` | `--jkl-color-background-container` |
96
- | `--jkl-color-background-container-inverted` | `--jkl-color-background-contrast` |
97
- | `--jkl-color-background-alert-info` | `--jkl-color-info-background-container` |
98
- | `--jkl-color-background-alert-warning` | `--jkl-color-warning-background-container` |
99
- | `--jkl-color-background-alert-error` | `--jkl-color-error-background-container` |
100
- | `--jkl-color-background-alert-success` | `--jkl-color-success-background-container` |
89
+ | Gammel token | Ny token |
90
+ | ------------------------------------------- | ------------------------------------------ |
91
+ | `--jkl-color-background-action` | `--jkl-color-background-contrast` |
92
+ | `--jkl-color-text-on-action` | `--jkl-color-text-on-contrast` |
93
+ | `--jkl-color-text-inverted` | `--jkl-color-text-on-contrast` |
94
+ | `--jkl-color-background-container-high` | `--jkl-color-background-container` |
95
+ | `--jkl-color-background-container-low` | `--jkl-color-background-container` |
96
+ | `--jkl-color-background-container-inverted` | `--jkl-color-background-contrast` |
97
+ | `--jkl-color-background-alert-info` | `--jkl-color-info-background-container` |
98
+ | `--jkl-color-background-alert-warning` | `--jkl-color-warning-background-container` |
99
+ | `--jkl-color-background-alert-error` | `--jkl-color-error-background-container` |
100
+ | `--jkl-color-background-alert-success` | `--jkl-color-success-background-container` |
101
101
 
102
102
  #### Tailwind-fargeklasser
103
103
 
104
104
  Tilsvarende omdøping for alle Tailwind v4-fargeklasser generert fra `--color-*`-variabler. Alle vanlige prefikser håndteres: `bg-`, `text-`, `border-`, `ring-`, `shadow-`, `fill-`, `stroke-`, `accent-`, `caret-`, `outline-`, `placeholder-`, `divide-`, `from-`, `via-`, `to-`, `decoration-`.
105
105
 
106
- | Gammelt fargenøkkel | Nytt fargenøkkel | Eksempel på klasse |
107
- |---|---|---|
108
- | `background-action` | `background-contrast` | `bg-background-action` → `bg-background-contrast` |
109
- | `text-on-action` | `text-on-contrast` | `text-text-on-action` → `text-text-on-contrast` |
110
- | `text-inverted` | `text-on-contrast` | `text-text-inverted` → `text-text-on-contrast` |
111
- | `background-container-high` | `background-container` | `bg-background-container-high` → `bg-background-container` |
112
- | `background-container-low` | `background-container` | `bg-background-container-low` → `bg-background-container` |
113
- | `background-container-inverted` | `background-contrast` | `bg-background-container-inverted` → `bg-background-contrast` |
114
- | `background-alert-info` | `info-background-container` | `bg-background-alert-info` → `bg-info-background-container` |
115
- | `background-alert-warning` | `warning-background-container` | `bg-background-alert-warning` → `bg-warning-background-container` |
116
- | `background-alert-error` | `error-background-container` | `bg-background-alert-error` → `bg-error-background-container` |
117
- | `background-alert-success` | `success-background-container` | `bg-background-alert-success` → `bg-success-background-container` |
106
+ | Gammelt fargenøkkel | Nytt fargenøkkel | Eksempel på klasse |
107
+ | ------------------------------- | ------------------------------ | ----------------------------------------------------------------- |
108
+ | `background-action` | `background-contrast` | `bg-background-action` → `bg-background-contrast` |
109
+ | `text-on-action` | `text-on-contrast` | `text-text-on-action` → `text-text-on-contrast` |
110
+ | `text-inverted` | `text-on-contrast` | `text-text-inverted` → `text-text-on-contrast` |
111
+ | `background-container-high` | `background-container` | `bg-background-container-high` → `bg-background-container` |
112
+ | `background-container-low` | `background-container` | `bg-background-container-low` → `bg-background-container` |
113
+ | `background-container-inverted` | `background-contrast` | `bg-background-container-inverted` → `bg-background-contrast` |
114
+ | `background-alert-info` | `info-background-container` | `bg-background-alert-info` → `bg-info-background-container` |
115
+ | `background-alert-warning` | `warning-background-container` | `bg-background-alert-warning` → `bg-warning-background-container` |
116
+ | `background-alert-error` | `error-background-container` | `bg-background-alert-error` → `bg-error-background-container` |
117
+ | `background-alert-success` | `success-background-container` | `bg-background-alert-success` → `bg-success-background-container` |
118
118
 
119
119
  Tailwind-modifikatorer (`hover:`, `dark:`, `md:`, `focus:` o.l.), opacity-modifikatorer (`/50`) og viktig-prefiks (`!`) håndteres korrekt.
120
120
 
@@ -122,49 +122,81 @@ Tailwind-modifikatorer (`hover:`, `dark:`, `md:`, `focus:` o.l.), opacity-modifi
122
122
 
123
123
  Import path, stilimporter og komponentnavn omdøpes automatisk:
124
124
 
125
- | Gammel import | Ny import |
126
- |---|---|
127
- | `@fremtind/jokul/datepicker` | `@fremtind/jokul/date-input` |
125
+ | Gammel import | Ny import |
126
+ | ----------------------------- | ---------------------------- |
127
+ | `@fremtind/jokul/datepicker` | `@fremtind/jokul/date-input` |
128
128
  | `@fremtind/jokul/date-inputs` | `@fremtind/jokul/date-input` |
129
129
  | `@fremtind/jokul/date-picker` | `@fremtind/jokul/date-input` |
130
130
 
131
131
  Stilmappa følger komponentmappa, så både mappe- og filnavn skrives om. Gjelder både `import "..."` og Sass `@use`/`@forward`:
132
132
 
133
- | Gammel stilimport | Ny stilimport |
134
- |---|---|
135
- | `@fremtind/jokul/styles/components/datepicker` | `@fremtind/jokul/styles/components/date-input` |
136
- | `@fremtind/jokul/styles/components/datepicker/_index.scss` | `@fremtind/jokul/styles/components/date-input/_index.scss` |
137
- | `@fremtind/jokul/styles/components/datepicker/datepicker.scss` | `@fremtind/jokul/styles/components/date-input/date-input.scss` |
138
- | `@fremtind/jokul/styles/components/datepicker/datepicker.css` | `@fremtind/jokul/styles/components/date-input/date-input.css` |
133
+ | Gammel stilimport | Ny stilimport |
134
+ | ----------------------------------------------------------------- | ----------------------------------------------------------------- |
135
+ | `@fremtind/jokul/styles/components/datepicker` | `@fremtind/jokul/styles/components/date-input` |
136
+ | `@fremtind/jokul/styles/components/datepicker/_index.scss` | `@fremtind/jokul/styles/components/date-input/_index.scss` |
137
+ | `@fremtind/jokul/styles/components/datepicker/datepicker.scss` | `@fremtind/jokul/styles/components/date-input/date-input.scss` |
138
+ | `@fremtind/jokul/styles/components/datepicker/datepicker.css` | `@fremtind/jokul/styles/components/date-input/date-input.css` |
139
139
  | `@fremtind/jokul/styles/components/datepicker/datepicker.min.css` | `@fremtind/jokul/styles/components/date-input/date-input.min.css` |
140
140
 
141
141
  De samme variantene håndteres for de eldre mappenavnene `date-picker` og `date-inputs`.
142
142
 
143
143
  | Gammel komponent | Ny komponent |
144
- |---|---|
145
- | `DatePicker` | `DateInput` |
144
+ | ---------------- | ------------ |
145
+ | `DatePicker` | `DateInput` |
146
146
 
147
147
  Prop-navnene som begrenser datovalg omdøpes automatisk:
148
148
 
149
- | Gammel prop | Ny prop |
150
- |---|---|
151
- | `disableBeforeDate` | `min` |
152
- | `disableAfterDate` | `max` |
149
+ | Gammel prop | Ny prop |
150
+ | ------------------- | ------- |
151
+ | `disableBeforeDate` | `min` |
152
+ | `disableAfterDate` | `max` |
153
153
 
154
154
  Fjernede props endres ikke automatisk, men gir varsel når de finnes i en fil som bruker `DateInput`/`DatePicker`: `defaultShow`, `initialShow`, `extended`, `invalid`, `yearsToShow`, `days`, `months`, `monthLabel`, `yearLabel`, `action`, `showCalendarLabel`, `hideCalendarLabel` og `textInputProps`. Se [MIGRATION.md](../MIGRATION.md#fjernede-props-og-hjelpefunksjoner) for erstatninger.
155
155
 
156
156
  ---
157
157
 
158
+ #### `Select` (Jøkul 6)
159
+
160
+ `Select` er skrevet om til å bygge på det native Popover API-et. Disse endres automatisk:
161
+
162
+ | Gammel prop | Ny prop |
163
+ | --------------- | ------------- |
164
+ | `defaultPrompt` | `placeholder` |
165
+
166
+ `searchable` som en inline-funksjon med to enkle parametere skrives om til `searchable filterFunction={...}`, med parameterrekkefølgen snudd (funksjonskroppen refererer til parameterne ved navn og trenger ikke endres):
167
+
168
+ ```tsx
169
+ // Før
170
+ <Select searchable={(searchValue, item) => item.label.includes(searchValue)} />
171
+
172
+ // Etter
173
+ <Select searchable filterFunction={(item, searchValue) => item.label.includes(searchValue)} />
174
+ ```
175
+
176
+ Er `searchable` satt til en funksjonsreferanse (f.eks. `searchable={filterItems}`) i stedet for en inline-funksjon, kan ikke codemoden trygt bytte parameterrekkefølgen inne i den refererte funksjonen, og det gis et varsel i stedet.
177
+
178
+ Disse gir varsel når de finnes i en fil som bruker `Select`, `NativeSelect` eller `BETA_Select`:
179
+
180
+ | Mønster | Varsel |
181
+ | ---------------------------------- | -------------------------------------------------------------------------------------------------------------- |
182
+ | `NativeSelect` | Fjernet. Migrer til den nye `Select`. |
183
+ | `BETA_Select` / `BETA_SelectProps` | Fjernet. Migrer til den stabile `Select`. |
184
+ | `searchable={funksjonsreferanse}` | Kan ikke skrives om automatisk. Sett `searchable` til `true` og send filtreringslogikken til `filterFunction`. |
185
+ | `maxShownOptions`, `inline` | Fjernet uten direkte erstatning. |
186
+ | `invalid` | Bruk `errorLabel` i stedet. |
187
+
188
+ ---
189
+
158
190
  #### Fjernede maskefunksjoner
159
191
 
160
192
  De frittstående, utgåtte maskefunksjonene er fjernet. Kall og importer skrives om
161
193
  til `registerWithMasks(form)`-API-et.
162
194
 
163
- | Fjernet funksjon | Erstatning |
164
- |---|---|
195
+ | Fjernet funksjon | Erstatning |
196
+ | ---------------------------------------------------- | ---------------------------------------------------------------------- |
165
197
  | `registerWithFodselsnummerMask(form, name, options)` | `registerWithMasks(form).registerWithFodselsnummerMask(name, options)` |
166
- | `registerWithKontonummerMask(form, name, options)` | `registerWithMasks(form).registerWithKontonummerMask(name, options)` |
167
- | `registerWithKortnummerMask(form, name, options)` | `registerWithMasks(form).registerWithKortnummerMask(name, options)` |
198
+ | `registerWithKontonummerMask(form, name, options)` | `registerWithMasks(form).registerWithKontonummerMask(name, options)` |
199
+ | `registerWithKortnummerMask(form, name, options)` | `registerWithMasks(form).registerWithKortnummerMask(name, options)` |
168
200
  | `registerWithTelefonnummerMask(form, name, options)` | `registerWithMasks(form).registerWithTelefonnummerMask(name, options)` |
169
201
 
170
202
  Importer fra `@fremtind/jokul/utilities` (og gamle `@fremtind/jokul/core`) ryddes:
@@ -175,14 +207,14 @@ de fjernede navnene tas ut og `registerWithMasks` legges til. Aliaserte importer
175
207
 
176
208
  Disse mønstrene kan ikke omdøpes automatisk. Codemoden skriver ut ett varsel per fil der mønsteret finnes.
177
209
 
178
- | Mønster | Varsel |
179
- |---|---|
180
- | `--jkl-color-text-on-alert-*` | Fjernede tokens. Bruk `--jkl-color-<rolle>-text-default`, f.eks. `--jkl-color-info-text-default`. |
181
- | `--jkl-color-background-interactive` / `--jkl-color-text-interactive` | Fjernede tokens. Skal ikke brukes lenger. |
182
- | `variant="outlined\|high\|low"` (på `Card`) | `variant`-prop er fjernet. Bruk `outlined` (boolean) for ramme, fjern `high`/`low`. |
183
- | `bg-background-interactive` o.l. (Tailwind) | Fjernede Tailwind-klasser basert på `background-interactive`/`text-interactive`. |
184
- | `border-border-separator` o.l. (Tailwind) | Fjernede Tailwind-kantklasser. Bruk `border-border-default`, `-subdued` eller `-strong`. |
185
- | `<DateInput>` | Datoverdier bruker nå ISO-format (`yyyy-mm-dd`), ikke `dd.mm.yyyy`. |
186
- | `<DateInput>` `onChange` | Gir nå et standard React change-event. Les datoen fra `event.target.value`. |
187
- | `defaultShow` | Fjernet fra DateInput. Kalenderen åpnes via kalenderknappen. |
188
- | `extended`, `invalid`, `yearsToShow`, `days`, `months`, `monthLabel`, `yearLabel`, `action`, `showCalendarLabel`, `hideCalendarLabel`, `textInputProps` | Fjernet fra DateInput. Se migrasjonsguiden for erstatninger. |
210
+ | Mønster | Varsel |
211
+ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
212
+ | `--jkl-color-text-on-alert-*` | Fjernede tokens. Bruk `--jkl-color-<rolle>-text-default`, f.eks. `--jkl-color-info-text-default`. |
213
+ | `--jkl-color-background-interactive` / `--jkl-color-text-interactive` | Fjernede tokens. Skal ikke brukes lenger. |
214
+ | `variant="outlined\|high\|low"` (på `Card`) | `variant`-prop er fjernet. Bruk `outlined` (boolean) for ramme, fjern `high`/`low`. |
215
+ | `bg-background-interactive` o.l. (Tailwind) | Fjernede Tailwind-klasser basert på `background-interactive`/`text-interactive`. |
216
+ | `border-border-separator` o.l. (Tailwind) | Fjernede Tailwind-kantklasser. Bruk `border-border-default`, `-subdued` eller `-strong`. |
217
+ | `<DateInput>` | Datoverdier bruker nå ISO-format (`yyyy-mm-dd`), ikke `dd.mm.yyyy`. |
218
+ | `<DateInput>` `onChange` | Gir nå et standard React change-event. Les datoen fra `event.target.value`. |
219
+ | `defaultShow` | Fjernet fra DateInput. Kalenderen åpnes via kalenderknappen. |
220
+ | `extended`, `invalid`, `yearsToShow`, `days`, `months`, `monthLabel`, `yearLabel`, `action`, `showCalendarLabel`, `hideCalendarLabel`, `textInputProps` | Fjernet fra DateInput. Se migrasjonsguiden for erstatninger. |
@@ -69,7 +69,9 @@ import "@fremtind/jokul/styles/components/select";
69
69
  result.text.includes("@fremtind/jokul/styles/components/beta/select"),
70
70
  true,
71
71
  );
72
- assert.deepEqual(result.warnings, []);
72
+ assert.deepEqual(result.warnings, [
73
+ "Manuell vurdering: `BETA_Select`/`BETA_SelectProps` er fjernet. Migrer til den stabile `Select`.",
74
+ ]);
73
75
  });
74
76
 
75
77
  test("warns when beta style import is ambiguous (no beta identifier in file)", () => {
@@ -900,3 +902,107 @@ test("DateInput: håndterer piluttrykk i props ved omdøping", () => {
900
902
  );
901
903
  assert.equal(result.text.includes("<Other disableAfterDate={b} />"), true);
902
904
  });
905
+
906
+ test("renames Select defaultPrompt to placeholder", () => {
907
+ const source = `<Select defaultPrompt="Velg land" items={items} />;`;
908
+ const result = transformImportPaths(source, "src/App.tsx");
909
+
910
+ assert.equal(result.text.includes('placeholder="Velg land"'), true);
911
+ assert.equal(result.text.includes("defaultPrompt"), false);
912
+ });
913
+
914
+ test("Select: rører ikke like prop-navn på andre komponenter", () => {
915
+ const source = `<Other defaultPrompt="Velg" invalid maxShownOptions={5} />;`;
916
+ const result = transformImportPaths(source, "src/App.tsx");
917
+
918
+ assert.equal(result.text.includes('defaultPrompt="Velg"'), true);
919
+ assert.equal(result.warnings.length, 0);
920
+ });
921
+
922
+ test("warns about NativeSelect usage", () => {
923
+ const source = `import { NativeSelect } from "@fremtind/jokul/select";
924
+ <NativeSelect items={items} />;
925
+ `;
926
+ const result = transformImportPaths(source, "src/App.tsx");
927
+
928
+ assert.equal(
929
+ result.warnings.some((w) => w.includes("NativeSelect")),
930
+ true,
931
+ );
932
+ });
933
+
934
+ test("warns about BETA_Select usage", () => {
935
+ const source = `import { BETA_Select } from "@fremtind/jokul/select";
936
+ <BETA_Select items={items} />;
937
+ `;
938
+ const result = transformImportPaths(source, "src/App.tsx");
939
+
940
+ assert.equal(
941
+ result.warnings.some((w) => w.includes("BETA_Select")),
942
+ true,
943
+ );
944
+ });
945
+
946
+ test("rewrites searchable inline function to filterFunction, swapping parameter order", () => {
947
+ const source =
948
+ "<Select searchable={(searchValue, item) => item.label.includes(searchValue)} items={items} />;";
949
+ const result = transformImportPaths(source, "src/App.tsx");
950
+
951
+ assert.equal(
952
+ result.text.includes(
953
+ "searchable filterFunction={(item, searchValue) => item.label.includes(searchValue)}",
954
+ ),
955
+ true,
956
+ );
957
+ assert.equal(
958
+ result.warnings.some((w) => w.includes("filterFunction")),
959
+ false,
960
+ );
961
+ });
962
+
963
+ test("rewrites searchable function expression to filterFunction", () => {
964
+ const source =
965
+ "<Select searchable={function (searchValue, item) { return item.label.includes(searchValue); }} items={items} />;";
966
+ const result = transformImportPaths(source, "src/App.tsx");
967
+
968
+ assert.equal(
969
+ result.text.includes(
970
+ "searchable filterFunction={function (item, searchValue) { return item.label.includes(searchValue); }}",
971
+ ),
972
+ true,
973
+ );
974
+ });
975
+
976
+ test("warns when searchable is a function reference that cannot be rewritten automatically", () => {
977
+ const source = "<Select searchable={myFilterFn} items={items} />;";
978
+ const result = transformImportPaths(source, "src/App.tsx");
979
+
980
+ assert.equal(
981
+ result.warnings.some((w) => w.includes("filterFunction")),
982
+ true,
983
+ );
984
+ assert.equal(result.text.includes("searchable={myFilterFn}"), true);
985
+ });
986
+
987
+ test("does not warn about searchable boolean on Select", () => {
988
+ const source = "<Select searchable items={items} />;";
989
+ const result = transformImportPaths(source, "src/App.tsx");
990
+
991
+ assert.equal(
992
+ result.warnings.some((w) => w.includes("filterFunction")),
993
+ false,
994
+ );
995
+ });
996
+
997
+ test("warns about removed Select props", () => {
998
+ const source =
999
+ "<Select invalid maxShownOptions={5} inline items={items} />;";
1000
+ const result = transformImportPaths(source, "src/App.tsx");
1001
+
1002
+ for (const prop of ["invalid", "maxShownOptions", "inline"]) {
1003
+ assert.equal(
1004
+ result.warnings.some((w) => w.includes(`\`${prop}\``)),
1005
+ true,
1006
+ );
1007
+ }
1008
+ });
@@ -16,6 +16,7 @@ import {
16
16
  reorderConfiguredFontImport,
17
17
  } from "./transforms/import-specifiers.mjs";
18
18
  import { applyRegisterWithMaskTransforms } from "./transforms/register-with-mask.mjs";
19
+ import { applySelectTransforms } from "./transforms/select.mjs";
19
20
  import { collectManualMigrationWarnings } from "./transforms/warnings.mjs";
20
21
 
21
22
  const TEXT_EXTENSIONS = new Set([
@@ -75,7 +76,8 @@ export function transformImportPaths(text, filePath = "") {
75
76
  const tailwindColors = applyTailwindColorRenames(cssTokens.text);
76
77
  const expandablePanel = applyExpandablePanelTransforms(tailwindColors.text);
77
78
  const dateInput = applyDateInputTransforms(expandablePanel.text);
78
- const masks = applyRegisterWithMaskTransforms(dateInput.text);
79
+ const select = applySelectTransforms(dateInput.text);
80
+ const masks = applyRegisterWithMaskTransforms(select.text);
79
81
  let next = masks.text;
80
82
  let reordered = false;
81
83
 
@@ -88,6 +90,7 @@ export function transformImportPaths(text, filePath = "") {
88
90
  const warnings = [
89
91
  ...beta.warnings,
90
92
  ...dateInput.warnings,
93
+ ...select.warnings,
91
94
  ...masks.warnings,
92
95
  ...collectManualMigrationWarnings(text),
93
96
  ];
@@ -113,6 +116,7 @@ export function transformImportPaths(text, filePath = "") {
113
116
  tailwindColors.count +
114
117
  expandablePanel.count +
115
118
  dateInput.count +
119
+ select.count +
116
120
  masks.count,
117
121
  warnings,
118
122
  reordered,