playbook_ui 14.11.1.pre.alpha.PLAY1751pbcontenttagpt25529 → 14.11.1.pre.alpha.PLAY17445539

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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +154 -177
  3. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +162 -264
  4. data/app/pb_kits/playbook/pb_drawer/context.ts +11 -0
  5. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +38 -0
  6. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +3 -45
  7. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +0 -1
  8. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +9 -16
  9. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +44 -19
  10. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +21 -3
  11. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +16 -21
  12. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +2 -19
  13. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +2 -1
  14. data/app/pb_kits/playbook/pb_drawer/docs/index.js +1 -0
  15. data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +5 -5
  16. data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +73 -0
  17. data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +21 -0
  18. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +6 -1
  19. data/app/pb_kits/playbook/pb_filter/filter.html.erb +5 -1
  20. data/app/pb_kits/playbook/pb_form_group/form_group.html.erb +6 -1
  21. data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +1 -1
  22. data/dist/chunks/{_typeahead-TN5aDUj9.js → _typeahead-vFuUQM5F.js} +1 -1
  23. data/dist/chunks/_weekday_stacked-DG3A22sS.js +45 -0
  24. data/dist/chunks/vendor.js +1 -1
  25. data/dist/playbook-doc.js +1 -1
  26. data/dist/playbook-rails-react-bindings.js +1 -1
  27. data/dist/playbook-rails.js +1 -1
  28. data/dist/playbook.css +1 -1
  29. data/lib/playbook/version.rb +1 -1
  30. metadata +7 -3
  31. data/dist/chunks/_weekday_stacked-BcnpLG66.js +0 -45
@@ -1,230 +1,83 @@
1
- import React, { useState, useEffect } from "react";
2
- import classnames from "classnames";
1
+ import React, { useState, useEffect, useRef } from "react"
2
+ import classnames from "classnames"
3
3
 
4
4
  import {
5
5
  buildAriaProps,
6
6
  buildCss,
7
7
  buildDataProps,
8
8
  buildHtmlProps,
9
- } from "../utilities/props";
10
- import { globalProps, globalInlineProps } from "../utilities/globalProps";
11
-
12
- import { DialogContext } from "../pb_dialog/_dialog_context";
9
+ } from "../utilities/props"
10
+ import { globalProps, globalInlineProps } from "../utilities/globalProps"
11
+ import { DrawerContext } from "./context"
12
+ import { useBreakpoint } from "./hooks/useBreakpoint"
13
13
 
14
14
  type DrawerProps = {
15
- aria?: { [key: string]: string };
16
- behavior?: "floating" | "push";
17
- border?: "full" | "none" | "right" | "left";
18
- openBreakpoint?: "none" | "xs" | "sm" | "md" | "lg" | "xl";
19
- closeBreakpoint?: "none" | "xs" | "sm" | "md" | "lg" | "xl";
20
- children: React.ReactNode | React.ReactNode[] | string;
21
- className?: string;
22
- data?: { [key: string]: string };
23
- htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
24
- id?: string;
25
- fullHeight?: boolean;
26
- menuButtonID?: string;
27
- onClose?: () => void;
28
- opened: boolean;
29
- overlay: boolean;
30
- placement?: "left" | "right";
31
- size?: "xs" | "sm" | "md" | "lg" | "xl";
32
- text?: string;
33
- withinElement?: boolean;
34
- };
35
-
36
- const Drawer = (props: DrawerProps): React.ReactElement => {
15
+ aria?: { [key: string]: string }
16
+ behavior?: "floating" | "push"
17
+ border?: "full" | "none" | "right" | "left"
18
+ breakpoint?: "none" | "xs" | "sm" | "md" | "lg" | "xl"
19
+ children: React.ReactNode | React.ReactNode[] | string
20
+ className?: string
21
+ data?: { [key: string]: string }
22
+ htmlOptions?: { [key: string]: string | number | boolean | (() => void) }
23
+ id?: string
24
+ triggerId?: string
25
+ onClose?: () => void
26
+ opened: boolean
27
+ overlay: boolean
28
+ placement?: "left" | "right" | "top" | "bottom"
29
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "full"
30
+ text?: string
31
+ withinElement?: boolean
32
+ }
33
+
34
+ const Drawer = (props: DrawerProps): React.ReactElement | null => {
37
35
  const {
38
36
  aria = {},
39
37
  behavior = "floating",
40
38
  border = "none",
41
- openBreakpoint = "none",
42
- closeBreakpoint = "none",
39
+ breakpoint = "none",
43
40
  className,
44
41
  data = {},
45
42
  htmlOptions = {},
46
43
  id,
47
44
  size = "md",
48
45
  children,
49
- fullHeight = true,
50
- menuButtonID,
46
+ triggerId,
51
47
  opened,
52
48
  onClose,
53
49
  overlay = true,
54
50
  placement = "left",
55
51
  withinElement = false,
56
- } = props;
57
- const ariaProps = buildAriaProps(aria);
58
- const dataProps = buildDataProps(data);
59
- const htmlProps = buildHtmlProps(htmlOptions);
60
-
61
- let globalPropsString: string = globalProps(props);
62
-
63
- // Check if the string contains any of the prefixes
64
- const containsPrefix = [
65
- "p_",
66
- "pb_",
67
- "pt_",
68
- "pl_",
69
- "pr_",
70
- "px_",
71
- "py_",
72
- ].some((prefix) => globalPropsString.includes(prefix));
73
-
74
- // If none of the prefixes are found, append 'p_sm' to the string
75
- if (!containsPrefix) {
76
- globalPropsString += " p_sm";
77
- }
78
-
79
- const drawerClassNames = {
80
- base: `${classnames(
81
- "pb_drawer",
82
- buildCss("pb_drawer", size, placement),
83
- {
84
- drawer_border_full: border === "full",
85
- drawer_border_right: border === "right",
86
- drawer_border_left: border === "left",
87
- pb_drawer_within_element: withinElement,
88
- }
89
- )} ${globalPropsString}`,
90
- afterOpen: "pb_drawer_after_open",
91
- beforeClose: "pb_drawer_before_close",
92
- };
93
-
94
- const fullHeightClassNames = () => {
95
- if (!fullHeight) return null;
96
- return `full_height_${placement}`;
97
- };
98
-
99
- const overlayClassNames = {
100
- base: `pb_drawer${overlay ? "_overlay" : "_no_overlay"} ${
101
- fullHeight !== null && fullHeightClassNames()
102
- } ${!overlay ? "no-background" : ""}`,
103
- afterOpen: "pb_drawer_overlay_after_open",
104
- beforeClose: "pb_drawer_overlay_before_close",
105
- };
106
-
107
- const classes = classnames(buildCss("pb_drawer_wrapper"), className);
108
- const dynamicInlineProps = globalInlineProps(props)
109
- const [menuButtonOpened, setMenuButtonOpened] = useState(false);
110
- const [triggerOpened, setTriggerOpened] = useState(false);
111
-
112
- const breakpointWidths: Record<DrawerProps["openBreakpoint"], number> = {
113
- none: 0,
114
- xs: 575,
115
- sm: 768,
116
- md: 992,
117
- lg: 1200,
118
- xl: 1400,
119
- };
120
-
121
- const breakpointValues = {
122
- none: 0,
123
- xs: 575,
124
- sm: 768,
125
- md: 992,
126
- lg: 1200,
127
- xl: 1400,
128
- }
129
-
130
- const [isOpenBreakpointOpen, setIsOpenBreakpointOpen] = useState(false);
131
- const [isUserClosed, setIsUserClosed] = useState(false);
132
-
133
- useEffect(() => {
134
- if (openBreakpoint === "none") return;
135
-
136
- const handleResize = () => {
137
- const width = window.innerWidth;
138
- const openBreakpointWidth = breakpointWidths[openBreakpoint];
139
-
140
- if (width <= openBreakpointWidth) {
141
- setIsOpenBreakpointOpen(true);
142
- } else {
143
- setIsOpenBreakpointOpen(false);
144
- setIsUserClosed(false); // Reset when the breakpoint condition changes
145
- }
146
- };
147
-
148
- window.addEventListener("resize", handleResize);
149
-
150
- // Call handler once on mount to set initial state
151
- handleResize();
152
-
153
- return () => {
154
- window.removeEventListener("resize", handleResize);
155
- };
156
- }, [openBreakpoint]);
157
-
158
- useEffect(() => {
159
- if (closeBreakpoint === "none") return;
160
-
161
- const handleResize = () => {
162
- const width = window.innerWidth;
163
- if (width >= breakpointValues[closeBreakpoint]) {
164
- setIsOpenBreakpointOpen(true);
165
- } else {
166
- setIsOpenBreakpointOpen(false);
167
- }
168
- }
169
-
170
- window.addEventListener("resize", handleResize);
171
-
172
- handleResize();
173
-
174
- return () => {
175
- window.removeEventListener("resize", handleResize);
176
- };
177
-
178
- }, [closeBreakpoint]);
179
-
180
- //hide menu button if breakpoint opens the drawer
181
- useEffect(() => {
182
- if (menuButtonID) {
183
- const menuButton = document.getElementById(menuButtonID);
184
- if (menuButton) {
185
- if (isOpenBreakpointOpen) {
186
- menuButton.style.display = 'none';
187
- } else {
188
- menuButton.style.display = '';
189
- }
190
- }
191
- }
192
- }, [menuButtonID, isOpenBreakpointOpen]);
193
-
194
- // Reset isUserClosed when isBreakpointOpen changes
195
- useEffect(() => {
196
- if (isOpenBreakpointOpen) {
197
- setIsUserClosed(false);
52
+ } = props
53
+
54
+ const drawerRef = useRef<HTMLDivElement>(null)
55
+ const [menuButtonOpened, setMenuButtonOpened] = useState(false)
56
+ const [shouldRender, setShouldRender] = useState(false)
57
+ const [isAnimating, setIsAnimating] = useState(false)
58
+
59
+ const { isOpenBreakpointOpen, isUserClosed, setIsUserClosed } = useBreakpoint(
60
+ {
61
+ openBreakpoint: breakpoint,
62
+ closeBreakpoint: breakpoint,
63
+ triggerId,
198
64
  }
199
- }, [isOpenBreakpointOpen]);
65
+ )
200
66
 
201
67
  const modalIsOpened =
202
- (isOpenBreakpointOpen && !isUserClosed) || menuButtonOpened || opened;
68
+ (isOpenBreakpointOpen && !isUserClosed) || menuButtonOpened || opened
203
69
 
204
- const [animationState, setAnimationState] = useState("");
205
-
206
- useEffect(() => {
207
- if (modalIsOpened) {
208
- setAnimationState("afterOpen");
209
- } else if (!modalIsOpened && animationState === "afterOpen") {
210
- setAnimationState("beforeClose");
211
- setTimeout(() => {
212
- setAnimationState("");
213
- }, 200);
214
- }
215
- }, [modalIsOpened]);
216
-
217
- const isModalVisible = modalIsOpened || animationState === "beforeClose";
218
70
 
219
71
  useEffect(() => {
220
72
  if (withinElement) return;
221
73
 
222
- const sizeMap: Record<DrawerProps["size"], string> = {
74
+ const sizeMap: { [key: string]: string } = {
223
75
  xl: "365px",
224
76
  lg: "300px",
225
77
  md: "250px",
226
78
  sm: "200px",
227
79
  xs: "64px",
80
+ full: "100%",
228
81
  };
229
82
  const body = document.querySelector("body");
230
83
  if (modalIsOpened && behavior === "push" && body) {
@@ -244,98 +97,143 @@ const Drawer = (props: DrawerProps): React.ReactElement => {
244
97
  }
245
98
  }, [modalIsOpened, behavior, placement, size, withinElement]);
246
99
 
247
- const api = {
248
- onClose: () => {
249
- if (menuButtonID) {
250
- setMenuButtonOpened(false);
251
- }
252
- setIsUserClosed(true);
253
- if (onClose) {
254
- onClose();
255
- }
256
- },
257
- };
100
+ // Replace useDrawerAnimation with our new animation logic
101
+ useEffect(() => {
102
+ if (modalIsOpened) {
103
+ // Step 1: Mount component
104
+ setShouldRender(true)
105
+
106
+ // Step 2: Measure height and start animation
107
+ const timer = setTimeout(() => {
108
+ if (drawerRef.current) {
109
+ const height = drawerRef.current.scrollHeight;
110
+ drawerRef.current.style.setProperty('--drawer-height', `${height}px`);
111
+ }
112
+ setIsAnimating(true)
113
+ }, 10)
114
+ return () => clearTimeout(timer)
115
+ } else {
116
+ // Step 3: Start closing animation
117
+ setIsAnimating(false)
118
+
119
+ // Step 4: Unmount after animation completes
120
+ const timer = setTimeout(() => {
121
+ setShouldRender(false)
122
+ }, 250) // Match animation duration
123
+ return () => clearTimeout(timer)
124
+ }
125
+ }, [modalIsOpened])
258
126
 
127
+ // Remove the showElement/hideElement effect since we're handling visibility with CSS
259
128
  useEffect(() => {
260
- if (menuButtonID) {
261
- const menuButton = document.getElementById(menuButtonID);
129
+ if (drawerRef.current && modalIsOpened) {
130
+ const height = drawerRef.current.scrollHeight;
131
+ drawerRef.current.style.setProperty('--drawer-height', `${height}px`);
132
+ }
133
+ }, [modalIsOpened])
134
+
135
+ // Handle menu button click
136
+ useEffect(() => {
137
+ if (triggerId) {
138
+ const menuButton = document.getElementById(triggerId)
262
139
  if (menuButton) {
263
140
  const handleMenuButtonClick = () => {
264
141
  if (modalIsOpened) {
265
- // Drawer is open, close it
266
- setMenuButtonOpened(false);
267
- setIsUserClosed(true);
142
+ setMenuButtonOpened(false)
143
+ setIsUserClosed(true)
268
144
  } else {
269
- // Drawer is closed, open it
270
- setMenuButtonOpened(true);
271
- setIsUserClosed(false);
145
+ setMenuButtonOpened(true)
146
+ setIsUserClosed(false)
272
147
  }
273
- };
274
- menuButton.addEventListener("click", handleMenuButtonClick);
148
+ }
149
+ menuButton.addEventListener("click", handleMenuButtonClick)
275
150
  return () => {
276
- menuButton.removeEventListener("click", handleMenuButtonClick);
277
- };
151
+ menuButton.removeEventListener("click", handleMenuButtonClick)
152
+ }
278
153
  }
279
154
  }
280
- }, [menuButtonID, modalIsOpened]);
155
+ }, [triggerId, modalIsOpened])
156
+
157
+ const ariaProps = buildAriaProps(aria)
158
+ const dataProps = buildDataProps(data)
159
+ const htmlProps = buildHtmlProps(htmlOptions)
160
+ const dynamicInlineProps = globalInlineProps(props)
161
+
162
+ const drawerClasses = classnames(
163
+ "pb_drawer",
164
+ buildCss("pb_drawer", size as string, placement as string),
165
+ {
166
+ "drawer_border-full": border === "full",
167
+ "drawer_border-right": border === "right",
168
+ "drawer_border-left": border === "left",
169
+ pb_drawer_within_element: withinElement,
170
+ pb_drawer_collapsing: shouldRender && !isAnimating,
171
+ pb_drawer_after_open: isAnimating,
172
+ pb_drawer_before_close: !isAnimating && shouldRender,
173
+ },
174
+ withinElement ? "shadow_none" : "shadow_deepest",
175
+ globalProps(props),
176
+ className
177
+ )
178
+
179
+ const overlayClasses = classnames(
180
+ `pb_drawer${overlay ? "_overlay" : "_no_overlay"}`,
181
+ `drawer_content_${placement}`,
182
+ !overlay && "no-background",
183
+ {
184
+ pb_drawer_overlay_after_open: isAnimating,
185
+ pb_drawer_overlay_before_close: !isAnimating && shouldRender,
186
+ }
187
+ )
188
+
189
+ const api = {
190
+ onClose: () => {
191
+ if (triggerId) {
192
+ setMenuButtonOpened(false)
193
+ }
194
+ setIsUserClosed(true)
195
+ if (onClose) {
196
+ onClose()
197
+ }
198
+ },
199
+ }
200
+
201
+ const drawerContent = (
202
+ <div
203
+ className={drawerClasses}
204
+ onClick={(e) => e.stopPropagation()}
205
+ ref={drawerRef}
206
+ >
207
+ {children}
208
+ </div>
209
+ )
210
+
211
+ // Step 5: Only render when shouldRender is true
212
+ if (!shouldRender) return null
281
213
 
282
214
  return (
283
- <DialogContext.Provider value={api}>
215
+ <DrawerContext.Provider value={api}>
284
216
  {withinElement ? (
285
- isModalVisible && (
286
- <div
287
- {...ariaProps}
288
- {...dataProps}
289
- {...htmlProps}
290
- className={classnames(drawerClassNames.base, {
291
- [drawerClassNames.afterOpen]:
292
- animationState === "afterOpen",
293
- [drawerClassNames.beforeClose]:
294
- animationState === "beforeClose",
295
- })}
296
- id={id}
297
- onClick={(e) => e.stopPropagation()}
298
- style={dynamicInlineProps}
299
- >
300
- {children}
301
- </div>
302
- )
217
+ drawerContent
303
218
  ) : (
304
219
  <div
305
220
  {...ariaProps}
306
221
  {...dataProps}
307
222
  {...htmlProps}
308
- className={classes}
223
+ className={classnames(buildCss("pb_drawer_wrapper"), className)}
224
+ style={dynamicInlineProps}
309
225
  >
310
- {isModalVisible && (
311
- <div
312
- className={classnames(overlayClassNames.base, {
313
- [overlayClassNames.afterOpen]:
314
- animationState === "afterOpen",
315
- [overlayClassNames.beforeClose]:
316
- animationState === "beforeClose",
317
- })}
318
- id={id}
319
- onClick={overlay ? api.onClose : undefined}
320
- >
321
- <div
322
- className={classnames(drawerClassNames.base, {
323
- [drawerClassNames.afterOpen]:
324
- animationState === "afterOpen",
325
- [drawerClassNames.beforeClose]:
326
- animationState === "beforeClose",
327
- })}
328
- onClick={(e) => e.stopPropagation()}
329
- style={dynamicInlineProps}
330
- >
331
- {children}
332
- </div>
333
- </div>
334
- )}
226
+ <div
227
+ className={overlayClasses}
228
+ id={id}
229
+ onClick={overlay ? api.onClose : undefined}
230
+ >
231
+ {drawerContent}
232
+ </div>
335
233
  </div>
336
234
  )}
337
- </DialogContext.Provider>
338
- );
339
- };
235
+ </DrawerContext.Provider>
236
+ )
237
+ }
340
238
 
341
- export default Drawer;
239
+ export default Drawer
@@ -0,0 +1,11 @@
1
+ import React from 'react'
2
+
3
+ const noop = (): void => void 0
4
+
5
+ type DrawerContextType = {
6
+ onClose: () => void
7
+ }
8
+
9
+ export const DrawerContext = React.createContext<DrawerContextType>({
10
+ onClose: noop,
11
+ })
@@ -0,0 +1,38 @@
1
+ import React, { useState } from "react"
2
+ import { Button, Drawer, Flex } from "playbook-ui"
3
+
4
+ const useDrawer = (visible = false) => {
5
+ const [opened, setOpened] = useState(visible)
6
+ const toggle = () => setOpened(!opened)
7
+
8
+ return [opened, toggle]
9
+ }
10
+
11
+ const DrawerBehavior = () => {
12
+ const [drawerOpen, toggleDrawerOpen] = useDrawer()
13
+
14
+ return (
15
+ <>
16
+ <Flex wrap>
17
+ <Button id='sm'
18
+ marginRight='md'
19
+ onClick={toggleDrawerOpen}
20
+ >
21
+ {"Push Behavior"}
22
+ </Button>
23
+ </Flex>
24
+ <Flex>
25
+ <Drawer
26
+ behavior={"push"}
27
+ onClose={toggleDrawerOpen}
28
+ opened={drawerOpen}
29
+ size={"lg"}
30
+ >
31
+ Test me (Push Behavior)
32
+ </Drawer>
33
+ </Flex>
34
+ </>
35
+ )
36
+ }
37
+
38
+ export default DrawerBehavior
@@ -6,19 +6,15 @@ const DrawerBorders = () => {
6
6
  const [openedBRightDrawer, setOpenedBRightDrawer] = useState(false);
7
7
  const [openedBLeftDrawer, setOpenedBLeftDrawer] = useState(false);
8
8
  const [openedBFullDrawer, setOpenedBFullDrawer] = useState(false);
9
- const [openedBDefaultDrawer, setOpenedBDefaultDrawer] = useState(false);
10
- const [openedBRoundedDrawer, setOpenedBRoundedDrawer] = useState(false);
11
9
 
12
10
  // Toggle functions for each drawer
13
11
  const toggleBRightDrawer = () => setOpenedBRightDrawer(!openedBRightDrawer);
14
12
  const toggleBLeftDrawer = () => setOpenedBLeftDrawer(!openedBLeftDrawer);
15
13
  const toggleBFullDrawer = () => setOpenedBFullDrawer(!openedBFullDrawer);
16
- const toggleBDefaultDrawer = () => setOpenedBDefaultDrawer(!openedBDefaultDrawer);
17
- const toggleBRoundedDrawer = () => setOpenedBRoundedDrawer(!openedBRoundedDrawer);
18
14
 
19
15
  return (
20
16
  <>
21
- <Flex padding="md"
17
+ <Flex
22
18
  wrap
23
19
  >
24
20
  <Button marginRight="md"
@@ -36,23 +32,12 @@ const DrawerBorders = () => {
36
32
  >
37
33
  Drawer with border full
38
34
  </Button>
39
- <Button marginRight="md"
40
- onClick={toggleBDefaultDrawer}
41
- >
42
- Default Drawer
43
- </Button>
44
- <Button marginRight="md"
45
- onClick={toggleBRoundedDrawer}
46
- >
47
- Rounded Drawer
48
- </Button>
49
35
  </Flex>
50
36
 
51
37
  {/* Drawers for each size */}
52
38
  <Drawer
53
39
  behavior="float"
54
40
  border="right"
55
- fullHeight
56
41
  onClose={toggleBRightDrawer}
57
42
  opened={openedBRightDrawer}
58
43
  overlay={false}
@@ -64,11 +49,10 @@ const DrawerBorders = () => {
64
49
  <Drawer
65
50
  behavior="float"
66
51
  border="left"
67
- fullHeight
68
52
  onClose={toggleBLeftDrawer}
69
53
  opened={openedBLeftDrawer}
70
54
  overlay={false}
71
- placement="right"
55
+ placement="left"
72
56
  size="lg"
73
57
  >
74
58
  This is a Drawer with border left
@@ -76,40 +60,14 @@ const DrawerBorders = () => {
76
60
  <Drawer
77
61
  behavior="float"
78
62
  border="full"
79
- fullHeight
80
63
  onClose={toggleBFullDrawer}
81
64
  opened={openedBFullDrawer}
82
65
  overlay={false}
83
- placement="right"
66
+ placement="left"
84
67
  size="lg"
85
68
  >
86
69
  This is a Drawer with border full
87
70
  </Drawer>
88
- <Drawer
89
- behavior="float"
90
- fullHeight
91
- onClose={toggleBDefaultDrawer}
92
- opened={openedBDefaultDrawer}
93
- overlay={false}
94
- placement="right"
95
- size="lg"
96
- >
97
- This is a Default Drawer
98
- </Drawer>
99
- <Drawer
100
- behavior="float"
101
- borderRadius="rounded"
102
- fullHeight
103
- onClose={toggleBRoundedDrawer}
104
- opened={openedBRoundedDrawer}
105
- overlay={false}
106
- placement="right"
107
- size="lg"
108
- >
109
- <div style={{ paddingTop: '100px', paddingLeft: '12px' }}>
110
- This is a Rounded Drawer
111
- </div>
112
- </Drawer>
113
71
  </>
114
72
  );
115
73
  };
@@ -26,7 +26,6 @@ const DrawerBreakpoints = () => {
26
26
  <Drawer
27
27
  behavior={"push"}
28
28
  breakpoint="sm"
29
- fullHeight
30
29
  onClose={toggleSmallDrawer}
31
30
  opened={smallDrawerOpened}
32
31
  overlay={false}