Skip to content

Commit 4a04e3e

Browse files
authored
Merge 51500eb into c449c38
2 parents c449c38 + 51500eb commit 4a04e3e

File tree

4 files changed

+130
-174
lines changed

4 files changed

+130
-174
lines changed
Lines changed: 126 additions & 174 deletions
Original file line numberDiff line numberDiff line change
@@ -1,235 +1,187 @@
11
.navds-expansioncard {
2-
--__ac-expansioncard-border-color: var(--ac-expansioncard-border-color, var(--a-border-default));
3-
--__ac-expansioncard-border-radius: var(--ac-expansioncard-border-radius, var(--a-border-radius-large));
4-
--__ac-expansioncard-border-width: 1px;
5-
--__ac-expansioncard-padding-block: var(--a-spacing-4);
6-
--__ac-expansioncard-padding-inline: var(--a-spacing-6);
7-
8-
border-radius: var(--__ac-expansioncard-border-radius);
9-
background-color: var(--ac-expansioncard-bg, var(--a-surface-default));
2+
--__axc-expansioncard-border-radius: var(--ax-border-radius-xlarge);
3+
--__axc-expansioncard-padding-block: var(--ax-spacing-4);
4+
--__axc-expansioncard-padding-inline: var(--ax-spacing-6);
5+
6+
border-radius: var(--__axc-expansioncard-border-radius);
7+
background-color: var(--ax-bg-raised);
108
height: fit-content;
11-
}
9+
outline: 1px solid var(--ax-border-default);
1210

13-
.navds-expansioncard--open {
14-
--__ac-expansioncard-border-color: var(
15-
--ac-expansioncard-border-open-color,
16-
var(--ac-expansioncard-border-color, var(--a-border-default))
17-
);
11+
&:has(.navds-expansioncard__header:hover) {
12+
outline-color: var(--ax-border-strong);
13+
outline-width: 2px;
14+
}
1815
}
1916

20-
.navds-expansioncard:hover {
21-
--__ac-expansioncard-border-color: var(--ac-expansioncard-border-hover-color, var(--a-border-strong));
22-
}
17+
/* ------------------------ ExpansionCard Small-size ------------------------ */
18+
.navds-expansioncard--small {
19+
--__axc-expansioncard-padding-block: var(--ax-spacing-3);
20+
--__axc-expansioncard-padding-inline: var(--ax-spacing-4);
21+
22+
& > .navds-expansioncard__header .navds-expansioncard__title--small {
23+
margin-top: var(--ax-spacing-05);
24+
}
25+
26+
& :is(.navds-expansioncard__title--medium, .navds-expansioncard__title--large) {
27+
margin-top: 0;
28+
}
29+
30+
& > .navds-expansioncard__header > .navds-expansioncard__header-button {
31+
min-height: 2rem;
32+
min-width: 2rem;
33+
}
2334

24-
:where(.navds-expansioncard.navds-expansioncard--open):hover {
25-
--__ac-expansioncard-border-color: var(--ac-expansioncard-border-hover-color, var(--a-border-strong));
35+
& .navds-expansioncard__content {
36+
--__axc-expansioncard-padding-block: var(--ax-spacing-4);
37+
}
2638
}
2739

28-
/*************************
29-
* Header *
30-
*************************/
40+
/* -------------------------- ExpansionCard Header -------------------------- */
3141
.navds-expansioncard__header {
3242
width: 100%;
3343
display: flex;
34-
gap: var(--a-spacing-4);
35-
padding: var(--__ac-expansioncard-padding-block) var(--__ac-expansioncard-padding-inline);
36-
border-radius: var(--__ac-expansioncard-border-radius);
37-
background-color: var(--ac-expansioncard-header-bg, var(--a-surface-transparent));
44+
gap: var(--ax-spacing-4);
45+
padding: var(--__axc-expansioncard-padding-block) var(--__axc-expansioncard-padding-inline);
46+
border-radius: var(--__axc-expansioncard-border-radius);
47+
background-color: transparent;
3848
position: relative;
39-
border: var(--__ac-expansioncard-border-width) solid var(--__ac-expansioncard-border-color);
4049
justify-content: space-between;
41-
}
42-
43-
.navds-expansioncard--small {
44-
--__ac-expansioncard-padding-block: var(--a-spacing-3);
45-
--__ac-expansioncard-padding-inline: var(--a-spacing-4);
46-
}
4750

48-
.navds-expansioncard__header:hover {
49-
background-color: var(--ac-expansioncard-header-bg-hover, var(--a-surface-hover));
50-
box-shadow: 0 0 0 1px var(--__ac-expansioncard-border-color);
51-
}
52-
53-
.navds-expansioncard--open > :where(.navds-expansioncard__header) {
54-
border-bottom-left-radius: 0;
55-
border-bottom-right-radius: 0;
56-
border: var(--__ac-expansioncard-border-width) solid var(--__ac-expansioncard-border-color);
57-
border-bottom: none;
58-
background-color: var(--ac-expansioncard-header-open-bg, var(--a-surface-transparent));
59-
}
60-
61-
.navds-expansioncard--open > :where(.navds-expansioncard__header):hover {
62-
background-color: var(--ac-expansioncard-header-bg-hover, var(--a-surface-hover));
63-
box-shadow:
64-
1px 0 0 0 var(--__ac-expansioncard-border-color),
65-
-1px 0 0 0 var(--__ac-expansioncard-border-color),
66-
0 -1px 0 0 var(--__ac-expansioncard-border-color);
67-
}
68-
69-
.navds-expansioncard--open > :where(.navds-expansioncard__header)::after {
70-
content: "";
71-
background-color: var(--a-border-divider);
72-
bottom: 0;
73-
left: var(--__ac-expansioncard-padding-inline);
74-
height: 1px;
75-
width: calc(100% - 2 * var(--__ac-expansioncard-padding-inline));
76-
position: absolute;
77-
opacity: 1;
78-
transition: opacity 0.1s cubic-bezier(0.175, 0.885, 0.32, 1.275);
79-
}
51+
&:hover {
52+
background-color: var(--ax-bg-neutral-raised-hover);
53+
}
8054

81-
.navds-expansioncard--open > :where(.navds-expansioncard__header:hover)::after {
82-
opacity: 0;
55+
&[data-open="true"] {
56+
border-bottom-left-radius: 0;
57+
border-bottom-right-radius: 0;
58+
border-bottom: none;
59+
60+
/* Divider between header and content */
61+
&::after {
62+
content: "";
63+
background-color: var(--ax-border-subtle);
64+
bottom: 0;
65+
left: var(--__axc-expansioncard-padding-inline);
66+
height: 1px;
67+
width: calc(100% - 2 * var(--__axc-expansioncard-padding-inline));
68+
position: absolute;
69+
opacity: 1;
70+
transition: opacity 0.1s linear;
71+
}
72+
73+
&:hover::after {
74+
opacity: 0;
75+
}
76+
}
8377
}
8478

85-
/*************************
86-
* Header/Typography *
87-
*************************/
88-
79+
/* --------------------- ExpansionCard Header typography -------------------- */
8980
.navds-expansioncard__title--small {
9081
margin-top: 0.625rem;
9182
}
9283

9384
.navds-expansioncard__title--medium {
94-
margin-top: var(--a-spacing-2);
85+
margin-top: var(--ax-spacing-2);
9586
}
9687

9788
.navds-expansioncard__title--large {
98-
margin-top: var(--a-spacing-1);
99-
}
100-
101-
.navds-expansioncard--small > :where(.navds-expansioncard__header) :where(.navds-expansioncard__title--small) {
102-
margin-top: var(--a-spacing-05);
103-
}
104-
105-
.navds-expansioncard--small :where(.navds-expansioncard__title--medium, .navds-expansioncard__title--large) {
106-
margin-top: 0;
89+
margin-top: var(--ax-spacing-1);
10790
}
10891

109-
/*************************
110-
* Header/Button *
111-
*************************/
92+
/* ----------------------- ExpansionCard Header Button ---------------------- */
11293
.navds-expansioncard__header-button {
11394
display: grid;
11495
place-content: center;
11596
cursor: pointer;
11697
margin: 0;
11798
background: transparent;
11899
border: none;
119-
border-radius: var(--ac-expansioncard-button-border-radius, var(--a-border-radius-medium));
100+
border-radius: var(--ax-border-radius-large);
120101
min-height: 3rem;
121102
min-width: 3rem;
122103
font-size: 1.5rem;
123104
align-self: flex-start;
124-
}
125105

126-
.navds-expansioncard--small > :where(.navds-expansioncard__header) > :where(.navds-expansioncard__header-button) {
127-
min-height: 2rem;
128-
min-width: 2rem;
129-
}
130-
131-
:where(.navds-expansioncard__header):hover > :where(.navds-expansioncard__header-button) {
132-
background-color: var(--a-surface-hover);
133-
}
134-
135-
.navds-expansioncard__header-chevron {
136-
transition: transform 150ms ease-in-out;
137-
}
138-
139-
.navds-expansioncard--open > :where(.navds-expansioncard__header) :where(.navds-expansioncard__header-chevron) {
140-
transform: translateY(0) rotate(180deg);
141-
}
142-
143-
.navds-expansioncard__header-button:hover > :where(.navds-expansioncard__header-chevron) {
144-
transform: translateY(1px);
145-
}
146-
147-
.navds-expansioncard__header-button:focus-visible {
148-
outline: 3px solid transparent;
149-
box-shadow: var(--a-shadow-focus);
150-
}
151-
152-
@supports not selector(:focus-visible) {
153-
.navds-expansioncard__header-button:focus {
154-
outline: 3px solid transparent;
155-
box-shadow: var(--a-shadow-focus);
106+
&:focus-visible {
107+
outline: 2px solid var(--ax-border-focus);
108+
outline-offset: 2px;
156109
}
157-
}
158-
159-
.navds-expansioncard--open
160-
> :where(.navds-expansioncard__header)
161-
> :where(.navds-expansioncard__header-button):hover
162-
:where(.navds-expansioncard__header-chevron) {
163-
transform: translateY(-1px) rotate(180deg);
164-
}
165110

166-
.navds-expansioncard__header-button::after {
167-
inset: 0;
168-
z-index: 1;
169-
position: absolute;
170-
content: "";
171-
height: 100%;
172-
width: 100%;
173-
cursor: pointer;
174-
}
175-
176-
/*************************
177-
* Content *
178-
*************************/
179-
.navds-expansioncard__content {
180-
--__ac-expansioncard-padding-block: var(--a-spacing-5);
181-
182-
border-end-end-radius: var(--__ac-expansioncard-border-radius);
183-
border-end-start-radius: var(--__ac-expansioncard-border-radius);
184-
padding: var(--__ac-expansioncard-padding-block) var(--__ac-expansioncard-padding-inline)
185-
var(--__ac-expansioncard-padding-inline);
186-
border: var(--__ac-expansioncard-border-width) solid var(--__ac-expansioncard-border-color);
187-
border-top: none;
188-
}
111+
@supports not selector(:focus-visible) {
112+
&:focus {
113+
outline: 2px solid var(--ax-border-focus);
114+
outline-offset: 2px;
115+
}
116+
}
189117

190-
.navds-expansioncard--small .navds-expansioncard__content {
191-
--__ac-expansioncard-padding-block: var(--a-spacing-4);
118+
/* Makes the whole header clickable */
119+
&::after {
120+
inset: 0;
121+
z-index: 1;
122+
position: absolute;
123+
content: "";
124+
height: 100%;
125+
width: 100%;
126+
cursor: pointer;
127+
}
192128
}
193129

194-
.navds-expansioncard__content--closed {
195-
display: none;
130+
.navds-expansioncard__header:hover > .navds-expansioncard__header-button {
131+
background-color: var(--ax-bg-neutral-moderate-hoverA);
196132
}
197133

198-
:where(.navds-expansioncard__header):hover + .navds-expansioncard__content {
199-
box-shadow:
200-
1px 0 0 0 var(--__ac-expansioncard-border-color),
201-
-1px 0 0 0 var(--__ac-expansioncard-border-color),
202-
0 1px 0 0 var(--__ac-expansioncard-border-color);
134+
.navds-expansioncard__header-chevron {
135+
transition: transform 250ms cubic-bezier(0.2, 0, 0, 1);
203136
}
204137

205-
.navds-expansioncard__content-inner {
206-
animation: fadeExpansionCard 250ms ease;
138+
.navds-expansioncard__header[data-open="true"] .navds-expansioncard__header-chevron {
139+
transform: rotateX(-180deg);
207140
}
208141

209-
.navds-expansioncard--no-animation :where(.navds-expansioncard__content-inner) {
210-
animation: none;
142+
.navds-expansioncard__header[data-open="false"] .navds-expansioncard__header-chevron {
143+
transition-duration: 0ms;
211144
}
212145

213-
@keyframes fadeExpansionCard {
214-
0% {
215-
opacity: 0.25;
216-
transform: translateY(-8px);
217-
}
146+
/* -------------------------- ExpansionCard Content ------------------------- */
147+
.navds-expansioncard__content {
148+
--__axc-expansioncard-padding-block: var(--ax-spacing-5);
218149

219-
40% {
220-
opacity: 0.7;
150+
border-end-end-radius: var(--__axc-expansioncard-border-radius);
151+
border-end-start-radius: var(--__axc-expansioncard-border-radius);
152+
padding-inline: var(--__axc-expansioncard-padding-inline);
153+
padding-block: 0;
154+
display: grid;
155+
grid-template-rows: 0fr;
156+
visibility: hidden;
157+
transition-duration: 250ms;
158+
transition-timing-function: cubic-bezier(0.2, 0, 0, 1);
159+
transition-property: padding-block, grid-template-rows;
160+
161+
&[data-open="true"] {
162+
grid-template-rows: 1fr;
163+
visibility: visible;
164+
padding-block: var(--__axc-expansioncard-padding-block) var(--__axc-expansioncard-padding-inline);
165+
166+
& .navds-expansioncard__content-inner {
167+
opacity: 1;
168+
}
221169
}
222170

223-
100% {
224-
opacity: 1;
225-
transform: translateY(0);
171+
&[data-open="false"] {
172+
transition-duration: 0ms;
226173
}
227174
}
228175

229-
@media (forced-colors: active) {
230-
.navds-expansioncard:hover {
231-
--__ac-expansioncard-border-color: highlight;
176+
.navds-expansioncard__content-inner {
177+
min-height: 0;
178+
opacity: 0;
179+
transition: opacity 250ms cubic-bezier(0.2, 0, 0, 1);
180+
}
232181

233-
outline: 1px solid highlight;
182+
/* ---------------- ExpansionCard No Animation (defaultOpen) ---------------- */
183+
.navds-expansioncard--no-animation {
184+
& :is(.navds-expansioncard__content, .navds-expansioncard__content-inner) {
185+
transition: none;
234186
}
235187
}

@navikt/core/react/src/expansion-card/ExpansionCard.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ export const ExpansionCard = forwardRef<HTMLDivElement, ExpansionCardProps>(
147147
"navds-expansioncard--no-animation": !shouldFade.current,
148148
},
149149
)}
150+
data-open={open ?? _open}
150151
ref={ref}
151152
/>
152153
</ExpansionCardContext.Provider>

@navikt/core/react/src/expansion-card/ExpansionCardContent.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const ExpansionCardContent = forwardRef<
3131
})}
3232
aria-hidden={!panelContext.open}
3333
size={panelContext.size}
34+
data-open={panelContext.open}
3435
>
3536
<div className="navds-expansioncard__content-inner">{children}</div>
3637
</BodyLong>

@navikt/core/react/src/expansion-card/ExpansionCardHeader.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const ExpansionCardHeader = forwardRef<
2828
ref={ref}
2929
{...rest}
3030
className={cl("navds-expansioncard__header", className)}
31+
data-open={panelContext.open}
3132
>
3233
<div className="navds-expansioncard__header-content">{children}</div>
3334

@@ -36,6 +37,7 @@ const ExpansionCardHeader = forwardRef<
3637
onClick={panelContext.toggleOpen}
3738
type="button"
3839
aria-expanded={panelContext.open}
40+
data-open={panelContext.open}
3941
>
4042
<ChevronDownIcon
4143
className="navds-expansioncard__header-chevron"

0 commit comments

Comments
 (0)