playbook_ui 14.14.0.pre.rc.5 → 14.15.0.pre.alpha.PBNTR902multilevelselecthiddeninputbug6580

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 (178) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +127 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +55 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/Components/TablePagination.tsx +33 -0
  5. data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +275 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/Context/AdvancedTableContext.tsx +143 -3
  7. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableActions.ts +66 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +195 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableBody.tsx +45 -99
  10. data/app/pb_kits/playbook/pb_advanced_table/Utilities/CellRendererUtils.tsx +73 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/Utilities/RowUtils.ts +52 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/Utilities/TableContainerStyles.ts +80 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +126 -7
  14. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +153 -298
  15. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +8 -1
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_custom_cell.jsx +75 -0
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_infinite_scroll.jsx +50 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_rails.md +3 -1
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_react.md +1 -1
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb +33 -0
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +3 -0
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/advanced_table_mock_data_infinite_scroll.json +152002 -0
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -0
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -1
  26. data/app/pb_kits/playbook/pb_card/_card.tsx +2 -1
  27. data/app/pb_kits/playbook/pb_checkbox/_checkbox.tsx +17 -8
  28. data/app/pb_kits/playbook/pb_checkbox/checkbox.test.js +16 -0
  29. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.jsx +69 -0
  30. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.md +1 -0
  31. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +2 -1
  32. data/app/pb_kits/playbook/pb_checkbox/docs/index.js +1 -0
  33. data/app/pb_kits/playbook/pb_currency/_currency.tsx +46 -31
  34. data/app/pb_kits/playbook/pb_currency/currency.html.erb +15 -8
  35. data/app/pb_kits/playbook/pb_currency/currency.rb +17 -2
  36. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display.html.erb +22 -0
  37. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display.jsx +34 -0
  38. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display_rails.md +1 -0
  39. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display_react.md +1 -0
  40. data/app/pb_kits/playbook/pb_currency/docs/example.yml +2 -0
  41. data/app/pb_kits/playbook/pb_currency/docs/index.js +2 -1
  42. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +4 -1
  43. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +2 -0
  44. data/app/pb_kits/playbook/pb_date_picker/index.ts +38 -0
  45. data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +5 -6
  46. data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +2 -0
  47. data/app/pb_kits/playbook/pb_dialog/index.js +75 -0
  48. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +43 -3
  49. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +8 -0
  50. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +33 -0
  51. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +3 -3
  52. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -0
  53. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +20 -37
  54. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +20 -1
  55. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +24 -0
  56. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +6 -6
  57. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +21 -0
  58. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +1 -0
  59. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +1 -0
  60. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +49 -0
  61. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +6 -0
  62. data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +20 -12
  63. data/app/pb_kits/playbook/pb_drawer/drawer.rb +49 -1
  64. data/app/pb_kits/playbook/pb_drawer/index.js +257 -0
  65. data/app/pb_kits/playbook/pb_filter/Filter/CurrentFilters.tsx +5 -4
  66. data/app/pb_kits/playbook/pb_filter/Filter/FilterSingle.tsx +2 -2
  67. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  68. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +3 -2
  69. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +9 -2
  70. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +4 -0
  71. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_wrapped.html.erb +40 -0
  72. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_wrapped.jsx +50 -0
  73. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_wrapped.md +3 -0
  74. data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +2 -0
  75. data/app/pb_kits/playbook/pb_form_pill/docs/index.js +1 -0
  76. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +7 -1
  77. data/app/pb_kits/playbook/pb_icon_button/_icon_button.tsx +71 -0
  78. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_default.jsx +17 -0
  79. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_sizes.jsx +61 -0
  80. data/app/pb_kits/playbook/pb_icon_button/docs/example.yml +4 -0
  81. data/app/pb_kits/playbook/pb_icon_button/docs/index.js +2 -0
  82. data/app/pb_kits/playbook/pb_icon_button/icon_button.test.jsx +39 -0
  83. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +7 -0
  84. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +25 -3
  85. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.html.erb +72 -0
  86. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.jsx +91 -0
  87. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -1
  88. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +1 -0
  89. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +7 -1
  90. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +13 -0
  91. data/app/pb_kits/playbook/pb_overlay/_overlay.tsx +11 -1
  92. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar.html.erb +11 -0
  93. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar.jsx +37 -0
  94. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar_rails.md +1 -0
  95. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar_react.md +1 -0
  96. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.html.erb +11 -0
  97. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +37 -0
  98. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.md +1 -0
  99. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional_react.md +1 -0
  100. data/app/pb_kits/playbook/pb_overlay/docs/example.yml +4 -0
  101. data/app/pb_kits/playbook/pb_overlay/docs/index.js +2 -0
  102. data/app/pb_kits/playbook/pb_overlay/index.js +61 -0
  103. data/app/pb_kits/playbook/pb_overlay/overlay.html.erb +5 -3
  104. data/app/pb_kits/playbook/pb_overlay/overlay.rb +16 -1
  105. data/app/pb_kits/playbook/pb_overlay/overlay.test.jsx +12 -0
  106. data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +48 -10
  107. data/app/pb_kits/playbook/pb_popover/_popover.tsx +1 -1
  108. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +1 -6
  109. data/app/pb_kits/playbook/pb_progress_simple/progress_simple.html.erb +1 -5
  110. data/app/pb_kits/playbook/pb_progress_step/progress_step.html.erb +1 -5
  111. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.html.erb +3 -7
  112. data/app/pb_kits/playbook/pb_radio/_radio.tsx +85 -74
  113. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +60 -0
  114. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.md +1 -0
  115. data/app/pb_kits/playbook/pb_radio/docs/example.yml +2 -1
  116. data/app/pb_kits/playbook/pb_radio/docs/index.js +1 -0
  117. data/app/pb_kits/playbook/pb_radio/radio.html.erb +6 -11
  118. data/app/pb_kits/playbook/pb_radio/radio.test.js +16 -0
  119. data/app/pb_kits/playbook/pb_select/docs/_select_react_hook.jsx +58 -0
  120. data/app/pb_kits/playbook/pb_select/docs/_select_react_hook.md +1 -0
  121. data/app/pb_kits/playbook/pb_select/docs/example.yml +1 -0
  122. data/app/pb_kits/playbook/pb_select/docs/index.js +1 -0
  123. data/app/pb_kits/playbook/pb_select/index.js +38 -0
  124. data/app/pb_kits/playbook/pb_select/select.html.erb +3 -5
  125. data/app/pb_kits/playbook/pb_select/select.rb +8 -0
  126. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +1 -5
  127. data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.html.erb +1 -4
  128. data/app/pb_kits/playbook/pb_selectable_icon/selectable_icon.html.erb +1 -5
  129. data/app/pb_kits/playbook/pb_timeline/_timeline.scss +2 -2
  130. data/app/pb_kits/playbook/pb_title/_title.scss +32 -0
  131. data/app/pb_kits/playbook/pb_title/_title.tsx +10 -1
  132. data/app/pb_kits/playbook/pb_title/docs/_title_default.html.erb +1 -2
  133. data/app/pb_kits/playbook/pb_title/docs/_title_default.jsx +1 -1
  134. data/app/pb_kits/playbook/pb_title/docs/_title_display_size.html.erb +7 -0
  135. data/app/pb_kits/playbook/pb_title/docs/_title_display_size.jsx +54 -0
  136. data/app/pb_kits/playbook/pb_title/docs/_title_display_size.md +1 -0
  137. data/app/pb_kits/playbook/pb_title/docs/example.yml +2 -0
  138. data/app/pb_kits/playbook/pb_title/docs/index.js +1 -0
  139. data/app/pb_kits/playbook/pb_title/title.rb +10 -1
  140. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +0 -3
  141. data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +25 -0
  142. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay_rails.html.erb +39 -0
  143. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay_rails.md +3 -0
  144. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_interaction.html.erb +26 -0
  145. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_sizing.jsx +69 -0
  146. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_sizing.md +3 -0
  147. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +3 -1
  148. data/app/pb_kits/playbook/pb_tooltip/docs/index.js +1 -0
  149. data/app/pb_kits/playbook/pb_tooltip/floating_ui.js +282 -0
  150. data/app/pb_kits/playbook/pb_tooltip/index.js +2 -2
  151. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +10 -2
  152. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +36 -2
  153. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +5 -1
  154. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_dynamic_options.html.erb +45 -0
  155. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_dynamic_options.md +5 -0
  156. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_dynamic_options_pure_rails.html.erb +33 -0
  157. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_dynamic_options_pure_rails.md +3 -0
  158. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +2 -0
  159. data/app/pb_kits/playbook/pb_typeahead/index.ts +61 -8
  160. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +17 -2
  161. data/app/pb_kits/playbook/utilities/object.test.js +99 -0
  162. data/app/pb_kits/playbook/utilities/object.ts +29 -1
  163. data/dist/chunks/_typeahead-CaXmU2Fm.js +36 -0
  164. data/dist/chunks/_weekday_stacked-C7auj4WH.js +45 -0
  165. data/dist/chunks/{lib-D3us1bGD.js → lib-5OzNgeeu.js} +2 -2
  166. data/dist/chunks/{pb_form_validation-BpihMSOQ.js → pb_form_validation-DGhKbZtO.js} +1 -1
  167. data/dist/chunks/vendor.js +1 -1
  168. data/dist/menu.yml +3 -3
  169. data/dist/playbook-doc.js +1 -1
  170. data/dist/playbook-rails-react-bindings.js +1 -1
  171. data/dist/playbook-rails.js +1 -1
  172. data/dist/playbook.css +1 -1
  173. data/lib/playbook/forms/builder/time_zone_select_field.rb +19 -0
  174. data/lib/playbook/forms/builder.rb +1 -0
  175. data/lib/playbook/version.rb +2 -2
  176. metadata +75 -6
  177. data/dist/chunks/_typeahead-CAIQfP7X.js +0 -36
  178. data/dist/chunks/_weekday_stacked-DstwbGUv.js +0 -45
@@ -134,11 +134,11 @@ body.PBDrawer__Body--close {
134
134
  transition: margin-left $animation-duration ease-out, margin-right $animation-duration ease-out;
135
135
  }
136
136
 
137
- .pb_drawer_lg_left.pb_drawer {
137
+ .pb_drawer_lg_left .pb_drawer {
138
138
  transform: translateX(-100%);
139
139
  }
140
140
 
141
- .pb_drawer_lg_right.pb_drawer {
141
+ .pb_drawer_lg_right .pb_drawer {
142
142
  transform: translateX(100%);
143
143
  }
144
144
 
@@ -157,6 +157,34 @@ body.PBDrawer__Body--close {
157
157
  animation-duration: $animation-duration;
158
158
  outline: none;
159
159
 
160
+ &.pb_drawer_within_element_rails {
161
+ position: relative;
162
+ width: 100%;
163
+ display: block;
164
+ background-color: $white;
165
+ overflow: hidden;
166
+
167
+ // Use max-height for a smooth accordion-like animation
168
+ max-height: 0;
169
+ transition: max-height $animation-duration ease-in-out;
170
+ z-index: 1;
171
+
172
+ &.open {
173
+ max-height: 1000px;
174
+ }
175
+
176
+ &::before {
177
+ content: '';
178
+ position: absolute;
179
+ top: 0;
180
+ left: 0;
181
+ right: 0;
182
+ bottom: 0;
183
+ background-color: inherit;
184
+ z-index: -1;
185
+ }
186
+ }
187
+
160
188
  &.pb_drawer_within_element {
161
189
  position: relative;
162
190
  width: 100%;
@@ -297,7 +325,6 @@ body.PBDrawer__Body--close {
297
325
  display: flex;
298
326
  background-color: rgba($bg_dark, $opacity_4);
299
327
  z-index: $z-index;
300
- opacity: 0;
301
328
  animation: overlayFade $animation-duration ease-in-out forwards;
302
329
 
303
330
  &[class*="_left"]{
@@ -325,10 +352,23 @@ body.PBDrawer__Body--close {
325
352
  left: 0;
326
353
  right: 0;
327
354
  bottom: 0;
355
+ display: flex;
328
356
  z-index: $z-index;
329
357
  opacity: 1;
330
358
  pointer-events: none;
331
359
 
360
+ &[class*="_right"]{
361
+ justify-content: flex-end;
362
+ }
363
+
364
+ &[class*="_left"]{
365
+ justify-content: flex-start;
366
+ }
367
+
368
+ &[class*="_center"]{
369
+ justify-content: center;
370
+ }
371
+
332
372
  &_before_close {
333
373
  height: 0;
334
374
  }
@@ -0,0 +1,8 @@
1
+ <%= pb_rails("button", props: { text: "Push Drawer", margin_right: "sm", data: {"open-drawer": "drawer-3"} }) %>
2
+
3
+ <%= pb_rails("drawer", props: {
4
+ id:"drawer-3",
5
+ behavior: "push"
6
+ }) do %>
7
+ Test me (Push Behavior)
8
+ <% end %>
@@ -0,0 +1,33 @@
1
+ <%= pb_rails("flex") do %>
2
+ <%= pb_rails("button", props: { text: "Drawer with border right", margin_right: "sm", data: {"open-drawer": "drawer-12"} }) %>
3
+
4
+ <%= pb_rails("drawer", props: {
5
+ id:"drawer-12",
6
+ overlay: false,
7
+ border: "right"
8
+ }) do %>
9
+ Test me (Border Right)
10
+ <% end %>
11
+
12
+
13
+ <%= pb_rails("button", props: { text: "Drawer with border left", margin_right: "sm", data: {"open-drawer": "drawer-13"} }) %>
14
+
15
+ <%= pb_rails("drawer", props: {
16
+ id:"drawer-13",
17
+ overlay: false,
18
+ border: "left"
19
+ }) do %>
20
+ Test me (Border Left)
21
+ <% end %>
22
+
23
+ <%= pb_rails("button", props: { text: "Drawer with border full", data: {"open-drawer": "drawer-14"} }) %>
24
+
25
+ <%= pb_rails("drawer", props: {
26
+ id:"drawer-14",
27
+ overlay: false,
28
+ border: "full"
29
+ }) do %>
30
+ Test me (Border Full)
31
+ <% end %>
32
+ <% end %>
33
+
@@ -41,7 +41,7 @@ const DrawerBorders = () => {
41
41
  onClose={toggleBRightDrawer}
42
42
  opened={openedBRightDrawer}
43
43
  overlay={false}
44
- placement="left"
44
+ placement="right"
45
45
  size="lg"
46
46
  >
47
47
  This is a Drawer with border right
@@ -52,7 +52,7 @@ const DrawerBorders = () => {
52
52
  onClose={toggleBLeftDrawer}
53
53
  opened={openedBLeftDrawer}
54
54
  overlay={false}
55
- placement="left"
55
+ placement="right"
56
56
  size="lg"
57
57
  >
58
58
  This is a Drawer with border left
@@ -63,7 +63,7 @@ const DrawerBorders = () => {
63
63
  onClose={toggleBFullDrawer}
64
64
  opened={openedBFullDrawer}
65
65
  overlay={false}
66
- placement="left"
66
+ placement="right"
67
67
  size="lg"
68
68
  >
69
69
  This is a Drawer with border full
@@ -1,42 +1,25 @@
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 DrawerBreakpoints = () => {
12
- const [smallDrawerOpened, toggleSmallDrawer] = useDrawer();
1
+ import React from "react"
2
+ import { Button, Body } from "playbook-ui"
13
3
 
4
+ const DrawerMenu = () => {
14
5
  return (
15
6
  <>
16
- <Flex wrap>
17
- <Button
18
- id="sm"
19
- marginRight="md"
20
- onClick={toggleSmallDrawer}
21
- >
22
- {"Will open at small breakpoint"}
23
- </Button>
24
- </Flex>
25
- <Flex>
26
- <Drawer
27
- behavior={"push"}
28
- breakpoint="sm"
29
- onClose={toggleSmallDrawer}
30
- opened={smallDrawerOpened}
31
- overlay={false}
32
- placement={"right"}
33
- size={"lg"}
34
- >
35
- Open because small breakpoint
36
- </Drawer>
37
- </Flex>
7
+ <Body>
8
+ The breakpoint prop determines when the Drawer is always visible. Above
9
+ the specified breakpoint, the Drawer remains open on the page. Below it,
10
+ only the trigger element is shown, allowing you to toggle the drawer
11
+ open and closed. To see this in action, click the button below and
12
+ resize your window.
13
+ </Body>
14
+ <Button
15
+ link='https://8njdkc.csb.app/'
16
+ marginTop='md'
17
+ newWindow
18
+ >
19
+ Open Doc Example in New Tab
20
+ </Button>
38
21
  </>
39
- );
40
- };
22
+ )
23
+ }
41
24
 
42
- export default DrawerBreakpoints;
25
+ export default DrawerMenu
@@ -1 +1,20 @@
1
- <%= pb_rails("drawer") %>
1
+ <%= pb_rails("flex") do %>
2
+ <%= pb_rails("button", props: { text: "Left Drawer", margin_right: "sm", data: {"open-drawer": "drawer-1"} }) %>
3
+
4
+ <%= pb_rails("drawer", props: {
5
+ id:"drawer-1",
6
+ }) do %>
7
+ Test me (Left Drawer)
8
+ <% end %>
9
+
10
+
11
+ <%= pb_rails("button", props: { text: "Right Drawer", data: {"open-drawer": "drawer-2"} }) %>
12
+
13
+ <%= pb_rails("drawer", props: {
14
+ id:"drawer-2",
15
+ placement: "right"
16
+ }) do %>
17
+ Test me (Right Drawer)
18
+ <% end %>
19
+ <% end %>
20
+
@@ -0,0 +1,24 @@
1
+ <%= pb_rails("button", props: { padding: "xs", margin_right: "sm", data: {"open-drawer": "drawer-4"} }) do %>
2
+ <%= pb_rails("icon", props: { icon: "bars", size: "2x" }) %>
3
+ <% end %>
4
+
5
+ <%= pb_rails("drawer", props: {
6
+ id:"drawer-4",
7
+ within_element: true,
8
+ placement: "bottom",
9
+ breakpoint: "md",
10
+ size: "full"
11
+ }) do %>
12
+ <%= pb_rails("nav", props: { display: {xl: "none", lg: "none", md: "none", sm: "block" } }) do %>
13
+ <%= pb_rails("nav/item", props: { text: "Photos", link: "#" }) %>
14
+ <%= pb_rails("nav/item", props: { text: "Music", link: "#" }) %>
15
+ <%= pb_rails("nav/item", props: { text: "Video", link: "#", active: true }) %>
16
+ <%= pb_rails("nav/item", props: { text: "Files", link: "#" }) %>
17
+ <% end %>
18
+ <%= pb_rails("nav", props: { display: {md: "block", sm: "none", xs: "none" }, orientation: "horizontal" }) do %>
19
+ <%= pb_rails("nav/item", props: { text: "About", link: "#" }) %>
20
+ <%= pb_rails("nav/item", props: { text: "Case Studies", link: "#", active: true }) %>
21
+ <%= pb_rails("nav/item", props: { text: "Service ", link: "#" }) %>
22
+ <%= pb_rails("nav/item", props: { text: "Contacts", link: "#" }) %>
23
+ <% end %>
24
+ <% end %>
@@ -8,8 +8,8 @@ const DrawerMenu = () => {
8
8
  const mediaQuery = window.matchMedia("(max-width: 600px)")
9
9
  setIsSmallScreen(mediaQuery.matches)
10
10
  const handler = (e) => setIsSmallScreen(e.matches)
11
- mediaQuery.addEventListener('change', handler)
12
- return () => mediaQuery.removeEventListener('change', handler)
11
+ mediaQuery.addEventListener("change", handler)
12
+ return () => mediaQuery.removeEventListener("change", handler)
13
13
  }, [])
14
14
 
15
15
  return (
@@ -22,17 +22,17 @@ const DrawerMenu = () => {
22
22
  />
23
23
  </Button>
24
24
  <Drawer
25
- breakpoint="md"
25
+ breakpoint='md'
26
26
  placement='bottom'
27
27
  size='full'
28
28
  triggerId='menuButton'
29
29
  withinElement
30
30
  >
31
- <Nav
31
+ <Nav
32
32
  highlight={false}
33
33
  link='#'
34
- orientation={isSmallScreen ? 'vertical' : 'horizontal'}
35
- padding={isSmallScreen ? 'none' : 'sm'}
34
+ orientation={isSmallScreen ? "vertical" : "horizontal"}
35
+ padding={isSmallScreen ? "none" : "sm"}
36
36
  >
37
37
  <NavItem link='#'
38
38
  text='About'
@@ -0,0 +1,21 @@
1
+ <%= pb_rails("flex") do %>
2
+ <%= pb_rails("button", props: { text: "No Overlay Drawer", margin_right: "sm", data: {"open-drawer": "drawer-10"} }) %>
3
+
4
+ <%= pb_rails("drawer", props: {
5
+ id:"drawer-10",
6
+ overlay: false
7
+ }) do %>
8
+ Test me (No Overlay)
9
+ <% end %>
10
+
11
+
12
+ <%= pb_rails("button", props: { text: "Overlay Drawer", data: {"open-drawer": "drawer-11"} }) %>
13
+
14
+ <%= pb_rails("drawer", props: {
15
+ id:"drawer-11",
16
+ placement: "right"
17
+ }) do %>
18
+ Test me (Has Overlay)
19
+ <% end %>
20
+ <% end %>
21
+
@@ -31,6 +31,7 @@ const DrawerSizes = () => {
31
31
  onClose={toggleNoOverlayDrawer}
32
32
  opened={openedNoOverlayDrawer}
33
33
  overlay={false}
34
+ placement='right'
34
35
  size='lg'
35
36
  >
36
37
  This is a Drawer with no overlay
@@ -0,0 +1 @@
1
+ Click the button to close the drawer when there is no overlay.
@@ -0,0 +1,49 @@
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
+
@@ -2,6 +2,11 @@ examples:
2
2
 
3
3
  rails:
4
4
  - drawer_default: Default
5
+ - drawer_behavior: Push Behavior
6
+ - drawer_menu: Within Element
7
+ - drawer_sizes: Sizes
8
+ - drawer_overlay: Overlay
9
+ - drawer_borders: Borders
5
10
 
6
11
 
7
12
  react:
@@ -10,4 +15,5 @@ examples:
10
15
  - drawer_menu: Within Element
11
16
  - drawer_sizes: Sizes
12
17
  - drawer_overlay: Overlay
18
+ - drawer_breakpoints: Breakpoints
13
19
  - drawer_borders: Borders
@@ -1,12 +1,20 @@
1
- <!-- Go to pb_content_tag definition in kit_base.rb for usage information. Commented out options are default (showing the default shape), and each can be deleted if not customizing that param. -->
2
- <!-- If using nonstandard params please un-comment out and replace with your custom params. -->
3
- <%= pb_content_tag(
4
- # :div,
5
- # aria: object.aria,
6
- # class: object.classname,
7
- # data: object.data,
8
- # id: object.id,
9
- # **combined_html_options
10
- ) do %>
11
- <span>DRAWER CONTENT</span>
12
- <% end %>
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 %>
@@ -2,7 +2,55 @@
2
2
 
3
3
  module Playbook
4
4
  module PbDrawer
5
- class Drawer < ::Playbook::KitBase
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
6
54
  end
7
55
  end
8
56
  end