@oslokommune/punkt-react 16.25.0 → 16.26.2
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 +46 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +1 -1
- package/dist/components/accordion/Accordion.d.ts +21 -0
- package/dist/components/accordion/Accordion.test.d.ts +0 -0
- package/dist/components/accordion/AccordionItem.d.ts +17 -0
- package/dist/components/alert/Alert.d.ts +14 -0
- package/dist/components/alert/Alert.test.d.ts +0 -0
- package/dist/components/backlink/BackLink.d.ts +14 -0
- package/dist/components/backlink/BackLink.test.d.ts +0 -0
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts +16 -0
- package/dist/components/breadcrumbs/Breadcrumbs.test.d.ts +1 -0
- package/dist/components/button/Button.d.ts +24 -0
- package/dist/components/button/Button.test.d.ts +0 -0
- package/dist/components/calendar/Calendar.accessibility.test.d.ts +0 -0
- package/dist/components/calendar/Calendar.constraints.test.d.ts +0 -0
- package/dist/components/calendar/Calendar.core.test.d.ts +0 -0
- package/dist/components/calendar/Calendar.d.ts +3 -0
- package/dist/components/calendar/Calendar.interaction.test.d.ts +0 -0
- package/dist/components/calendar/Calendar.selection.test.d.ts +0 -0
- package/dist/components/calendar/CalendarGrid.d.ts +4 -0
- package/dist/components/calendar/CalendarNav.d.ts +2 -0
- package/dist/components/calendar/calendar-utils.d.ts +20 -0
- package/dist/components/calendar/types.d.ts +104 -0
- package/dist/components/calendar/useCalendarState.d.ts +2 -0
- package/dist/components/card/Card.d.ts +37 -0
- package/dist/components/card/Card.test.d.ts +0 -0
- package/dist/components/checkbox/Checkbox.d.ts +23 -0
- package/dist/components/checkbox/Checkbox.test.d.ts +0 -0
- package/dist/components/combobox/Combobox.accessibility.test.d.ts +0 -0
- package/dist/components/combobox/Combobox.core.test.d.ts +0 -0
- package/dist/components/combobox/Combobox.d.ts +3 -0
- package/dist/components/combobox/Combobox.interaction.test.d.ts +0 -0
- package/dist/components/combobox/Combobox.selection.test.d.ts +0 -0
- package/dist/components/combobox/ComboboxInput.d.ts +6 -0
- package/dist/components/combobox/ComboboxTags.d.ts +11 -0
- package/dist/components/combobox/Listbox.d.ts +6 -0
- package/dist/components/combobox/types.d.ts +104 -0
- package/dist/components/combobox/useComboboxState.d.ts +2 -0
- package/dist/components/consent/Consent.d.ts +51 -0
- package/dist/components/consent/Consent.test.d.ts +0 -0
- package/dist/components/consent/strings.d.ts +85 -0
- package/dist/components/datepicker/DateTags.d.ts +10 -0
- package/dist/components/datepicker/Datepicker.accessibility.test.d.ts +0 -0
- package/dist/components/datepicker/Datepicker.core.test.d.ts +0 -0
- package/dist/components/datepicker/Datepicker.d.ts +3 -0
- package/dist/components/datepicker/Datepicker.input.test.d.ts +0 -0
- package/dist/components/datepicker/Datepicker.selection.test.d.ts +0 -0
- package/dist/components/datepicker/Datepicker.validation.test.d.ts +0 -0
- package/dist/components/datepicker/DatepickerInputs.d.ts +4 -0
- package/dist/components/datepicker/DatepickerPopup.d.ts +21 -0
- package/dist/components/datepicker/types.d.ts +109 -0
- package/dist/components/datepicker/useDatepickerState.d.ts +2 -0
- package/dist/components/fileupload/DropZone.d.ts +42 -0
- package/dist/components/fileupload/FileUpload.d.ts +84 -0
- package/dist/components/fileupload/FileUpload.test.d.ts +0 -0
- package/dist/components/fileupload/QueueDisplay.d.ts +19 -0
- package/dist/components/fileupload/QueueDisplay.test.d.ts +0 -0
- package/dist/components/fileupload/QueueItemContent.d.ts +44 -0
- package/dist/components/fileupload/Subcomponents.d.ts +36 -0
- package/dist/components/fileupload/Truncate.d.ts +20 -0
- package/dist/components/fileupload/Truncate.test.d.ts +0 -0
- package/dist/components/fileupload/extensions/Comments.d.ts +6 -0
- package/dist/components/fileupload/extensions/Remove.d.ts +2 -0
- package/dist/components/fileupload/extensions/Rename.d.ts +2 -0
- package/dist/components/fileupload/hooks/index.d.ts +4 -0
- package/dist/components/fileupload/hooks/useFileAttributes.d.ts +10 -0
- package/dist/components/fileupload/hooks/useImagePreview.d.ts +9 -0
- package/dist/components/fileupload/hooks/useOperationState.d.ts +6 -0
- package/dist/components/fileupload/hooks/useRequiredFormValidation.d.ts +16 -0
- package/dist/components/fileupload/hooks.d.ts +4 -0
- package/dist/components/fileupload/types.d.ts +88 -0
- package/dist/components/fileupload/utils.d.ts +5 -0
- package/dist/components/footer/Footer.d.ts +36 -0
- package/dist/components/footer/Footer.test.d.ts +0 -0
- package/dist/components/footerSimple/FooterSimple.d.ts +21 -0
- package/dist/components/footerSimple/FooterSimple.test.d.ts +0 -0
- package/dist/components/header/Header.d.ts +15 -0
- package/dist/components/header/Header.test.d.ts +0 -0
- package/dist/components/header/HeaderService.d.ts +9 -0
- package/dist/components/header/HeaderService.test.d.ts +0 -0
- package/dist/components/header/types.d.ts +93 -0
- package/dist/components/header-menu/HeaderMenu.d.ts +26 -0
- package/dist/components/header-menu/HeaderMenu.test.d.ts +0 -0
- package/dist/components/headerUserMenu/UserMenu.d.ts +11 -0
- package/dist/components/headerUserMenu/UserMenu.test.d.ts +0 -0
- package/dist/components/heading/Heading.d.ts +14 -0
- package/dist/components/heading/Heading.test.d.ts +0 -0
- package/dist/components/helptext/Helptext.d.ts +9 -0
- package/dist/components/helptext/Helptext.test.d.ts +0 -0
- package/dist/components/icon/Icon.d.ts +10 -0
- package/dist/components/icon/Icon.test.d.ts +9 -0
- package/dist/components/index.d.ts +50 -0
- package/dist/components/input/Input.d.ts +21 -0
- package/dist/components/inputwrapper/InputWrapper.d.ts +28 -0
- package/dist/components/interfaces.d.ts +30 -0
- package/dist/components/link/Link.d.ts +17 -0
- package/dist/components/link/Link.test.d.ts +1 -0
- package/dist/components/linkcard/LinkCard.d.ts +14 -0
- package/dist/components/linkcard/LinkCard.test.d.ts +0 -0
- package/dist/components/loader/Loader.d.ts +41 -0
- package/dist/components/loader/Loader.test.d.ts +0 -0
- package/dist/components/messagebox/Messagebox.d.ts +11 -0
- package/dist/components/messagebox/Messagebox.test.d.ts +1 -0
- package/dist/components/modal/Modal.d.ts +17 -0
- package/dist/components/modal/Modal.test.d.ts +0 -0
- package/dist/components/progressbar/Progressbar.d.ts +21 -0
- package/dist/components/progressbar/Progressbar.test.d.ts +0 -0
- package/dist/components/radio/RadioButton.d.ts +20 -0
- package/dist/components/radio/RadioButton.test.d.ts +0 -0
- package/dist/components/searchinput/SearchInput.d.ts +36 -0
- package/dist/components/searchinput/SearchInput.test.d.ts +0 -0
- package/dist/components/select/Select.d.ts +30 -0
- package/dist/components/select/Select.test.d.ts +0 -0
- package/dist/components/stepper/Step.d.ts +21 -0
- package/dist/components/stepper/Stepper.d.ts +32 -0
- package/dist/components/stepper/Stepper.test.d.ts +0 -0
- package/dist/components/table/Table.d.ts +11 -0
- package/dist/components/table/Table.test.d.ts +0 -0
- package/dist/components/table/TableBody.d.ts +7 -0
- package/dist/components/table/TableData.d.ts +7 -0
- package/dist/components/table/TableDataCell.d.ts +8 -0
- package/dist/components/table/TableHeader.d.ts +7 -0
- package/dist/components/table/TableHeaderCell.d.ts +7 -0
- package/dist/components/table/TableRow.d.ts +7 -0
- package/dist/components/tabs/TabItem.d.ts +15 -0
- package/dist/components/tabs/Tabs.d.ts +33 -0
- package/dist/components/tabs/Tabs.test.d.ts +0 -0
- package/dist/components/tag/Tag.d.ts +24 -0
- package/dist/components/tag/Tag.test.d.ts +0 -0
- package/dist/components/textarea/Textarea.d.ts +35 -0
- package/dist/components/textarea/Textarea.test.d.ts +0 -0
- package/dist/components/textinput/Textinput.d.ts +44 -0
- package/dist/components/textinput/Textinput.test.d.ts +0 -0
- package/dist/components/timepicker/Timepicker.d.ts +3 -0
- package/dist/components/timepicker/Timepicker.test.d.ts +0 -0
- package/dist/components/timepicker/types.d.ts +81 -0
- package/dist/components/timepicker/useTimepickerState.d.ts +58 -0
- package/dist/components/types.d.ts +2 -0
- package/dist/index.d.ts +1 -1364
- package/dist/punkt-react.cjs +1 -1
- package/dist/punkt-react.js +1000 -984
- package/package.json +33 -32
- package/src/components/calendar/types.ts +1 -1
- package/src/components/card/Card.tsx +1 -1
- package/src/components/combobox/types.ts +5 -5
- package/src/components/datepicker/types.ts +5 -5
- package/src/components/fileupload/FileUpload.tsx +1 -1
- package/src/components/fileupload/Subcomponents.tsx +1 -1
- package/src/components/fileupload/Truncate.tsx +1 -1
- package/src/components/fileupload/hooks/useRequiredFormValidation.ts +1 -1
- package/src/components/header/HeaderService.tsx +17 -16
- package/src/components/header/types.ts +2 -0
- package/src/components/tabs/Tabs.tsx +1 -0
- package/src/components/tag/Tag.tsx +1 -1
- package/src/components/timepicker/Timepicker.tsx +1 -2
- package/src/components/timepicker/types.ts +2 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oslokommune/punkt-react",
|
|
3
|
-
"version": "16.
|
|
3
|
+
"version": "16.26.2",
|
|
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",
|
|
@@ -35,38 +35,39 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"classnames": "^2.5.1",
|
|
38
|
-
"prettier": "^3.
|
|
39
|
-
"react-hook-form": "^7.
|
|
38
|
+
"prettier": "^3.8.4",
|
|
39
|
+
"react-hook-form": "^7.79.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@babel/plugin-transform-private-property-in-object": "^7.
|
|
43
|
-
"@eslint/
|
|
44
|
-
"@eslint/
|
|
45
|
-
"@eslint/
|
|
46
|
-
"@
|
|
47
|
-
"@oslokommune/punkt-
|
|
48
|
-
"@
|
|
49
|
-
"@testing-library/
|
|
50
|
-
"@testing-library/
|
|
42
|
+
"@babel/plugin-transform-private-property-in-object": "^7.27.1",
|
|
43
|
+
"@eslint-react/eslint-plugin": "^5.9.0",
|
|
44
|
+
"@eslint/compat": "^2.1.0",
|
|
45
|
+
"@eslint/eslintrc": "^3.3.5",
|
|
46
|
+
"@eslint/js": "^10.0.1",
|
|
47
|
+
"@oslokommune/punkt-assets": "^16.26.2",
|
|
48
|
+
"@oslokommune/punkt-css": "^16.26.2",
|
|
49
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
50
|
+
"@testing-library/react": "^16.3.2",
|
|
51
|
+
"@testing-library/user-event": "^14.6.1",
|
|
51
52
|
"@types/jest-axe": "^3.5.9",
|
|
52
|
-
"@types/node": "^
|
|
53
|
-
"@types/react": "^
|
|
54
|
-
"@types/react-dom": "^
|
|
55
|
-
"@vitejs/plugin-react": "^6.0.
|
|
56
|
-
"eslint": "^
|
|
57
|
-
"eslint-config-prettier": "^
|
|
58
|
-
"eslint-plugin-prettier": "^5.
|
|
59
|
-
"eslint-plugin-react": "^7.
|
|
60
|
-
"eslint-plugin-
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"typescript": "^
|
|
67
|
-
"vite": "^8.0.
|
|
68
|
-
"vite-plugin-dts": "^
|
|
69
|
-
"vitest": "^4.1.
|
|
53
|
+
"@types/node": "^25.9.3",
|
|
54
|
+
"@types/react": "^19.2.17",
|
|
55
|
+
"@types/react-dom": "^19.2.3",
|
|
56
|
+
"@vitejs/plugin-react": "^6.0.2",
|
|
57
|
+
"eslint": "^10.5.0",
|
|
58
|
+
"eslint-config-prettier": "^10.1.8",
|
|
59
|
+
"eslint-plugin-prettier": "^5.5.6",
|
|
60
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
61
|
+
"eslint-plugin-simple-import-sort": "^13.0.0",
|
|
62
|
+
"globals": "^17.6.0",
|
|
63
|
+
"jest-axe": "^10.0.0",
|
|
64
|
+
"jsdom": "^29.1.1",
|
|
65
|
+
"sass": "^1.101.0",
|
|
66
|
+
"typescript": "^6.0.3",
|
|
67
|
+
"typescript-eslint": "^8.61.1",
|
|
68
|
+
"vite": "^8.0.16",
|
|
69
|
+
"vite-plugin-dts": "^5.0.2",
|
|
70
|
+
"vitest": "^4.1.9"
|
|
70
71
|
},
|
|
71
72
|
"peerDependencies": {
|
|
72
73
|
"@oslokommune/punkt-assets": "*",
|
|
@@ -76,7 +77,7 @@
|
|
|
76
77
|
"react-router-dom": "^6.26.2"
|
|
77
78
|
},
|
|
78
79
|
"engines": {
|
|
79
|
-
"node": ">=
|
|
80
|
+
"node": ">=22.12.0"
|
|
80
81
|
},
|
|
81
82
|
"private": false,
|
|
82
83
|
"publishConfig": {
|
|
@@ -100,5 +101,5 @@
|
|
|
100
101
|
"url": "https://github.com/oslokommune/punkt/issues"
|
|
101
102
|
},
|
|
102
103
|
"license": "MIT",
|
|
103
|
-
"gitHead": "
|
|
104
|
+
"gitHead": "b667fcd160da4b1c4e556fdd0bb23d50cc433827"
|
|
104
105
|
}
|
|
@@ -118,7 +118,7 @@ export interface ICalendarState {
|
|
|
118
118
|
dateConstraints: IDateConstraints
|
|
119
119
|
|
|
120
120
|
// Refs
|
|
121
|
-
calendarRef: React.RefObject<HTMLDivElement>
|
|
121
|
+
calendarRef: React.RefObject<HTMLDivElement | null>
|
|
122
122
|
selectableDatesRef: React.MutableRefObject<{ currentDateISO: string; isDisabled: boolean; tabindex: string }[]>
|
|
123
123
|
tabIndexSetRef: React.MutableRefObject<number>
|
|
124
124
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
3
|
import classNames from 'classnames'
|
|
4
|
-
import { forwardRef, HTMLAttributes, ReactNode, Ref } from 'react'
|
|
4
|
+
import { forwardRef, HTMLAttributes, type JSX, ReactNode, Ref } from 'react'
|
|
5
5
|
import type { TCardSkin, TLayout, TTagSkin } from 'shared-types'
|
|
6
6
|
|
|
7
7
|
import { PktTag } from '../tag/Tag'
|
|
@@ -116,11 +116,11 @@ export interface IComboboxState {
|
|
|
116
116
|
hasCounter: boolean
|
|
117
117
|
|
|
118
118
|
// Refs
|
|
119
|
-
inputRef: RefObject<HTMLInputElement>
|
|
120
|
-
changeInputRef: RefObject<HTMLInputElement>
|
|
121
|
-
triggerRef: RefObject<HTMLDivElement>
|
|
122
|
-
listboxRef: RefObject<HTMLDivElement>
|
|
123
|
-
wrapperRef: RefObject<HTMLDivElement>
|
|
119
|
+
inputRef: RefObject<HTMLInputElement | null>
|
|
120
|
+
changeInputRef: RefObject<HTMLInputElement | null>
|
|
121
|
+
triggerRef: RefObject<HTMLDivElement | null>
|
|
122
|
+
listboxRef: RefObject<HTMLDivElement | null>
|
|
123
|
+
wrapperRef: RefObject<HTMLDivElement | null>
|
|
124
124
|
|
|
125
125
|
// Event handlers
|
|
126
126
|
handleInputChange: (e: ChangeEvent<HTMLInputElement>) => void
|
|
@@ -107,11 +107,11 @@ export interface IDatepickerState {
|
|
|
107
107
|
hasCounter: boolean
|
|
108
108
|
|
|
109
109
|
// Refs
|
|
110
|
-
inputRef: React.RefObject<HTMLInputElement>
|
|
111
|
-
inputRefTo: React.RefObject<HTMLInputElement>
|
|
112
|
-
changeInputRef: React.RefObject<HTMLInputElement>
|
|
113
|
-
btnRef: React.RefObject<HTMLButtonElement>
|
|
114
|
-
wrapperRef: React.RefObject<HTMLDivElement>
|
|
110
|
+
inputRef: React.RefObject<HTMLInputElement | null>
|
|
111
|
+
inputRefTo: React.RefObject<HTMLInputElement | null>
|
|
112
|
+
changeInputRef: React.RefObject<HTMLInputElement | null>
|
|
113
|
+
btnRef: React.RefObject<HTMLButtonElement | null>
|
|
114
|
+
wrapperRef: React.RefObject<HTMLDivElement | null>
|
|
115
115
|
|
|
116
116
|
// onChange passthrough for hidden input
|
|
117
117
|
onChange?: (e: ChangeEvent<HTMLInputElement>) => void
|
|
@@ -343,7 +343,7 @@ export const PktFileUpload: FC<IPktFileUpload> = forwardRef<HTMLInputElement, IP
|
|
|
343
343
|
'pkt-fileupload--disabled': disabled,
|
|
344
344
|
})}
|
|
345
345
|
aria-disabled={disabled}
|
|
346
|
-
{...(disabled ? { inert:
|
|
346
|
+
{...(disabled ? { inert: true } : {})}
|
|
347
347
|
>
|
|
348
348
|
<PktFileUploadContext.Provider value={{ name: props.name || '', multiple: !!multiple, id }}>
|
|
349
349
|
<div className="pkt-sr-only" aria-live="polite" aria-atomic="true">
|
|
@@ -302,7 +302,7 @@ interface IImagePreviewModal {
|
|
|
302
302
|
currentIndex: number
|
|
303
303
|
onClose: () => void
|
|
304
304
|
onNavigate: (direction: 'prev' | 'next') => void
|
|
305
|
-
modalRef: RefObject<HTMLDialogElement>
|
|
305
|
+
modalRef: RefObject<HTMLDialogElement | null>
|
|
306
306
|
}
|
|
307
307
|
|
|
308
308
|
export const ImagePreviewModal = ({
|
|
@@ -10,7 +10,7 @@ import { RefObject, useEffect } from 'react'
|
|
|
10
10
|
* Passive in `form` strategy — native validation handles that case.
|
|
11
11
|
*/
|
|
12
12
|
export const useRequiredFormValidation = (
|
|
13
|
-
fileInputRef: RefObject<HTMLInputElement>,
|
|
13
|
+
fileInputRef: RefObject<HTMLInputElement | null>,
|
|
14
14
|
{
|
|
15
15
|
uploadStrategy,
|
|
16
16
|
required,
|
|
@@ -29,6 +29,18 @@ import { IPktHeader, Representing, THeaderMenu, User, UserMenuFooterItem, UserMe
|
|
|
29
29
|
export type { Representing, THeaderMenu, User, UserMenuFooterItem, UserMenuItem }
|
|
30
30
|
export type IPktHeaderService = IPktHeader
|
|
31
31
|
|
|
32
|
+
declare global {
|
|
33
|
+
interface Window {
|
|
34
|
+
pktLogoPath?: string
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const defaultLogoPath = 'https://punkt-cdn.oslo.kommune.no/latest/logos/'
|
|
39
|
+
|
|
40
|
+
if (typeof window !== 'undefined') {
|
|
41
|
+
window.pktLogoPath = window.pktLogoPath || defaultLogoPath
|
|
42
|
+
}
|
|
43
|
+
|
|
32
44
|
export const PktHeaderService = forwardRef(
|
|
33
45
|
(
|
|
34
46
|
{
|
|
@@ -59,6 +71,7 @@ export const PktHeaderService = forwardRef(
|
|
|
59
71
|
hideLogo = false,
|
|
60
72
|
logoLink,
|
|
61
73
|
logoClick,
|
|
74
|
+
logoPath = typeof window !== 'undefined' ? window.pktLogoPath : defaultLogoPath,
|
|
62
75
|
position = 'fixed',
|
|
63
76
|
scrollBehavior = 'hide',
|
|
64
77
|
slotMenuVariant = 'icon-only',
|
|
@@ -158,7 +171,7 @@ export const PktHeaderService = forwardRef(
|
|
|
158
171
|
const handleFocusOut = useCallback((event: FocusEvent<HTMLDivElement>, menuType: THeaderMenu) => {
|
|
159
172
|
const relatedTarget = event.relatedTarget as HTMLElement | null
|
|
160
173
|
|
|
161
|
-
let containerRef: RefObject<HTMLDivElement>
|
|
174
|
+
let containerRef: RefObject<HTMLDivElement | null>
|
|
162
175
|
switch (menuType) {
|
|
163
176
|
case 'user':
|
|
164
177
|
containerRef = userContainerRef
|
|
@@ -337,11 +350,7 @@ export const PktHeaderService = forwardRef(
|
|
|
337
350
|
<span className="pkt-header-service__logo">
|
|
338
351
|
{logoLink ? (
|
|
339
352
|
<a href={logoLink} aria-label="Tilbake til forside">
|
|
340
|
-
<PktIcon
|
|
341
|
-
name="oslologo"
|
|
342
|
-
aria-hidden="true"
|
|
343
|
-
path="https://punkt-cdn.oslo.kommune.no/latest/logos/"
|
|
344
|
-
></PktIcon>
|
|
353
|
+
<PktIcon name="oslologo" aria-hidden="true" path={logoPath}></PktIcon>
|
|
345
354
|
</a>
|
|
346
355
|
) : logoClick ? (
|
|
347
356
|
<button
|
|
@@ -349,18 +358,10 @@ export const PktHeaderService = forwardRef(
|
|
|
349
358
|
className="pkt-link-button pkt-link pkt-header-service__logo-link"
|
|
350
359
|
onClick={logoClick}
|
|
351
360
|
>
|
|
352
|
-
<PktIcon
|
|
353
|
-
name="oslologo"
|
|
354
|
-
aria-hidden="true"
|
|
355
|
-
path="https://punkt-cdn.oslo.kommune.no/latest/logos/"
|
|
356
|
-
></PktIcon>
|
|
361
|
+
<PktIcon name="oslologo" aria-hidden="true" path={logoPath}></PktIcon>
|
|
357
362
|
</button>
|
|
358
363
|
) : (
|
|
359
|
-
<PktIcon
|
|
360
|
-
name="oslologo"
|
|
361
|
-
aria-hidden="true"
|
|
362
|
-
path="https://punkt-cdn.oslo.kommune.no/latest/logos/"
|
|
363
|
-
></PktIcon>
|
|
364
|
+
<PktIcon name="oslologo" aria-hidden="true" path={logoPath}></PktIcon>
|
|
364
365
|
)}
|
|
365
366
|
</span>
|
|
366
367
|
)}
|
|
@@ -54,6 +54,8 @@ export interface IPktHeader {
|
|
|
54
54
|
hideLogo?: boolean
|
|
55
55
|
/** Link URL for the logo */
|
|
56
56
|
logoLink?: string
|
|
57
|
+
/** Override CDN path for the logo */
|
|
58
|
+
logoPath?: string
|
|
57
59
|
/** Callback when logo is clicked */
|
|
58
60
|
logoClick?: (event: MouseEvent) => void
|
|
59
61
|
/** Name of the service displayed in the header */
|
|
@@ -69,7 +69,7 @@ export const PktTag = forwardRef<HTMLSpanElement | HTMLButtonElement, ButtonPktT
|
|
|
69
69
|
}
|
|
70
70
|
}, [onClose])
|
|
71
71
|
|
|
72
|
-
const spanRef: RefObject<HTMLButtonElement | HTMLSpanElement> = useRef<HTMLButtonElement | HTMLSpanElement>(null)
|
|
72
|
+
const spanRef: RefObject<HTMLButtonElement | HTMLSpanElement | null> = useRef<HTMLButtonElement | HTMLSpanElement>(null)
|
|
73
73
|
const [labelText, setLabelText] = useState('')
|
|
74
74
|
|
|
75
75
|
useEffect(() => {
|
|
@@ -10,7 +10,7 @@ import type { IPktTimepicker } from './types'
|
|
|
10
10
|
export type { IPktTimepicker } from './types'
|
|
11
11
|
|
|
12
12
|
export const PktTimepicker = forwardRef<HTMLDivElement, IPktTimepicker>((props, ref) => {
|
|
13
|
-
const { onChange
|
|
13
|
+
const { onChange } = props
|
|
14
14
|
const state = useTimepickerState(props, ref)
|
|
15
15
|
|
|
16
16
|
const hoursLabel = state.strings.hours
|
|
@@ -205,7 +205,6 @@ export const PktTimepicker = forwardRef<HTMLDivElement, IPktTimepicker>((props,
|
|
|
205
205
|
tabIndex={-1}
|
|
206
206
|
aria-hidden={true}
|
|
207
207
|
onChange={onChange}
|
|
208
|
-
onInput={onInput}
|
|
209
208
|
/>
|
|
210
209
|
</div>
|
|
211
210
|
)
|
|
@@ -10,7 +10,7 @@ import type { ITimepickerStrings } from 'shared-types/timepicker'
|
|
|
10
10
|
export interface IPktTimepicker
|
|
11
11
|
extends Omit<
|
|
12
12
|
InputHTMLAttributes<HTMLInputElement>,
|
|
13
|
-
'value' | 'onChange' | 'min' | 'max' | 'step' | 'onFocus' | 'onBlur'
|
|
13
|
+
'value' | 'onChange' | 'onInput' | 'min' | 'max' | 'step' | 'onFocus' | 'onBlur'
|
|
14
14
|
> {
|
|
15
15
|
/** Unique id; used for hour, minute, popup, and hidden input ids. */
|
|
16
16
|
id: string
|
|
@@ -95,12 +95,9 @@ export interface IPktTimepicker
|
|
|
95
95
|
/** Copy for hours, minutes, buttons, and popup. */
|
|
96
96
|
strings?: ITimepickerStrings
|
|
97
97
|
|
|
98
|
-
/** Change event from the hidden input (`e.target.value` is `HH:MM`). */
|
|
98
|
+
/** Change event from the hidden input (`e.target.value` is `HH:MM`). In React, `onChange` already fires on input. */
|
|
99
99
|
onChange?: (e: ChangeEvent<HTMLInputElement>) => void
|
|
100
100
|
|
|
101
|
-
/** Input events while typing or using spinners. */
|
|
102
|
-
onInput?: (e: ChangeEvent<HTMLInputElement>) => void
|
|
103
|
-
|
|
104
101
|
/** Callback with the committed `HH:MM` string. */
|
|
105
102
|
onValueChange?: (value: string) => void
|
|
106
103
|
|