playbook_ui 14.11.1.pre.alpha.PLAY17445539 → 14.11.1.pre.alpha.hfhbrakemanplaybook5370

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_control.md +2 -2
  3. data/app/pb_kits/playbook/pb_button/button.html.erb +3 -2
  4. data/app/pb_kits/playbook/pb_checkbox/checkbox.html.erb +6 -1
  5. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +6 -2
  6. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.md +1 -1
  7. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_rails.html.erb +9 -3
  8. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +0 -1
  9. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +177 -154
  10. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +264 -162
  11. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +45 -3
  12. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +1 -0
  13. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +16 -9
  14. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +19 -44
  15. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +3 -21
  16. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +21 -16
  17. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +19 -2
  18. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +1 -2
  19. data/app/pb_kits/playbook/pb_drawer/docs/index.js +0 -1
  20. data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +5 -5
  21. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subtle_variant.md +1 -1
  22. data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +12 -7
  23. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.html.erb +14 -9
  24. data/app/pb_kits/playbook/pb_dropdown/dropdown_option.html.erb +11 -6
  25. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +14 -8
  26. data/app/pb_kits/playbook/pb_list/item.html.erb +8 -30
  27. data/app/pb_kits/playbook/pb_list/item.rb +0 -7
  28. data/app/pb_kits/playbook/pb_list/list.html.erb +11 -31
  29. data/app/pb_kits/playbook/pb_list/list.rb +0 -4
  30. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.tsx +1 -6
  31. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +12 -30
  32. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +1 -3
  33. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +0 -1
  34. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +0 -3
  35. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.test.js +1 -20
  36. data/app/pb_kits/playbook/pb_radio/_radio.scss +8 -12
  37. data/app/pb_kits/playbook/pb_radio/docs/_radio_custom_children.jsx +3 -8
  38. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.html.erb +3 -17
  39. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.rb +0 -3
  40. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +4 -11
  41. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.rb +0 -3
  42. data/app/pb_kits/playbook/pb_table/_table.tsx +3 -2
  43. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_rails.md +2 -2
  44. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -2
  45. data/app/pb_kits/playbook/pb_table/index.ts +34 -93
  46. data/app/pb_kits/playbook/pb_table/styles/_scroll.scss +5 -6
  47. data/app/pb_kits/playbook/pb_table/table.html.erb +1 -1
  48. data/app/pb_kits/playbook/pb_table/table.rb +2 -17
  49. data/app/pb_kits/playbook/pb_timeline/_timeline.scss +30 -30
  50. data/dist/chunks/{_typeahead-vFuUQM5F.js → _typeahead-BNULwihE.js} +2 -2
  51. data/dist/chunks/_weekday_stacked-BKWemDAe.js +45 -0
  52. data/dist/chunks/{lib-OFT985dg.js → lib-B7sgJtGS.js} +2 -2
  53. data/dist/chunks/{pb_form_validation-CrsXd1-Y.js → pb_form_validation-C5Cc0-1v.js} +1 -1
  54. data/dist/chunks/vendor.js +1 -1
  55. data/dist/playbook-doc.js +1 -1
  56. data/dist/playbook-rails-react-bindings.js +1 -1
  57. data/dist/playbook-rails.js +1 -1
  58. data/dist/playbook.css +1 -1
  59. data/lib/playbook/version.rb +1 -1
  60. metadata +6 -21
  61. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_rails.md +0 -5
  62. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_rails.html.erb +0 -38
  63. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_rails.md +0 -3
  64. data/app/pb_kits/playbook/pb_drawer/context.ts +0 -11
  65. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +0 -38
  66. data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +0 -73
  67. data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +0 -21
  68. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_format.html.erb +0 -15
  69. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_format.jsx +0 -24
  70. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_format.md +0 -1
  71. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.html.erb +0 -74
  72. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_rails.md +0 -3
  73. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.html.erb +0 -74
  74. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_rails.md +0 -3
  75. data/app/pb_kits/playbook/pb_table/utilities/addDataTitle.ts +0 -22
  76. data/dist/chunks/_weekday_stacked-DG3A22sS.js +0 -45
@@ -1,83 +1,230 @@
1
- import React, { useState, useEffect, useRef } from "react"
2
- import classnames from "classnames"
1
+ import React, { useState, useEffect } 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
- import { DrawerContext } from "./context"
12
- import { useBreakpoint } from "./hooks/useBreakpoint"
9
+ } from "../utilities/props";
10
+ import { globalProps, globalInlineProps } from "../utilities/globalProps";
11
+
12
+ import { DialogContext } from "../pb_dialog/_dialog_context";
13
13
 
14
14
  type DrawerProps = {
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 => {
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 => {
35
37
  const {
36
38
  aria = {},
37
39
  behavior = "floating",
38
40
  border = "none",
39
- breakpoint = "none",
41
+ openBreakpoint = "none",
42
+ closeBreakpoint = "none",
40
43
  className,
41
44
  data = {},
42
45
  htmlOptions = {},
43
46
  id,
44
47
  size = "md",
45
48
  children,
46
- triggerId,
49
+ fullHeight = true,
50
+ menuButtonID,
47
51
  opened,
48
52
  onClose,
49
53
  overlay = true,
50
54
  placement = "left",
51
55
  withinElement = 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,
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);
64
198
  }
65
- )
199
+ }, [isOpenBreakpointOpen]);
66
200
 
67
201
  const modalIsOpened =
68
- (isOpenBreakpointOpen && !isUserClosed) || menuButtonOpened || opened
202
+ (isOpenBreakpointOpen && !isUserClosed) || menuButtonOpened || opened;
69
203
 
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";
70
218
 
71
219
  useEffect(() => {
72
220
  if (withinElement) return;
73
221
 
74
- const sizeMap: { [key: string]: string } = {
222
+ const sizeMap: Record<DrawerProps["size"], string> = {
75
223
  xl: "365px",
76
224
  lg: "300px",
77
225
  md: "250px",
78
226
  sm: "200px",
79
227
  xs: "64px",
80
- full: "100%",
81
228
  };
82
229
  const body = document.querySelector("body");
83
230
  if (modalIsOpened && behavior === "push" && body) {
@@ -97,143 +244,98 @@ const Drawer = (props: DrawerProps): React.ReactElement | null => {
97
244
  }
98
245
  }, [modalIsOpened, behavior, placement, size, withinElement]);
99
246
 
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])
126
-
127
- // Remove the showElement/hideElement effect since we're handling visibility with CSS
128
- useEffect(() => {
129
- if (drawerRef.current && modalIsOpened) {
130
- const height = drawerRef.current.scrollHeight;
131
- drawerRef.current.style.setProperty('--drawer-height', `${height}px`);
132
- }
133
- }, [modalIsOpened])
247
+ const api = {
248
+ onClose: () => {
249
+ if (menuButtonID) {
250
+ setMenuButtonOpened(false);
251
+ }
252
+ setIsUserClosed(true);
253
+ if (onClose) {
254
+ onClose();
255
+ }
256
+ },
257
+ };
134
258
 
135
- // Handle menu button click
136
259
  useEffect(() => {
137
- if (triggerId) {
138
- const menuButton = document.getElementById(triggerId)
260
+ if (menuButtonID) {
261
+ const menuButton = document.getElementById(menuButtonID);
139
262
  if (menuButton) {
140
263
  const handleMenuButtonClick = () => {
141
264
  if (modalIsOpened) {
142
- setMenuButtonOpened(false)
143
- setIsUserClosed(true)
265
+ // Drawer is open, close it
266
+ setMenuButtonOpened(false);
267
+ setIsUserClosed(true);
144
268
  } else {
145
- setMenuButtonOpened(true)
146
- setIsUserClosed(false)
269
+ // Drawer is closed, open it
270
+ setMenuButtonOpened(true);
271
+ setIsUserClosed(false);
147
272
  }
148
- }
149
- menuButton.addEventListener("click", handleMenuButtonClick)
273
+ };
274
+ menuButton.addEventListener("click", handleMenuButtonClick);
150
275
  return () => {
151
- menuButton.removeEventListener("click", handleMenuButtonClick)
152
- }
276
+ menuButton.removeEventListener("click", handleMenuButtonClick);
277
+ };
153
278
  }
154
279
  }
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
280
+ }, [menuButtonID, modalIsOpened]);
213
281
 
214
282
  return (
215
- <DrawerContext.Provider value={api}>
283
+ <DialogContext.Provider value={api}>
216
284
  {withinElement ? (
217
- drawerContent
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
+ )
218
303
  ) : (
219
304
  <div
220
305
  {...ariaProps}
221
306
  {...dataProps}
222
307
  {...htmlProps}
223
- className={classnames(buildCss("pb_drawer_wrapper"), className)}
224
- style={dynamicInlineProps}
308
+ className={classes}
225
309
  >
226
- <div
227
- className={overlayClasses}
228
- id={id}
229
- onClick={overlay ? api.onClose : undefined}
230
- >
231
- {drawerContent}
232
- </div>
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
+ )}
233
335
  </div>
234
336
  )}
235
- </DrawerContext.Provider>
236
- )
237
- }
337
+ </DialogContext.Provider>
338
+ );
339
+ };
238
340
 
239
- export default Drawer
341
+ export default Drawer;
@@ -6,15 +6,19 @@ 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);
9
11
 
10
12
  // Toggle functions for each drawer
11
13
  const toggleBRightDrawer = () => setOpenedBRightDrawer(!openedBRightDrawer);
12
14
  const toggleBLeftDrawer = () => setOpenedBLeftDrawer(!openedBLeftDrawer);
13
15
  const toggleBFullDrawer = () => setOpenedBFullDrawer(!openedBFullDrawer);
16
+ const toggleBDefaultDrawer = () => setOpenedBDefaultDrawer(!openedBDefaultDrawer);
17
+ const toggleBRoundedDrawer = () => setOpenedBRoundedDrawer(!openedBRoundedDrawer);
14
18
 
15
19
  return (
16
20
  <>
17
- <Flex
21
+ <Flex padding="md"
18
22
  wrap
19
23
  >
20
24
  <Button marginRight="md"
@@ -32,12 +36,23 @@ const DrawerBorders = () => {
32
36
  >
33
37
  Drawer with border full
34
38
  </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>
35
49
  </Flex>
36
50
 
37
51
  {/* Drawers for each size */}
38
52
  <Drawer
39
53
  behavior="float"
40
54
  border="right"
55
+ fullHeight
41
56
  onClose={toggleBRightDrawer}
42
57
  opened={openedBRightDrawer}
43
58
  overlay={false}
@@ -49,10 +64,11 @@ const DrawerBorders = () => {
49
64
  <Drawer
50
65
  behavior="float"
51
66
  border="left"
67
+ fullHeight
52
68
  onClose={toggleBLeftDrawer}
53
69
  opened={openedBLeftDrawer}
54
70
  overlay={false}
55
- placement="left"
71
+ placement="right"
56
72
  size="lg"
57
73
  >
58
74
  This is a Drawer with border left
@@ -60,14 +76,40 @@ const DrawerBorders = () => {
60
76
  <Drawer
61
77
  behavior="float"
62
78
  border="full"
79
+ fullHeight
63
80
  onClose={toggleBFullDrawer}
64
81
  opened={openedBFullDrawer}
65
82
  overlay={false}
66
- placement="left"
83
+ placement="right"
67
84
  size="lg"
68
85
  >
69
86
  This is a Drawer with border full
70
87
  </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>
71
113
  </>
72
114
  );
73
115
  };
@@ -26,6 +26,7 @@ const DrawerBreakpoints = () => {
26
26
  <Drawer
27
27
  behavior={"push"}
28
28
  breakpoint="sm"
29
+ fullHeight
29
30
  onClose={toggleSmallDrawer}
30
31
  opened={smallDrawerOpened}
31
32
  overlay={false}
@@ -9,8 +9,8 @@ const useDrawer = (visible = false) => {
9
9
  };
10
10
 
11
11
  const DrawerDefault = () => {
12
- const [drawerLeftOpen, toggleDrawerLeftOpen] = useDrawer();
13
- const [drawerRightOpen, toggleDrawerRightOpen ] = useDrawer();
12
+ const [headerSeparatorDrawerOpened, toggleHeaderSeparatorDrawer] = useDrawer();
13
+ const [bothSeparatorsDrawerOpened, toggleBothSeparatorsDrawer] = useDrawer();
14
14
 
15
15
  return (
16
16
  <>
@@ -18,13 +18,13 @@ const DrawerDefault = () => {
18
18
  <Button
19
19
  id="sm"
20
20
  marginRight="md"
21
- onClick={toggleDrawerLeftOpen}
21
+ onClick={toggleHeaderSeparatorDrawer}
22
22
  >
23
23
  {"Left Drawer"}
24
24
  </Button>
25
25
  <Button
26
26
  marginRight="xl"
27
- onClick={toggleDrawerRightOpen}
27
+ onClick={toggleBothSeparatorsDrawer}
28
28
  >
29
29
  {"Right Drawer"}
30
30
  </Button>
@@ -32,8 +32,12 @@ const DrawerDefault = () => {
32
32
  <Flex>
33
33
  {/* Left Drawer */}
34
34
  <Drawer
35
- onClose={toggleDrawerLeftOpen}
36
- opened={drawerLeftOpen}
35
+ behavior={"push"}
36
+ fullHeight
37
+ onClose={toggleHeaderSeparatorDrawer}
38
+ opened={headerSeparatorDrawerOpened}
39
+ overlay
40
+ placement={"left"}
37
41
  size={"lg"}
38
42
  >
39
43
  Test me (Left Drawer)
@@ -41,8 +45,11 @@ const DrawerDefault = () => {
41
45
 
42
46
  {/* Right Drawer */}
43
47
  <Drawer
44
- onClose={toggleDrawerRightOpen}
45
- opened={drawerRightOpen}
48
+ behavior={"push"}
49
+ fullHeight
50
+ onClose={toggleBothSeparatorsDrawer}
51
+ opened={bothSeparatorsDrawerOpened}
52
+ overlay
46
53
  placement={"right"}
47
54
  size={"lg"}
48
55
  >
@@ -53,4 +60,4 @@ const DrawerDefault = () => {
53
60
  );
54
61
  };
55
62
 
56
- export default DrawerDefault;
63
+ export default DrawerDefault;