@oslokommune/punkt-react 15.4.7 → 16.0.1
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/CHANGELOG.md +73 -0
- package/dist/index.d.ts +38 -15
- package/dist/punkt-react.es.js +12017 -10654
- package/dist/punkt-react.umd.js +562 -549
- package/package.json +5 -5
- package/src/components/combobox/Combobox.accessibility.test.tsx +277 -0
- package/src/components/combobox/Combobox.core.test.tsx +469 -0
- package/src/components/combobox/Combobox.interaction.test.tsx +607 -0
- package/src/components/combobox/Combobox.selection.test.tsx +548 -0
- package/src/components/combobox/Combobox.tsx +59 -54
- package/src/components/combobox/ComboboxInput.tsx +140 -0
- package/src/components/combobox/ComboboxTags.tsx +110 -0
- package/src/components/combobox/Listbox.tsx +172 -0
- package/src/components/combobox/types.ts +145 -0
- package/src/components/combobox/useComboboxState.ts +1141 -0
- package/src/components/datepicker/DatepickerInputs.tsx +9 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,79 @@ og skriver commits ca etter [Conventional Commits](https://conventionalcommits.o
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [16.1.0](https://github.com/oslokommune/punkt/compare/16.0.0...16.1.0) (2026-03-09)
|
|
9
|
+
|
|
10
|
+
### ⚠ BREAKING CHANGES
|
|
11
|
+
Ingen
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
Ingen
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
* Datepicker trenger preventDefault på klikk for å overstyre native kalender (#3363).
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Chores
|
|
21
|
+
Ingen
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## [16.0.0](https://github.com/oslokommune/punkt/compare/15.4.7...16.0.0) (2026-03-06)
|
|
27
|
+
|
|
28
|
+
### ⚠ BREAKING CHANGES
|
|
29
|
+
* Massiv opprydding i PktCombobox (#3327). BREAKING CHANGE: **HTML-attributter har fått kebab-case-navn.** Påvirker kun de som setter disse via HTML-attributter. Property-bruk og React-props er uendret.
|
|
30
|
+
|
|
31
|
+
BREAKING CHANGE: **onValueChange i React** er nå en direkte callback (values: string[]) => void i stedet for CustomEvent
|
|
32
|
+
|
|
33
|
+
**Refaktorering**
|
|
34
|
+
|
|
35
|
+
- Delte typer flyttet til `shared-types/combobox.ts` (IPktComboboxOption, TPktComboboxTagPlacement osv.)
|
|
36
|
+
- Delte utils flyttet til `shared-utils/combobox/` (option-søk, logikk, typeahead, tastaturnavigasjon)
|
|
37
|
+
- `combobox-utils.ts` med Lit-spesifikke hjelpere (keyboard, focus-out, selection, input-state)
|
|
38
|
+
- `combobox-types.ts` som re-eksporterer fra shared-types for bakoverkompatibilitet
|
|
39
|
+
- Listbox refaktorert til å bruke shared-utils i stedet for inline-logikk
|
|
40
|
+
|
|
41
|
+
**Spec-korreksjoner i combobox.json**
|
|
42
|
+
|
|
43
|
+
- `multiple` default rettet fra `true` til `false`
|
|
44
|
+
- `typeahead` default rettet fra `true` til `false`
|
|
45
|
+
- `tagPlacement` default fjernet (var ugyldig `"top"`)
|
|
46
|
+
- `searchPlaceholder` lagt til (manglet)
|
|
47
|
+
|
|
48
|
+
**Kebab-case i Elements-attributter**
|
|
49
|
+
|
|
50
|
+
| Gammel | Ny |
|
|
51
|
+
|---|---|
|
|
52
|
+
| `defaultoptions` | `default-options` |
|
|
53
|
+
| `allowuserinput` | `allow-user-input` |
|
|
54
|
+
| `includesearch` | `include-search` |
|
|
55
|
+
| `searchplaceholder` | `search-placeholder` |
|
|
56
|
+
| `displayvalueas` | `display-value-as` |
|
|
57
|
+
| `tagplacement` | `tag-placement` |
|
|
58
|
+
|
|
59
|
+
**fra feat(css,elements,react): Combobox – fjernet knapp, fikset ARIA (https://github.com/oslokommune/punkt/pull/3348)**
|
|
60
|
+
- Fjernet pilknappen. Dette viste seg å være _betraktelig_ mer komplisert enn jeg skulle ønske, men det ble også en betydelig forbedret brukeropplevelse og en bedre løsning for skjermlesere.
|
|
61
|
+
- Gjort sånn at placeholder på felter med input _faktisk_ er en placeholder og ikke bare en span som later som den er en placeholder.
|
|
62
|
+
- Fiksa så ARIA henger mye mer på greip.
|
|
63
|
+
- Fiksa https://github.com/oslokommune/punkt/issues/3345, problem med foreldreløs "for"
|
|
64
|
+
- Fiksa https://github.com/oslokommune/punkt/issues/3335, problem med å legge til samme verdi flere ganger i multiple med allowUserInput
|
|
65
|
+
- For tags som er _inni_ combobox har jeg nå lagt til navigasjon med piltaster. ARIA Authoring Practices Guide har per nå ingen etablerte mønstre for tags _inni_ en combobox, så jeg har sett på Material UI for å se hvilket mønster de har gått for. Der har de et mønster hvor piltaster setter fokus på tags inni, og man kan bruke backspace for å fjerne et aktivt valg (eller det siste valget dersom ingen er valgt).
|
|
66
|
+
- Splitta opp combobox i Elements i fire filer og organisert dem i klasser som utvides i en kjede. Den beste løsningen jeg klarte å finne for å dele opp koden i mindre bolker. Elements er ikke helt som React, og mange fler ting var avhengig av hverandre.
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
### Features
|
|
70
|
+
Ingen
|
|
71
|
+
|
|
72
|
+
### Bug Fixes
|
|
73
|
+
Ingen
|
|
74
|
+
|
|
75
|
+
### Chores
|
|
76
|
+
Ingen
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
|
|
8
81
|
## [15.4.7](https://github.com/oslokommune/punkt/compare/15.4.6...15.4.7) (2026-03-05)
|
|
9
82
|
|
|
10
83
|
### ⚠ BREAKING CHANGES
|
package/dist/index.d.ts
CHANGED
|
@@ -6,14 +6,13 @@ import { ChangeEventHandler } from 'react';
|
|
|
6
6
|
import { CSSProperties } from 'react';
|
|
7
7
|
import { default as default_2 } from 'react';
|
|
8
8
|
import { FC } from 'react';
|
|
9
|
-
import { FocusEventHandler } from 'react';
|
|
10
9
|
import { ForwardRefExoticComponent } from 'react';
|
|
11
10
|
import { HTMLAttributes } from 'react';
|
|
12
11
|
import { HTMLProps } from 'react';
|
|
13
12
|
import { IDatepickerStrings } from '../../../../../shared-types/datepicker';
|
|
14
13
|
import { InputHTMLAttributes } from 'react';
|
|
15
14
|
import { IPktBackLink as IPktBackLink_2 } from '@oslokommune/punkt-elements';
|
|
16
|
-
import {
|
|
15
|
+
import { IPktComboboxOption } from '../../../../../shared-types/combobox';
|
|
17
16
|
import { IPktConsent as IPktConsent_2 } from '@oslokommune/punkt-elements';
|
|
18
17
|
import { IPktHeading } from '@oslokommune/punkt-elements';
|
|
19
18
|
import { IPktLoader as IPktLoader_2 } from '@oslokommune/punkt-elements';
|
|
@@ -41,6 +40,8 @@ import { THeaderScrollBehavior } from '../../../../../shared-types';
|
|
|
41
40
|
import { TLayout } from '../../../../../shared-types';
|
|
42
41
|
import { TLogOutButtonPlacement } from '../../../../../shared-types';
|
|
43
42
|
import { TMessageboxSkin } from '../../../../../shared-types';
|
|
43
|
+
import { TPktComboboxDisplayValue } from '../../../../../shared-types/combobox';
|
|
44
|
+
import { TPktComboboxTagPlacement } from '../../../../../shared-types/combobox';
|
|
44
45
|
import { TSlotMenuVariant } from '../../../../../shared-types';
|
|
45
46
|
|
|
46
47
|
declare interface BasePktTagProps {
|
|
@@ -67,8 +68,6 @@ declare interface Column {
|
|
|
67
68
|
|
|
68
69
|
declare type ExtendedBackLink = Omit<IPktBackLink_2, 'text'> & AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
69
70
|
|
|
70
|
-
declare type ExtendedCombobox = Omit<IPktCombobox_2, 'helptext'> & SelectHTMLAttributes<HTMLSelectElement>;
|
|
71
|
-
|
|
72
71
|
declare type ExtendedLoader = IPktLoader_2 & PktElType;
|
|
73
72
|
|
|
74
73
|
declare type ExtendedProgressbar = IPktProgressbar_2 & PktElType;
|
|
@@ -338,17 +337,41 @@ export declare interface IPktCheckbox extends InputHTMLAttributes<HTMLInputEleme
|
|
|
338
337
|
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
339
338
|
}
|
|
340
339
|
|
|
341
|
-
export declare interface IPktCombobox
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
340
|
+
export declare interface IPktCombobox {
|
|
341
|
+
value?: string | string[];
|
|
342
|
+
defaultValue?: string | string[];
|
|
343
|
+
options?: IPktComboboxOption[];
|
|
344
|
+
defaultOptions?: IPktComboboxOption[];
|
|
345
|
+
multiple?: boolean;
|
|
346
|
+
maxlength?: number;
|
|
347
|
+
typeahead?: boolean;
|
|
348
|
+
includeSearch?: boolean;
|
|
349
|
+
allowUserInput?: boolean;
|
|
350
|
+
displayValueAs?: TPktComboboxDisplayValue;
|
|
351
|
+
tagPlacement?: TPktComboboxTagPlacement;
|
|
352
|
+
searchPlaceholder?: string;
|
|
353
|
+
name?: string;
|
|
354
|
+
id?: string;
|
|
355
|
+
disabled?: boolean;
|
|
356
|
+
required?: boolean;
|
|
357
|
+
placeholder?: string;
|
|
358
|
+
label?: string;
|
|
359
|
+
helptext?: string | ReactNode;
|
|
360
|
+
helptextDropdown?: string | ReactNode;
|
|
361
|
+
helptextDropdownButton?: string;
|
|
362
|
+
hasError?: boolean;
|
|
363
|
+
errorMessage?: string | ReactNode;
|
|
364
|
+
fullwidth?: boolean;
|
|
365
|
+
requiredTag?: boolean;
|
|
366
|
+
requiredText?: string;
|
|
367
|
+
optionalTag?: boolean;
|
|
368
|
+
optionalText?: string;
|
|
369
|
+
tagText?: string;
|
|
351
370
|
useWrapper?: boolean;
|
|
371
|
+
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
372
|
+
onValueChange?: (values: string[]) => void;
|
|
373
|
+
className?: string;
|
|
374
|
+
children?: ReactNode;
|
|
352
375
|
}
|
|
353
376
|
|
|
354
377
|
declare interface IPktConsent extends IPktConsent_2 {
|
|
@@ -893,7 +916,7 @@ export declare const PktCard: FC<IPktCard>;
|
|
|
893
916
|
|
|
894
917
|
export declare const PktCheckbox: ForwardRefExoticComponent<IPktCheckbox & RefAttributes<HTMLInputElement>>;
|
|
895
918
|
|
|
896
|
-
export declare const PktCombobox:
|
|
919
|
+
export declare const PktCombobox: ForwardRefExoticComponent<IPktCombobox & RefAttributes<HTMLDivElement>>;
|
|
897
920
|
|
|
898
921
|
export declare const PktConsent: ForwardRefExoticComponent<IPktConsent>;
|
|
899
922
|
|