@oslokommune/punkt-react 15.4.6 → 16.0.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.
Files changed (29) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/index.d.ts +38 -15
  3. package/dist/punkt-react.es.js +12025 -10664
  4. package/dist/punkt-react.umd.js +562 -549
  5. package/package.json +5 -5
  6. package/src/components/accordion/Accordion.test.tsx +3 -2
  7. package/src/components/alert/Alert.test.tsx +2 -1
  8. package/src/components/backlink/BackLink.test.tsx +2 -1
  9. package/src/components/button/Button.test.tsx +4 -3
  10. package/src/components/calendar/Calendar.interaction.test.tsx +2 -1
  11. package/src/components/checkbox/Checkbox.test.tsx +2 -1
  12. package/src/components/combobox/Combobox.accessibility.test.tsx +277 -0
  13. package/src/components/combobox/Combobox.core.test.tsx +469 -0
  14. package/src/components/combobox/Combobox.interaction.test.tsx +607 -0
  15. package/src/components/combobox/Combobox.selection.test.tsx +548 -0
  16. package/src/components/combobox/Combobox.tsx +59 -54
  17. package/src/components/combobox/ComboboxInput.tsx +140 -0
  18. package/src/components/combobox/ComboboxTags.tsx +110 -0
  19. package/src/components/combobox/Listbox.tsx +172 -0
  20. package/src/components/combobox/types.ts +145 -0
  21. package/src/components/combobox/useComboboxState.ts +1141 -0
  22. package/src/components/datepicker/Datepicker.accessibility.test.tsx +5 -4
  23. package/src/components/datepicker/Datepicker.input.test.tsx +3 -2
  24. package/src/components/datepicker/Datepicker.selection.test.tsx +8 -8
  25. package/src/components/datepicker/Datepicker.validation.test.tsx +2 -1
  26. package/src/components/radio/RadioButton.test.tsx +3 -2
  27. package/src/components/searchinput/SearchInput.test.tsx +6 -5
  28. package/src/components/tabs/Tabs.test.tsx +13 -12
  29. package/src/components/tag/Tag.test.tsx +2 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,80 @@ og skriver commits ca etter [Conventional Commits](https://conventionalcommits.o
5
5
 
6
6
  ---
7
7
 
8
+ ## [16.0.0](https://github.com/oslokommune/punkt/compare/15.4.7...16.0.0) (2026-03-06)
9
+
10
+ ### ⚠ BREAKING CHANGES
11
+ * 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.
12
+
13
+ BREAKING CHANGE: **onValueChange i React** er nå en direkte callback (values: string[]) => void i stedet for CustomEvent
14
+
15
+ **Refaktorering**
16
+
17
+ - Delte typer flyttet til `shared-types/combobox.ts` (IPktComboboxOption, TPktComboboxTagPlacement osv.)
18
+ - Delte utils flyttet til `shared-utils/combobox/` (option-søk, logikk, typeahead, tastaturnavigasjon)
19
+ - `combobox-utils.ts` med Lit-spesifikke hjelpere (keyboard, focus-out, selection, input-state)
20
+ - `combobox-types.ts` som re-eksporterer fra shared-types for bakoverkompatibilitet
21
+ - Listbox refaktorert til å bruke shared-utils i stedet for inline-logikk
22
+
23
+ **Spec-korreksjoner i combobox.json**
24
+
25
+ - `multiple` default rettet fra `true` til `false`
26
+ - `typeahead` default rettet fra `true` til `false`
27
+ - `tagPlacement` default fjernet (var ugyldig `"top"`)
28
+ - `searchPlaceholder` lagt til (manglet)
29
+
30
+ **Kebab-case i Elements-attributter**
31
+
32
+ | Gammel | Ny |
33
+ |---|---|
34
+ | `defaultoptions` | `default-options` |
35
+ | `allowuserinput` | `allow-user-input` |
36
+ | `includesearch` | `include-search` |
37
+ | `searchplaceholder` | `search-placeholder` |
38
+ | `displayvalueas` | `display-value-as` |
39
+ | `tagplacement` | `tag-placement` |
40
+
41
+ **fra feat(css,elements,react): Combobox – fjernet knapp, fikset ARIA (https://github.com/oslokommune/punkt/pull/3348)**
42
+ - 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.
43
+ - 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.
44
+ - Fiksa så ARIA henger mye mer på greip.
45
+ - Fiksa https://github.com/oslokommune/punkt/issues/3345, problem med foreldreløs "for"
46
+ - Fiksa https://github.com/oslokommune/punkt/issues/3335, problem med å legge til samme verdi flere ganger i multiple med allowUserInput
47
+ - 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).
48
+ - 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.
49
+
50
+
51
+ ### Features
52
+ Ingen
53
+
54
+ ### Bug Fixes
55
+ Ingen
56
+
57
+ ### Chores
58
+ Ingen
59
+
60
+ ---
61
+
62
+
63
+ ## [15.4.7](https://github.com/oslokommune/punkt/compare/15.4.6...15.4.7) (2026-03-05)
64
+
65
+ ### ⚠ BREAKING CHANGES
66
+ Ingen
67
+
68
+ ### Features
69
+ Ingen
70
+
71
+ ### Bug Fixes
72
+ Ingen
73
+
74
+ ### Chores
75
+ * migrate from jest.fn to vi.fn in tests (#3346). - Fjernet jest.fn-shim fra react/src/setupTests.ts
76
+ - Erstattet jest.fn med vi.fn i alle React-tester og lagt til import { vi } from 'vitest' alle relevante steder
77
+
78
+
79
+ ---
80
+
81
+
8
82
  ## [15.4.6](https://github.com/oslokommune/punkt/compare/15.4.5...15.4.6) (2026-03-02)
9
83
 
10
84
  ### ⚠ 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 { IPktCombobox as IPktCombobox_2 } from '@oslokommune/punkt-elements';
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 extends ExtendedCombobox {
342
- helptext?: string | ReactNode | ReactNode[];
343
- ref?: LegacyRef<HTMLSelectElement>;
344
- onClick?: MouseEventHandler<HTMLSelectElement>;
345
- onChange?: ChangeEventHandler<HTMLSelectElement>;
346
- onInput?: ChangeEventHandler<HTMLSelectElement>;
347
- onBlur?: FocusEventHandler<HTMLSelectElement>;
348
- onFocus?: FocusEventHandler<HTMLSelectElement>;
349
- onValueChange?: (e: CustomEvent) => void;
350
- onToggleHelpText?: (e: CustomEvent) => void;
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: FC<IPktCombobox>;
919
+ export declare const PktCombobox: ForwardRefExoticComponent<IPktCombobox & RefAttributes<HTMLDivElement>>;
897
920
 
898
921
  export declare const PktConsent: ForwardRefExoticComponent<IPktConsent>;
899
922