Skip to content

Commit 0c179d9

Browse files
[fix] React modal style (navikt#1615)
* version bump * added custom styling to react modal * use prop 'style' to avoid breaking changes * update modal story
1 parent abace10 commit 0c179d9

File tree

3 files changed

+19
-64
lines changed

3 files changed

+19
-64
lines changed

@navikt/core/react/src/modal/Modal.tsx

+6
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ export interface ModalProps {
3333
* @default true
3434
*/
3535
closeButton?: boolean;
36+
/**
37+
* Allows custom styling of ReactModal, in accordance with their typing
38+
*/
39+
style?: ReactModal.Styles;
3640
/**
3741
* Callback for setting parent element modal will attach to
3842
*/
@@ -72,6 +76,7 @@ export const Modal = forwardRef<ReactModal, ModalProps>(
7276
"aria-labelledby": ariaLabelledBy,
7377
"aria-modal": ariaModal,
7478
"aria-label": contentLabel,
79+
style,
7580
...rest
7681
},
7782
ref
@@ -91,6 +96,7 @@ export const Modal = forwardRef<ReactModal, ModalProps>(
9196
return (
9297
<ReactModal
9398
{...rest}
99+
style={style}
94100
isOpen={open}
95101
ref={mergedRef}
96102
className={cl("navds-modal", className)}
+11-62
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { useEffect, useState } from "react";
2-
import { BodyLong, Button, Heading, Modal } from "../..";
2+
import { BodyLong, Button, Heading } from "../..";
3+
import Modal from "./Modal";
34

45
export default {
56
title: "ds-react/Modal",
@@ -13,16 +14,23 @@ export const Default = (props) => {
1314
const [open, setOpen] = useState(false);
1415

1516
useEffect(() => {
16-
Modal.setAppElement("#root");
17+
Modal.setAppElement?.("#root");
1718
}, []);
1819

1920
return (
2021
<>
21-
<Button onClick={() => setOpen(true)}>Open</Button>
22+
<Button onClick={() => setOpen(true)}>Open Modal</Button>
23+
<p>
24+
We can also custom style the modal by passing in a react-modal style
25+
object. Here the backdrop is red.
26+
</p>
2227
<Modal
2328
open={open}
2429
onClose={() => setOpen(false)}
2530
aria-labelledby="header123"
31+
style={{
32+
overlay: { backgroundColor: "#ff0000aa" },
33+
}}
2634
{...props}
2735
>
2836
<Modal.Content>
@@ -43,62 +51,3 @@ Default.args = {
4351
shouldCloseOnOverlayClick: true,
4452
closeButton: true,
4553
};
46-
47-
export const Open = () => {
48-
const [open, setOpen] = useState(null);
49-
50-
useEffect(() => {
51-
Modal.setAppElement("#root");
52-
}, []);
53-
54-
return (
55-
<>
56-
<Button onClick={() => setOpen(true)}>Open</Button>
57-
<Modal
58-
open={open ?? true}
59-
onClose={() => setOpen(false)}
60-
aria-labelledby="header123"
61-
>
62-
<Modal.Content>
63-
<Heading spacing id="header123" level="1" size="large">
64-
Header
65-
</Heading>
66-
<Heading spacing level="2" size="medium">
67-
Header
68-
</Heading>
69-
<BodyLong>Voluptate laboris mollit dolore qui. Magna elit.</BodyLong>
70-
</Modal.Content>
71-
</Modal>
72-
</>
73-
);
74-
};
75-
76-
export const CloseButton = () => {
77-
const [open, setOpen] = useState(true);
78-
79-
useEffect(() => {
80-
Modal.setAppElement("#root");
81-
}, []);
82-
83-
return (
84-
<>
85-
<Button onClick={() => setOpen(true)}>Open</Button>
86-
<Modal
87-
open={open}
88-
onClose={() => setOpen(false)}
89-
aria-labelledby="header123"
90-
closeButton={false}
91-
>
92-
<Modal.Content>
93-
<Heading spacing id="header123" level="1" size="large">
94-
Header
95-
</Heading>
96-
<Heading spacing level="2" size="medium">
97-
Header
98-
</Heading>
99-
<BodyLong>Voluptate laboris mollit dolore qui. Magna elit.</BodyLong>
100-
</Modal.Content>
101-
</Modal>
102-
</>
103-
);
104-
};

yarn.lock

+2-2
Original file line numberDiff line numberDiff line change
@@ -3222,7 +3222,7 @@ __metadata:
32223222
resolution: "@navikt/ds-react-internal@workspace:@navikt/internal/react"
32233223
dependencies:
32243224
"@navikt/ds-icons": ^0.8.20
3225-
"@navikt/ds-react": ^0.19.25
3225+
"@navikt/ds-react": ^0.19.26
32263226
"@popperjs/core": ^2.10.1
32273227
"@types/node": ^17.0.35
32283228
classnames: ^2.3.1
@@ -3238,7 +3238,7 @@ __metadata:
32383238
languageName: unknown
32393239
linkType: soft
32403240

3241-
"@navikt/ds-react@*, @navikt/ds-react@^0.19.25, @navikt/ds-react@workspace:@navikt/core/react":
3241+
"@navikt/ds-react@*, @navikt/ds-react@^0.19.26, @navikt/ds-react@workspace:@navikt/core/react":
32423242
version: 0.0.0-use.local
32433243
resolution: "@navikt/ds-react@workspace:@navikt/core/react"
32443244
dependencies:

0 commit comments

Comments
 (0)