@oslokommune/punkt-react 14.2.0 → 14.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oslokommune/punkt-react",
3
- "version": "14.2.0",
3
+ "version": "14.3.0",
4
4
  "description": "React komponentbibliotek til Punkt, et designsystem laget av Oslo Origo",
5
5
  "homepage": "https://punkt.oslo.kommune.no",
6
6
  "author": "Team Designsystem, Oslo Origo",
@@ -39,7 +39,7 @@
39
39
  "dependencies": {
40
40
  "@lit-labs/ssr-dom-shim": "^1.2.1",
41
41
  "@lit/react": "^1.0.7",
42
- "@oslokommune/punkt-elements": "^14.2.0",
42
+ "@oslokommune/punkt-elements": "^14.3.0",
43
43
  "classnames": "^2.5.1",
44
44
  "prettier": "^3.3.3",
45
45
  "react-hook-form": "^7.53.0"
@@ -103,5 +103,5 @@
103
103
  "url": "https://github.com/oslokommune/punkt/issues"
104
104
  },
105
105
  "license": "MIT",
106
- "gitHead": "47682b6620c3d10622e5121814954fa294996b9b"
106
+ "gitHead": "892df7abaa2e9e117dc32b0c44c77592c80233cb"
107
107
  }
@@ -9,9 +9,9 @@ import { PktTextinput } from '../textinput/Textinput'
9
9
  import { useElementWidth } from '../../hooks/useElementWidth'
10
10
  import classNames from 'classnames'
11
11
  import { useScrollLock } from '../../hooks/useScrollLock'
12
- import { User, Representing, UserMenuItem, UserMenuFooterItem, IPktHeader, TPktHeaderServiceMenu } from './types'
12
+ import { User, Representing, UserMenuItem, UserMenuFooterItem, IPktHeader, THeaderMenu } from './types'
13
13
 
14
- export type { User, Representing, UserMenuItem, UserMenuFooterItem, TPktHeaderServiceMenu }
14
+ export type { User, Representing, UserMenuItem, UserMenuFooterItem, THeaderMenu }
15
15
  export type IPktHeaderService = IPktHeader
16
16
 
17
17
  export const PktHeaderService = forwardRef(
@@ -45,6 +45,8 @@ export const PktHeaderService = forwardRef(
45
45
  logoClick,
46
46
  position = 'fixed',
47
47
  scrollBehavior = 'hide',
48
+ slotMenuVariant = 'icon-only',
49
+ slotMenuText = 'Meny',
48
50
  }: IPktHeaderService,
49
51
  ref: ForwardedRef<HTMLDivElement>,
50
52
  ) => {
@@ -126,7 +128,7 @@ export const PktHeaderService = forwardRef(
126
128
 
127
129
  useScrollLock(isFixed && isMobile && openMenu !== 'none')
128
130
 
129
- const handleFocusOut = useCallback((event: React.FocusEvent<HTMLDivElement>, menuType: TPktHeaderServiceMenu) => {
131
+ const handleFocusOut = useCallback((event: React.FocusEvent<HTMLDivElement>, menuType: THeaderMenu) => {
130
132
  const relatedTarget = event.relatedTarget as HTMLElement | null
131
133
 
132
134
  let containerRef: React.RefObject<HTMLDivElement>
@@ -246,7 +248,7 @@ export const PktHeaderService = forwardRef(
246
248
  )
247
249
 
248
250
  const handleMenuToggle = useCallback(
249
- (mode: TPktHeaderServiceMenu) => {
251
+ (mode: THeaderMenu) => {
250
252
  if (openMenu !== 'none') {
251
253
  setOpenMenu('none')
252
254
  } else {
@@ -343,7 +345,7 @@ export const PktHeaderService = forwardRef(
343
345
  {isTablet && children && (
344
346
  <PktButton
345
347
  skin="secondary"
346
- variant="icon-only"
348
+ variant={slotMenuVariant}
347
349
  iconName="menu"
348
350
  size={isMobile ? 'small' : 'medium'}
349
351
  state={openMenu === 'slot' ? 'active' : 'normal'}
@@ -352,7 +354,7 @@ export const PktHeaderService = forwardRef(
352
354
  aria-controls="mobile-slot-menu"
353
355
  aria-label="Åpne meny"
354
356
  >
355
- Meny
357
+ {slotMenuText}
356
358
  </PktButton>
357
359
  )}
358
360
  <div
@@ -1,4 +1,19 @@
1
1
  import { TBreakpoint } from '../../types/breakpoint'
2
+ import type {
3
+ TSlotMenuVariant,
4
+ THeaderMenu,
5
+ TLogOutButtonPlacement,
6
+ THeaderPosition,
7
+ THeaderScrollBehavior,
8
+ } from 'shared-types'
9
+
10
+ export type {
11
+ TSlotMenuVariant,
12
+ THeaderMenu,
13
+ TLogOutButtonPlacement,
14
+ THeaderPosition,
15
+ THeaderScrollBehavior,
16
+ }
2
17
 
3
18
  /** User object for header components */
4
19
  export interface User {
@@ -29,8 +44,6 @@ export interface UserMenuFooterItem {
29
44
  target: string | (() => void)
30
45
  }
31
46
 
32
- export type TPktHeaderServiceMenu = 'none' | 'slot' | 'search' | 'user'
33
-
34
47
  export interface IPktHeader {
35
48
  children?: React.ReactNode
36
49
  /** Set dark mode on the header */
@@ -64,7 +77,7 @@ export interface IPktHeader {
64
77
  /** @deprecated userOptions is no longer available. Use userMenu instead. */
65
78
  userOptions?: UserMenuItem[]
66
79
  /** Where to show the logout button: 'userMenu', 'header', 'both', or 'none' */
67
- logOutButtonPlacement?: 'userMenu' | 'header' | 'both' | 'none'
80
+ logOutButtonPlacement?: TLogOutButtonPlacement
68
81
  /** Callback when user clicks logout */
69
82
  logOut?: () => void
70
83
  /** Show search input in the header */
@@ -82,9 +95,13 @@ export interface IPktHeader {
82
95
  /** Custom breakpoint for tablet responsive behavior (interaction pattern) in pixels. Default: 1280 */
83
96
  tabletBreakpoint?: number
84
97
  /** Which menu is initially open */
85
- openedMenu?: TPktHeaderServiceMenu
98
+ openedMenu?: THeaderMenu
86
99
  /** Header position. 'fixed' fixes to top of viewport, 'relative' follows document flow. Default: 'fixed' */
87
- position?: 'fixed' | 'relative'
100
+ position?: THeaderPosition
88
101
  /** Scroll behavior. 'hide' hides header on scroll down, 'none' keeps it visible. Default: 'hide' */
89
- scrollBehavior?: 'hide' | 'none'
102
+ scrollBehavior?: THeaderScrollBehavior
103
+ /** Variant for the slot menu button in tablet/mobile mode. Default: 'icon-only' */
104
+ slotMenuVariant?: TSlotMenuVariant
105
+ /** Text for the slot menu button in tablet/mobile mode. Default: 'Meny' */
106
+ slotMenuText?: string
90
107
  }