@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/CHANGELOG.md +18 -0
- package/dist/index.d.ts +13 -6
- package/dist/punkt-react.es.js +2153 -2137
- package/dist/punkt-react.umd.js +220 -218
- package/package.json +3 -3
- package/src/components/header/HeaderService.tsx +8 -6
- package/src/components/header/types.ts +23 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oslokommune/punkt-react",
|
|
3
|
-
"version": "14.
|
|
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.
|
|
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": "
|
|
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,
|
|
12
|
+
import { User, Representing, UserMenuItem, UserMenuFooterItem, IPktHeader, THeaderMenu } from './types'
|
|
13
13
|
|
|
14
|
-
export type { User, Representing, UserMenuItem, UserMenuFooterItem,
|
|
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:
|
|
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:
|
|
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=
|
|
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
|
-
|
|
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?:
|
|
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?:
|
|
98
|
+
openedMenu?: THeaderMenu
|
|
86
99
|
/** Header position. 'fixed' fixes to top of viewport, 'relative' follows document flow. Default: 'fixed' */
|
|
87
|
-
position?:
|
|
100
|
+
position?: THeaderPosition
|
|
88
101
|
/** Scroll behavior. 'hide' hides header on scroll down, 'none' keeps it visible. Default: 'hide' */
|
|
89
|
-
scrollBehavior?:
|
|
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
|
}
|