playbook_ui 14.19.0.pre.rc.2 → 14.19.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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta.md +0 -6
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md +5 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows.jsx → _advanced_table_selectable_rows_no_subrows_react.jsx} +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.md +3 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +3 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/flat_advanced_table.js +106 -0
- data/app/pb_kits/playbook/pb_advanced_table/index.js +228 -11
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +9 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +1 -2
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +4 -0
- data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +3 -0
- data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +3 -3
- data/app/pb_kits/playbook/pb_avatar/avatar.rb +2 -0
- data/app/pb_kits/playbook/pb_avatar/avatar.test.js +18 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.html.erb +5 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.jsx +16 -0
- data/app/pb_kits/playbook/pb_avatar/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_avatar/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
- data/app/pb_kits/playbook/pb_card/card.rb +12 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +2 -2
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.html.erb +22 -1
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.html.erb +55 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line_rails.md +5 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_rails.md +5 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.jsx +59 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners_react.md +1 -0
- data/app/pb_kits/playbook/pb_draggable/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_draggable/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_draggable/draggable_container.rb +11 -1
- data/app/pb_kits/playbook/pb_draggable/draggable_item.rb +11 -1
- data/app/pb_kits/playbook/pb_draggable/index.js +4 -2
- data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +33 -5
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +5 -0
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +5 -16
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.html.erb +5 -2
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.html.erb +28 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +17 -64
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.html.erb +58 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_with_autocomplete_and_custom_display.jsx → _dropdown_with_autocomplete_with_subcomponents.jsx} +11 -25
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.md +1 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.md +1 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.jsx +61 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.md +2 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.html.erb +52 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.md +2 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +7 -4
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +4 -0
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +45 -1
- data/app/pb_kits/playbook/pb_dropdown/dropdown_container.html.erb +10 -0
- data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +3 -0
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +12 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +3 -1
- data/app/pb_kits/playbook/pb_dropdown/index.js +57 -0
- data/app/pb_kits/playbook/pb_dropdown/keyboard_accessibility.js +26 -0
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +1 -2
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +4 -4
- data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +8 -1
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_alignment.html.erb +27 -0
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_default.html.erb +7 -0
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_orientation.html.erb +12 -0
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_size.html.erb +23 -0
- data/app/pb_kits/playbook/pb_empty_state/docs/example.yml +5 -1
- data/app/pb_kits/playbook/pb_empty_state/empty_state.html.erb +19 -0
- data/app/pb_kits/playbook/pb_empty_state/empty_state.rb +123 -0
- data/app/pb_kits/playbook/pb_message/_message.tsx +3 -0
- data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.html.erb +9 -0
- data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.jsx +21 -0
- data/app/pb_kits/playbook/pb_message/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_message/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_message/message.html.erb +2 -1
- data/app/pb_kits/playbook/pb_message/message.rb +1 -0
- data/app/pb_kits/playbook/pb_overlay/_overlay.scss +2 -1
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +1 -1
- data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +5 -4
- data/app/pb_kits/playbook/pb_select/_select.scss +10 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_error.html.erb +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +7 -7
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +5 -5
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.html.erb +1 -1
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.html.erb +5 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_error_state.html.erb +8 -1
- data/app/pb_kits/playbook/pb_user/_user.tsx +3 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.html.erb +6 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.jsx +16 -0
- data/app/pb_kits/playbook/pb_user/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_user/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_user/user.html.erb +2 -1
- data/app/pb_kits/playbook/pb_user/user.rb +1 -0
- data/dist/chunks/{_typeahead-D8CsVBZO.js → _typeahead-D62OcwsT.js} +3 -3
- data/dist/chunks/_weekday_stacked-Ceh9N0ow.js +45 -0
- data/dist/chunks/lazysizes-DHz07jlL.js +1 -0
- data/dist/chunks/lib-CeKZrPmu.js +29 -0
- data/dist/chunks/{pb_form_validation-BWjy4bFn.js → pb_form_validation-BioH7DWv.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +6 -14
- data/dist/playbook-doc.js +2 -2
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +40 -22
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_hook.jsx +0 -79
- data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.scss +0 -3
- data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +0 -72
- data/app/pb_kits/playbook/pb_gantt_chart/docs/_gantt_chart_default.jsx +0 -53
- data/app/pb_kits/playbook/pb_gantt_chart/docs/example.yml +0 -7
- data/app/pb_kits/playbook/pb_gantt_chart/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_gantt_chart/gantt_chart.test.jsx +0 -19
- data/dist/chunks/_weekday_stacked-D3oLTSkH.js +0 -45
- data/dist/chunks/lazysizes-B7xYodB-.js +0 -1
- data/dist/chunks/lib-BmTAc7Nc.js +0 -29
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_react.md → _advanced_table_selectable_rows.md} +0 -0
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows.html.erb → _advanced_table_selectable_rows_no_subrows_rails.html.erb} +0 -0
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows.html.erb → _advanced_table_selectable_rows_rails.html.erb} +0 -0
- /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones_line.md → _draggable_drop_zones_line_react.md} +0 -0
- /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_event_listeners.md → _draggable_event_listeners_rails.md} +0 -0
@@ -53,7 +53,6 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
|
|
53
53
|
selected,
|
54
54
|
setIsInputFocused,
|
55
55
|
toggleDropdown,
|
56
|
-
triggerRef,
|
57
56
|
} = useContext(DropdownContext);
|
58
57
|
|
59
58
|
const handleKeyDown = useHandleOnKeyDown();
|
@@ -99,7 +98,6 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
|
|
99
98
|
id={id}
|
100
99
|
>
|
101
100
|
{
|
102
|
-
!triggerRef && (
|
103
101
|
children ? (
|
104
102
|
<div
|
105
103
|
onClick={() => toggleDropdown()}
|
@@ -147,7 +145,10 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
|
|
147
145
|
<input
|
148
146
|
className="dropdown_input"
|
149
147
|
onChange={handleChange}
|
150
|
-
onClick={() =>
|
148
|
+
onClick={(e) => {
|
149
|
+
e.stopPropagation();// keep the wrapper’s handler from firing
|
150
|
+
toggleDropdown();
|
151
|
+
}}
|
151
152
|
onFocus={() => setIsInputFocused(true)}
|
152
153
|
onKeyDown={handleKeyDown}
|
153
154
|
placeholder={
|
@@ -181,7 +182,6 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
|
|
181
182
|
</Flex>
|
182
183
|
</>
|
183
184
|
)
|
184
|
-
)
|
185
185
|
}
|
186
186
|
</div>
|
187
187
|
);
|
@@ -1,4 +1,5 @@
|
|
1
1
|
.pb_empty_state_kit {
|
2
|
+
max-width: 100%;
|
2
3
|
|
3
4
|
.sm-state-vertical {
|
4
5
|
width: 150px;
|
@@ -35,4 +36,10 @@
|
|
35
36
|
}
|
36
37
|
}
|
37
38
|
|
38
|
-
|
39
|
+
&.dark {
|
40
|
+
[class*="pb_title_kit"],
|
41
|
+
[class*="pb_body_kit"],
|
42
|
+
[class*="pb_detail_kit"],
|
43
|
+
[class*="pb_button_kit_link"]:hover { color: $white; }
|
44
|
+
}
|
45
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<%= pb_rails("flex", props: {align: "center", spacing: "evenly", wrap: true}) do %>
|
2
|
+
<%= pb_rails("empty_state", props: {
|
3
|
+
description: "Body text goes into detail with possible steps for user to take",
|
4
|
+
header: "Title Explains",
|
5
|
+
image: "default",
|
6
|
+
primary_button: "Next Action",
|
7
|
+
primary_button_url: "#primary_button_url",
|
8
|
+
alignment: "left",
|
9
|
+
}) %>
|
10
|
+
|
11
|
+
<%= pb_rails("empty_state", props: {
|
12
|
+
description: "Body text goes into detail with possible steps for user to take",
|
13
|
+
header: "Title Explains",
|
14
|
+
image: "default",
|
15
|
+
primary_button: "Next Action",
|
16
|
+
primary_button_url: "#primary_button_url",
|
17
|
+
}) %>
|
18
|
+
|
19
|
+
<%= pb_rails("empty_state", props: {
|
20
|
+
description: "Body text goes into detail with possible steps for user to take",
|
21
|
+
header: "Title Explains",
|
22
|
+
image: "default",
|
23
|
+
primary_button: "Next Action",
|
24
|
+
primary_button_url: "#primary_button_url",
|
25
|
+
alignment: "right",
|
26
|
+
}) %>
|
27
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= pb_rails("flex", props: {align: "center", justify: "center", wrap: true}) do %>
|
2
|
+
<%= pb_rails("empty_state", props: {
|
3
|
+
description: "Body text goes into detail with possible steps for user to take",
|
4
|
+
header: "Title Explains",
|
5
|
+
image: "default",
|
6
|
+
orientation:"horizontal",
|
7
|
+
alignment: "left",
|
8
|
+
size: "lg",
|
9
|
+
primary_button: "Next Action",
|
10
|
+
primary_button_url: "#primary_button_url",
|
11
|
+
}) %>
|
12
|
+
<% end %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<%= pb_rails("flex", props: {align: "center", spacing: "evenly", wrap: true}) do %>
|
2
|
+
<%= pb_rails("empty_state", props: {
|
3
|
+
description: "Body text goes into detail with possible steps for user to take",
|
4
|
+
header: "Title Explains",
|
5
|
+
image: "default",
|
6
|
+
primary_button: "Next Action",
|
7
|
+
primary_button_url: "#primary_button_url",
|
8
|
+
link_button: "Alt Action",
|
9
|
+
link_button_url: "#link_button_url",
|
10
|
+
size: "sm",
|
11
|
+
}) %>
|
12
|
+
|
13
|
+
<%= pb_rails("empty_state", props: {
|
14
|
+
description: "Body text goes into detail with possible steps for user to take",
|
15
|
+
header: "Title Explains",
|
16
|
+
image: "default",
|
17
|
+
primary_button: "Next Action",
|
18
|
+
primary_button_url: "#primary_button_url",
|
19
|
+
link_button: "Alt Action",
|
20
|
+
link_button_url: "#link_button_url",
|
21
|
+
size: "lg",
|
22
|
+
}) %>
|
23
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%= pb_content_tag do %>
|
2
|
+
<%= pb_rails("flex", props: { align: flex_align, orientation: config[:flex_direction], padding_left: padding_size, padding_right: padding_size, vertical: "center", classname: config[:scss_class], max_width: "100%" }) do %>
|
3
|
+
<%= pb_rails("image", props: { url: image == "default" ? default_image_data_uri : image, alt: "Empty State Image", html_options: { width: config[:image_width], height: "auto", alignment: "start" } }) %>
|
4
|
+
<%= pb_rails("flex/flex_item") do %>
|
5
|
+
<%= pb_rails("title", props: { text: object.header, size: config[:title_size], padding_bottom: config[:title_padding], text_align: alignment }) %>
|
6
|
+
<% if size == "sm" %>
|
7
|
+
<%= pb_rails("detail", props: { text: object.description, padding_bottom: config[:description_pad], text_align: alignment }) %>
|
8
|
+
<% else %>
|
9
|
+
<%= pb_rails("body", props: { text: object.description, padding_bottom: config[:description_pad], text_align: alignment }) %>
|
10
|
+
<% end %>
|
11
|
+
<% if primary_button.present? %>
|
12
|
+
<%= pb_rails("button", props: { text: primary_button, variant: "primary", width: "100%", size: config[:button_size], link: primary_button_url, margin_bottom: config[:button_margin] }) %>
|
13
|
+
<% end %>
|
14
|
+
<% if link_button.present? %>
|
15
|
+
<%= pb_rails("button", props: { text: link_button, variant: "link", size: config[:button_size], link: link_button_url, width: "100%" }) %>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
18
|
+
<% end %>
|
19
|
+
<% end %>
|
@@ -0,0 +1,123 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbEmptyState
|
5
|
+
class EmptyState < Playbook::KitBase
|
6
|
+
prop :alignment, type: Playbook::Props::Enum,
|
7
|
+
values: %w[center left right],
|
8
|
+
default: "center"
|
9
|
+
prop :description
|
10
|
+
prop :header
|
11
|
+
prop :image
|
12
|
+
prop :link_button
|
13
|
+
prop :link_button_url
|
14
|
+
prop :orientation, type: Playbook::Props::Enum,
|
15
|
+
values: %w[horizontal vertical],
|
16
|
+
default: "vertical"
|
17
|
+
prop :primary_button
|
18
|
+
prop :primary_button_url
|
19
|
+
prop :size, type: Playbook::Props::Enum,
|
20
|
+
values: %w[sm md lg],
|
21
|
+
default: "md"
|
22
|
+
|
23
|
+
SIZE_CONFIGS = {
|
24
|
+
sm: {
|
25
|
+
vertical: {
|
26
|
+
image_width: "100px",
|
27
|
+
title_size: 4,
|
28
|
+
title_padding: "xxs",
|
29
|
+
description_pad: "sm",
|
30
|
+
button_size: "sm",
|
31
|
+
button_margin: "xs",
|
32
|
+
scss_class: "sm-state-vertical",
|
33
|
+
flex_direction: "column",
|
34
|
+
},
|
35
|
+
horizontal: {
|
36
|
+
image_width: "100px",
|
37
|
+
title_size: 4,
|
38
|
+
title_padding: "xxs",
|
39
|
+
description_pad: "sm",
|
40
|
+
button_size: "sm",
|
41
|
+
button_margin: "xs",
|
42
|
+
scss_class: "sm-state-horizontal",
|
43
|
+
flex_direction: "row",
|
44
|
+
},
|
45
|
+
},
|
46
|
+
md: {
|
47
|
+
vertical: {
|
48
|
+
image_width: "140px",
|
49
|
+
title_size: 3,
|
50
|
+
title_padding: "xs",
|
51
|
+
description_pad: "md",
|
52
|
+
button_size: "md",
|
53
|
+
button_margin: "sm",
|
54
|
+
scss_class: "md-state-vertical",
|
55
|
+
flex_direction: "column",
|
56
|
+
},
|
57
|
+
horizontal: {
|
58
|
+
image_width: "140px",
|
59
|
+
title_size: 3,
|
60
|
+
title_padding: "xs",
|
61
|
+
description_pad: "md",
|
62
|
+
button_size: "md",
|
63
|
+
button_margin: "sm",
|
64
|
+
scss_class: "md-state-horizontal",
|
65
|
+
flex_direction: "row",
|
66
|
+
},
|
67
|
+
},
|
68
|
+
lg: {
|
69
|
+
vertical: {
|
70
|
+
image_width: "100%",
|
71
|
+
title_size: 1,
|
72
|
+
title_padding: "sm",
|
73
|
+
description_pad: "lg",
|
74
|
+
button_size: "md",
|
75
|
+
button_margin: "md",
|
76
|
+
scss_class: "lg-state-vertical",
|
77
|
+
flex_direction: "column",
|
78
|
+
},
|
79
|
+
horizontal: {
|
80
|
+
image_width: "100%",
|
81
|
+
title_size: 2,
|
82
|
+
title_padding: "sm",
|
83
|
+
description_pad: "lg",
|
84
|
+
button_size: "md",
|
85
|
+
button_margin: "md",
|
86
|
+
scss_class: "lg-state-horizontal",
|
87
|
+
flex_direction: "row",
|
88
|
+
},
|
89
|
+
},
|
90
|
+
}.freeze
|
91
|
+
|
92
|
+
def classname
|
93
|
+
generate_classname("pb_empty_state_kit")
|
94
|
+
end
|
95
|
+
|
96
|
+
def config
|
97
|
+
SIZE_CONFIGS[size.to_sym][orientation.to_sym]
|
98
|
+
end
|
99
|
+
|
100
|
+
def default_image_data_uri
|
101
|
+
svg_path = __dir__.then { |d| File.join(d, "docs", "default_image", "computer_fly_no_branding.svg") }
|
102
|
+
svg = File.read(svg_path)
|
103
|
+
encoded = ERB::Util.url_encode(svg)
|
104
|
+
"data:image/svg+xml,#{encoded}"
|
105
|
+
end
|
106
|
+
|
107
|
+
def padding_size
|
108
|
+
size == "sm" ? "xs" : "xl"
|
109
|
+
end
|
110
|
+
|
111
|
+
def flex_align
|
112
|
+
case alignment
|
113
|
+
when "left"
|
114
|
+
"start"
|
115
|
+
when "right"
|
116
|
+
"end"
|
117
|
+
else
|
118
|
+
"center"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
@@ -13,6 +13,7 @@ import MessageMention from './_message_mention'
|
|
13
13
|
|
14
14
|
type MessageProps = {
|
15
15
|
aria: { [key: string]: string },
|
16
|
+
avatarGrayscale?: boolean,
|
16
17
|
avatarName?: string,
|
17
18
|
avatarStatus?: "away" | "offline" | "online",
|
18
19
|
avatarUrl?: string,
|
@@ -32,6 +33,7 @@ type MessageProps = {
|
|
32
33
|
const Message = (props: MessageProps) => {
|
33
34
|
const {
|
34
35
|
aria = {},
|
36
|
+
avatarGrayscale = false,
|
35
37
|
avatarName,
|
36
38
|
avatarStatus = null,
|
37
39
|
avatarUrl,
|
@@ -71,6 +73,7 @@ const Message = (props: MessageProps) => {
|
|
71
73
|
>
|
72
74
|
{shouldDisplayAvatar &&
|
73
75
|
<Avatar
|
76
|
+
grayscale={avatarGrayscale}
|
74
77
|
imageUrl={avatarUrl}
|
75
78
|
name={avatarName}
|
76
79
|
size="xs"
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%= pb_rails("message", props: {
|
2
|
+
label: "Mike Bishop",
|
3
|
+
message: "So long, and thanks for all the fish!",
|
4
|
+
timestamp: "3 months ago",
|
5
|
+
avatar_name: "Mike Bishop",
|
6
|
+
avatar_url: "https://randomuser.me/api/portraits/men/50.jpg",
|
7
|
+
avatar_status: "offline",
|
8
|
+
avatar_grayscale: true,
|
9
|
+
}) %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import React from "react"
|
2
|
+
|
3
|
+
import Message from "../_message"
|
4
|
+
|
5
|
+
const MessageGrayscale = (props) => {
|
6
|
+
return (
|
7
|
+
<Message
|
8
|
+
avatarGrayscale
|
9
|
+
avatarName='Mike Bishop'
|
10
|
+
avatarStatus='offline'
|
11
|
+
avatarUrl='https://randomuser.me/api/portraits/men/50.jpg'
|
12
|
+
borderRadius='rounded'
|
13
|
+
label='Mike Bishop'
|
14
|
+
message='So long, and thanks for all the fish!'
|
15
|
+
timestamp='3 months ago'
|
16
|
+
{...props}
|
17
|
+
/>
|
18
|
+
)
|
19
|
+
}
|
20
|
+
|
21
|
+
export default MessageGrayscale
|
@@ -5,12 +5,14 @@ examples:
|
|
5
5
|
- message_timestamp: With Timestamp Hover
|
6
6
|
- message_hover: Hover
|
7
7
|
- message_mentions: Mentions
|
8
|
+
- message_grayscale: Grayscale Avatar
|
8
9
|
|
9
10
|
react:
|
10
11
|
- message_default: Default
|
11
12
|
- message_timestamp: With Timestamp Hover
|
12
13
|
- message_hover: Hover
|
13
14
|
- message_mentions: Mentions
|
15
|
+
- message_grayscale: Grayscale Avatar
|
14
16
|
|
15
17
|
swift:
|
16
18
|
- message_default_swift: Default
|
@@ -2,3 +2,4 @@ export { default as MessageDefault } from './_message_default.jsx'
|
|
2
2
|
export { default as MessageTimestamp } from './_message_timestamp.jsx'
|
3
3
|
export { default as MessageHover } from './_message_hover.jsx'
|
4
4
|
export { default as MessageMentions } from './_message_mentions.jsx'
|
5
|
+
export { default as MessageGrayscale } from './_message_grayscale.jsx'
|
@@ -78,7 +78,8 @@ $overlay_colors: (
|
|
78
78
|
&.overlay-hide-scrollbar {
|
79
79
|
& [class*="overflow_x_auto"],
|
80
80
|
& [class*="overflow_y_auto"],
|
81
|
-
& [class*="overflow_auto"]
|
81
|
+
& [class*="overflow_auto"],
|
82
|
+
.overlay_token_container {
|
82
83
|
&::-webkit-scrollbar {
|
83
84
|
display: none !important;
|
84
85
|
}
|
@@ -30,7 +30,7 @@ const OverlayToken = (props: OverlayChildrenProps) => {
|
|
30
30
|
if (container) {
|
31
31
|
const { scrollLeft, scrollWidth, clientWidth } = container;
|
32
32
|
const atStart = scrollLeft === 0;
|
33
|
-
const atEnd = scrollLeft + clientWidth >= scrollWidth - 1;
|
33
|
+
const atEnd = scrollLeft + clientWidth >= scrollWidth - 1;
|
34
34
|
|
35
35
|
setIsAtStart(atStart);
|
36
36
|
setIsAtEnd(atEnd);
|
@@ -64,16 +64,17 @@ const OverlayToken = (props: OverlayChildrenProps) => {
|
|
64
64
|
return (
|
65
65
|
<>
|
66
66
|
<div className={dynamic ? isAtStart ? '' : previousOverlayClassName : previousOverlayClassName} />
|
67
|
-
{dynamic ?
|
67
|
+
{dynamic ?
|
68
68
|
<div
|
69
|
+
className="overlay_token_container"
|
69
70
|
ref={scrollContainerRef}
|
70
71
|
style={{
|
71
|
-
overflowX: 'auto',
|
72
|
+
overflowX: 'auto',
|
72
73
|
}}
|
73
74
|
>
|
74
75
|
{children}
|
75
76
|
</div>
|
76
|
-
:
|
77
|
+
:
|
77
78
|
children
|
78
79
|
}
|
79
80
|
{hasSubsequentOverlay &&
|
@@ -143,6 +143,16 @@
|
|
143
143
|
select {
|
144
144
|
font-size: 12px;
|
145
145
|
}
|
146
|
+
.pb_select_kit_wrapper.error {
|
147
|
+
.pb_select_kit_caret {
|
148
|
+
top: 13.7px;
|
149
|
+
}
|
150
|
+
}
|
151
|
+
}
|
152
|
+
.pb_select_kit_wrapper.error {
|
153
|
+
.pb_select_kit_caret {
|
154
|
+
top: 16.2px;
|
155
|
+
}
|
146
156
|
}
|
147
157
|
}
|
148
158
|
}
|
@@ -8,7 +8,7 @@ const TableWithCollapsibleWithCustomClick = (props) => {
|
|
8
8
|
|
9
9
|
const Content = () => {
|
10
10
|
return (
|
11
|
-
<Card
|
11
|
+
<Card
|
12
12
|
borderNone
|
13
13
|
borderRadius="none"
|
14
14
|
padding="md"
|
@@ -37,7 +37,7 @@ return (
|
|
37
37
|
|
38
38
|
</Table.Head>
|
39
39
|
<Table.Body>
|
40
|
-
<Table.Row collapsible
|
40
|
+
<Table.Row collapsible
|
41
41
|
collapsibleContent={<Content/>}
|
42
42
|
toggleCellId="cell-1"
|
43
43
|
{...props}
|
@@ -47,7 +47,7 @@ return (
|
|
47
47
|
<Table.Cell>{'Value 3'}</Table.Cell>
|
48
48
|
<Table.Cell>{'Value 4'}</Table.Cell>
|
49
49
|
<Table.Cell>{'Value 5'}</Table.Cell>
|
50
|
-
<Table.Cell cursor="pointer"
|
50
|
+
<Table.Cell cursor="pointer"
|
51
51
|
id="cell-1"
|
52
52
|
textAlign="right"
|
53
53
|
>
|
@@ -59,7 +59,7 @@ return (
|
|
59
59
|
</Table.Cell>
|
60
60
|
|
61
61
|
</Table.Row>
|
62
|
-
<Table.Row collapsible
|
62
|
+
<Table.Row collapsible
|
63
63
|
collapsibleContent={<Content/>}
|
64
64
|
toggleCellId="cell-2"
|
65
65
|
{...props}
|
@@ -69,7 +69,7 @@ return (
|
|
69
69
|
<Table.Cell>{'Value 3'}</Table.Cell>
|
70
70
|
<Table.Cell>{'Value 4'}</Table.Cell>
|
71
71
|
<Table.Cell>{'Value 5'}</Table.Cell>
|
72
|
-
<Table.Cell cursor="pointer"
|
72
|
+
<Table.Cell cursor="pointer"
|
73
73
|
id="cell-2"
|
74
74
|
textAlign="right"
|
75
75
|
>
|
@@ -81,7 +81,7 @@ return (
|
|
81
81
|
</Table.Cell>
|
82
82
|
|
83
83
|
</Table.Row>
|
84
|
-
<Table.Row collapsible
|
84
|
+
<Table.Row collapsible
|
85
85
|
collapsibleContent={<Content/>}
|
86
86
|
toggleCellId="cell-3"
|
87
87
|
{...props}
|
@@ -91,7 +91,7 @@ return (
|
|
91
91
|
<Table.Cell>{'Value 3'}</Table.Cell>
|
92
92
|
<Table.Cell>{'Value 4'}</Table.Cell>
|
93
93
|
<Table.Cell>{'Value 5'}</Table.Cell>
|
94
|
-
<Table.Cell cursor="pointer"
|
94
|
+
<Table.Cell cursor="pointer"
|
95
95
|
id="cell-3"
|
96
96
|
textAlign="right"
|
97
97
|
>
|
@@ -55,7 +55,7 @@ const TableRow = (props: TableRowPropTypes): React.ReactElement => {
|
|
55
55
|
const htmlProps = buildHtmlProps(htmlOptions);
|
56
56
|
const sideHighlightClass =
|
57
57
|
sideHighlightColor != "" ? `side_highlight_${sideHighlightColor}` : null;
|
58
|
-
|
58
|
+
|
59
59
|
const [isCollapsed, setIsCollapsed] = useCollapsible(true);
|
60
60
|
|
61
61
|
const collapsibleRow = collapsible && isCollapsed === true ? "collapsible_table_row" : null;
|
@@ -83,14 +83,14 @@ const TableRow = (props: TableRowPropTypes): React.ReactElement => {
|
|
83
83
|
target instanceof SVGElement &&
|
84
84
|
(target.matches("svg.pb_custom_icon") || target.closest("svg.pb_custom_icon"));
|
85
85
|
|
86
|
-
if (clickedCell || isIconClick) {
|
86
|
+
if (clickedCell || (clickedCell && isIconClick)) {
|
87
87
|
setIsCollapsed(!isCollapsed);
|
88
88
|
}
|
89
89
|
} else {
|
90
90
|
setIsCollapsed(!isCollapsed);
|
91
91
|
}
|
92
92
|
};
|
93
|
-
|
93
|
+
|
94
94
|
return (
|
95
95
|
<>
|
96
96
|
{collapsible ? (
|
@@ -116,7 +116,7 @@ const TableRow = (props: TableRowPropTypes): React.ReactElement => {
|
|
116
116
|
tag="td"
|
117
117
|
>
|
118
118
|
<tr/>
|
119
|
-
<Collapsible.Content
|
119
|
+
<Collapsible.Content
|
120
120
|
className={collapsibleSideHighlight ? `table_collapsible_side_highlight` : ''}
|
121
121
|
dark={dark}
|
122
122
|
margin="none"
|
@@ -149,7 +149,7 @@ const TableRow = (props: TableRowPropTypes): React.ReactElement => {
|
|
149
149
|
tag="td"
|
150
150
|
>
|
151
151
|
<tr/>
|
152
|
-
<Collapsible.Content
|
152
|
+
<Collapsible.Content
|
153
153
|
className={collapsibleSideHighlight ? `table_collapsible_side_highlight` : ''}
|
154
154
|
dark={dark}
|
155
155
|
margin="none"
|
@@ -8,7 +8,14 @@
|
|
8
8
|
|
9
9
|
%>
|
10
10
|
|
11
|
-
<%= pb_rails("typeahead", props: {
|
11
|
+
<%= pb_rails("typeahead", props: {
|
12
|
+
id: "typeahead-error-example",
|
13
|
+
options: options,
|
14
|
+
error: "Please make a valid selection",
|
15
|
+
label: "Products",
|
16
|
+
name: :foo,
|
17
|
+
is_multi: false
|
18
|
+
}) %>
|
12
19
|
|
13
20
|
<!-- This section is an example of the available JavaScript event hooks -->
|
14
21
|
<%= javascript_tag defer: "defer" do %>
|
@@ -19,6 +19,7 @@ type UserProps = {
|
|
19
19
|
className?: string,
|
20
20
|
dark?: boolean,
|
21
21
|
data?: {[key: string]: string},
|
22
|
+
avatarGrayscale?: boolean,
|
22
23
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
23
24
|
id?: string,
|
24
25
|
name?: string,
|
@@ -41,6 +42,7 @@ const User = (props: UserProps): React.ReactElement => {
|
|
41
42
|
className,
|
42
43
|
dark = false,
|
43
44
|
data = {},
|
45
|
+
avatarGrayscale = false,
|
44
46
|
htmlOptions = {},
|
45
47
|
id,
|
46
48
|
name,
|
@@ -145,6 +147,7 @@ const User = (props: UserProps): React.ReactElement => {
|
|
145
147
|
>
|
146
148
|
{ avatarPresent &&
|
147
149
|
<Avatar
|
150
|
+
grayscale={avatarGrayscale}
|
148
151
|
imageUrl={avatarUrl}
|
149
152
|
name={name}
|
150
153
|
size={size}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import User from '../../pb_user/_user'
|
3
|
+
|
4
|
+
const UserGrayscale = (props) => {
|
5
|
+
return (
|
6
|
+
<User
|
7
|
+
avatarGrayscale
|
8
|
+
avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
|
9
|
+
name="Anna Black"
|
10
|
+
title="Remodeling Consultant"
|
11
|
+
{...props}
|
12
|
+
/>
|
13
|
+
)
|
14
|
+
}
|
15
|
+
|
16
|
+
export default UserGrayscale
|