@dt-dds/react-drawer 1.0.0-beta.47
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 +447 -0
- package/LICENSE.md +21 -0
- package/README.md +111 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +483 -0
- package/dist/index.mjs +449 -0
- package/package.json +56 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
var __export = (target, all) => {
|
|
26
|
+
for (var name in all)
|
|
27
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
28
|
+
};
|
|
29
|
+
var __copyProps = (to, from, except, desc) => {
|
|
30
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
31
|
+
for (let key of __getOwnPropNames(from))
|
|
32
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
33
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
34
|
+
}
|
|
35
|
+
return to;
|
|
36
|
+
};
|
|
37
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
38
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
39
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
40
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
41
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
42
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
43
|
+
mod
|
|
44
|
+
));
|
|
45
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
46
|
+
|
|
47
|
+
// index.ts
|
|
48
|
+
var drawer_exports = {};
|
|
49
|
+
__export(drawer_exports, {
|
|
50
|
+
Drawer: () => Drawer_default
|
|
51
|
+
});
|
|
52
|
+
module.exports = __toCommonJS(drawer_exports);
|
|
53
|
+
|
|
54
|
+
// src/Drawer.tsx
|
|
55
|
+
var import_react6 = require("@emotion/react");
|
|
56
|
+
var import_react7 = require("react");
|
|
57
|
+
|
|
58
|
+
// src/components/title/DrawerTitle.tsx
|
|
59
|
+
var import_react_typography = require("@dt-dds/react-typography");
|
|
60
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
61
|
+
var DrawerTitle = ({ title }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_typography.Typography, { color: "content.dark", element: "h4", fontStyles: "h4", children: title });
|
|
62
|
+
|
|
63
|
+
// src/components/header/DrawerHeader.tsx
|
|
64
|
+
var import_react_icon_button = require("@dt-dds/react-icon-button");
|
|
65
|
+
|
|
66
|
+
// ../../dt-dds-react/core/assets/svgs/AllOut.tsx
|
|
67
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
68
|
+
|
|
69
|
+
// ../../dt-dds-react/core/assets/svgs/Apis.tsx
|
|
70
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
71
|
+
|
|
72
|
+
// ../../dt-dds-react/core/assets/svgs/Apps.tsx
|
|
73
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
74
|
+
|
|
75
|
+
// ../../dt-dds-react/core/assets/svgs/ArrowDropDown.tsx
|
|
76
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
77
|
+
|
|
78
|
+
// ../../dt-dds-react/core/assets/svgs/ArrowDropUp.tsx
|
|
79
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
80
|
+
|
|
81
|
+
// ../../dt-dds-react/core/assets/svgs/ArrowLeft.tsx
|
|
82
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
83
|
+
|
|
84
|
+
// ../../dt-dds-react/core/assets/svgs/ArrowRight.tsx
|
|
85
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
86
|
+
|
|
87
|
+
// ../../dt-dds-react/core/assets/svgs/AvatarThumbnail.tsx
|
|
88
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
89
|
+
|
|
90
|
+
// ../../dt-dds-react/core/assets/svgs/Bolt.tsx
|
|
91
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
92
|
+
|
|
93
|
+
// ../../dt-dds-react/core/assets/svgs/CalendarMonth.tsx
|
|
94
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
95
|
+
|
|
96
|
+
// ../../dt-dds-react/core/assets/svgs/Cancel.tsx
|
|
97
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
98
|
+
|
|
99
|
+
// ../../dt-dds-react/core/assets/svgs/Check.tsx
|
|
100
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
101
|
+
|
|
102
|
+
// ../../dt-dds-react/core/assets/svgs/CheckCircle.tsx
|
|
103
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
104
|
+
|
|
105
|
+
// ../../dt-dds-react/core/assets/svgs/CheckCircleOutline.tsx
|
|
106
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
107
|
+
|
|
108
|
+
// ../../dt-dds-react/core/assets/svgs/Close.tsx
|
|
109
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
110
|
+
var CloseIcon = (props) => {
|
|
111
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
112
|
+
"svg",
|
|
113
|
+
__spreadProps(__spreadValues({
|
|
114
|
+
fill: "none",
|
|
115
|
+
height: "24",
|
|
116
|
+
viewBox: "0 0 24 24",
|
|
117
|
+
width: "24",
|
|
118
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
119
|
+
}, props), {
|
|
120
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
121
|
+
"path",
|
|
122
|
+
{
|
|
123
|
+
d: "M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z",
|
|
124
|
+
fill: "currentColor"
|
|
125
|
+
}
|
|
126
|
+
)
|
|
127
|
+
})
|
|
128
|
+
);
|
|
129
|
+
};
|
|
130
|
+
var Close_default = CloseIcon;
|
|
131
|
+
|
|
132
|
+
// ../../dt-dds-react/core/assets/svgs/Copy.tsx
|
|
133
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
134
|
+
|
|
135
|
+
// ../../dt-dds-react/core/assets/svgs/Delete.tsx
|
|
136
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
137
|
+
|
|
138
|
+
// ../../dt-dds-react/core/assets/svgs/Edit.tsx
|
|
139
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
140
|
+
|
|
141
|
+
// ../../dt-dds-react/core/assets/svgs/Email.tsx
|
|
142
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
143
|
+
|
|
144
|
+
// ../../dt-dds-react/core/assets/svgs/EmailSend.tsx
|
|
145
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
146
|
+
|
|
147
|
+
// ../../dt-dds-react/core/assets/svgs/Error.tsx
|
|
148
|
+
var import_react = require("@emotion/react");
|
|
149
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
150
|
+
|
|
151
|
+
// ../../dt-dds-react/core/assets/svgs/ErrorOutline.tsx
|
|
152
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
153
|
+
|
|
154
|
+
// ../../dt-dds-react/core/assets/svgs/EVStation.tsx
|
|
155
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
156
|
+
|
|
157
|
+
// ../../dt-dds-react/core/assets/svgs/Info.tsx
|
|
158
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
159
|
+
|
|
160
|
+
// ../../dt-dds-react/core/assets/svgs/InfoOutline.tsx
|
|
161
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
162
|
+
|
|
163
|
+
// ../../dt-dds-react/core/assets/svgs/Input.tsx
|
|
164
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
165
|
+
|
|
166
|
+
// ../../dt-dds-react/core/assets/svgs/Language.tsx
|
|
167
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
168
|
+
|
|
169
|
+
// ../../dt-dds-react/core/assets/svgs/LocationOn.tsx
|
|
170
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
171
|
+
|
|
172
|
+
// ../../dt-dds-react/core/assets/svgs/LocationSearching.tsx
|
|
173
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
174
|
+
|
|
175
|
+
// ../../dt-dds-react/core/assets/svgs/MenuCompact.tsx
|
|
176
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
177
|
+
|
|
178
|
+
// ../../dt-dds-react/core/assets/svgs/MenuExpand.tsx
|
|
179
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
180
|
+
|
|
181
|
+
// ../../dt-dds-react/core/assets/svgs/Menu.tsx
|
|
182
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
183
|
+
|
|
184
|
+
// ../../dt-dds-react/core/assets/svgs/MoreHorizontal.tsx
|
|
185
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
186
|
+
|
|
187
|
+
// ../../dt-dds-react/core/assets/svgs/MoreVertical.tsx
|
|
188
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
189
|
+
|
|
190
|
+
// ../../dt-dds-react/core/assets/svgs/NoData.tsx
|
|
191
|
+
var import_react2 = require("@emotion/react");
|
|
192
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
193
|
+
|
|
194
|
+
// ../../dt-dds-react/core/assets/svgs/NotFound.tsx
|
|
195
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
196
|
+
|
|
197
|
+
// ../../dt-dds-react/core/assets/svgs/OutlinedArrowDropDown.tsx
|
|
198
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
199
|
+
|
|
200
|
+
// ../../dt-dds-react/core/assets/svgs/OutlinedArrowDropUp.tsx
|
|
201
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
202
|
+
|
|
203
|
+
// ../../dt-dds-react/core/assets/svgs/PhoneOutlined.tsx
|
|
204
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
205
|
+
|
|
206
|
+
// ../../dt-dds-react/core/assets/svgs/Payments.tsx
|
|
207
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
208
|
+
|
|
209
|
+
// ../../dt-dds-react/core/assets/svgs/Products.tsx
|
|
210
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
211
|
+
|
|
212
|
+
// ../../dt-dds-react/core/assets/svgs/RemoveCircleOutline.tsx
|
|
213
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
214
|
+
|
|
215
|
+
// ../../dt-dds-react/core/assets/svgs/Share.tsx
|
|
216
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
217
|
+
|
|
218
|
+
// ../../dt-dds-react/core/assets/svgs/Signout.tsx
|
|
219
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
220
|
+
|
|
221
|
+
// ../../dt-dds-react/core/assets/svgs/Teams.tsx
|
|
222
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
223
|
+
|
|
224
|
+
// ../../dt-dds-react/core/assets/svgs/Timeline.tsx
|
|
225
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
226
|
+
|
|
227
|
+
// ../../dt-dds-react/core/assets/svgs/Topic.tsx
|
|
228
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
229
|
+
|
|
230
|
+
// ../../dt-dds-react/core/assets/svgs/UnfoldLess.tsx
|
|
231
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
232
|
+
|
|
233
|
+
// ../../dt-dds-react/core/assets/svgs/UnfoldMore.tsx
|
|
234
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
235
|
+
|
|
236
|
+
// ../../dt-dds-react/core/assets/svgs/Username.tsx
|
|
237
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
238
|
+
|
|
239
|
+
// ../../dt-dds-react/core/assets/svgs/ViewAgenda.tsx
|
|
240
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
241
|
+
|
|
242
|
+
// ../../dt-dds-react/core/assets/svgs/Visibility.tsx
|
|
243
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
244
|
+
|
|
245
|
+
// ../../dt-dds-react/core/assets/svgs/VisibilityOff.tsx
|
|
246
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
247
|
+
|
|
248
|
+
// ../../dt-dds-react/core/assets/svgs/WarningOutline.tsx
|
|
249
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
250
|
+
|
|
251
|
+
// ../../dt-dds-react/core/assets/svgs/Warning.tsx
|
|
252
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
253
|
+
|
|
254
|
+
// ../../dt-dds-react/core/assets/svgs/Wifi.tsx
|
|
255
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
256
|
+
|
|
257
|
+
// ../../dt-dds-react/core/assets/svgs/Settings.tsx
|
|
258
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
259
|
+
|
|
260
|
+
// src/context/DrawerProvider.tsx
|
|
261
|
+
var import_react3 = require("react");
|
|
262
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
263
|
+
var DEFAULT_VALUE = {
|
|
264
|
+
handleClose: () => null
|
|
265
|
+
};
|
|
266
|
+
var DrawerContext = (0, import_react3.createContext)(DEFAULT_VALUE);
|
|
267
|
+
var DrawerContextProvider = ({
|
|
268
|
+
handleClose,
|
|
269
|
+
children
|
|
270
|
+
}) => {
|
|
271
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(DrawerContext.Provider, { value: { handleClose }, children });
|
|
272
|
+
};
|
|
273
|
+
var useDrawerContext = () => {
|
|
274
|
+
const context = (0, import_react3.useContext)(DrawerContext);
|
|
275
|
+
if (!context) {
|
|
276
|
+
throw new Error(
|
|
277
|
+
"Drawer compound components cannot be rendered outside the Drawer component"
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
return context;
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
// src/components/header/DrawerHeader.styled.ts
|
|
284
|
+
var import_styled = __toESM(require("@emotion/styled"));
|
|
285
|
+
var HeaderStyled = import_styled.default.header`
|
|
286
|
+
${({ theme }) => `
|
|
287
|
+
display: flex;
|
|
288
|
+
justify-content: space-between;
|
|
289
|
+
align-items: flex-start;
|
|
290
|
+
padding: 0 ${theme.spacing.xs} ${theme.spacing["2xs"]};
|
|
291
|
+
|
|
292
|
+
&:has(+.hasScroll) {
|
|
293
|
+
box-shadow: ${theme.shadows.xs};
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
@media only screen and (min-width: ${theme.breakpoints.s}px) {
|
|
297
|
+
padding: 0 ${theme.spacing.s} ${theme.spacing["2xs"]};
|
|
298
|
+
}
|
|
299
|
+
`}
|
|
300
|
+
`;
|
|
301
|
+
|
|
302
|
+
// src/components/header/DrawerHeader.tsx
|
|
303
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
304
|
+
var DrawerHeader = ({ children }) => {
|
|
305
|
+
const { handleClose } = useDrawerContext();
|
|
306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(HeaderStyled, { "data-testid": "drawer-header", children: [
|
|
307
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { children }),
|
|
308
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
309
|
+
import_react_icon_button.IconButton,
|
|
310
|
+
{
|
|
311
|
+
color: "default",
|
|
312
|
+
dataTestId: "drawer-close-button",
|
|
313
|
+
onClick: handleClose,
|
|
314
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Close_default, {})
|
|
315
|
+
}
|
|
316
|
+
)
|
|
317
|
+
] });
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
// src/components/body/DrawerBody.tsx
|
|
321
|
+
var import_react4 = require("react");
|
|
322
|
+
|
|
323
|
+
// src/components/body/DrawerBody.styled.ts
|
|
324
|
+
var import_styled2 = __toESM(require("@emotion/styled"));
|
|
325
|
+
var DrawerContentStyled = import_styled2.default.section`
|
|
326
|
+
${({ theme }) => `
|
|
327
|
+
position: relative;
|
|
328
|
+
overflow: auto;
|
|
329
|
+
padding: ${theme.spacing["2xs"]} ${theme.spacing.xs} 0;
|
|
330
|
+
|
|
331
|
+
@media only screen and (min-width: ${theme.breakpoints.s}px) {
|
|
332
|
+
padding: ${theme.spacing["2xs"]} ${theme.spacing.s} 0;
|
|
333
|
+
}
|
|
334
|
+
`}
|
|
335
|
+
`;
|
|
336
|
+
var ScrollableSectionObserverStyled = import_styled2.default.div`
|
|
337
|
+
position: absolute;
|
|
338
|
+
margin-top: ${({ theme }) => theme.spacing["4xs"]};
|
|
339
|
+
`;
|
|
340
|
+
|
|
341
|
+
// src/components/body/DrawerBody.tsx
|
|
342
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
343
|
+
var DrawerBody = ({ children, style, dataTestId }) => {
|
|
344
|
+
const scrollableSectionObserverRef = (0, import_react4.useRef)(null);
|
|
345
|
+
const handleScrollClass = (isSectionScrollable) => {
|
|
346
|
+
var _a;
|
|
347
|
+
const sectionElement = (_a = scrollableSectionObserverRef.current) == null ? void 0 : _a.parentElement;
|
|
348
|
+
if (sectionElement) {
|
|
349
|
+
isSectionScrollable ? sectionElement.classList.add("hasScroll") : sectionElement.classList.remove("hasScroll");
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
(0, import_react4.useEffect)(() => {
|
|
353
|
+
if (scrollableSectionObserverRef.current) {
|
|
354
|
+
const observer = new IntersectionObserver(
|
|
355
|
+
([{ isIntersecting: isSectionObserverVisible }]) => handleScrollClass(!isSectionObserverVisible)
|
|
356
|
+
);
|
|
357
|
+
observer.observe(scrollableSectionObserverRef.current);
|
|
358
|
+
return () => observer.disconnect();
|
|
359
|
+
}
|
|
360
|
+
}, [scrollableSectionObserverRef]);
|
|
361
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
362
|
+
DrawerContentStyled,
|
|
363
|
+
{
|
|
364
|
+
"data-testid": dataTestId != null ? dataTestId : "drawer-body",
|
|
365
|
+
style,
|
|
366
|
+
children: [
|
|
367
|
+
children,
|
|
368
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ScrollableSectionObserverStyled, { ref: scrollableSectionObserverRef })
|
|
369
|
+
]
|
|
370
|
+
}
|
|
371
|
+
);
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
// src/Drawer.styled.ts
|
|
375
|
+
var import_react_core = require("@dt-dds/react-core");
|
|
376
|
+
var import_react5 = require("@emotion/react");
|
|
377
|
+
var import_styled3 = __toESM(require("@emotion/styled"));
|
|
378
|
+
var GlobalStyle = import_react5.css`
|
|
379
|
+
body {
|
|
380
|
+
overflow: hidden;
|
|
381
|
+
}
|
|
382
|
+
`;
|
|
383
|
+
var MainContainerStyled = import_styled3.default.div`
|
|
384
|
+
width: 100%;
|
|
385
|
+
height: 100%;
|
|
386
|
+
position: fixed;
|
|
387
|
+
top: 0;
|
|
388
|
+
left: 0;
|
|
389
|
+
z-index: ${import_react_core.DRAWER_Z_INDEX};
|
|
390
|
+
`;
|
|
391
|
+
var OverlayStyled = import_styled3.default.div`
|
|
392
|
+
${({ theme, isVisible }) => `
|
|
393
|
+
width: 100%;
|
|
394
|
+
height: 100vh;
|
|
395
|
+
position: absolute;
|
|
396
|
+
background-color: ${theme.palette.surface.dark};
|
|
397
|
+
opacity: ${isVisible ? 0.2 : 0};
|
|
398
|
+
transition: opacity ${theme.animations.emphasizedDecelerate.duration}
|
|
399
|
+
${theme.animations.emphasizedDecelerate.timingFunction};
|
|
400
|
+
`}
|
|
401
|
+
`;
|
|
402
|
+
var DrawerStyled = import_styled3.default.div`
|
|
403
|
+
${({ theme, isVisible }) => `
|
|
404
|
+
display: grid;
|
|
405
|
+
grid-template-rows: auto 1fr;
|
|
406
|
+
padding: ${theme.spacing.xs} 0;
|
|
407
|
+
width: 100%;
|
|
408
|
+
height: 100%;
|
|
409
|
+
position: absolute;
|
|
410
|
+
top: 0;
|
|
411
|
+
right: 0;
|
|
412
|
+
background-color: ${theme.palette.surface.contrast};
|
|
413
|
+
transform: ${isVisible ? "translateX(0)" : "translateX(100%)"};
|
|
414
|
+
transition: transform ${theme.animations.emphasizedDecelerate.duration}
|
|
415
|
+
${theme.animations.emphasizedDecelerate.timingFunction};
|
|
416
|
+
|
|
417
|
+
@media only screen and (min-width: ${theme.breakpoints.s}px) {
|
|
418
|
+
width: 500px;
|
|
419
|
+
border-radius: ${theme.radius["3xs"]} ${theme.radius.none}
|
|
420
|
+
${theme.radius.none} ${theme.radius["3xs"]};
|
|
421
|
+
box-shadow: ${theme.shadows.s};
|
|
422
|
+
padding: ${theme.spacing.s} 0;
|
|
423
|
+
}
|
|
424
|
+
`}
|
|
425
|
+
`;
|
|
426
|
+
|
|
427
|
+
// src/Drawer.tsx
|
|
428
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
429
|
+
var animationToMiliseconds = (duration) => parseFloat(duration.replace(/[^\d.]/g, "")) * 1e3;
|
|
430
|
+
var Drawer = ({
|
|
431
|
+
isVisible,
|
|
432
|
+
setIsVisible,
|
|
433
|
+
children,
|
|
434
|
+
dataTestId
|
|
435
|
+
}) => {
|
|
436
|
+
const [isTransformed, setIsTransformed] = (0, import_react7.useState)(false);
|
|
437
|
+
const theme = (0, import_react6.useTheme)();
|
|
438
|
+
const handleClose = (0, import_react7.useCallback)(() => {
|
|
439
|
+
setIsTransformed(false);
|
|
440
|
+
setTimeout(() => {
|
|
441
|
+
setIsVisible(false);
|
|
442
|
+
}, animationToMiliseconds(theme.animations.emphasizedDecelerate.timingFunction));
|
|
443
|
+
}, [setIsVisible, theme.animations.emphasizedDecelerate.timingFunction]);
|
|
444
|
+
(0, import_react7.useEffect)(() => {
|
|
445
|
+
const handleKeyDown = (event) => {
|
|
446
|
+
if (event.key === "Escape") {
|
|
447
|
+
handleClose();
|
|
448
|
+
}
|
|
449
|
+
};
|
|
450
|
+
setIsTransformed(isVisible);
|
|
451
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
452
|
+
return () => {
|
|
453
|
+
document.removeEventListener("keydown", handleKeyDown);
|
|
454
|
+
};
|
|
455
|
+
}, [handleClose, isVisible]);
|
|
456
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(DrawerContextProvider, { handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(MainContainerStyled, { children: [
|
|
457
|
+
isVisible ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react6.Global, { styles: GlobalStyle }) : null,
|
|
458
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
459
|
+
OverlayStyled,
|
|
460
|
+
{
|
|
461
|
+
"data-testid": "drawer-overlay",
|
|
462
|
+
isVisible: isTransformed,
|
|
463
|
+
onClick: handleClose
|
|
464
|
+
}
|
|
465
|
+
),
|
|
466
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
467
|
+
DrawerStyled,
|
|
468
|
+
{
|
|
469
|
+
"data-testid": dataTestId != null ? dataTestId : "drawer-content-container",
|
|
470
|
+
isVisible: isTransformed,
|
|
471
|
+
children
|
|
472
|
+
}
|
|
473
|
+
)
|
|
474
|
+
] }) });
|
|
475
|
+
};
|
|
476
|
+
Drawer.Title = DrawerTitle;
|
|
477
|
+
Drawer.Header = DrawerHeader;
|
|
478
|
+
Drawer.Body = DrawerBody;
|
|
479
|
+
var Drawer_default = Drawer;
|
|
480
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
481
|
+
0 && (module.exports = {
|
|
482
|
+
Drawer
|
|
483
|
+
});
|