@oslokommune/punkt-react 13.22.0 → 14.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 +44 -0
- package/dist/index.d.ts +78 -15
- package/dist/punkt-react.es.js +5090 -3965
- package/dist/punkt-react.umd.js +749 -448
- package/package.json +5 -5
- package/src/components/header/Header.test.tsx +33 -27
- package/src/components/header/Header.tsx +23 -342
- package/src/components/header/HeaderService.test.tsx +515 -0
- package/src/components/header/HeaderService.tsx +525 -0
- package/src/components/header/types.ts +90 -0
- package/src/components/headerUserMenu/UserMenu.test.tsx +75 -0
- package/src/components/headerUserMenu/UserMenu.tsx +173 -0
- package/src/components/index.ts +1 -0
- package/src/components/interfaces.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,50 @@ og skriver commits ca etter [Conventional Commits](https://conventionalcommits.o
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [14.0.0](https://github.com/oslokommune/punkt/compare/13.22.0...14.0.0) (2026-02-02)
|
|
9
|
+
|
|
10
|
+
### ⚠ BREAKING CHANGES
|
|
11
|
+
* Header (Service) (#3192) Nå også som custom element!. BREAKING CHANGE: Fjernet 'logIn' event (kun 'logOut' støttes nå)
|
|
12
|
+
BREAKING CHANGE: Erstattet 'fixed' prop med 'position' (verdier: 'fixed' | 'relative', default: 'fixed')
|
|
13
|
+
BREAKING CHANGE: Erstattet 'scrollToHide' prop med 'scrollBehavior' (verdier: 'hide' | 'none', default: 'hide')
|
|
14
|
+
BREAKING CHANGE: Erstattet 'showLogOutButton' med 'logOutButtonPlacement' (verdier: 'userMenu' | 'header' | 'both' | 'none', default: 'none')
|
|
15
|
+
BREAKING CHANGE: Fjernet 'showMenuButton' prop
|
|
16
|
+
BREAKING CHANGE: Fjernet 'user.shortname' fra user-objektet
|
|
17
|
+
BREAKING CHANGE: Fjernet 'representing.shortname' fra representing-objektet
|
|
18
|
+
BREAKING CHANGE: Endret 'userMenu.items.target' type fra 'string' til 'string | function'
|
|
19
|
+
BREAKING CHANGE: Utdatert 'userMenuFooter' og 'userOptions' props (bruk 'userMenu' i stedet)
|
|
20
|
+
BREAKING CHANGE: Fjernet default verdi for 'logoLink' (var `https://www.oslo.kommune.no/`)
|
|
21
|
+
|
|
22
|
+
NYE FEATURES:
|
|
23
|
+
- Lagt til søkefunksjonalitet med props: 'showSearch', 'searchPlaceholder', 'searchValue'
|
|
24
|
+
- Nye events: 'onSearch' og 'onSearchChange' for søkeinteraksjon
|
|
25
|
+
- Nye events: 'logoClick' og 'serviceClick' for klikkhåndtering
|
|
26
|
+
- Nye React-props: 'logoClick' og 'serviceClick' callbacks
|
|
27
|
+
- Lagt til 'serviceLink' prop for tjenestenavnlenke
|
|
28
|
+
- Lagt til 'hideLogo' prop for å skjule Oslo-logoen
|
|
29
|
+
- Lagt til 'compact' prop for kompakt header-høyde
|
|
30
|
+
- Lagt til 'mobileBreakpoint' prop (default: 768px) for mobil-layout
|
|
31
|
+
- Lagt til 'tabletBreakpoint' prop (default: 1280px) for tablet-layout
|
|
32
|
+
- Lagt til 'openedMenu' prop for å kontrollere hvilken meny som er åpen ved oppstart
|
|
33
|
+
|
|
34
|
+
FUNKSJONELLE ENDRINGER:
|
|
35
|
+
- Alle events har nå 'attribute' felt for custom element-støtte
|
|
36
|
+
- Forbedret type-dokumentasjon for 'user.lastLoggedIn' (string | Date)
|
|
37
|
+
- Forbedret type-dokumentasjon for 'representing.orgNumber' (string | number)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
Ingen
|
|
42
|
+
|
|
43
|
+
### Bug Fixes
|
|
44
|
+
Ingen
|
|
45
|
+
|
|
46
|
+
### Chores
|
|
47
|
+
Ingen
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
|
|
8
52
|
## [13.21.0](https://github.com/oslokommune/punkt/compare/13.20.0...13.21.0) (2026-01-30)
|
|
9
53
|
|
|
10
54
|
### ⚠ BREAKING CHANGES
|
package/dist/index.d.ts
CHANGED
|
@@ -286,24 +286,65 @@ export declare interface IPktFooterSimple extends HTMLAttributes<HTMLDivElement>
|
|
|
286
286
|
onToggleConsent?: (e: CustomEvent) => void;
|
|
287
287
|
}
|
|
288
288
|
|
|
289
|
-
export declare interface IPktHeader
|
|
290
|
-
|
|
289
|
+
export declare interface IPktHeader {
|
|
290
|
+
children?: React.ReactNode;
|
|
291
|
+
/** Set dark mode on the header */
|
|
292
|
+
'data-mode'?: 'dark';
|
|
293
|
+
/** Hide the Oslo logo. Default: false (logo is shown) */
|
|
294
|
+
hideLogo?: boolean;
|
|
295
|
+
/** Link URL for the logo */
|
|
296
|
+
logoLink?: string;
|
|
297
|
+
/** Callback when logo is clicked */
|
|
298
|
+
logoClick?: (event: React.MouseEvent) => void;
|
|
299
|
+
/** Name of the service displayed in the header */
|
|
291
300
|
serviceName?: string;
|
|
292
|
-
|
|
293
|
-
|
|
301
|
+
/** Link URL for the service name */
|
|
302
|
+
serviceLink?: string;
|
|
303
|
+
/** Callback when service name is clicked */
|
|
304
|
+
serviceClick?: (event: React.MouseEvent) => void;
|
|
305
|
+
/** Use compact header height */
|
|
306
|
+
compact?: boolean;
|
|
307
|
+
/** User object with name, shortname, and lastLoggedIn */
|
|
294
308
|
user?: User;
|
|
309
|
+
/** User menu items displayed in the dropdown */
|
|
295
310
|
userMenu?: UserMenuItem[];
|
|
311
|
+
/** Representing object with name, shortname, and orgNumber */
|
|
296
312
|
representing?: Representing;
|
|
297
|
-
|
|
298
|
-
userMenuFooter?: UserMenuFooterItem[];
|
|
313
|
+
/** Whether the user can change representation. Shows "Endre organisasjon" button */
|
|
299
314
|
canChangeRepresentation?: boolean;
|
|
300
|
-
|
|
301
|
-
showLogOutButton?: boolean;
|
|
302
|
-
openMenu?: () => void;
|
|
303
|
-
logOut?: () => void;
|
|
315
|
+
/** Callback when user clicks "Endre organisasjon" */
|
|
304
316
|
changeRepresentation?: () => void;
|
|
305
|
-
|
|
306
|
-
|
|
317
|
+
/** @deprecated Use userMenu instead. Will show console.warn if used. */
|
|
318
|
+
userMenuFooter?: UserMenuFooterItem[];
|
|
319
|
+
/** @deprecated userOptions is no longer available. Use userMenu instead. */
|
|
320
|
+
userOptions?: UserMenuItem[];
|
|
321
|
+
/** Where to show the logout button: 'userMenu', 'header', 'both', or 'none' */
|
|
322
|
+
logOutButtonPlacement?: 'userMenu' | 'header' | 'both' | 'none';
|
|
323
|
+
/** Callback when user clicks logout */
|
|
324
|
+
logOut?: () => void;
|
|
325
|
+
/** Show search input in the header */
|
|
326
|
+
showSearch?: boolean;
|
|
327
|
+
/** Callback when user submits search (presses Enter) */
|
|
328
|
+
onSearch?: (query: string) => void;
|
|
329
|
+
/** Callback when search input value changes */
|
|
330
|
+
onSearchChange?: (query: string) => void;
|
|
331
|
+
/** Controlled value for the search input */
|
|
332
|
+
searchValue?: string;
|
|
333
|
+
/** Placeholder text for the search input. Default: "Søk" */
|
|
334
|
+
searchPlaceholder?: string;
|
|
335
|
+
/** Custom breakpoint for responsive behavior (grid layout) in pixels. Default: 1024 */
|
|
336
|
+
mobileBreakpoint?: number;
|
|
337
|
+
/** Custom breakpoint for tablet responsive behavior (interaction pattern) in pixels. Default: 1280 */
|
|
338
|
+
tabletBreakpoint?: number;
|
|
339
|
+
/** Which menu is initially open */
|
|
340
|
+
openedMenu?: TPktHeaderServiceMenu;
|
|
341
|
+
/** Header position. 'fixed' fixes to top of viewport, 'relative' follows document flow. Default: 'fixed' */
|
|
342
|
+
position?: 'fixed' | 'relative';
|
|
343
|
+
/** Scroll behavior. 'hide' hides header on scroll down, 'none' keeps it visible. Default: 'hide' */
|
|
344
|
+
scrollBehavior?: 'hide' | 'none';
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
export declare type IPktHeaderService = IPktHeader;
|
|
307
348
|
|
|
308
349
|
declare interface IPktHeading_2 extends IPktHeading {
|
|
309
350
|
children?: default_2.ReactNode | default_2.ReactNode[];
|
|
@@ -705,7 +746,21 @@ export declare const PktFooter: FC<IPktFooter>;
|
|
|
705
746
|
|
|
706
747
|
export declare const PktFooterSimple: FC<IPktFooterSimple>;
|
|
707
748
|
|
|
708
|
-
|
|
749
|
+
/**
|
|
750
|
+
* PktHeader - Main header component for Oslo kommune services
|
|
751
|
+
*
|
|
752
|
+
* This component provides a complete header solution with:
|
|
753
|
+
* - Logo and service name
|
|
754
|
+
* - User menu with login/logout functionality
|
|
755
|
+
* - Search functionality
|
|
756
|
+
* - Responsive mobile menu
|
|
757
|
+
* - Fixed positioning with scroll-to-hide
|
|
758
|
+
*
|
|
759
|
+
* TODO: Add `type` prop to switch between `service` and `global` header types
|
|
760
|
+
*/
|
|
761
|
+
export declare const PktHeader: ForwardRefExoticComponent<IPktHeader & RefAttributes<HTMLDivElement>>;
|
|
762
|
+
|
|
763
|
+
export declare const PktHeaderService: ForwardRefExoticComponent<IPktHeader & RefAttributes<HTMLDivElement>>;
|
|
709
764
|
|
|
710
765
|
export declare const PktHeading: FC<IPktHeading_2>;
|
|
711
766
|
|
|
@@ -776,8 +831,10 @@ export declare const PktTextarea: default_2.ForwardRefExoticComponent<IPktTextar
|
|
|
776
831
|
|
|
777
832
|
export declare const PktTextinput: default_2.ForwardRefExoticComponent<IPktTextinput & default_2.RefAttributes<HTMLInputElement>>;
|
|
778
833
|
|
|
834
|
+
/** Representing object for header components */
|
|
779
835
|
declare interface Representing {
|
|
780
|
-
name
|
|
836
|
+
name: string;
|
|
837
|
+
/** @deprecated shortname is deprecated and will be removed in a future version */
|
|
781
838
|
shortname?: string;
|
|
782
839
|
orgNumber?: string | number;
|
|
783
840
|
}
|
|
@@ -818,23 +875,29 @@ declare type TPktAccordionSkin = 'borderless' | 'outlined' | 'beige' | 'blue';
|
|
|
818
875
|
|
|
819
876
|
declare type TPktAccordionSkin_2 = 'borderless' | 'outlined' | 'beige' | 'blue';
|
|
820
877
|
|
|
878
|
+
declare type TPktHeaderServiceMenu = 'none' | 'slot' | 'search' | 'user';
|
|
879
|
+
|
|
821
880
|
declare type TSkin = 'blue' | 'green' | 'red' | 'beige' | 'yellow' | 'grey' | 'gray' | 'blue-light';
|
|
822
881
|
|
|
823
882
|
declare type TSkin_2 = IPktTag['skin'];
|
|
824
883
|
|
|
825
884
|
declare type TStepStatus = 'completed' | 'incomplete' | 'current';
|
|
826
885
|
|
|
886
|
+
/** User object for header components */
|
|
827
887
|
declare interface User {
|
|
828
|
-
name
|
|
888
|
+
name: string;
|
|
889
|
+
/** @deprecated shortname is deprecated and will be removed in a future version */
|
|
829
890
|
shortname?: string;
|
|
830
891
|
lastLoggedIn?: string | Date;
|
|
831
892
|
}
|
|
832
893
|
|
|
894
|
+
/** @deprecated Use UserMenuItem instead */
|
|
833
895
|
declare interface UserMenuFooterItem {
|
|
834
896
|
title: string;
|
|
835
897
|
target: string | (() => void);
|
|
836
898
|
}
|
|
837
899
|
|
|
900
|
+
/** User menu item for header components */
|
|
838
901
|
declare interface UserMenuItem {
|
|
839
902
|
iconName?: string;
|
|
840
903
|
title: string;
|