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

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 (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;