@contentful/f36-modal 4.17.0 → 4.18.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 +10 -0
- package/dist/{types.d.ts → index.d.ts} +35 -26
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +15 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +9 -9
- package/dist/main.js +0 -440
- package/dist/main.js.map +0 -1
- package/dist/module.js +0 -428
- package/dist/module.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
package/dist/main.js
DELETED
|
@@ -1,440 +0,0 @@
|
|
|
1
|
-
var $a6cQm$react = require("react");
|
|
2
|
-
var $a6cQm$reactmodal = require("react-modal");
|
|
3
|
-
var $a6cQm$contentfulf36core = require("@contentful/f36-core");
|
|
4
|
-
var $a6cQm$emotion = require("emotion");
|
|
5
|
-
var $a6cQm$contentfulf36icons = require("@contentful/f36-icons");
|
|
6
|
-
var $a6cQm$contentfulf36button = require("@contentful/f36-button");
|
|
7
|
-
var $a6cQm$contentfulf36typography = require("@contentful/f36-typography");
|
|
8
|
-
var $a6cQm$contentfulf36tokens = require("@contentful/f36-tokens");
|
|
9
|
-
var $a6cQm$reactdom = require("react-dom");
|
|
10
|
-
|
|
11
|
-
function $parcel$export(e, n, v, s) {
|
|
12
|
-
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
13
|
-
}
|
|
14
|
-
function $parcel$interopDefault(a) {
|
|
15
|
-
return a && a.__esModule ? a.default : a;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
$parcel$export(module.exports, "Modal", () => $2132db66f9439432$export$2b77a92f1a5ad772);
|
|
19
|
-
$parcel$export(module.exports, "ModalConfirm", () => $657ddd6e4548962f$export$427af6990c8ff682);
|
|
20
|
-
$parcel$export(module.exports, "ModalContent", () => $66391c55bbcf9065$export$6da19a24bf249f17);
|
|
21
|
-
$parcel$export(module.exports, "ModalControls", () => $8b06e393320a8e77$export$c63fb08199be8e0e);
|
|
22
|
-
$parcel$export(module.exports, "ModalHeader", () => $2679bd8c144d3995$export$f50a68e3694789ee);
|
|
23
|
-
$parcel$export(module.exports, "ModalLauncher", () => $f6dfceab072669eb$export$e21b828b42c54a37);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
function $2e9361382cc113aa$export$4bef00d568400c9b() {
|
|
36
|
-
return {
|
|
37
|
-
root: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
38
|
-
position: "relative",
|
|
39
|
-
padding: `${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingM} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingM} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingM} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingL}`,
|
|
40
|
-
borderRadius: `${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).borderRadiusMedium} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).borderRadiusMedium} 0 0`,
|
|
41
|
-
borderBottom: `1px solid ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).gray300}`
|
|
42
|
-
}),
|
|
43
|
-
buttonContainer: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
44
|
-
position: "relative",
|
|
45
|
-
width: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacing2Xl,
|
|
46
|
-
height: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingL,
|
|
47
|
-
button: {
|
|
48
|
-
position: "absolute",
|
|
49
|
-
top: `calc(-1 * ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacing2Xs})`,
|
|
50
|
-
right: 0
|
|
51
|
-
}
|
|
52
|
-
})
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const $2679bd8c144d3995$export$f50a68e3694789ee = ({ onClose: onClose , title: title , testId: testId = "cf-ui-modal-header" , className: className , ...otherProps })=>{
|
|
58
|
-
const styles = (0, $2e9361382cc113aa$export$4bef00d568400c9b)();
|
|
59
|
-
return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36core.Flex), {
|
|
60
|
-
...otherProps,
|
|
61
|
-
className: (0, $a6cQm$emotion.cx)(styles.root, className),
|
|
62
|
-
testId: testId,
|
|
63
|
-
alignItems: "center",
|
|
64
|
-
justifyContent: "space-between"
|
|
65
|
-
}, /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36typography.Subheading), {
|
|
66
|
-
as: "h2",
|
|
67
|
-
isTruncated: true,
|
|
68
|
-
marginBottom: "none"
|
|
69
|
-
}, title), onClose && /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36core.Flex), {
|
|
70
|
-
alignItems: "center",
|
|
71
|
-
className: styles.buttonContainer
|
|
72
|
-
}, /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36button.Button), {
|
|
73
|
-
variant: "transparent",
|
|
74
|
-
"aria-label": "Close",
|
|
75
|
-
startIcon: /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36icons.CloseIcon), {
|
|
76
|
-
size: "small"
|
|
77
|
-
}),
|
|
78
|
-
onClick: ()=>{
|
|
79
|
-
onClose();
|
|
80
|
-
},
|
|
81
|
-
size: "small"
|
|
82
|
-
})));
|
|
83
|
-
};
|
|
84
|
-
$2679bd8c144d3995$export$f50a68e3694789ee.displayName = "ModalHeader";
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
function $32e971b34c262557$export$5168abbf3ad664a0() {
|
|
93
|
-
return {
|
|
94
|
-
root: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
95
|
-
padding: `${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingM} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingL}`,
|
|
96
|
-
color: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).gray700,
|
|
97
|
-
fontSize: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).fontSizeM,
|
|
98
|
-
fontFamily: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).fontStackPrimary,
|
|
99
|
-
lineHeight: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).lineHeightM,
|
|
100
|
-
overflowY: "auto",
|
|
101
|
-
overflowX: "auto",
|
|
102
|
-
boxSizing: "border-box"
|
|
103
|
-
})
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const $66391c55bbcf9065$export$6da19a24bf249f17 = ({ testId: testId = "cf-ui-modal-content" , className: className , children: children , ...otherProps })=>{
|
|
109
|
-
const styles = (0, $32e971b34c262557$export$5168abbf3ad664a0)();
|
|
110
|
-
return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36core.Box), {
|
|
111
|
-
...otherProps,
|
|
112
|
-
as: "div",
|
|
113
|
-
className: (0, $a6cQm$emotion.cx)(styles.root, className),
|
|
114
|
-
testId: testId
|
|
115
|
-
}, children);
|
|
116
|
-
};
|
|
117
|
-
$66391c55bbcf9065$export$6da19a24bf249f17.displayName = "ModalContent";
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
function $a1d799ea27882387$export$9af97f4b0b4c597a(props) {
|
|
124
|
-
const modal = (0, $a6cQm$emotion.cx)(/*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
125
|
-
margin: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacing2Xl,
|
|
126
|
-
backgroundColor: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).colorWhite,
|
|
127
|
-
borderRadius: props.size === "zen" ? 0 : (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).borderRadiusMedium,
|
|
128
|
-
boxShadow: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).boxShadowHeavy,
|
|
129
|
-
maxHeight: `calc(100vh - 1rem * (100 / ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).fontBaseDefault}))`,
|
|
130
|
-
maxWidth: `calc(100vw - 1rem * (100 / ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).fontBaseDefault}))`,
|
|
131
|
-
overflow: "hidden",
|
|
132
|
-
display: "flex",
|
|
133
|
-
flexDirection: "column"
|
|
134
|
-
}), props.allowHeightOverflow ? /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
135
|
-
name: "1evlo53",
|
|
136
|
-
styles: "overflow:auto;max-height:none;"
|
|
137
|
-
}) : null, props.size === "zen" ? /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
138
|
-
name: "11c88st",
|
|
139
|
-
styles: "max-width:none;max-height:none;margin:0;height:100%;width:100%;"
|
|
140
|
-
}) : null, props.className);
|
|
141
|
-
return {
|
|
142
|
-
portal: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
143
|
-
name: "13o7eu2",
|
|
144
|
-
styles: "display:block;"
|
|
145
|
-
}),
|
|
146
|
-
base: {
|
|
147
|
-
root: (0, $a6cQm$emotion.cx)(/*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
148
|
-
zIndex: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).zIndexModalContent,
|
|
149
|
-
position: "relative",
|
|
150
|
-
padding: 0,
|
|
151
|
-
display: "inline-block",
|
|
152
|
-
margin: "0 auto",
|
|
153
|
-
textAlign: "left",
|
|
154
|
-
outline: "none",
|
|
155
|
-
transform: props.size === "zen" ? "scale(1)" : "scale(0.85)",
|
|
156
|
-
transition: `transform ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).transitionDurationDefault} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).transitionEasingDefault}`
|
|
157
|
-
}), props.size === "zen" ? /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
158
|
-
name: "uwwqev",
|
|
159
|
-
styles: "width:100%;height:100%;"
|
|
160
|
-
}) : null),
|
|
161
|
-
afterOpen: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
162
|
-
name: "plgkgv",
|
|
163
|
-
styles: "transform:scale(1) !important;"
|
|
164
|
-
}),
|
|
165
|
-
beforeClose: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
166
|
-
transform: props.size === "zen" ? "scale(1)" : "scale(0.85)"
|
|
167
|
-
})
|
|
168
|
-
},
|
|
169
|
-
modalOverlay: {
|
|
170
|
-
root: (0, $a6cQm$emotion.cx)(/*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
171
|
-
display: "flex",
|
|
172
|
-
alignItems: "baseline",
|
|
173
|
-
flexWrap: "wrap",
|
|
174
|
-
top: 0,
|
|
175
|
-
right: 0,
|
|
176
|
-
bottom: 0,
|
|
177
|
-
left: 0,
|
|
178
|
-
zIndex: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).zIndexModal,
|
|
179
|
-
opacity: 0,
|
|
180
|
-
transition: `opacity ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).transitionDurationDefault} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).transitionEasingDefault}`,
|
|
181
|
-
position: "fixed",
|
|
182
|
-
overflowY: "auto",
|
|
183
|
-
backgroundColor: "rgba(12, 20, 28, 0.74902)",
|
|
184
|
-
textAlign: "center"
|
|
185
|
-
}), props.position === "center" ? /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
186
|
-
name: "1qe4tyl",
|
|
187
|
-
styles: "align-items:center;justify-content:center;"
|
|
188
|
-
}) : null, props.overlayClassName),
|
|
189
|
-
afterOpen: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
190
|
-
name: "whh5e5",
|
|
191
|
-
styles: "opacity:1;"
|
|
192
|
-
}),
|
|
193
|
-
beforeClose: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
|
|
194
|
-
name: "q7lffx",
|
|
195
|
-
styles: "opacity:0;"
|
|
196
|
-
})
|
|
197
|
-
},
|
|
198
|
-
modal: modal
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
const $854b6d713fe70fc9$var$ModalSizesMapper = {
|
|
204
|
-
medium: "520px",
|
|
205
|
-
small: "400px",
|
|
206
|
-
large: "700px",
|
|
207
|
-
fullWidth: "100vw",
|
|
208
|
-
zen: "100vw"
|
|
209
|
-
};
|
|
210
|
-
function $854b6d713fe70fc9$var$focusFirstWithinNode(node) {
|
|
211
|
-
if (node && node.querySelectorAll) {
|
|
212
|
-
const elements = node.querySelectorAll("input, button");
|
|
213
|
-
if (elements.length > 0) {
|
|
214
|
-
const firstElement = elements[0]; // @ts-expect-error focus might be missing
|
|
215
|
-
if (typeof firstElement.focus === "function") // @ts-expect-error focus might be missing
|
|
216
|
-
firstElement.focus();
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
const $854b6d713fe70fc9$export$2b77a92f1a5ad772 = ({ allowHeightOverflow: allowHeightOverflow = false , position: position = "center" , shouldCloseOnEscapePress: shouldCloseOnEscapePress = true , shouldCloseOnOverlayClick: shouldCloseOnOverlayClick = true , size: size = "medium" , testId: testId = "cf-ui-modal" , topOffset: topOffset = "50px" , aria: aria , ...otherProps })=>{
|
|
221
|
-
var ref2, ref1;
|
|
222
|
-
const contentRef = $a6cQm$react.useRef(null);
|
|
223
|
-
const props = {
|
|
224
|
-
...otherProps,
|
|
225
|
-
allowHeightOverflow: allowHeightOverflow,
|
|
226
|
-
position: position,
|
|
227
|
-
shouldCloseOnEscapePress: shouldCloseOnEscapePress,
|
|
228
|
-
shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
|
|
229
|
-
size: size,
|
|
230
|
-
testId: testId,
|
|
231
|
-
topOffset: topOffset
|
|
232
|
-
};
|
|
233
|
-
const styles = (0, $a1d799ea27882387$export$9af97f4b0b4c597a)({
|
|
234
|
-
position: position,
|
|
235
|
-
size: size,
|
|
236
|
-
allowHeightOverflow: allowHeightOverflow,
|
|
237
|
-
className: otherProps.className,
|
|
238
|
-
overlayClassName: (ref2 = otherProps.overlayProps) === null || ref2 === void 0 ? void 0 : ref2.className
|
|
239
|
-
});
|
|
240
|
-
$a6cQm$react.useEffect(()=>{
|
|
241
|
-
if (props.isShown) setTimeout(()=>{
|
|
242
|
-
if (props.initialFocusRef && props.initialFocusRef.current) {
|
|
243
|
-
if (props.initialFocusRef.current.focus) props.initialFocusRef.current.focus();
|
|
244
|
-
} else if (contentRef.current) $854b6d713fe70fc9$var$focusFirstWithinNode(contentRef.current);
|
|
245
|
-
}, 100);
|
|
246
|
-
}, [
|
|
247
|
-
props.isShown,
|
|
248
|
-
props.initialFocusRef
|
|
249
|
-
]);
|
|
250
|
-
const renderDefault = ()=>{
|
|
251
|
-
return /*#__PURE__*/ $a6cQm$react.createElement($a6cQm$react.Fragment, null, otherProps.title && /*#__PURE__*/ $a6cQm$react.createElement((0, $2679bd8c144d3995$export$f50a68e3694789ee), {
|
|
252
|
-
title: otherProps.title,
|
|
253
|
-
onClose: props.onClose,
|
|
254
|
-
...otherProps.modalHeaderProps
|
|
255
|
-
}), /*#__PURE__*/ $a6cQm$react.createElement((0, $66391c55bbcf9065$export$6da19a24bf249f17), otherProps.modalContentProps, otherProps.children));
|
|
256
|
-
};
|
|
257
|
-
return /*#__PURE__*/ $a6cQm$react.createElement((0, ($parcel$interopDefault($a6cQm$reactmodal))), {
|
|
258
|
-
ariaHideApp: false,
|
|
259
|
-
aria: aria,
|
|
260
|
-
onRequestClose: props.onClose,
|
|
261
|
-
isOpen: otherProps.isShown,
|
|
262
|
-
onAfterOpen: props.onAfterOpen,
|
|
263
|
-
shouldCloseOnEsc: shouldCloseOnEscapePress,
|
|
264
|
-
shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
|
|
265
|
-
shouldFocusAfterRender: true,
|
|
266
|
-
shouldReturnFocusAfterClose: true,
|
|
267
|
-
portalClassName: styles.portal,
|
|
268
|
-
style: {
|
|
269
|
-
content: {
|
|
270
|
-
top: position === "center" ? 0 : topOffset
|
|
271
|
-
},
|
|
272
|
-
overlay: (ref1 = otherProps.overlayProps) === null || ref1 === void 0 ? void 0 : ref1.style
|
|
273
|
-
},
|
|
274
|
-
className: {
|
|
275
|
-
base: styles.base.root,
|
|
276
|
-
afterOpen: styles.base.afterOpen,
|
|
277
|
-
beforeClose: styles.base.beforeClose
|
|
278
|
-
},
|
|
279
|
-
overlayClassName: {
|
|
280
|
-
base: styles.modalOverlay.root,
|
|
281
|
-
afterOpen: styles.modalOverlay.afterOpen,
|
|
282
|
-
beforeClose: styles.modalOverlay.beforeClose
|
|
283
|
-
},
|
|
284
|
-
closeTimeoutMS: 200,
|
|
285
|
-
contentRef: (ref)=>{
|
|
286
|
-
contentRef.current = ref;
|
|
287
|
-
}
|
|
288
|
-
}, /*#__PURE__*/ $a6cQm$react.createElement((0, $a6cQm$contentfulf36core.Box), {
|
|
289
|
-
testId: testId,
|
|
290
|
-
style: {
|
|
291
|
-
width: $854b6d713fe70fc9$var$ModalSizesMapper[size] || size
|
|
292
|
-
},
|
|
293
|
-
className: styles.modal,
|
|
294
|
-
"data-modal-root": true
|
|
295
|
-
}, typeof otherProps.children === "function" ? otherProps.children(props) : renderDefault()));
|
|
296
|
-
};
|
|
297
|
-
$854b6d713fe70fc9$export$2b77a92f1a5ad772.displayName = "Modal";
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
const $8b06e393320a8e77$export$c63fb08199be8e0e = ({ testId: testId = "cf-ui-modal-controls" , className: className , children: children , ...otherProps })=>{
|
|
306
|
-
return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36core.Flex), {
|
|
307
|
-
...otherProps,
|
|
308
|
-
className: className,
|
|
309
|
-
testId: testId,
|
|
310
|
-
flexDirection: "row",
|
|
311
|
-
justifyContent: "flex-end",
|
|
312
|
-
margin: "spacingL",
|
|
313
|
-
marginTop: "none"
|
|
314
|
-
}, /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36button.ButtonGroup), {
|
|
315
|
-
variant: "spaced",
|
|
316
|
-
spacing: "spacingS"
|
|
317
|
-
}, children));
|
|
318
|
-
};
|
|
319
|
-
$8b06e393320a8e77$export$c63fb08199be8e0e.displayName = "ModalControls";
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
const $2132db66f9439432$export$2b77a92f1a5ad772 = (0, $854b6d713fe70fc9$export$2b77a92f1a5ad772);
|
|
323
|
-
$2132db66f9439432$export$2b77a92f1a5ad772.Content = (0, $66391c55bbcf9065$export$6da19a24bf249f17);
|
|
324
|
-
$2132db66f9439432$export$2b77a92f1a5ad772.Header = (0, $2679bd8c144d3995$export$f50a68e3694789ee);
|
|
325
|
-
$2132db66f9439432$export$2b77a92f1a5ad772.Controls = (0, $8b06e393320a8e77$export$c63fb08199be8e0e);
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
const $657ddd6e4548962f$export$427af6990c8ff682 = ({ allowHeightOverflow: allowHeightOverflow = false , cancelLabel: cancelLabel = "Cancel" , cancelTestId: cancelTestId = "cf-ui-modal-confirm-cancel-button" , children: children , confirmLabel: confirmLabel = "Confirm" , confirmTestId: confirmTestId = "cf-ui-modal-confirm-confirm-button" , intent: intent = "positive" , isConfirmDisabled: isConfirmDisabled = false , isConfirmLoading: isConfirmLoading = false , isShown: isShown , modalContentProps: modalContentProps , modalControlsProps: modalControlsProps , modalHeaderProps: modalHeaderProps , onCancel: onCancel , onConfirm: onConfirm , shouldCloseOnEscapePress: shouldCloseOnEscapePress = true , shouldCloseOnOverlayClick: shouldCloseOnOverlayClick = true , size: size = "medium" , testId: testId = "cf-ui-modal-confirm" , title: title = "Are you sure?" , initialFocusRef: initialFocusRef })=>{
|
|
332
|
-
const cancelRef = (0, ($parcel$interopDefault($a6cQm$react))).useRef(null);
|
|
333
|
-
const confirmButton = confirmLabel ? /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36button.Button), {
|
|
334
|
-
testId: confirmTestId,
|
|
335
|
-
isDisabled: isConfirmDisabled,
|
|
336
|
-
isLoading: isConfirmLoading,
|
|
337
|
-
variant: intent,
|
|
338
|
-
size: "small",
|
|
339
|
-
onClick: ()=>onConfirm()
|
|
340
|
-
}, confirmLabel) : null;
|
|
341
|
-
const cancelButton = cancelLabel ? /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36button.Button), {
|
|
342
|
-
testId: cancelTestId,
|
|
343
|
-
variant: "secondary",
|
|
344
|
-
onClick: onCancel,
|
|
345
|
-
size: "small",
|
|
346
|
-
ref: initialFocusRef || cancelRef
|
|
347
|
-
}, cancelLabel) : null;
|
|
348
|
-
return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $2132db66f9439432$export$2b77a92f1a5ad772), {
|
|
349
|
-
testId: testId,
|
|
350
|
-
isShown: isShown,
|
|
351
|
-
onClose: onCancel,
|
|
352
|
-
size: size,
|
|
353
|
-
shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
|
|
354
|
-
shouldCloseOnEscapePress: shouldCloseOnEscapePress,
|
|
355
|
-
allowHeightOverflow: allowHeightOverflow,
|
|
356
|
-
initialFocusRef: cancelRef
|
|
357
|
-
}, ()=>{
|
|
358
|
-
return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, ($parcel$interopDefault($a6cQm$react))).Fragment, null, /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $2132db66f9439432$export$2b77a92f1a5ad772).Header, {
|
|
359
|
-
title: title || "",
|
|
360
|
-
...modalHeaderProps
|
|
361
|
-
}), /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $2132db66f9439432$export$2b77a92f1a5ad772).Content, modalContentProps, children), /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $2132db66f9439432$export$2b77a92f1a5ad772).Controls, modalControlsProps, cancelButton, confirmButton));
|
|
362
|
-
});
|
|
363
|
-
};
|
|
364
|
-
$657ddd6e4548962f$export$427af6990c8ff682.displayName = "ModalConfirm";
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
const $f6dfceab072669eb$var$getRoot = (rootElId)=>{
|
|
372
|
-
// Reuse the container if we find it
|
|
373
|
-
let rootDom = document.getElementById(rootElId);
|
|
374
|
-
if (rootDom !== null) return rootDom;
|
|
375
|
-
// Otherwise create it
|
|
376
|
-
rootDom = document.createElement("div");
|
|
377
|
-
rootDom.setAttribute("id", rootElId);
|
|
378
|
-
document.body.appendChild(rootDom);
|
|
379
|
-
return rootDom;
|
|
380
|
-
};
|
|
381
|
-
const $f6dfceab072669eb$var$openModalsIds = new Map();
|
|
382
|
-
function $f6dfceab072669eb$var$closeAll() {
|
|
383
|
-
$f6dfceab072669eb$var$openModalsIds.forEach(async ({ render: render , currentConfig: currentConfig , delay: delay }, rootElId)=>{
|
|
384
|
-
const config = {
|
|
385
|
-
...currentConfig,
|
|
386
|
-
isShown: false
|
|
387
|
-
};
|
|
388
|
-
render(config);
|
|
389
|
-
await new Promise((resolveDelay)=>setTimeout(resolveDelay, delay));
|
|
390
|
-
(0, ($parcel$interopDefault($a6cQm$reactdom))).unmountComponentAtNode($f6dfceab072669eb$var$getRoot(rootElId));
|
|
391
|
-
$f6dfceab072669eb$var$openModalsIds.delete(rootElId);
|
|
392
|
-
});
|
|
393
|
-
} // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
394
|
-
function $f6dfceab072669eb$var$open(componentRenderer, options = {}) {
|
|
395
|
-
options = {
|
|
396
|
-
delay: 300,
|
|
397
|
-
...options
|
|
398
|
-
}; // Allow components to specify if they wish to reuse the modal container
|
|
399
|
-
const rootElId = `modals-root${options.modalId || Date.now()}`;
|
|
400
|
-
const rootDom = $f6dfceab072669eb$var$getRoot(rootElId);
|
|
401
|
-
return new Promise((resolve)=>{
|
|
402
|
-
let currentConfig = {
|
|
403
|
-
onClose: onClose1,
|
|
404
|
-
isShown: true
|
|
405
|
-
};
|
|
406
|
-
function render({ onClose: onClose , isShown: isShown }) {
|
|
407
|
-
(0, ($parcel$interopDefault($a6cQm$reactdom))).render(componentRenderer({
|
|
408
|
-
onClose: onClose,
|
|
409
|
-
isShown: isShown
|
|
410
|
-
}), rootDom);
|
|
411
|
-
}
|
|
412
|
-
async function onClose1(arg) {
|
|
413
|
-
currentConfig = {
|
|
414
|
-
...currentConfig,
|
|
415
|
-
isShown: false
|
|
416
|
-
};
|
|
417
|
-
render(currentConfig);
|
|
418
|
-
await new Promise((resolveDelay)=>setTimeout(resolveDelay, options.delay));
|
|
419
|
-
(0, ($parcel$interopDefault($a6cQm$reactdom))).unmountComponentAtNode(rootDom);
|
|
420
|
-
rootDom.remove();
|
|
421
|
-
$f6dfceab072669eb$var$openModalsIds.delete(rootElId);
|
|
422
|
-
resolve(arg);
|
|
423
|
-
}
|
|
424
|
-
render(currentConfig);
|
|
425
|
-
$f6dfceab072669eb$var$openModalsIds.set(rootElId, {
|
|
426
|
-
render: render,
|
|
427
|
-
currentConfig: currentConfig,
|
|
428
|
-
delay: options.delay
|
|
429
|
-
});
|
|
430
|
-
});
|
|
431
|
-
}
|
|
432
|
-
const $f6dfceab072669eb$export$e21b828b42c54a37 = {
|
|
433
|
-
open: $f6dfceab072669eb$var$open,
|
|
434
|
-
closeAll: $f6dfceab072669eb$var$closeAll
|
|
435
|
-
};
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/components/modal/src/index.ts","packages/components/modal/src/CompoundModal.tsx","packages/components/modal/src/Modal.tsx","packages/components/modal/src/ModalHeader/ModalHeader.tsx","packages/components/modal/src/ModalHeader/ModalHeader.styles.ts","packages/components/modal/src/ModalContent/ModalContent.tsx","packages/components/modal/src/ModalContent/ModalContent.styles.ts","packages/components/modal/src/Modal.styles.ts","packages/components/modal/src/ModalControls/ModalControls.tsx","packages/components/modal/src/ModalConfirm/ModalConfirm.tsx","packages/components/modal/src/ModalLauncher/ModalLauncher.tsx"],"sourcesContent":["export { Modal } from './CompoundModal';\nexport type { ModalProps } from './Modal';\nexport { ModalConfirm } from './ModalConfirm/ModalConfirm';\nexport type { ModalConfirmProps } from './ModalConfirm/ModalConfirm';\nexport { ModalContent } from './ModalContent/ModalContent';\nexport type { ModalContentProps } from './ModalContent/ModalContent';\nexport { ModalControls } from './ModalControls/ModalControls';\nexport type { ModalControlsProps } from './ModalControls/ModalControls';\nexport { ModalHeader } from './ModalHeader/ModalHeader';\nexport type { ModalHeaderProps } from './ModalHeader/ModalHeader';\nexport { ModalLauncher } from './ModalLauncher/ModalLauncher';\n","import { Modal as OriginalModal } from './Modal';\nimport { ModalContent } from './ModalContent/ModalContent';\nimport { ModalHeader } from './ModalHeader/ModalHeader';\nimport { ModalControls } from './ModalControls/ModalControls';\n\ntype CompoundModal = typeof OriginalModal & {\n Content: typeof ModalContent;\n Header: typeof ModalHeader;\n Controls: typeof ModalControls;\n};\n\nexport const Modal = OriginalModal as CompoundModal;\nModal.Content = ModalContent;\nModal.Header = ModalHeader;\nModal.Controls = ModalControls;\n","import * as React from 'react';\nimport ReactModal from 'react-modal';\n\nimport { Box, type CommonProps, type ExpandProps } from '@contentful/f36-core';\n\nimport { ModalHeader, ModalHeaderProps } from './ModalHeader/ModalHeader';\nimport { ModalContent, ModalContentProps } from './ModalContent/ModalContent';\nimport { getModalStyles } from './Modal.styles';\nimport type { ModalSizeType, ModalPositionType } from './types';\n\nconst ModalSizesMapper: { [key in ModalSizeType]: string } = {\n medium: '520px',\n small: '400px',\n large: '700px',\n fullWidth: '100vw',\n zen: '100vw',\n};\n\nexport interface ModalProps extends CommonProps {\n /**\n * When true, the dialog is shown.\n */\n isShown: boolean;\n\n /**\n * Function that will be run when the modal is requested to be closed, prior to actually closing.\n */\n onClose: ReactModal.Props['onRequestClose'];\n\n /**\n * Function that will be run after the modal has opened.\n */\n onAfterOpen?: ReactModal.Props['onAfterOpen'];\n\n /**\n * Additional aria attributes\n */\n aria?: ReactModal.Props['aria'];\n\n /**\n * Boolean indicating if clicking the overlay should close the overlay.\n * @default true\n */\n shouldCloseOnOverlayClick?: boolean;\n /**\n * Boolean indicating if pressing the esc key should close the overlay.\n * @default true\n */\n shouldCloseOnEscapePress?: boolean;\n /**\n * Indicating if modal is centered or linked to the top\n * @default center\n */\n position?: ModalPositionType;\n /**\n * Top offset if position is 'top'\n * @default 50px\n */\n topOffset?: number | string;\n /**\n * Modal title that is used in header\n */\n title?: string;\n /**\n * Size of the modal window\n * @default medium\n */\n size?: ModalSizeType | string | number;\n /**\n * Are modals higher than viewport allowed\n * @default false\n */\n allowHeightOverflow?: boolean;\n\n /**\n * Optional props to override overlay behaviour\n */\n overlayProps?: Pick<CommonProps, 'className' | 'style'>;\n\n /**\n * Optional props to override ModalHeader behaviour\n */\n modalHeaderProps?: Partial<ModalHeaderProps>;\n\n /**\n * Optional props to override ModalContent behaviour\n */\n modalContentProps?: Partial<ModalContentProps>;\n\n /**\n * Optional property to set initial focus\n */\n initialFocusRef?: React.RefObject<HTMLElement>;\n\n children: React.ReactNode | RenderModal;\n}\n\ntype RenderModal = (modalProps: ModalProps) => React.ReactNode;\n\nfunction focusFirstWithinNode(node: HTMLElement) {\n if (node && node.querySelectorAll) {\n const elements = node.querySelectorAll('input, button');\n if (elements.length > 0) {\n const firstElement = elements[0];\n // @ts-expect-error focus might be missing\n if (typeof firstElement.focus === 'function') {\n // @ts-expect-error focus might be missing\n firstElement.focus();\n }\n }\n }\n}\n\nexport const Modal = ({\n allowHeightOverflow = false,\n position = 'center',\n shouldCloseOnEscapePress = true,\n shouldCloseOnOverlayClick = true,\n size = 'medium',\n testId = 'cf-ui-modal',\n topOffset = '50px',\n aria,\n ...otherProps\n}: ExpandProps<ModalProps>) => {\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n const props = {\n ...otherProps,\n allowHeightOverflow,\n position,\n shouldCloseOnEscapePress,\n shouldCloseOnOverlayClick,\n size,\n testId,\n topOffset,\n };\n\n const styles = getModalStyles({\n position,\n size,\n allowHeightOverflow,\n className: otherProps.className,\n overlayClassName: otherProps.overlayProps?.className,\n });\n\n React.useEffect(() => {\n if (props.isShown) {\n setTimeout(() => {\n if (props.initialFocusRef && props.initialFocusRef.current) {\n if (props.initialFocusRef.current.focus) {\n props.initialFocusRef.current.focus();\n }\n } else if (contentRef.current) {\n focusFirstWithinNode(contentRef.current);\n }\n }, 100);\n }\n }, [props.isShown, props.initialFocusRef]);\n\n const renderDefault = () => {\n return (\n <>\n {otherProps.title && (\n <ModalHeader\n title={otherProps.title}\n onClose={props.onClose}\n {...otherProps.modalHeaderProps}\n />\n )}\n <ModalContent {...otherProps.modalContentProps}>\n {otherProps.children}\n </ModalContent>\n </>\n );\n };\n\n return (\n <ReactModal\n ariaHideApp={false}\n aria={aria}\n onRequestClose={props.onClose}\n isOpen={otherProps.isShown}\n onAfterOpen={props.onAfterOpen}\n shouldCloseOnEsc={shouldCloseOnEscapePress}\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldFocusAfterRender\n shouldReturnFocusAfterClose\n portalClassName={styles.portal}\n style={{\n content: {\n top: position === 'center' ? 0 : topOffset,\n },\n overlay: otherProps.overlayProps?.style,\n }}\n className={{\n base: styles.base.root,\n afterOpen: styles.base.afterOpen,\n beforeClose: styles.base.beforeClose,\n }}\n overlayClassName={{\n base: styles.modalOverlay.root,\n afterOpen: styles.modalOverlay.afterOpen,\n beforeClose: styles.modalOverlay.beforeClose,\n }}\n closeTimeoutMS={200}\n contentRef={(ref) => {\n contentRef.current = ref;\n }}\n >\n <Box\n testId={testId}\n style={{\n width: ModalSizesMapper[size] || size,\n }}\n className={styles.modal}\n data-modal-root\n >\n {typeof otherProps.children === 'function'\n ? otherProps.children(props)\n : renderDefault()}\n </Box>\n </ReactModal>\n );\n};\n\nModal.displayName = 'Modal';\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { CloseIcon } from '@contentful/f36-icons';\nimport {\n Flex,\n type PropsWithHTMLElement,\n type CommonProps,\n} from '@contentful/f36-core';\nimport { Button } from '@contentful/f36-button';\nimport { Subheading } from '@contentful/f36-typography';\n\nimport { getModalHeaderStyles } from './ModalHeader.styles';\n\ninterface ModalHeaderInternalProps extends CommonProps {\n title: string;\n onClose?: Function;\n}\n\nexport type ModalHeaderProps = PropsWithHTMLElement<\n ModalHeaderInternalProps,\n 'div'\n>;\n\nexport const ModalHeader = ({\n onClose,\n title,\n testId = 'cf-ui-modal-header',\n className,\n ...otherProps\n}: ModalHeaderProps): React.ReactElement => {\n const styles = getModalHeaderStyles();\n\n return (\n <Flex\n {...otherProps}\n className={cx(styles.root, className)}\n testId={testId}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <Subheading as=\"h2\" isTruncated marginBottom=\"none\">\n {title}\n </Subheading>\n {onClose && (\n <Flex alignItems=\"center\" className={styles.buttonContainer}>\n <Button\n variant=\"transparent\"\n aria-label=\"Close\"\n startIcon={<CloseIcon size=\"small\" />}\n onClick={() => {\n onClose();\n }}\n size=\"small\"\n />\n </Flex>\n )}\n </Flex>\n );\n};\n\nModalHeader.displayName = 'ModalHeader';\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nexport function getModalHeaderStyles() {\n return {\n root: css({\n position: 'relative',\n padding: `${tokens.spacingM} ${tokens.spacingM} ${tokens.spacingM} ${tokens.spacingL}`,\n borderRadius: `${tokens.borderRadiusMedium} ${tokens.borderRadiusMedium} 0 0`,\n borderBottom: `1px solid ${tokens.gray300}`,\n }),\n buttonContainer: css({\n position: 'relative',\n width: tokens.spacing2Xl,\n height: tokens.spacingL,\n button: {\n position: 'absolute',\n top: `calc(-1 * ${tokens.spacing2Xs})`,\n right: 0,\n },\n }),\n };\n}\n","import React from 'react';\nimport { cx } from 'emotion';\nimport {\n Box,\n type PropsWithHTMLElement,\n type CommonProps,\n} from '@contentful/f36-core';\nimport { getModalContentStyles } from './ModalContent.styles';\n\ninterface ModalContentInternalProps extends CommonProps {\n children: React.ReactNode;\n}\n\nexport type ModalContentProps = PropsWithHTMLElement<\n ModalContentInternalProps,\n 'div'\n>;\n\nexport const ModalContent = ({\n testId = 'cf-ui-modal-content',\n className,\n children,\n ...otherProps\n}: ModalContentProps) => {\n const styles = getModalContentStyles();\n return (\n <Box\n {...otherProps}\n as=\"div\"\n className={cx(styles.root, className)}\n testId={testId}\n >\n {children}\n </Box>\n );\n};\n\nModalContent.displayName = 'ModalContent';\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport function getModalContentStyles() {\n return {\n root: css({\n padding: `${tokens.spacingM} ${tokens.spacingL}`,\n color: tokens.gray700,\n fontSize: tokens.fontSizeM,\n fontFamily: tokens.fontStackPrimary,\n lineHeight: tokens.lineHeightM,\n overflowY: 'auto',\n overflowX: 'auto',\n boxSizing: 'border-box',\n }),\n };\n}\n","import tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\n\nimport type { ModalProps } from './Modal';\n\nexport function getModalStyles(props: {\n size: ModalProps['size'];\n position: ModalProps['position'];\n allowHeightOverflow?: boolean;\n className?: string;\n overlayClassName?: string;\n}) {\n const modal = cx(\n css({\n margin: tokens.spacing2Xl,\n backgroundColor: tokens.colorWhite,\n borderRadius: props.size === 'zen' ? 0 : tokens.borderRadiusMedium,\n boxShadow: tokens.boxShadowHeavy,\n maxHeight: `calc(100vh - 1rem * (100 / ${tokens.fontBaseDefault}))`,\n maxWidth: `calc(100vw - 1rem * (100 / ${tokens.fontBaseDefault}))`,\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n }),\n props.allowHeightOverflow\n ? css({\n overflow: 'auto',\n maxHeight: 'none',\n })\n : null,\n props.size === 'zen'\n ? css({\n maxWidth: 'none',\n maxHeight: 'none',\n margin: 0,\n height: '100%',\n width: '100%',\n })\n : null,\n props.className,\n );\n\n return {\n portal: css({\n display: 'block',\n }),\n base: {\n root: cx(\n css({\n zIndex: tokens.zIndexModalContent,\n position: 'relative',\n padding: 0,\n display: 'inline-block',\n margin: '0 auto',\n textAlign: 'left',\n outline: 'none',\n transform: props.size === 'zen' ? 'scale(1)' : 'scale(0.85)',\n transition: `transform ${tokens.transitionDurationDefault} ${tokens.transitionEasingDefault}`,\n }),\n props.size === 'zen'\n ? css({\n width: '100%',\n height: '100%',\n })\n : null,\n ),\n afterOpen: css({\n transform: 'scale(1) !important',\n }),\n beforeClose: css({\n transform: props.size === 'zen' ? 'scale(1)' : 'scale(0.85)',\n }),\n },\n modalOverlay: {\n root: cx(\n css({\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: tokens.zIndexModal,\n opacity: 0,\n transition: `opacity ${tokens.transitionDurationDefault} ${tokens.transitionEasingDefault}`,\n position: 'fixed',\n overflowY: 'auto',\n backgroundColor: 'rgba(12, 20, 28, 0.74902)',\n textAlign: 'center',\n }),\n props.position === 'center'\n ? css({\n alignItems: 'center',\n justifyContent: 'center',\n })\n : null,\n props.overlayClassName,\n ),\n afterOpen: css({\n opacity: 1,\n }),\n beforeClose: css({\n opacity: 0,\n }),\n },\n modal,\n };\n}\n","import React from 'react';\n\nimport {\n Flex,\n type PropsWithHTMLElement,\n type CommonProps,\n} from '@contentful/f36-core';\nimport { ButtonGroup } from '@contentful/f36-button';\n\ninterface ModalControlsInternalProps extends CommonProps {\n children: React.ReactElement[] | React.ReactElement;\n}\n\nexport type ModalControlsProps = PropsWithHTMLElement<\n ModalControlsInternalProps,\n 'div'\n>;\n\nexport const ModalControls = ({\n testId = 'cf-ui-modal-controls',\n className,\n children,\n ...otherProps\n}: ModalControlsProps): React.ReactElement => {\n return (\n <Flex\n {...otherProps}\n className={className}\n testId={testId}\n flexDirection=\"row\"\n justifyContent=\"flex-end\"\n margin=\"spacingL\"\n marginTop=\"none\"\n >\n <ButtonGroup variant=\"spaced\" spacing=\"spacingS\">\n {children}\n </ButtonGroup>\n </Flex>\n );\n};\n\nModalControls.displayName = 'ModalControls';\n","import React from 'react';\n\nimport { Modal } from '../CompoundModal';\nimport type { ModalProps } from '../Modal';\nimport type { ModalHeaderProps } from '../ModalHeader/ModalHeader';\nimport type { ModalContentProps } from '../ModalContent/ModalContent';\nimport type { ModalControlsProps } from '../ModalControls/ModalControls';\nimport { Button } from '@contentful/f36-button';\n\nexport interface ModalConfirmProps {\n /**\n * When true, the dialog is shown.\n */\n isShown: boolean;\n /**\n * Function that will be called when the confirm button is clicked. This does not close the ModalConfirm.\n */\n onConfirm(): void;\n /**\n * Function that will be called when the cancel button is clicked. This does not close the ModalConfirm.\n */\n onCancel: ModalProps['onClose'];\n /**\n Modal title that is used in header\n */\n title?: string;\n /**\n * Label of the confirm button\n */\n confirmLabel?: string | false;\n /**\n * Label of the cancel button\n */\n cancelLabel?: string | false;\n /**\n * The intent of the ModalConfirm. Used for the Button.\n */\n intent?: 'primary' | 'positive' | 'negative';\n /**\n * Size of the modal window\n */\n size?: ModalProps['size'];\n /**\n * Boolean indicating if clicking the overlay should close the overlay.\n */\n shouldCloseOnOverlayClick?: boolean;\n /**\n * Boolean indicating if pressing the esc key should close the overlay.\n */\n shouldCloseOnEscapePress?: boolean;\n /**\n * When true, the confirm button is set to disabled.\n */\n isConfirmDisabled?: boolean;\n /**\n * When true, the confirm button is set to loading.\n */\n isConfirmLoading?: boolean;\n /**\n * Are modals higher than viewport allowed\n */\n allowHeightOverflow?: boolean;\n\n /**\n * Optional props to override ModalHeader behaviour\n */\n modalHeaderProps?: Partial<ModalHeaderProps>;\n\n /**\n * Optional props to override ModalContent behaviour\n */\n modalContentProps?: Partial<ModalContentProps>;\n\n /**\n * Optional props to override ModalControl behaviour\n */\n modalControlsProps?: Partial<ModalControlsProps>;\n\n /**\n * Optional property to set initial focus\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- we don't know the type of element to give initial focus\n initialFocusRef?: React.RefObject<any>;\n\n testId?: string;\n confirmTestId?: string;\n cancelTestId?: string;\n children: React.ReactNode;\n}\n\nexport const ModalConfirm = ({\n allowHeightOverflow = false,\n cancelLabel = 'Cancel',\n cancelTestId = 'cf-ui-modal-confirm-cancel-button',\n children,\n confirmLabel = 'Confirm',\n confirmTestId = 'cf-ui-modal-confirm-confirm-button',\n intent = 'positive',\n isConfirmDisabled = false,\n isConfirmLoading = false,\n isShown,\n modalContentProps,\n modalControlsProps,\n modalHeaderProps,\n onCancel,\n onConfirm,\n shouldCloseOnEscapePress = true,\n shouldCloseOnOverlayClick = true,\n size = 'medium',\n testId = 'cf-ui-modal-confirm',\n title = 'Are you sure?',\n initialFocusRef,\n}: ModalConfirmProps) => {\n const cancelRef = React.useRef(null);\n\n const confirmButton = confirmLabel ? (\n <Button\n testId={confirmTestId}\n isDisabled={isConfirmDisabled}\n isLoading={isConfirmLoading}\n variant={intent}\n size=\"small\"\n onClick={() => onConfirm()}\n >\n {confirmLabel}\n </Button>\n ) : null;\n\n const cancelButton = cancelLabel ? (\n <Button\n testId={cancelTestId}\n variant=\"secondary\"\n onClick={onCancel}\n size=\"small\"\n ref={initialFocusRef || cancelRef}\n >\n {cancelLabel}\n </Button>\n ) : null;\n\n return (\n <Modal\n testId={testId}\n isShown={isShown}\n onClose={onCancel}\n size={size}\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEscapePress={shouldCloseOnEscapePress}\n allowHeightOverflow={allowHeightOverflow}\n initialFocusRef={cancelRef}\n >\n {() => {\n return (\n <React.Fragment>\n <Modal.Header title={title || ''} {...modalHeaderProps} />\n <Modal.Content {...modalContentProps}>{children}</Modal.Content>\n <Modal.Controls {...modalControlsProps}>\n {cancelButton}\n {confirmButton}\n </Modal.Controls>\n </React.Fragment>\n );\n }}\n </Modal>\n );\n};\n\nModalConfirm.displayName = 'ModalConfirm';\n","/* global Promise */\nimport ReactDOM from 'react-dom';\n\n// @todo: change any to unknown\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ModalLauncherComponentRendererProps<T = any> {\n isShown: boolean;\n onClose: (result?: T) => void;\n}\n\ninterface ModalLauncherOpenOptions {\n /**\n * Unique id to be used as identifier for the modal contianer\n */\n modalId?: string;\n /**\n * ms before removing the component from the tree\n * @default 300\n */\n delay?: number;\n}\n\ninterface CloseModalData {\n delay: number;\n render: (args: ModalLauncherComponentRendererProps<any>) => void;\n currentConfig: ModalLauncherComponentRendererProps<any>;\n}\n\nconst getRoot = (rootElId: string): HTMLElement => {\n // Reuse the container if we find it\n let rootDom = document.getElementById(rootElId);\n if (rootDom !== null) {\n return rootDom;\n }\n\n // Otherwise create it\n rootDom = document.createElement('div');\n rootDom.setAttribute('id', rootElId);\n document.body.appendChild(rootDom);\n return rootDom;\n};\n\nconst openModalsIds: Map<string, CloseModalData> = new Map();\nfunction closeAll() {\n openModalsIds.forEach(async ({ render, currentConfig, delay }, rootElId) => {\n const config = { ...currentConfig, isShown: false };\n render(config);\n await new Promise((resolveDelay) => setTimeout(resolveDelay, delay));\n ReactDOM.unmountComponentAtNode(getRoot(rootElId));\n openModalsIds.delete(rootElId);\n });\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction open<T = any>(\n componentRenderer: (\n props: ModalLauncherComponentRendererProps<T>,\n ) => JSX.Element,\n options: ModalLauncherOpenOptions = {},\n): Promise<T> {\n options = { delay: 300, ...options };\n\n // Allow components to specify if they wish to reuse the modal container\n const rootElId = `modals-root${options.modalId || Date.now()}`;\n const rootDom = getRoot(rootElId);\n\n return new Promise((resolve) => {\n let currentConfig = { onClose, isShown: true };\n\n function render({\n onClose,\n isShown,\n }: ModalLauncherComponentRendererProps<T>) {\n ReactDOM.render(componentRenderer({ onClose, isShown }), rootDom);\n }\n\n async function onClose(arg?: T) {\n currentConfig = {\n ...currentConfig,\n isShown: false,\n };\n render(currentConfig);\n await new Promise((resolveDelay) =>\n setTimeout(resolveDelay, options.delay),\n );\n ReactDOM.unmountComponentAtNode(rootDom);\n rootDom.remove();\n openModalsIds.delete(rootElId);\n resolve(arg);\n }\n\n render(currentConfig);\n openModalsIds.set(rootElId, {\n render,\n currentConfig,\n delay: options.delay,\n });\n });\n}\n\nexport const ModalLauncher = {\n open,\n closeAll,\n};\n"],"names":["Modal","ModalProps","ModalConfirm","ModalConfirmProps","ModalContent","ModalContentProps","ModalControls","ModalControlsProps","ModalHeader","ModalHeaderProps","ModalLauncher","OriginalModal","CompoundModal","Content","Header","Controls","React","ReactModal","Box","CommonProps","ExpandProps","getModalStyles","ModalSizeType","ModalPositionType","ModalSizesMapper","medium","small","large","fullWidth","zen","isShown","onClose","Props","onAfterOpen","aria","shouldCloseOnOverlayClick","shouldCloseOnEscapePress","position","topOffset","title","size","allowHeightOverflow","overlayProps","Pick","modalHeaderProps","Partial","modalContentProps","initialFocusRef","RefObject","HTMLElement","children","ReactNode","RenderModal","modalProps","focusFirstWithinNode","node","querySelectorAll","elements","length","firstElement","focus","testId","otherProps","contentRef","useRef","HTMLDivElement","props","styles","className","overlayClassName","useEffect","setTimeout","current","renderDefault","portal","content","top","overlay","style","base","root","afterOpen","beforeClose","modalOverlay","ref","width","modal","displayName","CloseIcon","Flex","PropsWithHTMLElement","Button","Subheading","getModalHeaderStyles","ModalHeaderInternalProps","Function","ReactElement","buttonContainer","tokens","padding","spacingM","spacingL","borderRadius","borderRadiusMedium","borderBottom","gray300","spacing2Xl","height","button","spacing2Xs","right","getModalContentStyles","ModalContentInternalProps","color","gray700","fontSize","fontSizeM","fontFamily","fontStackPrimary","lineHeight","lineHeightM","overflowY","overflowX","boxSizing","margin","backgroundColor","colorWhite","boxShadow","boxShadowHeavy","maxHeight","fontBaseDefault","maxWidth","overflow","display","flexDirection","zIndex","zIndexModalContent","textAlign","outline","transform","transition","transitionDurationDefault","transitionEasingDefault","alignItems","flexWrap","bottom","left","zIndexModal","opacity","ButtonGroup","ModalControlsInternalProps","onConfirm","onCancel","confirmLabel","cancelLabel","intent","isConfirmDisabled","isConfirmLoading","modalControlsProps","confirmTestId","cancelTestId","cancelRef","confirmButton","cancelButton","ReactDOM","ModalLauncherComponentRendererProps","result","T","ModalLauncherOpenOptions","modalId","delay","CloseModalData","render","args","currentConfig","getRoot","rootElId","rootDom","document","getElementById","createElement","setAttribute","body","appendChild","openModalsIds","Map","closeAll","forEach","config","Promise","resolveDelay","unmountComponentAtNode","delete","open","componentRenderer","JSX","Element","options","Date","now","resolve","arg","remove","set"],"version":3,"file":"main.js.map"}
|