@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/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
+ });