playbook_ui 14.25.0.pre.alpha.PLAY2361datepickerarrownav9708 → 14.25.0.pre.alpha.testingcss9713

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 (186) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -1
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +6 -6
  4. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +1 -1
  5. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +60 -65
  6. data/app/pb_kits/playbook/pb_background/_background.scss +3 -3
  7. data/app/pb_kits/playbook/pb_badge/_badge.scss +30 -32
  8. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.scss +1 -1
  9. data/app/pb_kits/playbook/pb_button/_button.scss +13 -13
  10. data/app/pb_kits/playbook/pb_button/_button_mixins.scss +1 -1
  11. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +19 -19
  12. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_dark.scss +15 -15
  13. data/app/pb_kits/playbook/pb_caption/_caption.scss +1 -1
  14. data/app/pb_kits/playbook/pb_card/_card.scss +79 -68
  15. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +4 -4
  16. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +1 -1
  17. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +5 -5
  18. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +1 -1
  19. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +3 -3
  20. data/app/pb_kits/playbook/pb_currency/_currency.scss +30 -30
  21. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.scss +1 -1
  22. data/app/pb_kits/playbook/pb_date/_date.scss +5 -5
  23. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +1 -1
  24. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +19 -0
  25. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +1 -0
  26. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +3 -15
  27. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_inline_styles.scss +2 -2
  28. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_input_styles.scss +2 -2
  29. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss +5 -5
  30. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +13 -13
  31. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.scss +1 -1
  32. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss +13 -13
  33. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +6 -6
  34. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +6 -6
  35. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +7 -7
  36. data/app/pb_kits/playbook/pb_detail/_detail.scss +2 -2
  37. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +61 -252
  38. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +3 -3
  39. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
  40. data/app/pb_kits/playbook/pb_filter/_filter.scss +7 -7
  41. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +2 -2
  42. data/app/pb_kits/playbook/pb_flex/_flex.scss +106 -100
  43. data/app/pb_kits/playbook/pb_flex/_flex.tsx +38 -28
  44. data/app/pb_kits/playbook/pb_flex/_flex_item.scss +146 -51
  45. data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +19 -8
  46. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.html.erb +12 -1
  47. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.jsx +26 -1
  48. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_rails.md +11 -0
  49. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_react.md +11 -0
  50. data/app/pb_kits/playbook/pb_flex/flex.rb +73 -39
  51. data/app/pb_kits/playbook/pb_flex/flex_item.rb +51 -6
  52. data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +1 -1
  53. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +47 -47
  54. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +5 -5
  55. data/app/pb_kits/playbook/pb_gauge/_gauge.scss +5 -5
  56. data/app/pb_kits/playbook/pb_hashtag/_hashtag.scss +1 -1
  57. data/app/pb_kits/playbook/pb_highlight/_highlight.scss +1 -1
  58. data/app/pb_kits/playbook/pb_icon/_icon.scss +4 -0
  59. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +2 -2
  60. data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.scss +15 -15
  61. data/app/pb_kits/playbook/pb_icon_value/_icon_value.scss +6 -6
  62. data/app/pb_kits/playbook/pb_image/_image.scss +1 -1
  63. data/app/pb_kits/playbook/pb_label_pill/_label_pill.scss +1 -1
  64. data/app/pb_kits/playbook/pb_label_value/_label_value.scss +2 -2
  65. data/app/pb_kits/playbook/pb_layout/_layout.scss +330 -305
  66. data/app/pb_kits/playbook/pb_layout/_layout.tsx +14 -11
  67. data/app/pb_kits/playbook/pb_layout/body.rb +1 -1
  68. data/app/pb_kits/playbook/pb_layout/footer.rb +1 -1
  69. data/app/pb_kits/playbook/pb_layout/header.rb +1 -1
  70. data/app/pb_kits/playbook/pb_layout/item.rb +1 -7
  71. data/app/pb_kits/playbook/pb_layout/layout.rb +16 -25
  72. data/app/pb_kits/playbook/pb_layout/layout.test.js +3 -3
  73. data/app/pb_kits/playbook/pb_layout/sidebar.rb +1 -1
  74. data/app/pb_kits/playbook/pb_legend/_legend.scss +1 -1
  75. data/app/pb_kits/playbook/pb_link/_link.scss +4 -4
  76. data/app/pb_kits/playbook/pb_list/_list.scss +8 -8
  77. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +4 -4
  78. data/app/pb_kits/playbook/pb_message/_message.scss +4 -4
  79. data/app/pb_kits/playbook/pb_message/_message_mixins.scss +2 -2
  80. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +2 -2
  81. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +2 -2
  82. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +9 -9
  83. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +8 -8
  84. data/app/pb_kits/playbook/pb_online_status/_online_status.scss +2 -2
  85. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +2 -2
  86. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +1 -1
  87. data/app/pb_kits/playbook/pb_person/_person.scss +1 -1
  88. data/app/pb_kits/playbook/pb_pill/_pill.scss +3 -3
  89. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +7 -7
  90. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +10 -10
  91. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +36 -36
  92. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +4 -4
  93. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +12 -12
  94. data/app/pb_kits/playbook/pb_select/_select.scss +3 -3
  95. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -1
  96. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +7 -7
  97. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +2 -2
  98. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +5 -5
  99. data/app/pb_kits/playbook/pb_source/_source.scss +7 -7
  100. data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +1 -1
  101. data/app/pb_kits/playbook/pb_stat_value/_stat_value.scss +2 -2
  102. data/app/pb_kits/playbook/pb_table/styles/_alignment.scss +1 -1
  103. data/app/pb_kits/playbook/pb_table/styles/_content.scss +1 -1
  104. data/app/pb_kits/playbook/pb_table/styles/_desktop_collapse.scss +1 -1
  105. data/app/pb_kits/playbook/pb_table/styles/_headers.scss +1 -1
  106. data/app/pb_kits/playbook/pb_table/styles/_hover.scss +1 -1
  107. data/app/pb_kits/playbook/pb_table/styles/_mobile.scss +1 -1
  108. data/app/pb_kits/playbook/pb_table/styles/_mobile_collapse.scss +1 -1
  109. data/app/pb_kits/playbook/pb_table/styles/_outer_padding.scss +1 -1
  110. data/app/pb_kits/playbook/pb_table/styles/_reset.scss +1 -1
  111. data/app/pb_kits/playbook/pb_table/styles/_scroll.scss +12 -12
  112. data/app/pb_kits/playbook/pb_table/styles/_side_highlight.scss +2 -2
  113. data/app/pb_kits/playbook/pb_table/styles/_single-line.scss +1 -1
  114. data/app/pb_kits/playbook/pb_table/styles/_striped.scss +1 -1
  115. data/app/pb_kits/playbook/pb_table/styles/_structure.scss +1 -1
  116. data/app/pb_kits/playbook/pb_table/styles/_table-card.scss +1 -1
  117. data/app/pb_kits/playbook/pb_table/styles/_table-dark.scss +2 -2
  118. data/app/pb_kits/playbook/pb_table/styles/_table_header.scss +4 -4
  119. data/app/pb_kits/playbook/pb_table/styles/_tablet_collapse.scss +1 -1
  120. data/app/pb_kits/playbook/pb_table/styles/_vertical_border.scss +1 -1
  121. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +1 -1
  122. data/app/pb_kits/playbook/pb_text_input/text_input.rb +15 -0
  123. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +3 -3
  124. data/app/pb_kits/playbook/pb_time/_time.scss +5 -5
  125. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +13 -13
  126. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.scss +3 -3
  127. data/app/pb_kits/playbook/pb_timeline/_timeline.scss +41 -41
  128. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +4 -4
  129. data/app/pb_kits/playbook/pb_title/_title.scss +14 -14
  130. data/app/pb_kits/playbook/pb_title_count/_title_count.scss +3 -3
  131. data/app/pb_kits/playbook/pb_title_detail/_title_detail.scss +7 -7
  132. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +1 -1
  133. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +1 -1
  134. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +10 -10
  135. data/app/pb_kits/playbook/pb_user/_user.scss +13 -13
  136. data/app/pb_kits/playbook/pb_user_badge/_user_badge.scss +1 -1
  137. data/app/pb_kits/playbook/utilities/_gap.scss +12 -24
  138. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +2 -0
  139. data/app/pb_kits/playbook/utilities/globalProps.ts +28 -4
  140. data/dist/chunks/{_line_graph-Ccznc59K.js → _line_graph-0Y0wuiB9.js} +1 -1
  141. data/dist/chunks/_typeahead-B2gV75O0.js +6 -0
  142. data/dist/chunks/_weekday_stacked-Dblcf2V8.js +37 -0
  143. data/dist/chunks/{lib-C43ywQsO.js → lib-CY5ZPzic.js} +1 -1
  144. data/dist/chunks/{pb_form_validation-Cqj3itLG.js → pb_form_validation-D3b0JKHH.js} +1 -1
  145. data/dist/chunks/vendor.js +1 -1
  146. data/dist/menu.yml +0 -6
  147. data/dist/playbook-doc.js +2 -2
  148. data/dist/playbook-rails-react-bindings.js +1 -1
  149. data/dist/playbook-rails.js +1 -1
  150. data/dist/playbook.css +1 -1
  151. data/lib/playbook/classnames.rb +2 -0
  152. data/lib/playbook/spacing.rb +53 -1
  153. data/lib/playbook/version.rb +1 -1
  154. metadata +8 -36
  155. data/app/pb_kits/playbook/pb_drawer/_close_icon.tsx +0 -25
  156. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +0 -381
  157. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +0 -231
  158. data/app/pb_kits/playbook/pb_drawer/_drawer_context.tsx +0 -3
  159. data/app/pb_kits/playbook/pb_drawer/context.ts +0 -11
  160. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +0 -8
  161. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +0 -41
  162. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +0 -33
  163. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +0 -78
  164. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -3
  165. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +0 -26
  166. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +0 -20
  167. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +0 -59
  168. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +0 -24
  169. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +0 -61
  170. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +0 -24
  171. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +0 -21
  172. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +0 -54
  173. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +0 -1
  174. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +0 -49
  175. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +0 -99
  176. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -20
  177. data/app/pb_kits/playbook/pb_drawer/docs/index.js +0 -7
  178. data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +0 -20
  179. data/app/pb_kits/playbook/pb_drawer/drawer.rb +0 -56
  180. data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +0 -81
  181. data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +0 -60
  182. data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +0 -21
  183. data/app/pb_kits/playbook/pb_drawer/index.js +0 -257
  184. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.md +0 -9
  185. data/dist/chunks/_typeahead-QdrWudzd.js +0 -6
  186. data/dist/chunks/_weekday_stacked-DG1VCDDN.js +0 -37
@@ -1,54 +0,0 @@
1
- import React, { useState } from "react"
2
-
3
- import Button from '../../pb_button/_button'
4
- import Drawer from '../../pb_drawer/_drawer'
5
- import Flex from '../../pb_flex/_flex'
6
-
7
- const DrawerSizes = () => {
8
- // Individual state variables for each drawer size
9
- const [openedNoOverlayDrawer, setOpenedNoOverlayDrawer] = useState(false)
10
- const [openedOverlayDrawer, setOpenedOverlayDrawer] = useState(false)
11
-
12
- // Toggle functions for each drawer
13
- const toggleNoOverlayDrawer = () =>
14
- setOpenedNoOverlayDrawer(!openedNoOverlayDrawer)
15
- const toggleOverlayDrawer = () => setOpenedOverlayDrawer(!openedOverlayDrawer)
16
-
17
- return (
18
- <>
19
- <Flex wrap>
20
- <Button marginRight='md'
21
- onClick={toggleNoOverlayDrawer}
22
- >
23
- No Overlay Drawer
24
- </Button>
25
- <Button marginRight='md'
26
- onClick={toggleOverlayDrawer}
27
- >
28
- Overlay Drawer
29
- </Button>
30
- </Flex>
31
-
32
- {/* Drawers for each size */}
33
- <Drawer
34
- onClose={toggleNoOverlayDrawer}
35
- opened={openedNoOverlayDrawer}
36
- overlay={false}
37
- placement='right'
38
- size='lg'
39
- >
40
- This is a Drawer with no overlay
41
- </Drawer>
42
- <Drawer
43
- onClose={toggleOverlayDrawer}
44
- opened={openedOverlayDrawer}
45
- placement='right'
46
- size='lg'
47
- >
48
- This is a Drawer with an overlay
49
- </Drawer>
50
- </>
51
- )
52
- }
53
-
54
- export default DrawerSizes
@@ -1 +0,0 @@
1
- Click the button to close the drawer when there is no overlay.
@@ -1,49 +0,0 @@
1
- <%= pb_rails("flex") do %>
2
- <%= pb_rails("button", props: { text: "XS Drawer", margin_right: "sm", data: {"open-drawer": "drawer-5"} }) %>
3
-
4
- <%= pb_rails("drawer", props: {
5
- id:"drawer-5",
6
- size: "xs"
7
- }) do %>
8
- XS
9
- <% end %>
10
-
11
- <%= pb_rails("button", props: { text: "SM Drawer", margin_right: "sm", data: {"open-drawer": "drawer-6"} }) %>
12
-
13
- <%= pb_rails("drawer", props: {
14
- id:"drawer-6",
15
- size: "sm",
16
- placement: "right"
17
- }) do %>
18
- This is a small drawer
19
- <% end %>
20
-
21
- <%= pb_rails("button", props: { text: "MD Drawer", margin_right: "sm", data: {"open-drawer": "drawer-7"} }) %>
22
-
23
- <%= pb_rails("drawer", props: {
24
- id:"drawer-7",
25
- size: "md"
26
- }) do %>
27
- This is a medium drawer
28
- <% end %>
29
-
30
- <%= pb_rails("button", props: { text: "LG Drawer", margin_right: "sm", data: {"open-drawer": "drawer-8"} }) %>
31
-
32
- <%= pb_rails("drawer", props: {
33
- id:"drawer-8",
34
- size: "lg",
35
- placement: "right"
36
- }) do %>
37
- This is a large drawer
38
- <% end %>
39
-
40
- <%= pb_rails("button", props: { text: "XL Drawer", margin_right: "sm", data: {"open-drawer": "drawer-9"} }) %>
41
-
42
- <%= pb_rails("drawer", props: {
43
- id:"drawer-9",
44
- size: "xl"
45
- }) do %>
46
- This is an extra large drawer
47
- <% end %>
48
- <% end %>
49
-
@@ -1,99 +0,0 @@
1
- import React, { useState } from "react";
2
-
3
- import Button from '../../pb_button/_button'
4
- import Drawer from '../../pb_drawer/_drawer'
5
- import Flex from '../../pb_flex/_flex'
6
-
7
- const DrawerSizes = () => {
8
- // Individual state variables for each drawer size
9
- const [openedXsDrawer, setOpenedXsDrawer] = useState(false);
10
- const [openedSmDrawer, setOpenedSmDrawer] = useState(false);
11
- const [openedMdDrawer, setOpenedMdDrawer] = useState(false);
12
- const [openedLgDrawer, setOpenedLgDrawer] = useState(false);
13
- const [openedXlDrawer, setOpenedXlDrawer] = useState(false);
14
-
15
- // Toggle functions for each drawer
16
- const toggleXsDrawer = () => setOpenedXsDrawer(!openedXsDrawer);
17
- const toggleSmDrawer = () => setOpenedSmDrawer(!openedSmDrawer);
18
- const toggleMdDrawer = () => setOpenedMdDrawer(!openedMdDrawer);
19
- const toggleLgDrawer = () => setOpenedLgDrawer(!openedLgDrawer);
20
- const toggleXlDrawer = () => setOpenedXlDrawer(!openedXlDrawer);
21
-
22
- return (
23
- <>
24
- <Flex wrap>
25
- <Button
26
- marginRight="md"
27
- onClick={toggleXsDrawer}
28
- >
29
- XS Drawer
30
- </Button>
31
- <Button marginRight="md"
32
- onClick={toggleSmDrawer}
33
- >
34
- SM Drawer
35
- </Button>
36
- <Button marginRight="md"
37
- onClick={toggleMdDrawer}
38
- >
39
- MD Drawer
40
- </Button>
41
- <Button marginRight="md"
42
- onClick={toggleLgDrawer}
43
- >
44
- LG Drawer
45
- </Button>
46
- <Button marginRight="md"
47
- onClick={toggleXlDrawer}
48
- >
49
- XL Drawer
50
- </Button>
51
- </Flex>
52
-
53
- {/* Drawers for each size */}
54
- <Drawer
55
- onClose={toggleXsDrawer}
56
- opened={openedXsDrawer}
57
- placement="right"
58
- size="xs"
59
- >
60
- XS
61
- </Drawer>
62
-
63
- <Drawer
64
- onClose={toggleSmDrawer}
65
- opened={openedSmDrawer}
66
- size="sm"
67
- >
68
- This is an SM Drawer
69
- </Drawer>
70
-
71
- <Drawer
72
- onClose={toggleMdDrawer}
73
- opened={openedMdDrawer}
74
- placement="right"
75
- >
76
- This is an MD Drawer
77
- </Drawer>
78
-
79
- <Drawer
80
- onClose={toggleLgDrawer}
81
- opened={openedLgDrawer}
82
- size="lg"
83
- >
84
- This is an LG Drawer
85
- </Drawer>
86
-
87
- <Drawer
88
- onClose={toggleXlDrawer}
89
- opened={openedXlDrawer}
90
- placement="right"
91
- size="xl"
92
- >
93
- This is an XL Drawer
94
- </Drawer>
95
- </>
96
- );
97
- };
98
-
99
- export default DrawerSizes;
@@ -1,20 +0,0 @@
1
- examples:
2
-
3
- rails:
4
- - drawer_default: Default
5
- - drawer_behavior: Push Behavior
6
- - drawer_menu: Within Element
7
- - drawer_sizes: Sizes
8
- - drawer_overlay: Overlay
9
- - drawer_breakpoints: Breakpoints
10
- - drawer_borders: Borders
11
-
12
-
13
- react:
14
- - drawer_default: Default
15
- - drawer_behavior: Push Behavior
16
- - drawer_menu: Within Element
17
- - drawer_sizes: Sizes
18
- - drawer_overlay: Overlay
19
- - drawer_breakpoints: Breakpoints
20
- - drawer_borders: Borders
@@ -1,7 +0,0 @@
1
- export { default as DrawerDefault } from './_drawer_default.jsx'
2
- export { default as DrawerSizes } from './_drawer_sizes.jsx'
3
- export { default as DrawerOverlay } from './_drawer_overlay.jsx'
4
- export { default as DrawerBorders } from './_drawer_borders.jsx'
5
- export { default as DrawerBreakpoints } from './_drawer_breakpoints.jsx'
6
- export { default as DrawerMenu } from './_drawer_menu.jsx'
7
- export { default as DrawerBehavior } from './_drawer_behavior.jsx'
@@ -1,20 +0,0 @@
1
- <% if within_element %>
2
- <%= pb_content_tag(:div, data: {breakpoint: object.breakpoint} ) do %>
3
- <%= content %>
4
- <% end %>
5
- <% else %>
6
- <div class="pb_drawer_wrapper"
7
- id="drawer-wrapper-<%= object.id %>"
8
- style="display:none;"
9
- data-behavior="<%= object.behavior %>"
10
- data-size="<%= object.size %>"
11
- data-placement="<%= object.placement %>"
12
- data-breakpoint="<%= object.breakpoint %>"
13
- >
14
- <div class="<%= overlay_classes %>" style="display:none;" id="drawer-overlay-<%= object.id %>">
15
- <%= pb_content_tag do %>
16
- <%= content %>
17
- <% end %>
18
- </div>
19
- </div>
20
- <% end %>
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Playbook
4
- module PbDrawer
5
- class Drawer < Playbook::KitBase
6
- prop :size, type: Playbook::Props::Enum,
7
- values: %w[xs sm md lg xl full],
8
- default: "md"
9
- prop :placement, type: Playbook::Props::Enum,
10
- values: %w[left right bottom],
11
- default: "left"
12
- prop :behavior, type: Playbook::Props::Enum,
13
- values: %w[floating push],
14
- default: "floating"
15
- prop :overlay, type: Playbook::Props::Boolean,
16
- default: true
17
- prop :within_element, type: Playbook::Props::Boolean,
18
- default: false
19
- prop :border, type: Playbook::Props::Enum,
20
- values: %w[full none right left],
21
- default: "none"
22
- prop :breakpoint, type: Playbook::Props::Enum,
23
- values: %w[none xs sm md lg xl],
24
- default: "none"
25
-
26
- def classname
27
- generate_classname("pb_drawer pb_drawer_#{size}_#{placement} #{within_class} #{border_classes}")
28
- end
29
-
30
- def border_classes
31
- case border
32
- when "full"
33
- "drawer_border-full"
34
- when "right"
35
- "drawer_border-right"
36
- when "left"
37
- "drawer_border-left"
38
- else
39
- ""
40
- end
41
- end
42
-
43
- def overlay_close
44
- !should_close_on_overlay_click ? "overlay_close" : ""
45
- end
46
-
47
- def within_class
48
- within_element ? "pb_drawer_within_element_rails" : ""
49
- end
50
-
51
- def overlay_classes
52
- "pb_drawer_#{overlay ? '' : 'no_'}overlay drawer_content_#{placement} pb_drawer_overlay_after_open #{overlay ? '' : 'no-background'}"
53
- end
54
- end
55
- end
56
- end
@@ -1,81 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { render, fireEvent, screen } from '../utilities/test-utils';
3
- import { Drawer, Button } from 'playbook-ui';
4
- import { waitFor } from '@testing-library/react';
5
-
6
- const size = 'sm';
7
-
8
- function DrawerTest({ props }) {
9
- const [isOpen, setIsOpen] = useState(false);
10
- const close = () => setIsOpen(false);
11
- const open = () => setIsOpen(true);
12
-
13
- return (
14
- <>
15
- <Button onClick={open}>{'Open Drawer'}</Button>
16
- <Drawer
17
- className="wrapper"
18
- id="drawer-id"
19
- onClose={close}
20
- opened={isOpen}
21
- placement="left"
22
- portalClassName="portal"
23
- size={size}
24
- {...props}
25
- >
26
- {props && props.children}
27
- </Drawer>
28
- </>
29
- );
30
- }
31
-
32
- test('renders with the right border class when border prop is right', async () => {
33
- render(<DrawerTest props={{ border: 'right' }} />);
34
-
35
- fireEvent.click(screen.getByText('Open Drawer'));
36
-
37
- await waitFor(() => expect(document.getElementById('drawer-id')).toBeInTheDocument());
38
-
39
- const container = document.getElementById('drawer-id');
40
- const drawer = container.querySelector('#drawer-id .pb_drawer');
41
-
42
- expect(drawer).toHaveClass('drawer_border-right');
43
- });
44
-
45
- test('renders with the full border class when border prop is full', async () => {
46
- render(<DrawerTest props={{ border: 'full' }} />);
47
-
48
- fireEvent.click(screen.getByText('Open Drawer'));
49
-
50
- await waitFor(() => expect(document.getElementById('drawer-id')).toBeInTheDocument());
51
-
52
- const container = document.getElementById('drawer-id');
53
- const drawer = container.querySelector('#drawer-id .pb_drawer');
54
- expect(drawer).toHaveClass('drawer_border-full');
55
- });
56
-
57
- test('does not have a border class when border prop is none', async () => {
58
- render(<DrawerTest props={{ border: 'none' }} />);
59
-
60
- fireEvent.click(screen.getByText('Open Drawer'));
61
-
62
- await waitFor(() => expect(document.getElementById('drawer-id')).toBeInTheDocument());
63
-
64
- const container = document.getElementById('drawer-id');
65
- const drawer = container.querySelector('#drawer-id .pb_drawer');
66
- expect(drawer).not.toHaveClass('drawer_border-right');
67
- expect(drawer).not.toHaveClass('drawer_border-left');
68
- expect(drawer).not.toHaveClass('drawer_border-full');
69
- });
70
-
71
- test('renders the correct size class for a large drawer', async () => {
72
- render(<DrawerTest props={{ size: 'lg' }} />);
73
-
74
- fireEvent.click(screen.getByText('Open Drawer'));
75
-
76
- await waitFor(() => expect(document.getElementById('drawer-id')).toBeInTheDocument());
77
-
78
- const container = document.getElementById('drawer-id');
79
- const drawer = container.querySelector('#drawer-id .pb_drawer');
80
- expect(drawer).toHaveClass('pb_drawer pb_drawer_lg_left');
81
- });
@@ -1,60 +0,0 @@
1
- import { useState, useEffect } from 'react'
2
-
3
- export const breakpointValues = {
4
- none: 0,
5
- xs: 575,
6
- sm: 768,
7
- md: 992,
8
- lg: 1200,
9
- xl: 1400,
10
- } as const
11
-
12
- type BreakpointSize = keyof typeof breakpointValues
13
-
14
- interface UseBreakpointProps {
15
- breakpoint?: BreakpointSize
16
- triggerId?: string
17
- }
18
-
19
- export const useBreakpoint = ({
20
- breakpoint = 'none',
21
- triggerId
22
- }: UseBreakpointProps) => {
23
- const [isOpenBreakpointOpen, setIsOpenBreakpointOpen] = useState(false)
24
- const [isUserClosed, setIsUserClosed] = useState(false)
25
-
26
- useEffect(() => {
27
- if (breakpoint === 'none') return
28
-
29
- const handleResize = () => {
30
- const width = window.innerWidth
31
-
32
- const openBreakpointWidth = breakpointValues[breakpoint]
33
- if (width >= openBreakpointWidth) {
34
- setIsOpenBreakpointOpen(true)
35
- } else {
36
- setIsOpenBreakpointOpen(false)
37
- setIsUserClosed(false)
38
- }
39
-
40
- // Handle menu button visibility
41
- if (triggerId) {
42
- const menuButton = document.getElementById(triggerId)
43
- if (menuButton) {
44
- menuButton.style.display = isOpenBreakpointOpen ? 'none' : ''
45
- }
46
- }
47
- }
48
-
49
- window.addEventListener('resize', handleResize)
50
- handleResize()
51
-
52
- return () => window.removeEventListener('resize', handleResize)
53
- }, [breakpoint, triggerId, isOpenBreakpointOpen])
54
-
55
- return {
56
- isOpenBreakpointOpen,
57
- isUserClosed,
58
- setIsUserClosed
59
- }
60
- }
@@ -1,21 +0,0 @@
1
- import { useState, useEffect } from 'react'
2
-
3
- export const useDrawerAnimation = (isOpen: boolean) => {
4
- const [animationState, setAnimationState] = useState('')
5
-
6
- useEffect(() => {
7
- if (isOpen) {
8
- setAnimationState('afterOpen')
9
- } else if (!isOpen && animationState === 'afterOpen') {
10
- setAnimationState('beforeClose')
11
- setTimeout(() => {
12
- setAnimationState('')
13
- }, 200)
14
- }
15
- }, [isOpen])
16
-
17
- return {
18
- animationState,
19
- isVisible: isOpen || animationState === 'beforeClose'
20
- }
21
- }