@oslokommune/punkt-react 13.12.0 → 13.13.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 +19 -0
- package/dist/index.d.ts +6 -2
- package/dist/punkt-react.es.js +874 -855
- package/dist/punkt-react.umd.js +56 -56
- package/package.json +4 -4
- package/src/components/linkcard/LinkCard.test.tsx +0 -11
- package/src/components/linkcard/LinkCard.tsx +34 -21
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oslokommune/punkt-react",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.13.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": "^13.
|
|
42
|
+
"@oslokommune/punkt-elements": "^13.13.0",
|
|
43
43
|
"classnames": "^2.5.1",
|
|
44
44
|
"prettier": "^3.3.3",
|
|
45
45
|
"react-element-to-jsx-string": "^15.0.0",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@babel/plugin-transform-private-property-in-object": "^7.25.9",
|
|
51
51
|
"@oslokommune/punkt-assets": "^13.11.0",
|
|
52
|
-
"@oslokommune/punkt-css": "^13.
|
|
52
|
+
"@oslokommune/punkt-css": "^13.13.0",
|
|
53
53
|
"@testing-library/jest-dom": "^6.5.0",
|
|
54
54
|
"@testing-library/react": "^16.0.1",
|
|
55
55
|
"@testing-library/user-event": "^14.5.2",
|
|
@@ -106,5 +106,5 @@
|
|
|
106
106
|
"url": "https://github.com/oslokommune/punkt/issues"
|
|
107
107
|
},
|
|
108
108
|
"license": "MIT",
|
|
109
|
-
"gitHead": "
|
|
109
|
+
"gitHead": "dfda73999cbdf688f04f4fce0240779bd4fed111"
|
|
110
110
|
}
|
|
@@ -3,7 +3,6 @@ import '@testing-library/jest-dom'
|
|
|
3
3
|
|
|
4
4
|
import { render } from '@testing-library/react'
|
|
5
5
|
import { axe, toHaveNoViolations } from 'jest-axe'
|
|
6
|
-
import * as React from 'react'
|
|
7
6
|
|
|
8
7
|
import { PktLinkCard } from './LinkCard'
|
|
9
8
|
|
|
@@ -14,20 +13,17 @@ describe('PktLinkCard', () => {
|
|
|
14
13
|
describe('basic rendering', () => {
|
|
15
14
|
it('renders correctly with only default props', async () => {
|
|
16
15
|
const { getByText } = render(<PktLinkCard>LinkCard Content</PktLinkCard>)
|
|
17
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
18
16
|
expect(getByText('LinkCard Content')).toBeInTheDocument()
|
|
19
17
|
})
|
|
20
18
|
|
|
21
19
|
it('renders with title', async () => {
|
|
22
20
|
render(<PktLinkCard title="Link title">Link content</PktLinkCard>)
|
|
23
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
24
21
|
const iconElement = document.querySelector('.pkt-linkcard__title')
|
|
25
22
|
expect(iconElement).toBeInTheDocument()
|
|
26
23
|
})
|
|
27
24
|
|
|
28
25
|
it('renders without title', async () => {
|
|
29
26
|
render(<PktLinkCard>Link content</PktLinkCard>)
|
|
30
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
31
27
|
const iconElement = document.querySelector('.pkt-linkcard__title')
|
|
32
28
|
expect(iconElement).not.toBeInTheDocument()
|
|
33
29
|
})
|
|
@@ -39,7 +35,6 @@ describe('PktLinkCard', () => {
|
|
|
39
35
|
Link content
|
|
40
36
|
</PktLinkCard>,
|
|
41
37
|
)
|
|
42
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
43
38
|
const linkElement = container.querySelector('.pkt-linkcard')
|
|
44
39
|
expect(linkElement).toHaveAttribute('href', href)
|
|
45
40
|
})
|
|
@@ -54,7 +49,6 @@ describe('PktLinkCard', () => {
|
|
|
54
49
|
<PktLinkCard title="normal" skin="normal" />
|
|
55
50
|
</div>,
|
|
56
51
|
)
|
|
57
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
58
52
|
const linkElement = container.querySelector('.pkt-linkcard')
|
|
59
53
|
expect(linkElement).toHaveClass('pkt-linkcard pkt-linkcard--normal')
|
|
60
54
|
})
|
|
@@ -65,7 +59,6 @@ describe('PktLinkCard', () => {
|
|
|
65
59
|
<PktLinkCard title="Blue" skin="blue" />
|
|
66
60
|
</div>,
|
|
67
61
|
)
|
|
68
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
69
62
|
const linkElement = container.querySelector('.pkt-linkcard')
|
|
70
63
|
expect(linkElement).toHaveClass('pkt-linkcard pkt-linkcard--blue')
|
|
71
64
|
})
|
|
@@ -76,7 +69,6 @@ describe('PktLinkCard', () => {
|
|
|
76
69
|
<PktLinkCard title="Beige" skin="beige" />
|
|
77
70
|
</div>,
|
|
78
71
|
)
|
|
79
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
80
72
|
const linkElement = container.querySelector('.pkt-linkcard')
|
|
81
73
|
expect(linkElement).toHaveClass('pkt-linkcard pkt-linkcard--beige')
|
|
82
74
|
})
|
|
@@ -87,7 +79,6 @@ describe('PktLinkCard', () => {
|
|
|
87
79
|
<PktLinkCard title="Green" skin="green" />
|
|
88
80
|
</div>,
|
|
89
81
|
)
|
|
90
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
91
82
|
const linkElement = container.querySelector('.pkt-linkcard')
|
|
92
83
|
expect(linkElement).toHaveClass('pkt-linkcard pkt-linkcard--green')
|
|
93
84
|
})
|
|
@@ -98,7 +89,6 @@ describe('PktLinkCard', () => {
|
|
|
98
89
|
<PktLinkCard title="Beige outline" skin="beige-outline" />
|
|
99
90
|
</div>,
|
|
100
91
|
)
|
|
101
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
102
92
|
const linkElement = container.querySelector('.pkt-linkcard')
|
|
103
93
|
expect(linkElement).toHaveClass('pkt-linkcard pkt-linkcard--beige-outline')
|
|
104
94
|
})
|
|
@@ -108,7 +98,6 @@ describe('PktLinkCard', () => {
|
|
|
108
98
|
<PktLinkCard title="Gray outline" skin="gray-outline" />
|
|
109
99
|
</div>,
|
|
110
100
|
)
|
|
111
|
-
await window.customElements.whenDefined('pkt-linkcard')
|
|
112
101
|
const linkElement = container.querySelector('.pkt-linkcard')
|
|
113
102
|
expect(linkElement).toHaveClass('pkt-linkcard pkt-linkcard--gray-outline')
|
|
114
103
|
})
|
|
@@ -1,35 +1,48 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import { PktLinkCard as PktElLinkCard } from '@oslokommune/punkt-elements'
|
|
6
|
-
import type { PktElType, PktElConstructor } from '@/interfaces/IPktElements'
|
|
3
|
+
import classNames from 'classnames'
|
|
4
|
+
import { HTMLAttributes, ReactNode } from 'react'
|
|
7
5
|
|
|
8
|
-
|
|
6
|
+
import { PktIcon } from '..'
|
|
7
|
+
|
|
8
|
+
export interface IPktLinkCard extends Omit<HTMLAttributes<HTMLAnchorElement>, 'title'> {
|
|
9
9
|
skin?: 'normal' | 'no-padding' | 'blue' | 'beige' | 'green' | 'gray' | 'beige-outline' | 'gray-outline'
|
|
10
10
|
title?: string
|
|
11
11
|
href?: string
|
|
12
12
|
iconName?: string
|
|
13
13
|
openInNewTab?: boolean
|
|
14
14
|
external?: boolean
|
|
15
|
+
children?: ReactNode
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
export const PktLinkCard = ({
|
|
19
|
+
children,
|
|
20
|
+
skin,
|
|
21
|
+
title,
|
|
22
|
+
href,
|
|
23
|
+
iconName,
|
|
24
|
+
openInNewTab,
|
|
25
|
+
external,
|
|
26
|
+
className,
|
|
27
|
+
...props
|
|
28
|
+
}: IPktLinkCard) => {
|
|
29
|
+
const classes = ['pkt-linkcard', skin && `pkt-linkcard--${skin}`].filter(Boolean).join(' ')
|
|
30
|
+
|
|
31
|
+
const titleClasses = ['pkt-linkcard__title', external && 'pkt-link pkt-link--external'].filter(Boolean).join(' ')
|
|
24
32
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
return (
|
|
34
|
+
<a
|
|
35
|
+
{...props}
|
|
36
|
+
href={href}
|
|
37
|
+
className={classNames(classes, className)}
|
|
38
|
+
target={openInNewTab ? '_blank' : '_self'}
|
|
39
|
+
rel={openInNewTab ? 'noopener noreferrer' : undefined}
|
|
40
|
+
>
|
|
41
|
+
{iconName && <PktIcon className="pkt-link__icon" name={iconName} />}
|
|
42
|
+
{title && <div className={classNames(titleClasses)}>{title}</div>}
|
|
43
|
+
<div className="pkt-linkcard__text">{children}</div>
|
|
44
|
+
</a>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
34
47
|
|
|
35
48
|
PktLinkCard.displayName = 'PktLinkCard'
|