playbook_ui 14.14.0.pre.alpha.revert4339revert4242play1633displaytitle6456 → 14.14.0.pre.rc.0

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 (175) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +0 -3
  4. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +5 -6
  5. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +1 -8
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_rails.md +1 -3
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_react.md +1 -1
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -2
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -2
  11. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.scss +66 -0
  12. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.tsx +98 -0
  13. data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.html.erb +28 -0
  14. data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.rb +42 -0
  15. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.html.erb +19 -0
  16. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.jsx +26 -0
  17. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.html.erb +10 -0
  18. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.jsx +17 -0
  19. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_on_click.jsx +19 -0
  20. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_onclick.html.erb +16 -0
  21. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.html.erb +35 -0
  22. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.jsx +42 -0
  23. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_tooltip.html.erb +13 -0
  24. data/app/pb_kits/playbook/pb_avatar_action_button/docs/example.yml +15 -0
  25. data/app/pb_kits/playbook/pb_avatar_action_button/docs/index.js +4 -0
  26. data/app/pb_kits/playbook/pb_avatar_action_button/pb_avatar_action_button.test.js +31 -0
  27. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
  28. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +0 -1
  29. data/app/pb_kits/playbook/pb_checkbox/_checkbox.tsx +8 -17
  30. data/app/pb_kits/playbook/pb_checkbox/checkbox.test.js +0 -16
  31. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +1 -2
  32. data/app/pb_kits/playbook/pb_checkbox/docs/index.js +0 -1
  33. data/app/pb_kits/playbook/pb_currency/_currency.tsx +31 -46
  34. data/app/pb_kits/playbook/pb_currency/currency.html.erb +8 -15
  35. data/app/pb_kits/playbook/pb_currency/currency.rb +2 -17
  36. data/app/pb_kits/playbook/pb_currency/docs/example.yml +0 -2
  37. data/app/pb_kits/playbook/pb_currency/docs/index.js +1 -2
  38. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +1 -3
  39. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.html.erb +2 -2
  40. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.md +1 -4
  41. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +0 -2
  42. data/app/pb_kits/playbook/pb_draggable/docs/index.js +1 -2
  43. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +4 -7
  44. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +3 -6
  45. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +8 -32
  46. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +1 -20
  47. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -5
  48. data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +12 -20
  49. data/app/pb_kits/playbook/pb_drawer/drawer.rb +1 -49
  50. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +0 -1
  51. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -2
  52. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_default.html.erb +2 -1
  53. data/app/pb_kits/playbook/pb_icon_button/docs/example.yml +3 -5
  54. data/app/pb_kits/playbook/pb_icon_button/icon_button.html.erb +1 -1
  55. data/app/pb_kits/playbook/pb_icon_button/icon_button.rb +0 -3
  56. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +6 -1
  57. data/app/pb_kits/playbook/pb_nav/item.html.erb +19 -7
  58. data/app/pb_kits/playbook/pb_nav/nav.html.erb +8 -3
  59. data/app/pb_kits/playbook/pb_online_status/online_status.html.erb +6 -1
  60. data/app/pb_kits/playbook/pb_overlay/_overlay.tsx +0 -4
  61. data/app/pb_kits/playbook/pb_overlay/docs/example.yml +0 -2
  62. data/app/pb_kits/playbook/pb_overlay/docs/index.js +0 -1
  63. data/app/pb_kits/playbook/pb_overlay/overlay.html.erb +3 -5
  64. data/app/pb_kits/playbook/pb_overlay/overlay.rb +0 -9
  65. data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +10 -48
  66. data/app/pb_kits/playbook/pb_popover/popover.html.erb +6 -1
  67. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +1 -6
  68. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.tsx +5 -7
  69. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +0 -1
  70. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +0 -7
  71. data/app/pb_kits/playbook/pb_progress_pills/docs/example.yml +0 -2
  72. data/app/pb_kits/playbook/pb_progress_pills/docs/index.js +0 -1
  73. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +7 -2
  74. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +0 -6
  75. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.test.js +1 -26
  76. data/app/pb_kits/playbook/pb_progress_simple/progress_simple.html.erb +5 -1
  77. data/app/pb_kits/playbook/pb_progress_step/progress_step.html.erb +5 -1
  78. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.html.erb +7 -3
  79. data/app/pb_kits/playbook/pb_radio/radio.html.erb +11 -6
  80. data/app/pb_kits/playbook/pb_select/select.rb +0 -8
  81. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +1 -1
  82. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -5
  83. data/app/pb_kits/playbook/pb_table/docs/index.js +1 -3
  84. data/app/pb_kits/playbook/pb_table/index.ts +9 -41
  85. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +0 -4
  86. data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +2 -29
  87. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +3 -31
  88. data/app/pb_kits/playbook/pb_table/table_body.html.erb +7 -13
  89. data/app/pb_kits/playbook/pb_table/table_body.rb +0 -2
  90. data/app/pb_kits/playbook/pb_table/table_row.html.erb +7 -14
  91. data/app/pb_kits/playbook/pb_table/table_row.rb +1 -14
  92. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.html.erb +0 -14
  93. data/app/pb_kits/playbook/pb_text_input/index.js +0 -9
  94. data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -5
  95. data/app/pb_kits/playbook/pb_title/_title.scss +0 -32
  96. data/app/pb_kits/playbook/pb_title/_title.tsx +1 -10
  97. data/app/pb_kits/playbook/pb_title/docs/_title_default.html.erb +2 -1
  98. data/app/pb_kits/playbook/pb_title/docs/_title_default.jsx +1 -1
  99. data/app/pb_kits/playbook/pb_title/docs/example.yml +0 -2
  100. data/app/pb_kits/playbook/pb_title/docs/index.js +0 -1
  101. data/app/pb_kits/playbook/pb_title/title.rb +1 -10
  102. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +3 -0
  103. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +0 -2
  104. data/app/pb_kits/playbook/pb_tooltip/index.js +2 -2
  105. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +2 -10
  106. data/dist/chunks/{_typeahead-_d2af7Id.js → _typeahead-btjo1UN5.js} +4 -4
  107. data/dist/chunks/_weekday_stacked-TIh9nTmZ.js +45 -0
  108. data/dist/chunks/{lib-Fr78pbpF.js → lib-DjpLC8uO.js} +2 -2
  109. data/dist/chunks/{pb_form_validation-CN51bfsD.js → pb_form_validation-S56UaHZl.js} +1 -1
  110. data/dist/chunks/vendor.js +1 -1
  111. data/dist/menu.yml +10 -3
  112. data/dist/playbook-doc.js +1 -1
  113. data/dist/playbook-rails-react-bindings.js +1 -1
  114. data/dist/playbook-rails.js +1 -1
  115. data/dist/playbook.css +1 -1
  116. data/lib/playbook/forms/builder.rb +0 -1
  117. data/lib/playbook/version.rb +2 -2
  118. metadata +23 -62
  119. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_custom_cell.jsx +0 -75
  120. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb +0 -33
  121. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +0 -3
  122. data/app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss +0 -58
  123. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  124. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  125. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.jsx +0 -69
  126. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.md +0 -1
  127. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display.html.erb +0 -22
  128. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display.jsx +0 -34
  129. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display_rails.md +0 -1
  130. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display_react.md +0 -1
  131. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx +0 -90
  132. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +0 -5
  133. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +0 -8
  134. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +0 -33
  135. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -0
  136. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +0 -24
  137. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +0 -21
  138. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +0 -1
  139. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +0 -49
  140. data/app/pb_kits/playbook/pb_drawer/index.js +0 -257
  141. data/app/pb_kits/playbook/pb_icon_button/_icon_button.tsx +0 -71
  142. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_default.jsx +0 -17
  143. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_sizes.html.erb +0 -27
  144. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_sizes.jsx +0 -61
  145. data/app/pb_kits/playbook/pb_icon_button/docs/index.js +0 -2
  146. data/app/pb_kits/playbook/pb_icon_button/icon_button.test.jsx +0 -39
  147. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.html.erb +0 -11
  148. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +0 -37
  149. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.md +0 -1
  150. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional_react.md +0 -1
  151. data/app/pb_kits/playbook/pb_overlay/index.js +0 -61
  152. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.md +0 -1
  153. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.html.erb +0 -1
  154. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.jsx +0 -18
  155. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_rails.md +0 -1
  156. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_react.md +0 -1
  157. data/app/pb_kits/playbook/pb_select/index.js +0 -38
  158. data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.html.erb +0 -47
  159. data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.jsx +0 -88
  160. data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.md +0 -1
  161. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb +0 -51
  162. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md +0 -2
  163. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +0 -96
  164. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.jsx +0 -101
  165. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.md +0 -1
  166. data/app/pb_kits/playbook/pb_title/docs/_title_display_size.html.erb +0 -7
  167. data/app/pb_kits/playbook/pb_title/docs/_title_display_size.jsx +0 -54
  168. data/app/pb_kits/playbook/pb_title/docs/_title_display_size.md +0 -1
  169. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay_rails.html.erb +0 -39
  170. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay_rails.md +0 -3
  171. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_interaction.html.erb +0 -26
  172. data/app/pb_kits/playbook/pb_tooltip/floating_ui.js +0 -282
  173. data/dist/chunks/_weekday_stacked-BZe1DgW-.js +0 -45
  174. data/lib/playbook/forms/builder/time_zone_select_field.rb +0 -19
  175. /data/app/pb_kits/playbook/pb_table/docs/{_table_with_collapsible_with_custom_click_react.md → _table_with_collapsible_with_custom_click.md} +0 -0
@@ -1,90 +0,0 @@
1
- import React, { useState } from "react";
2
- import { Flex, Table, Body, Avatar, DraggableProvider } from "playbook-ui";
3
-
4
- // Initial items to be dragged
5
- const data = [
6
- {
7
- id: "1",
8
- task: "Task 1",
9
- assignee_name: "Terry Miles",
10
- assignee_img: "https://randomuser.me/api/portraits/men/44.jpg",
11
- },
12
- {
13
- id: "2",
14
- task: "Task 2",
15
- assignee_name: "Sophia Miles",
16
- assignee_img: "https://randomuser.me/api/portraits/women/8.jpg",
17
- },
18
- {
19
- id: "3",
20
- task: "Task 3",
21
- assignee_name: "Alice Jones",
22
- assignee_img: "https://randomuser.me/api/portraits/women/10.jpg",
23
- },
24
- {
25
- id: "4",
26
- task: "Task 4",
27
- assignee_name: "Mike James",
28
- assignee_img: "https://randomuser.me/api/portraits/men/8.jpg",
29
- },
30
- {
31
- id: "5",
32
- task: "Task 5",
33
- assignee_name: "James Guy",
34
- assignee_img: "https://randomuser.me/api/portraits/men/18.jpg",
35
- }
36
- ];
37
-
38
- const DraggableWithTableReact = (props) => {
39
- const [initialState, setInitialState] = useState(data);
40
-
41
- return (
42
- <>
43
- <DraggableProvider initialItems={data}
44
- onReorder={(items) => setInitialState(items)}
45
- >
46
- <Table
47
- responsive="none"
48
- size="sm"
49
- {...props}
50
- >
51
- <Table.Head>
52
- <Table.Row>
53
- <Table.Header>{"id"}</Table.Header>
54
- <Table.Header>{"name"}</Table.Header>
55
- <Table.Header>{"task number"}</Table.Header>
56
- </Table.Row>
57
- </Table.Head>
58
- <Table.Body draggableContainer>
59
- {initialState.map(({ id, task, assignee_name, assignee_img }) => (
60
- <Table.Row
61
- dragId={id}
62
- draggableItem
63
- key={id}
64
- >
65
- <Table.Cell>{id}</Table.Cell>
66
- <Table.Cell>
67
- <Flex align="center">
68
- <Avatar
69
- imageUrl={assignee_img}
70
- size="xs"
71
- />
72
- <Body
73
- paddingLeft="xxs"
74
- text={assignee_name}
75
- {...props}
76
- />
77
- </Flex>
78
- </Table.Cell>
79
- <Table.Cell>{task}</Table.Cell>
80
- </Table.Row>
81
- ))}
82
- </Table.Body>
83
- </Table>
84
- </DraggableProvider>
85
- </>
86
-
87
- );
88
- };
89
-
90
- export default DraggableWithTableReact;
@@ -1,5 +0,0 @@
1
- The draggable kit can also be used in conjunction with the table kit to create draggable table rows. To do this:
2
-
3
- - Wrap the Table with the `DraggableProvider` and manage state as shown.
4
- - use the `draggableContainer` prop on the Table.Body to designate it as the Draggable Container
5
- - use the `draggableItem` prop on the Table.Row to designate it as the Draggable Item. Make sure to also pass id to the `dragId` prop here.
@@ -1,8 +0,0 @@
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 %>
@@ -1,33 +0,0 @@
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
-
@@ -1,24 +0,0 @@
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 %>
@@ -1,21 +0,0 @@
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
-
@@ -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,257 +0,0 @@
1
- import PbEnhancedElement from "../pb_enhanced_element"
2
-
3
- export default class PbDrawer extends PbEnhancedElement {
4
- static get selector() {
5
- return ".pb_drawer_wrapper"
6
- }
7
-
8
- connect() {
9
- this.handleToggleClick = this.handleToggleClick.bind(this)
10
- this.handleOutsideClick = this.handleOutsideClick.bind(this)
11
- this.handleResize = this.handleResize.bind(this)
12
-
13
- this._toggleTriggers = Array.from(document.querySelectorAll("[data-open-drawer]"))
14
- this._toggleTriggers.forEach(el => {
15
- el.addEventListener("click", this.handleToggleClick)
16
- })
17
-
18
- this._wrappers = Array.from(document.querySelectorAll(".pb_drawer_wrapper"))
19
- this._wrappers.forEach(el => {
20
- el.addEventListener("mousedown", this.handleOutsideClick)
21
- })
22
-
23
- this._withinElementDrawers = Array.from(
24
- document.querySelectorAll(".pb_drawer_within_element_rails[data-breakpoint]")
25
- )
26
-
27
- window.addEventListener("resize", this.handleResize)
28
- this.handleResize()
29
- }
30
-
31
- disconnect() {
32
- this._toggleTriggers.forEach(el => {
33
- el.removeEventListener("click", this.handleToggleClick)
34
- })
35
- this._wrappers.forEach(el => {
36
- el.removeEventListener("mousedown", this.handleOutsideClick)
37
- })
38
- window.removeEventListener("resize", this.handleResize)
39
- }
40
-
41
- getOverlay(wrapper) {
42
- if (wrapper.id && wrapper.id.startsWith("drawer-wrapper-")) {
43
- const overlayId = wrapper.id.replace("drawer-wrapper-", "drawer-overlay-")
44
- return document.getElementById(overlayId)
45
- }
46
- return wrapper.querySelector(".pb_drawer_overlay") || wrapper.querySelector(".pb_drawer_no_overlay")
47
- }
48
-
49
- handleToggleClick(event) {
50
- const trigger = event.currentTarget
51
- const drawerId = trigger.dataset.openDrawer
52
- const dialog = document.getElementById(drawerId)
53
- if (!dialog) return
54
-
55
- if (dialog.classList.contains("pb_drawer_within_element_rails")) {
56
- if (dialog.classList.contains("open")) {
57
- this.closeWithinElementDrawer(dialog)
58
- dialog.dataset.manualOpen = "false"
59
- } else {
60
- this.openWithinElementDrawer(dialog)
61
- dialog.dataset.manualOpen = "true"
62
- }
63
- return
64
- }
65
-
66
- const wrapperId = `drawer-wrapper-${drawerId}`
67
- const wrapper = document.getElementById(wrapperId)
68
- if (!wrapper) return
69
-
70
- if (wrapper !== this.element) return
71
-
72
- if (wrapper.classList.contains("open")) {
73
- this.closeDrawer(wrapper, dialog)
74
- wrapper.dataset.manualOpen = "false"
75
- } else {
76
- this.openDrawer(wrapper, dialog)
77
- wrapper.dataset.manualOpen = "true"
78
- }
79
- }
80
-
81
- openWithinElementDrawer(dialog) {
82
- if (dialog.classList.contains("open")) return
83
- dialog.style.maxHeight = "0px"
84
- dialog.offsetHeight
85
- dialog.classList.add("open")
86
- // Get trigger's height and add it to the final height
87
- const trigger = document.querySelector(`[data-open-drawer="${dialog.id}"]`)
88
- const triggerHeight = trigger ? trigger.offsetHeight : 0
89
- const finalHeight = (dialog.scrollHeight + triggerHeight) + "px"
90
- dialog.style.maxHeight = finalHeight
91
- dialog.addEventListener("transitionend", function handleOpenEnd(e) {
92
- if (e.propertyName === "max-height") {
93
- dialog.style.maxHeight = "none"
94
- dialog.removeEventListener("transitionend", handleOpenEnd)
95
- }
96
- })
97
- }
98
-
99
- closeWithinElementDrawer(dialog) {
100
- if (!dialog.classList.contains("open")) return
101
- const currentHeight = dialog.scrollHeight
102
- dialog.style.maxHeight = currentHeight + "px"
103
- dialog.offsetHeight
104
- dialog.classList.remove("open")
105
- dialog.style.maxHeight = "0px"
106
- dialog.addEventListener("transitionend", function handleCloseEnd(e) {
107
- if (e.propertyName === "max-height") {
108
- dialog.removeEventListener("transitionend", handleCloseEnd)
109
- dialog.style.maxHeight = "0px"
110
- }
111
- })
112
- }
113
-
114
- openDrawer(wrapper, dialog) {
115
- const behavior = wrapper.dataset.behavior
116
- const size = wrapper.dataset.size
117
- const placement = wrapper.dataset.placement
118
- this.handlePushOpen(behavior, size, placement)
119
-
120
- wrapper.style.display = ""
121
- const overlay = this.getOverlay(wrapper)
122
- if (overlay) overlay.style.display = ""
123
-
124
- wrapper.classList.add("open")
125
- dialog.classList.add("open")
126
- }
127
-
128
- closeDrawer(wrapper, dialog) {
129
- const behavior = wrapper.dataset.behavior
130
- this.handlePushClose(behavior)
131
-
132
- if (wrapper.className.includes("open")) wrapper.style.display = "none"
133
- const overlay = this.getOverlay(wrapper)
134
- if (overlay && wrapper.className.includes("open")) overlay.style.display = "none"
135
-
136
- wrapper.classList.remove("open")
137
- dialog.classList.remove("open")
138
- }
139
-
140
- handleOutsideClick(event) {
141
- const wrapper = event.currentTarget
142
- const dialog = wrapper.querySelector(".pb_drawer")
143
- const overlay = this.getOverlay(wrapper)
144
-
145
- if (dialog && dialog.classList.contains("pb_drawer_within_element_rails")) {
146
- return
147
- }
148
-
149
- if (wrapper.dataset.overlayClick === "overlay_close" && event.target === overlay) {
150
- this.closeDrawer(wrapper, dialog)
151
- event.stopPropagation()
152
- return
153
- }
154
-
155
- const dialogRect = dialog.getBoundingClientRect()
156
- const clickedOutside =
157
- event.clientX < dialogRect.left ||
158
- event.clientX > dialogRect.right ||
159
- event.clientY < dialogRect.top ||
160
- event.clientY > dialogRect.bottom
161
-
162
- if (clickedOutside) {
163
- this.closeDrawer(wrapper, dialog)
164
- event.stopPropagation()
165
- }
166
- }
167
-
168
- handleResize() {
169
- const breakpointValues = {
170
- none: 0,
171
- xs: 575,
172
- sm: 768,
173
- md: 992,
174
- lg: 1200,
175
- xl: 1400,
176
- }
177
-
178
- // Process wrappers
179
- this._wrappers.forEach(wrapper => {
180
- const bp = wrapper.dataset.breakpoint || "none"
181
- if (bp === "none") return
182
-
183
- const threshold = breakpointValues[bp] || 0
184
- const dialog = wrapper.querySelector(".pb_drawer")
185
- const trigger = dialog ? document.querySelector(`[data-open-drawer="${dialog.id}"]`) : null
186
-
187
- if (window.innerWidth >= threshold) {
188
- if (!wrapper.classList.contains("open")) {
189
- this.openDrawer(wrapper, dialog)
190
- }
191
- if (trigger) trigger.style.display = "none"
192
- } else {
193
- if (trigger) trigger.style.display = ""
194
- if (wrapper.classList.contains("open") && wrapper.dataset.manualOpen !== "true") {
195
- this.closeDrawer(wrapper, dialog)
196
- }
197
- }
198
- })
199
-
200
- // Process within element drawers
201
- this._withinElementDrawers.forEach(drawer => {
202
- const bp = drawer.dataset.breakpoint || "none"
203
- if (bp === "none") return
204
-
205
- const threshold = breakpointValues[bp] || 0
206
- const trigger = document.querySelector(`[data-open-drawer="${drawer.id}"]`)
207
-
208
- if (window.innerWidth >= threshold) {
209
- if (!drawer.classList.contains("open")) {
210
- this.openWithinElementDrawer(drawer)
211
- }
212
- if (trigger) trigger.style.display = "none"
213
- } else {
214
- if (trigger) trigger.style.display = ""
215
- if (drawer.classList.contains("open") && drawer.dataset.manualOpen !== "true") {
216
- this.closeWithinElementDrawer(drawer)
217
- }
218
- }
219
- })
220
- }
221
-
222
- handlePushOpen(behavior, size, placement) {
223
- if (behavior !== "push") return
224
-
225
- const sizeMap = {
226
- xl: "365px",
227
- lg: "300px",
228
- md: "250px",
229
- sm: "200px",
230
- xs: "64px",
231
- full: "100%",
232
- }
233
-
234
- const body = document.querySelector("body")
235
- if (!body) return
236
-
237
- if (placement === "left") {
238
- body.style.cssText = `margin-left: ${sizeMap[size]} !important; margin-right: '' !important;`
239
- } else if (placement === "right") {
240
- body.style.cssText = `margin-right: ${sizeMap[size]} !important; margin-left: '' !important;`
241
- }
242
- body.classList.add("PBDrawer__Body--open")
243
- }
244
-
245
- handlePushClose(behavior) {
246
- if (behavior !== "push") return
247
-
248
- const body = document.querySelector("body")
249
- if (!body) return
250
-
251
- if (body.classList.contains("PBDrawer__Body--open")) {
252
- body.classList.add("PBDrawer__Body--close")
253
- }
254
- body.style.cssText = ""
255
- body.classList.remove("PBDrawer__Body--open")
256
- }
257
- }
@@ -1,71 +0,0 @@
1
-
2
- import React from 'react'
3
- import classnames from 'classnames'
4
- import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
5
- import { globalProps } from '../utilities/globalProps'
6
-
7
- import Button from '../pb_button/_button'
8
- import Icon from '../pb_icon/_icon'
9
- import { IconSizes } from "../pb_icon/_icon"
10
-
11
- type IconButtonProps = {
12
- aria?: { [key: string]: string },
13
- className?: string,
14
- data?: { [key: string]: string },
15
- htmlType?: 'submit' | 'reset' | 'button' | undefined,
16
- icon?: string,
17
- id?: string,
18
- link?: string,
19
- newWindow?: boolean,
20
- size?: IconSizes,
21
- target?: string,
22
- variant?: 'default' | 'link',
23
- }
24
-
25
- const IconButton = (props: IconButtonProps) => {
26
- const {
27
- aria = {},
28
- className,
29
- data = {},
30
- htmlType = 'button',
31
- icon = 'bars',
32
- id,
33
- link,
34
- newWindow = false,
35
- size = "2x",
36
- target,
37
- variant = "default",
38
- } = props
39
-
40
- const ariaProps = buildAriaProps(aria)
41
- const dataProps = buildDataProps(data)
42
- const classes = classnames(buildCss('pb_icon_button_kit', variant), globalProps(props), className)
43
-
44
- return (
45
- <div
46
- {...ariaProps}
47
- {...dataProps}
48
- className={classes}
49
- id={id}
50
- >
51
- <Button
52
- borderRadius="lg"
53
- htmlType={htmlType}
54
- link={link}
55
- newWindow={newWindow}
56
- target={target}
57
- >
58
- <Icon
59
- className="icon_button_icon"
60
- fixedWidth
61
- icon={icon}
62
- paddingX="xxs"
63
- paddingY="xs"
64
- size={size}
65
- />
66
- </Button>
67
- </div>
68
- )
69
- }
70
-
71
- export default IconButton
@@ -1,17 +0,0 @@
1
- import React from 'react'
2
- import { IconButton } from 'playbook-ui'
3
-
4
- const IconButtonDefault = (props) => (
5
- <div>
6
- <IconButton
7
- {...props}
8
- />
9
- <IconButton
10
- {...props}
11
- marginTop="md"
12
- variant="link"
13
- />
14
- </div>
15
- )
16
-
17
- export default IconButtonDefault
@@ -1,27 +0,0 @@
1
- <%= pb_rails("flex", props: { align: "center"}) do %>
2
- <%= pb_rails("icon_button", props: {size: "lg"}) %> <span>Large</span>
3
- <% end %>
4
-
5
- <%= pb_rails("flex", props: { align: "center" }) do %>
6
- <%= pb_rails("icon_button", props: {size: "sm"}) %> <span>Small</span>
7
- <% end %>
8
-
9
- <%= pb_rails("flex", props: { align: "center" }) do %>
10
- <%= pb_rails("icon_button", props: {size: "xs"}) %> <span>XSmall</span>
11
- <% end %>
12
-
13
- <%= pb_rails("flex", props: { align: "center", margin_top: "md" }) do %>
14
- <%= pb_rails("icon_button", props: {size: "1x"}) %> <span>1x</span>
15
- <% end %>
16
-
17
- <%= pb_rails("flex", props: { align: "center" }) do %>
18
- <%= pb_rails("icon_button", props: {size: "2x"}) %> <span>2x</span>
19
- <% end %>
20
-
21
- <%= pb_rails("flex", props: { align: "center" }) do %>
22
- <%= pb_rails("icon_button", props: {size: "3x"}) %> <span>3x</span>
23
- <% end %>
24
-
25
- <%= pb_rails("flex", props: { align: "center" }) do %>
26
- <%= pb_rails("icon_button", props: {size: "4x"}) %> <span>4x</span>
27
- <% end %>
@@ -1,61 +0,0 @@
1
- import React from 'react'
2
- import { IconButton, Flex } from 'playbook-ui'
3
-
4
- const IconButtonSizes = (props) => (
5
- <div>
6
- <Flex align="center">
7
- <IconButton
8
- {...props}
9
- size="lg"
10
- />
11
- <span>Large</span>
12
- </Flex>
13
- <Flex align="center">
14
- <IconButton
15
- {...props}
16
- size="sm"
17
- />
18
- <span>Small</span>
19
- </Flex>
20
- <Flex align="center">
21
- <IconButton
22
- {...props}
23
- size="xs"
24
- />
25
- <span>XSmall</span>
26
- </Flex>
27
- <Flex
28
- align="center"
29
- marginTop="md"
30
- >
31
- <IconButton
32
- {...props}
33
- size="1x"
34
- />
35
- <span>1x</span>
36
- </Flex>
37
- <Flex align="center">
38
- <IconButton
39
- {...props}
40
- size="2x"
41
- />
42
- <span>2x</span>
43
- </Flex>
44
- <Flex align="center">
45
- <IconButton
46
- {...props}
47
- size="3x"
48
- />
49
- <span>3x</span>
50
- </Flex>
51
- <Flex align="center">
52
- <IconButton
53
- {...props}
54
- size="4x"
55
- />
56
- <span>4x</span>
57
- </Flex>
58
- </div>
59
- )
60
-
61
- export default IconButtonSizes
@@ -1,2 +0,0 @@
1
- export { default as IconButtonDefault } from './_icon_button_default.jsx'
2
- export { default as IconButtonSizes } from './_icon_button_sizes.jsx'