playbook_ui_docs 15.4.0.pre.rc.4 → 15.5.0.pre.alpha.PLAY2503datepickerdefaultdateoutsideminmaxrange12814

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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.jsx +2 -1
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers.jsx +1 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.jsx +3 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_infinite_scroll.jsx +1 -1
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_editing.jsx +3 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.jsx +2 -1
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
  9. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +1 -1
  10. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +0 -1
  11. data/app/pb_kits/playbook/pb_background/docs/_background_light.md +1 -0
  12. data/app/pb_kits/playbook/pb_background/docs/example.yml +2 -2
  13. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_button_variant.html.erb +9 -0
  14. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_button_variant.jsx +24 -0
  15. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_button_variant_rails.md +1 -0
  16. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_button_variant_react.md +1 -0
  17. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.html.erb +2 -2
  18. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.jsx +1 -2
  19. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.html.erb +2 -2
  20. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.jsx +2 -0
  21. data/app/pb_kits/playbook/pb_copy_button/docs/example.yml +2 -0
  22. data/app/pb_kits/playbook/pb_copy_button/docs/index.js +1 -0
  23. data/app/pb_kits/playbook/pb_currency/docs/_currency_abbreviated.md +1 -0
  24. data/app/pb_kits/playbook/pb_currency/docs/_currency_matching_decimals_rails.md +1 -0
  25. data/app/pb_kits/playbook/pb_currency/docs/_currency_matching_decimals_react.md +1 -0
  26. data/app/pb_kits/playbook/pb_currency/docs/_currency_negative.html.erb +10 -0
  27. data/app/pb_kits/playbook/pb_currency/docs/_currency_negative.jsx +10 -0
  28. data/app/pb_kits/playbook/pb_currency/docs/_currency_negative.md +1 -0
  29. data/app/pb_kits/playbook/pb_currency/docs/_currency_no_symbol_rails.md +1 -0
  30. data/app/pb_kits/playbook/pb_currency/docs/_currency_no_symbol_react.md +1 -0
  31. data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.html.erb +7 -0
  32. data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.jsx +7 -0
  33. data/app/pb_kits/playbook/pb_currency/docs/_description.md +2 -2
  34. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.html.erb +18 -0
  35. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_show_current_year.html.erb +4 -0
  36. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_show_current_year.jsx +43 -0
  37. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_show_current_year.md +1 -0
  38. data/app/pb_kits/playbook/pb_date_range_inline/docs/_description.md +1 -1
  39. data/app/pb_kits/playbook/pb_date_range_inline/docs/example.yml +3 -2
  40. data/app/pb_kits/playbook/pb_date_range_inline/docs/index.js +1 -0
  41. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_current_year.html.erb +12 -0
  42. data/app/pb_kits/playbook/pb_date_stacked/docs/{_date_stacked_not_current_year.jsx → _date_stacked_current_year.jsx} +6 -5
  43. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_current_year.md +1 -0
  44. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.html.erb +1 -1
  45. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.jsx +1 -1
  46. data/app/pb_kits/playbook/pb_date_stacked/docs/_description.md +1 -1
  47. data/app/pb_kits/playbook/pb_date_stacked/docs/example.yml +2 -2
  48. data/app/pb_kits/playbook/pb_date_stacked/docs/index.js +1 -1
  49. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_show_current_year.html.erb +4 -0
  50. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_show_current_year.jsx +14 -0
  51. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_show_current_year_rails.md +1 -0
  52. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_show_current_year_react.md +1 -0
  53. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +3 -1
  54. data/app/pb_kits/playbook/pb_date_time/docs/index.js +1 -0
  55. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_show_current_year.html.erb +4 -0
  56. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_show_current_year.jsx +22 -0
  57. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_show_current_year.md +1 -0
  58. data/app/pb_kits/playbook/pb_date_time_stacked/docs/example.yml +3 -1
  59. data/app/pb_kits/playbook/pb_date_time_stacked/docs/index.js +1 -0
  60. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.html.erb +33 -2
  61. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_dropzone.jsx +180 -0
  62. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_dropzone.md +22 -0
  63. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +3 -2
  64. data/app/pb_kits/playbook/pb_draggable/docs/index.js +2 -1
  65. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_alignment.jsx +2 -1
  66. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_default.jsx +2 -1
  67. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_orientation.jsx +2 -1
  68. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_size.jsx +2 -1
  69. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_example.jsx +1 -0
  70. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +8 -1
  71. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +11 -1
  72. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_wrapped.jsx +4 -1
  73. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.html.erb +1 -1
  74. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.jsx +1 -1
  75. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.jsx +42 -0
  76. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.md +1 -0
  77. data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +1 -0
  78. data/app/pb_kits/playbook/pb_multiple_users/docs/index.js +1 -0
  79. data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_disabled.html.erb +21 -0
  80. data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_disabled.jsx +113 -0
  81. data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_disabled.md +1 -0
  82. data/app/pb_kits/playbook/pb_nav/docs/_vertical_nav_disabled.html.erb +30 -0
  83. data/app/pb_kits/playbook/pb_nav/docs/_vertical_nav_disabled.jsx +117 -0
  84. data/app/pb_kits/playbook/pb_nav/docs/_vertical_nav_disabled.md +1 -0
  85. data/app/pb_kits/playbook/pb_nav/docs/example.yml +4 -0
  86. data/app/pb_kits/playbook/pb_nav/docs/index.js +3 -1
  87. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_description.md +3 -1
  88. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.jsx +1 -1
  89. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.jsx +1 -1
  90. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.md +1 -0
  91. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.jsx +1 -1
  92. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.jsx +1 -1
  93. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.jsx +1 -1
  94. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_non_clickable.jsx +1 -2
  95. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.html.erb +1 -1
  96. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.jsx +1 -1
  97. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.md +11 -0
  98. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.jsx +1 -1
  99. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.jsx +1 -1
  100. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.jsx +1 -2
  101. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.jsx +1 -2
  102. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_description.md +3 -1
  103. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.jsx +2 -1
  104. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.jsx +2 -1
  105. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.jsx +1 -1
  106. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.md +2 -1
  107. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.jsx +2 -1
  108. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.jsx +1 -1
  109. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.jsx +1 -1
  110. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.jsx +1 -1
  111. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.md +1 -0
  112. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.jsx +1 -1
  113. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_live_data.jsx +2 -1
  114. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.jsx +1 -1
  115. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.jsx +1 -1
  116. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_description.md +3 -1
  117. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_color.jsx +1 -1
  118. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_color.md +2 -2
  119. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_complex.jsx +2 -1
  120. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_default.md +1 -0
  121. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_full_circle.jsx +2 -1
  122. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_height.jsx +2 -1
  123. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_min_max.jsx +2 -1
  124. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_units.jsx +2 -1
  125. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_description.md +3 -1
  126. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_colors.jsx +1 -1
  127. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_default.md +1 -0
  128. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend_position.html.erb +1 -1
  129. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.html.erb +34 -4
  130. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.jsx +16 -7
  131. data/app/pb_kits/playbook/pb_popover/docs/_popover_append_to.jsx +4 -1
  132. data/app/pb_kits/playbook/pb_progress_step/docs/_description.md +1 -5
  133. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_color.html.erb +14 -0
  134. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_color.jsx +29 -0
  135. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_color.md +3 -0
  136. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.jsx +31 -0
  137. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.md +1 -0
  138. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.html.erb +4 -1
  139. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.jsx +14 -3
  140. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.md +3 -0
  141. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker.md +3 -0
  142. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.html.erb +1 -7
  143. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.md +1 -0
  144. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +3 -0
  145. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +2 -0
  146. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +3 -1
  147. data/app/pb_kits/playbook/pb_select/docs/_select_react_hook.jsx +3 -1
  148. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_sizing.jsx +4 -1
  149. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.html.erb +30 -0
  150. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.jsx +37 -0
  151. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.md +3 -0
  152. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_react_hook.jsx +2 -1
  153. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +2 -0
  154. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +2 -1
  155. data/app/pb_kits/playbook/pb_user/docs/_user_font_options.jsx +1 -1
  156. metadata +52 -5
  157. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_not_current_year.html.erb +0 -5
  158. data/dist/playbook-doc.js +0 -19
@@ -1,7 +1,28 @@
1
+ <%
2
+ options = [
3
+ {
4
+ label: "United States",
5
+ value: "unitedStates",
6
+ id: "us"
7
+ },
8
+ {
9
+ label: "United Kingdom",
10
+ value: "unitedKingdom",
11
+ id: "gb"
12
+ },
13
+ {
14
+ label: "Pakistan",
15
+ value: "pakistan",
16
+ id: "pk"
17
+ }
18
+ ]
19
+ %>
20
+
21
+
1
22
  <%= pb_rails("button", props: { text: "Open Complex Dialog", data:{"open-dialog": "dialog-complex"} }) %>
2
23
 
3
24
  <%= pb_rails("dialog", props: { id:"dialog-complex", size: "lg", full_height: true }) do %>
4
- <form>
25
+ <%= pb_form_with(scope: :example, method: :get, url: "", options: { remote: true }) do |form| %>
5
26
  <%= pb_rails("dialog/dialog_header", props: { id: "dialog-complex" } ) do %>
6
27
  <%= pb_rails("body", props: { text: "What do you need us to take care of?" }) %>
7
28
  <% end %>
@@ -10,8 +31,18 @@
10
31
  <%= pb_rails("rich_text_editor", props: {id: "default", value: "Add your text here"}) %>
11
32
  <%= pb_rails("caption", props: { text: "Type in a word or term too help find tickets later. ex. training, phone setup, hr", margin_bottom: "xs", margin_top: "sm" }) %>
12
33
  <%= pb_rails("typeahead", props: { placeholder: "Tags.."}) %>
34
+ <%= pb_rails("dropdown", props: {options: options, autocomplete: true}) %>
35
+ <%= pb_rails("typeahead", props: {
36
+ id: "typeahead-default",
37
+ placeholder: "Select one...",
38
+ options: options,
39
+ name: :foo,
40
+ margin_top: "sm",
41
+ is_multi: false
42
+ })
43
+ %>
13
44
 
14
45
  <% end %>
15
46
  <%= pb_rails("dialog/dialog_footer", props: {cancel_button: "Back", confirm_button: "Send my Issue", confirm_button_id:"confirm-complex", id: "dialog-complex"}) %>
16
- </form>
47
+ <% end %>
17
48
  <% end %>
@@ -0,0 +1,180 @@
1
+ import React, { useState } from "react";
2
+
3
+ import Flex from '../../pb_flex/_flex'
4
+ import Draggable from '../../pb_draggable/_draggable'
5
+ import { DraggableProvider } from '../../pb_draggable/context'
6
+ import Badge from '../../pb_badge/_badge'
7
+ import Title from '../../pb_title/_title'
8
+ import Caption from '../../pb_caption/_caption'
9
+ import Card from '../../pb_card/_card'
10
+ import FlexItem from '../../pb_flex/_flex_item'
11
+ import Avatar from '../../pb_avatar/_avatar'
12
+ import Body from '../../pb_body/_body'
13
+
14
+ // Initial groups to drag between
15
+ const containers = ["To Do", "In Progress", "Done"];
16
+
17
+ // Initial items to be dragged
18
+ const data = [
19
+ {
20
+ id: "11",
21
+ container: "To Do",
22
+ title: "Task 1",
23
+ description: "Bug fixes",
24
+ assignee_name: "Terry Miles",
25
+ assignee_img: "https://randomuser.me/api/portraits/men/44.jpg",
26
+ },
27
+ {
28
+ id: "12",
29
+ container: "To Do",
30
+ title: "Task 2",
31
+ description: "Documentation",
32
+ assignee_name: "Sophia Miles",
33
+ assignee_img: "https://randomuser.me/api/portraits/women/8.jpg",
34
+ },
35
+ {
36
+ id: "13",
37
+ container: "In Progress",
38
+ title: "Task 3",
39
+ description: "Add a variant",
40
+ assignee_name: "Alice Jones",
41
+ assignee_img: "https://randomuser.me/api/portraits/women/10.jpg",
42
+ },
43
+ {
44
+ id: "14",
45
+ container: "To Do",
46
+ title: "Task 4",
47
+ description: "Add jest tests",
48
+ assignee_name: "Mike James",
49
+ assignee_img: "https://randomuser.me/api/portraits/men/8.jpg",
50
+ },
51
+ {
52
+ id: "15",
53
+ container: "Done",
54
+ title: "Task 5",
55
+ description: "Alpha testing",
56
+ assignee_name: "James Guy",
57
+ assignee_img: "https://randomuser.me/api/portraits/men/18.jpg",
58
+ },
59
+ {
60
+ id: "16",
61
+ container: "In Progress",
62
+ title: "Task 6",
63
+ description: "Release",
64
+ assignee_name: "Sally Jones",
65
+ assignee_img: "https://randomuser.me/api/portraits/women/28.jpg",
66
+ },
67
+ ];
68
+
69
+ const DraggableMultipleContainersDropzone = (props) => {
70
+ const [initialState, setInitialState] = useState(data);
71
+
72
+ const badgeProperties = (container) => {
73
+ switch (container) {
74
+ case "To Do":
75
+ return { text: "queue", color: "warning" };
76
+ case "In Progress":
77
+ return { text: "progress", color: "primary" };
78
+ default:
79
+ return { text: "done", color: "success" };
80
+ }
81
+ };
82
+
83
+ return (
84
+ <DraggableProvider
85
+ dropZone={{type: "outline"}}
86
+ enableCrossContainerPreview
87
+ initialItems={data}
88
+ onDragEnd={(draggedItemId, finalContainer, originalContainer, itemAbove, itemBelow) => {
89
+ console.log(`Dragged Item ID: ${draggedItemId}`);
90
+ console.log(`Final Container: ${finalContainer}`);
91
+ console.log(`Original Container: ${originalContainer}`);
92
+ console.log('Item Above:', itemAbove);
93
+ console.log('Item Below:', itemBelow);
94
+ }}
95
+ onDrop={(draggedItemId, droppedContainer, originalContainer, item, itemAbove, itemBelow) => {
96
+ console.log(`Dragged Item ID: ${draggedItemId}`);
97
+ console.log(`Dropped Container: ${droppedContainer}`);
98
+ console.log(`Original Container: ${originalContainer}`);
99
+ console.log('Dropped Item:', item);
100
+ console.log('Item Above:', itemAbove);
101
+ console.log('Item Below:', itemBelow);
102
+ }}
103
+ onReorder={(items) => setInitialState(items)}
104
+ >
105
+ <Flex
106
+ justifyContent="center"
107
+ {...props}
108
+ >
109
+ {containers?.map((container) => (
110
+ <Draggable.Container
111
+ container={container}
112
+ htmlOptions={{style:{ width: "200px", height: "70vh"}}}
113
+ key={container}
114
+ padding="sm"
115
+ >
116
+ <Caption textAlign="center">{container}</Caption>
117
+ <Flex
118
+ alignItems="stretch"
119
+ gap="sm"
120
+ orientation="column"
121
+ >
122
+ {initialState
123
+ .filter((item) => item.container === container)
124
+ .map(
125
+ ({
126
+ assignee_img,
127
+ assignee_name,
128
+ description,
129
+ id,
130
+ title,
131
+ }) => (
132
+ <Draggable.Item
133
+ container={container}
134
+ dragId={id}
135
+ key={id}
136
+ >
137
+ <Card
138
+ padding="sm"
139
+ {...props}
140
+ >
141
+ <Flex justify="between">
142
+ <FlexItem>
143
+ <Flex>
144
+ <Avatar
145
+ imageUrl={assignee_img}
146
+ name={assignee_name}
147
+ size="xxs"
148
+ />
149
+ <Title paddingLeft="xs"
150
+ size={4}
151
+ text={title}
152
+ {...props}
153
+ />
154
+ </Flex>
155
+ </FlexItem>
156
+ <Badge
157
+ marginLeft="sm"
158
+ rounded
159
+ text={badgeProperties(container).text}
160
+ variant={badgeProperties(container).color}
161
+ {...props}
162
+ />
163
+ </Flex>
164
+ <Body paddingTop="xs"
165
+ text={description}
166
+ {...props}
167
+ />
168
+ </Card>
169
+ </Draggable.Item>
170
+ )
171
+ )}
172
+ </Flex>
173
+ </Draggable.Container>
174
+ ))}
175
+ </Flex>
176
+ </DraggableProvider>
177
+ );
178
+ };
179
+
180
+ export default DraggableMultipleContainersDropzone;
@@ -0,0 +1,22 @@
1
+ The multiple container functionality also supports customized dropzone styling as shown here.
2
+
3
+ In addition to this, the `enableCrossContainerPreview` prop can be used on the `DraggableProvider` as shown here to enable dropzone preview for cross-container dragging.
4
+
5
+ With `enableCrossContainerPreview`, the `onDrop` and `onDragEnd` event listeners will also provide several arguments to allow developers more context from the drag event.
6
+
7
+ The `onDrop` callback is triggered when an item is successfully dropped into a container. It provides the following arguments:
8
+
9
+ - `draggedItemId` - The ID of the item that was dragged
10
+ - `droppedContainer` - The container where the item was dropped
11
+ - `originalContainer` - The container where the drag started
12
+ - `item` - The complete item object with all properties (including the updated container)
13
+ - `itemAbove` - The item directly above the dropped item in the final position (null if at the top)
14
+ - `itemBelow` - The item directly below the dropped item in the final position (null if at the bottom)
15
+
16
+ The `onDragEnd` callback is triggered when a drag operation ends, whether it was dropped or cancelled. It provides the following arguments:
17
+
18
+ - `draggedItemId` - The ID of the item that was dragged
19
+ - `finalContainer` - The container where the item ended up (could be same as original if drag was cancelled)
20
+ - `originalContainer` - The container where the drag started
21
+ - `itemAbove` - The item directly above the dragged item in the final position (null if at the top)
22
+ - `itemBelow` - The item directly below the dragged item in the final position (null if at the bottom)
@@ -5,11 +5,12 @@ examples:
5
5
  - draggable_with_selectable_list: Draggable with SelectableList Kit
6
6
  - draggable_with_cards: Draggable with Cards
7
7
  - draggable_with_table: Draggable with Table
8
- - draggable_multiple_containers: Dragging Across Multiple Containers
9
8
  - draggable_drop_zones: Draggable Drop Zones
10
9
  - draggable_drop_zones_colors: Draggable Drop Zones Colors
11
10
  - draggable_drop_zones_line: Draggable Drop Zones Line
12
11
  - draggable_event_listeners: Draggable Event Listeners
12
+ - draggable_multiple_containers: Dragging Across Multiple Containers
13
+ - draggable_multiple_containers_dropzone: Dragging Across Multiple Containers with Dropzones
13
14
 
14
15
  rails:
15
16
  - draggable_default: Default
@@ -17,8 +18,8 @@ examples:
17
18
  - draggable_with_selectable_list: Draggable with SelectableList Kit
18
19
  - draggable_with_cards: Draggable with Cards
19
20
  - draggable_with_table: Draggable with Table
20
- - draggable_multiple_containers: Dragging Across Multiple Containers
21
21
  - draggable_drop_zones: Draggable Drop Zones
22
22
  - draggable_drop_zones_colors: Draggable Drop Zones Colors
23
23
  - draggable_drop_zones_line: Draggable Drop Zones Line
24
24
  - draggable_event_listeners: Draggable Event Listeners
25
+ - draggable_multiple_containers: Dragging Across Multiple Containers
@@ -7,4 +7,5 @@ export { default as DraggableWithTable } from './_draggable_with_table.jsx'
7
7
  export { default as DraggableDropZones } from './_draggable_drop_zones.jsx'
8
8
  export { default as DraggableDropZonesColors } from './_draggable_drop_zones_colors.jsx'
9
9
  export { default as DraggableDropZonesLine } from './_draggable_drop_zones_line.jsx'
10
- export { default as DraggableEventListeners } from './_draggable_event_listeners.jsx'
10
+ export { default as DraggableEventListeners } from './_draggable_event_listeners.jsx'
11
+ export { default as DraggableMultipleContainersDropzone } from './_draggable_multiple_containers_dropzone.jsx'
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
- import { EmptyState, Flex } from 'playbook-ui'
2
+ import EmptyState from '../_empty_state'
3
+ import Flex from '../../pb_flex/_flex'
3
4
 
4
5
  const EmptyStateAlignment = (props) => (
5
6
  <Flex align="center"
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
- import { EmptyState, Flex } from 'playbook-ui'
2
+ import EmptyState from '../_empty_state'
3
+ import Flex from '../../pb_flex/_flex'
3
4
 
4
5
  const EmptyStateDefault = (props) => (
5
6
  <Flex align="center"
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
- import { EmptyState, Flex } from 'playbook-ui'
2
+ import EmptyState from '../_empty_state'
3
+ import Flex from '../../pb_flex/_flex'
3
4
 
4
5
  const EmptyStateOrientation = (props) => (
5
6
  <Flex align="center"
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
- import { EmptyState, Flex } from 'playbook-ui'
2
+ import EmptyState from '../_empty_state'
3
+ import Flex from '../../pb_flex/_flex'
3
4
 
4
5
  const EmptyStateSize = (props) => (
5
6
  <Flex align="center"
@@ -15,6 +15,7 @@ const FlexItemExample = (props) => {
15
15
  <FlexItem
16
16
  displayFlex
17
17
  gap="xs"
18
+ htmlOptions={{style: {padding:"2px"}}}
18
19
  {...props}
19
20
  >
20
21
  <FlexItem>
@@ -112,7 +112,14 @@
112
112
  name: "checkbox-name",
113
113
  class: "checkbox-class"
114
114
  %>
115
- <%= form.date_picker :example_date_picker_1, props: { label: true } %>
115
+ <%= form.date_picker :example_date_picker_1, props: {
116
+ label: true,
117
+ # Testing out-of-range default date feature: default_date is earlier than min_date
118
+ # This should still display the default date even though it's outside the valid range
119
+ default_date: (DateTime.current - 3.days).utc.iso8601,
120
+ min_date: (DateTime.current - 1.day).utc.iso8601,
121
+ max_date: (DateTime.current + 7.days).utc.iso8601
122
+ } %>
116
123
  <%= form.star_rating_field :example_star_rating, props: { variant: "interactive", label: true } %>
117
124
  <%= form.time_zone_select_field :example_time_zone_select, ActiveSupport::TimeZone.us_zones, { default: "Eastern Time (US & Canada)" }, props: { label: true } %>
118
125
  <%= form.multi_level_select :example_multi_level_select, props: { id: "multi-level-select-form-default", tree_data: treeData, margin_bottom: "sm", label: "Example Multi Level Select field" } %>
@@ -113,7 +113,17 @@
113
113
  <%= form.select :example_select_validation, [ ["Yes", 1], ["No", 2] ], props: { label: true, blank_selection: "Select One...", required: true, validation_message: "Please, select an option." } %>
114
114
  <%= form.collection_select :example_collection_select_validation, example_collection, :value, :name, props: { label: true, blank_selection: "Select One...", required: true } %>
115
115
  <%= form.check_box :example_checkbox_validation, props: { text: "Example Checkbox Validation", label: true, required: true }, checked_value: "1", unchecked_value: "0" %>
116
- <%= form.date_picker :example_date_picker_2, props: { label: true, required: true, validation_message: "Please, select a date.", allow_input: true } %>
116
+ <%= form.date_picker :example_date_picker_2, props: {
117
+ label: true,
118
+ required: true,
119
+ validation_message: "Please, select a date.",
120
+ allow_input: true,
121
+ # Testing out-of-range default date feature: default_date is earlier than min_date
122
+ # This should still display the default date even though it's outside the valid range
123
+ default_date: (DateTime.current - 3.days).utc.iso8601,
124
+ min_date: (DateTime.current - 1.day).utc.iso8601,
125
+ max_date: (DateTime.current + 7.days).utc.iso8601
126
+ } %>
117
127
  <%= form.star_rating_field :example_star_rating_validation, props: { variant: "interactive", label: true, required: true } %>
118
128
  <%= form.time_zone_select_field :example_time_zone_select, ActiveSupport::TimeZone.us_zones, { default: "Eastern Time (US & Canada)" }, props: { label: true, blank_selection: "Select a Time Zone...", required: true } %>
119
129
  <%= form.multi_level_select :example_multi_level_select, props: { id: "multi-level-select-form", tree_data: treeData, margin_bottom: "sm", required: true, label: "Example Multi Level Select field" } %>
@@ -1,5 +1,8 @@
1
1
  import React from 'react'
2
- import { Card, Caption, FormPill, Typeahead } from 'playbook-ui'
2
+ import Card from '../../pb_card/_card'
3
+ import Caption from '../../pb_caption/_caption'
4
+ import FormPill from '../_form_pill'
5
+ import Typeahead from '../../pb_typeahead/_typeahead'
3
6
 
4
7
  const names = [
5
8
  { label: 'Alexander Nathaniel Montgomery', value: 'Alexander Nathaniel Montgomery' },
@@ -8,4 +8,4 @@
8
8
  state: "PA",
9
9
  zipcode: "19382",
10
10
  territory: "PHL",
11
- }) %>
11
+ }) %>
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { LoadingInline } from 'playbook-ui'
2
+ import LoadingInline from '../_loading_inline'
3
3
 
4
4
  const LoadingInlineVariant = (props) => {
5
5
  return (
@@ -0,0 +1,42 @@
1
+ import React from 'react'
2
+ import MultipleUsers from '../../pb_multiple_users/_multiple_users'
3
+
4
+ const MultipleUsersWithTooltip = (props) => {
5
+ return (
6
+ <div>
7
+ <MultipleUsers
8
+ users={[
9
+ {
10
+ name: 'Patrick Welch',
11
+ imageUrl: 'https://randomuser.me/api/portraits/men/9.jpg',
12
+ tooltip: "Patrick Welch - Online"
13
+ },
14
+ {
15
+ name: 'Lucille Sanchez',
16
+ imageUrl: 'https://randomuser.me/api/portraits/women/6.jpg',
17
+ tooltip: "Lucille Sanchez - Offline"
18
+ },
19
+ {
20
+ name: 'Beverly Reyes',
21
+ imageUrl: 'https://randomuser.me/api/portraits/women/74.jpg',
22
+ tooltip: "Beverly Reyes - Online"
23
+ },
24
+ {
25
+ name: 'Keith Craig',
26
+ imageUrl: 'https://randomuser.me/api/portraits/men/40.jpg',
27
+ tooltip: "Keith Craig - Away"
28
+ },
29
+ {
30
+ name: 'Alicia Cooper',
31
+ imageUrl: 'https://randomuser.me/api/portraits/women/46.jpg',
32
+ tooltip: "Alicia Cooper - Busy"
33
+ },
34
+ ]}
35
+ withTooltip
36
+ {...props}
37
+ />
38
+ </div>
39
+ )
40
+ }
41
+ ``
42
+ export default MultipleUsersWithTooltip
@@ -0,0 +1 @@
1
+ Use the `withTooltip` boolean prop to enable setting user-specific tooltip content via the `tooltip` property in the users array.
@@ -10,6 +10,7 @@ examples:
10
10
  - multiple_users_default: Default
11
11
  - multiple_users_reverse: Reverse
12
12
  - multiple_users_size: Size
13
+ - multiple_users_with_tooltip: With Tooltip
13
14
 
14
15
  swift:
15
16
  - multiple_users_default_swift: Default
@@ -1,3 +1,4 @@
1
1
  export { default as MultipleUsersDefault } from './_multiple_users_default.jsx'
2
2
  export { default as MultipleUsersReverse } from './_multiple_users_reverse.jsx'
3
3
  export { default as MultipleUsersSize } from './_multiple_users_size.jsx'
4
+ export { default as MultipleUsersWithTooltip } from './_multiple_users_with_tooltip.jsx'
@@ -0,0 +1,21 @@
1
+ <%= pb_rails("caption", props: { margin_bottom: "sm", text: "Default Variant" }) %>
2
+ <%= pb_rails("nav", props: { orientation: "horizontal" }) do %>
3
+ <%= pb_rails("nav/item", props: { text: "About", link: "#" }) %>
4
+ <%= pb_rails("nav/item", props: { text: "Case Studies", link: "#", active: true }) %>
5
+ <%= pb_rails("nav/item", props: { text: "Service ", link: "#", disabled: true }) %>
6
+ <%= pb_rails("nav/item", props: { text: "Contacts", link: "#" }) %>
7
+ <% end %>
8
+ <%= pb_rails("caption", props: { margin_bottom: "sm", margin_top:"lg", text: "Subtle Variant" }) %>
9
+ <%= pb_rails("nav", props: { orientation: "horizontal", variant: "subtle" }) do %>
10
+ <%= pb_rails("nav/item", props: { text: "About", link: "#" }) %>
11
+ <%= pb_rails("nav/item", props: { text: "Case Studies", link: "#", active: true }) %>
12
+ <%= pb_rails("nav/item", props: { text: "Service ", link: "#", disabled: true }) %>
13
+ <%= pb_rails("nav/item", props: { text: "Contacts", link: "#" }) %>
14
+ <% end %>
15
+ <%= pb_rails("caption", props: { margin_bottom: "sm", margin_top:"lg", text: "Bold Variant" }) %>
16
+ <%= pb_rails("nav", props: { orientation: "horizontal", variant: "bold" }) do %>
17
+ <%= pb_rails("nav/item", props: { text: "About", link: "#" }) %>
18
+ <%= pb_rails("nav/item", props: { text: "Case Studies", link: "#", active: true }) %>
19
+ <%= pb_rails("nav/item", props: { text: "Service ", link: "#", disabled: true }) %>
20
+ <%= pb_rails("nav/item", props: { text: "Contacts", link: "#" }) %>
21
+ <% end %>
@@ -0,0 +1,113 @@
1
+ import React from 'react'
2
+
3
+ import Nav from '../_nav'
4
+ import NavItem from '../_item'
5
+ import Caption from '../../pb_caption/_caption'
6
+
7
+ const HorizontalNavDisabled = (props) => {
8
+ return (
9
+ <>
10
+ <Caption marginBottom="sm">Default Variant</Caption>
11
+ <Nav
12
+ link="#"
13
+ orientation="horizontal"
14
+ {...props}
15
+ >
16
+ <NavItem
17
+ link="#"
18
+ text="About"
19
+ {...props}
20
+ />
21
+ <NavItem
22
+ active
23
+ link="#"
24
+ text="Case Studies"
25
+ {...props}
26
+ />
27
+ <NavItem
28
+ disabled
29
+ link="#"
30
+ text="Service"
31
+ {...props}
32
+ />
33
+ <NavItem
34
+ link="#"
35
+ text="Contacts"
36
+ {...props}
37
+ />
38
+ </Nav>
39
+ <Caption
40
+ marginBottom="sm"
41
+ marginTop="lg"
42
+ >
43
+ Subtle Variant
44
+ </Caption>
45
+ <Nav
46
+ link="#"
47
+ orientation="horizontal"
48
+ variant="subtle"
49
+ {...props}
50
+ >
51
+ <NavItem
52
+ link="#"
53
+ text="About"
54
+ {...props}
55
+ />
56
+ <NavItem
57
+ active
58
+ link="#"
59
+ text="Case Studies"
60
+ {...props}
61
+ />
62
+ <NavItem
63
+ disabled
64
+ link="#"
65
+ text="Service"
66
+ {...props}
67
+ />
68
+ <NavItem
69
+ link="#"
70
+ text="Contacts"
71
+ {...props}
72
+ />
73
+ </Nav>
74
+ <Caption
75
+ marginBottom="sm"
76
+ marginTop="lg"
77
+ >
78
+ Bold Variant
79
+ </Caption>
80
+ <Nav
81
+ link="#"
82
+ orientation="horizontal"
83
+ variant="bold"
84
+ {...props}
85
+ >
86
+ <NavItem
87
+ link="#"
88
+ text="About"
89
+ {...props}
90
+ />
91
+ <NavItem
92
+ active
93
+ link="#"
94
+ text="Case Studies"
95
+ {...props}
96
+ />
97
+ <NavItem
98
+ disabled
99
+ link="#"
100
+ text="Service"
101
+ {...props}
102
+ />
103
+ <NavItem
104
+ link="#"
105
+ text="Contacts"
106
+ {...props}
107
+ />
108
+ </Nav>
109
+ </>
110
+ )
111
+ }
112
+
113
+ export default HorizontalNavDisabled
@@ -0,0 +1 @@
1
+ Use the `disabled` prop on a `navItem`/`nav_item` within a horizontal nav to set it as disabled. This will render the UI as disabled, prevent clicks and not allow for tabIndex to access the item.
@@ -0,0 +1,30 @@
1
+ <%= pb_rails("flex", props: { justify: "between" }) do %>
2
+ <%= pb_rails("flex", props: { orientation:"column", wrap: true }) do %>
3
+ <%= pb_rails("caption", props: { margin_bottom: "sm", text: "Default Variant" }) %>
4
+ <%= pb_rails("nav") do %>
5
+ <%= pb_rails("nav/item", props: { text: "About", link: "#" }) %>
6
+ <%= pb_rails("nav/item", props: { text: "Case Studies", link: "#", active: true }) %>
7
+ <%= pb_rails("nav/item", props: { text: "Service ", link: "#", disabled: true }) %>
8
+ <%= pb_rails("nav/item", props: { text: "Contacts", link: "#" }) %>
9
+ <% end %>
10
+ <% end %>
11
+ <%= pb_rails("flex", props: { orientation:"column", wrap: true }) do %>
12
+ <%= pb_rails("caption", props: { margin_bottom: "sm", text: "Subtle Variant" }) %>
13
+ <%= pb_rails("nav", props:{variant: "subtle"}) do %>
14
+ <%= pb_rails("nav/item", props: { text: "About", link: "#" }) %>
15
+ <%= pb_rails("nav/item", props: { text: "Case Studies", link: "#", active: true }) %>
16
+ <%= pb_rails("nav/item", props: { text: "Service ", link: "#", disabled: true }) %>
17
+ <%= pb_rails("nav/item", props: { text: "Contacts", link: "#" }) %>
18
+ <% end %>
19
+ <% end %>
20
+ <%= pb_rails("flex", props: { orientation:"column", wrap: true }) do %>
21
+ <%= pb_rails("caption", props: { margin_bottom: "sm", text: "Bold Variant" }) %>
22
+ <%= pb_rails("nav", props:{variant: "bold"}) do %>
23
+ <%= pb_rails("nav/item", props: { text: "About", link: "#" }) %>
24
+ <%= pb_rails("nav/item", props: { text: "Case Studies", link: "#", active: true }) %>
25
+ <%= pb_rails("nav/item", props: { text: "Service ", link: "#", disabled: true }) %>
26
+ <%= pb_rails("nav/item", props: { text: "Contacts", link: "#" }) %>
27
+ <% end %>
28
+ <% end %>
29
+
30
+ <% end %>