playbook_ui 14.23.0.pre.rc.3 → 14.24.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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +2 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.html.erb +46 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling_rails.md +7 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.html.erb +51 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +3 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +5 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +36 -0
- data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +11 -2
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +2 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.md +1 -1
- data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +1 -1
- data/app/pb_kits/playbook/pb_gauge/docs/_description.md +1 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +32 -15
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors_react.md +2 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +35 -9
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex_react.md +1 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +26 -14
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.jsx +32 -15
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +45 -17
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +59 -22
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +40 -9
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +50 -18
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +31 -18
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +34 -17
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +64 -23
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units_react.md +1 -0
- data/app/pb_kits/playbook/pb_gauge/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_gauge/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +7 -1
- data/app/pb_kits/playbook/pb_line_graph/docs/_description.md +1 -3
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.jsx +36 -17
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors_react.md +3 -0
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_default.jsx +31 -16
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.jsx +63 -31
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.md +3 -0
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.jsx +35 -16
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.jsx +41 -16
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +107 -62
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.md +4 -7
- data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_line_graph/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_line_graph/lineGraphTheme.ts +16 -1
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +3 -0
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.html.erb +10 -0
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.jsx +26 -0
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.md +3 -0
- data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
- data/dist/chunks/_line_graph-BfCo79KE.js +1 -0
- data/dist/chunks/_typeahead-Db4YQA5c.js +6 -0
- data/dist/chunks/_weekday_stacked-DhFTG-Jt.js +61 -0
- data/dist/chunks/lib-DnQyMxO1.js +29 -0
- data/dist/chunks/{pb_form_validation-BUOKwfvW.js → pb_form_validation-kl-4Jv4t.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/lib/playbook/version.rb +2 -2
- metadata +24 -15
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +0 -30
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.md +0 -1
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.jsx +0 -52
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.md +0 -1
- data/dist/chunks/_circle_chart-BZmlhBs2.js +0 -1
- data/dist/chunks/_typeahead-B1tu_vWi.js +0 -22
- data/dist/chunks/_weekday_stacked-CKk0dR5s.js +0 -45
- data/dist/chunks/lib-DYpq0k8j.js +0 -29
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_row_styling.md → _advanced_table_row_styling_react.md} +0 -0
- /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_colors.md → _gauge_colors_rails.md} +0 -0
- /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_complex.md → _gauge_complex_rails.md} +0 -0
- /data/app/pb_kits/playbook/pb_line_graph/docs/{_line_graph_colors.md → _line_graph_colors_rails.md} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e6c42711223f44800761968ff6b12e3e01d675dbf792208ac3af880849420ba
|
4
|
+
data.tar.gz: 7ac59da841cc4a9040005e6de70ff3e1e87645917aa19714338d8031397d97e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0e3d0844fe67b12098f03a4eb1c4c31fd1307d6f4fec41c3c324fbe4645336a89af6abfb7f80a49ba292f6824677c88cd98c9624df441e61a5764605a62bb15
|
7
|
+
data.tar.gz: 51924ba09262e9be87069173a5b994f843f42e45c4da68def19965c66161842eeef85be41d968c68244b4ffff73337e0dd0afe9d5e141b481ba86460bc0732c5
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<% content.presence %>
|
13
13
|
<% else %>
|
14
14
|
<%= pb_rails("advanced_table/table_header", props: { column_definitions: object.column_definitions, enable_toggle_expansion: object.enable_toggle_expansion, responsive: object.responsive, loading: object.loading, selectable_rows: object.selectable_rows, show_actions_bar: object.show_actions_bar }) %>
|
15
|
-
<%= pb_rails("advanced_table/table_body", props: { id: object.id, table_data: object.table_data, column_definitions: object.column_definitions, responsive: object.responsive, loading: object.loading, selectable_rows: object.selectable_rows, enable_toggle_expansion: object.enable_toggle_expansion }) %>
|
15
|
+
<%= pb_rails("advanced_table/table_body", props: { id: object.id, table_data: object.table_data, column_definitions: object.column_definitions, responsive: object.responsive, loading: object.loading, selectable_rows: object.selectable_rows, enable_toggle_expansion: object.enable_toggle_expansion, row_styling: object.row_styling }) %>
|
16
16
|
<% end %>
|
17
17
|
<% end %>
|
18
18
|
<% end %>
|
@@ -31,6 +31,8 @@ module Playbook
|
|
31
31
|
default: []
|
32
32
|
prop :scroll_bar_none, type: Playbook::Props::Boolean,
|
33
33
|
default: false
|
34
|
+
prop :row_styling, type: Playbook::Props::Array,
|
35
|
+
default: []
|
34
36
|
|
35
37
|
def classname
|
36
38
|
additional_classes = [responsive_classname, max_height_classname, hide_scroll_bar_class]
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<% column_definitions = [
|
2
|
+
{
|
3
|
+
accessor: "year",
|
4
|
+
label: "Year",
|
5
|
+
cellAccessors: ["quarter", "month", "day"],
|
6
|
+
},
|
7
|
+
{
|
8
|
+
accessor: "newEnrollments",
|
9
|
+
label: "New Enrollments",
|
10
|
+
},
|
11
|
+
{
|
12
|
+
accessor: "scheduledMeetings",
|
13
|
+
label: "Scheduled Meetings",
|
14
|
+
},
|
15
|
+
{
|
16
|
+
accessor: "attendanceRate",
|
17
|
+
label: "Attendance Rate",
|
18
|
+
},
|
19
|
+
{
|
20
|
+
accessor: "completedClasses",
|
21
|
+
label: "Completed Classes",
|
22
|
+
},
|
23
|
+
{
|
24
|
+
accessor: "classCompletionRate",
|
25
|
+
label: "Class Completion Rate",
|
26
|
+
},
|
27
|
+
{
|
28
|
+
accessor: "graduatedStudents",
|
29
|
+
label: "Graduated Students",
|
30
|
+
}
|
31
|
+
] %>
|
32
|
+
|
33
|
+
<% row_styling = [
|
34
|
+
{
|
35
|
+
row_id: "1",
|
36
|
+
background_color: "#F9BB00",
|
37
|
+
},
|
38
|
+
{
|
39
|
+
row_id: "8",
|
40
|
+
background_color: "#0056CF",
|
41
|
+
font_color: "white",
|
42
|
+
expand_button_color: "white",
|
43
|
+
},
|
44
|
+
] %>
|
45
|
+
|
46
|
+
<%= pb_rails("advanced_table", props: { id: "row-styling", table_data: @table_data_with_id, column_definitions: column_definitions, row_styling: row_styling }) %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
The `row_styling` prop can be used in conjunction with row ids to control certain styling options on individual rows. Currently, `row_styling` gives you 3 optional controls:
|
2
|
+
|
3
|
+
- `background_color` : use this to control the background color of the row
|
4
|
+
- `font_color`: use this to control font color for each row if needed, for example if using a darker background color.
|
5
|
+
- `expand_button_color`: use this to control the color of the expand icon if needed, for example if using a darker background color.
|
6
|
+
|
7
|
+
**NOTE:** Each object within the `table_data` Array must contain a unique id in order to attach an id to all Rows for this to function.
|
@@ -1 +1 @@
|
|
1
|
-
The optional `header` key/value pair can be used within `columnDefinitions` to render a custom header. This example shows an Icon and Tooltip being used but other kits can be used as well.
|
1
|
+
The optional `header` key/value pair can be used within `columnDefinitions` to render a custom header. This example shows an Icon and Tooltip being used but other kits can be used as well.
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.html.erb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
<%
|
2
|
+
column_definitions = [
|
3
|
+
{
|
4
|
+
accessor: "year",
|
5
|
+
label: "Year",
|
6
|
+
cellAccessors: ["quarter", "month", "day"],
|
7
|
+
},
|
8
|
+
{
|
9
|
+
accessor: "newEnrollments",
|
10
|
+
label: "New Enrollments",
|
11
|
+
header: ->(cell, label) {
|
12
|
+
capture do
|
13
|
+
pb_rails("flex", props: { align_items: "center", justify_content: "center" }) do
|
14
|
+
pb_rails("caption", props: { margin_right: "xs", text: "New Enrollments" }) +
|
15
|
+
pb_rails("icon", props: { id: "tooltip-interact", icon: "info", size: "xs" }) +
|
16
|
+
pb_rails("tooltip", props: {
|
17
|
+
trigger_element_id: "tooltip-interact",
|
18
|
+
tooltip_id: "example-custom-tooltip",
|
19
|
+
position: "top",
|
20
|
+
z_index: "10"
|
21
|
+
}) do
|
22
|
+
"Whoa. I'm a Tooltip"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
}
|
27
|
+
},
|
28
|
+
{
|
29
|
+
accessor: "scheduledMeetings",
|
30
|
+
label: "Scheduled Meetings",
|
31
|
+
},
|
32
|
+
{
|
33
|
+
accessor: "attendanceRate",
|
34
|
+
label: "Attendance Rate",
|
35
|
+
},
|
36
|
+
{
|
37
|
+
accessor: "completedClasses",
|
38
|
+
label: "Completed Classes",
|
39
|
+
},
|
40
|
+
{
|
41
|
+
accessor: "classCompletionRate",
|
42
|
+
label: "Class Completion Rate",
|
43
|
+
},
|
44
|
+
{
|
45
|
+
accessor: "graduatedStudents",
|
46
|
+
label: "Graduated Students",
|
47
|
+
}
|
48
|
+
]
|
49
|
+
%>
|
50
|
+
|
51
|
+
<%= pb_rails("advanced_table", props: { id: "custom_header_table", table_data: @table_data, column_definitions: column_definitions }) %>
|
@@ -0,0 +1 @@
|
|
1
|
+
The optional `header` item can be used within `column_definitions` to render a custom header. This example shows an Icon and Tooltip being used but other kits can be used as well.
|
@@ -10,6 +10,7 @@ examples:
|
|
10
10
|
- advanced_table_beta_sort: Enable Sorting
|
11
11
|
- advanced_table_responsive: Responsive Tables
|
12
12
|
- advanced_table_custom_cell_rails: Custom Components for Cells
|
13
|
+
- advanced_table_with_custom_header_rails: Custom Header Cell
|
13
14
|
- advanced_table_column_headers: Multi-Header Columns
|
14
15
|
- advanced_table_column_headers_multiple: Multi-Header Columns (Multiple Levels)
|
15
16
|
- advanced_table_no_subrows: Table with No Subrows or Expansion
|
@@ -18,6 +19,7 @@ examples:
|
|
18
19
|
- advanced_table_selectable_rows_actions_rails: Selectable Rows (With Actions)
|
19
20
|
- advanced_table_selectable_rows_header_rails: Selectable Rows (No Actions Bar)
|
20
21
|
- advanced_table_scrollbar_none: Advanced Table Scrollbar None
|
22
|
+
- advanced_table_row_styling: Row Styling
|
21
23
|
- advanced_table_column_styling_rails: Column Styling
|
22
24
|
- advanced_table_column_styling_column_headers_rails: Column Styling with Multiple Headers
|
23
25
|
- advanced_table_column_border_color_rails: Column Group Border Color
|
@@ -23,6 +23,8 @@ module Playbook
|
|
23
23
|
default: "scroll"
|
24
24
|
prop :selectable_rows, type: Playbook::Props::Boolean,
|
25
25
|
default: false
|
26
|
+
prop :row_styling, type: Playbook::Props::Array,
|
27
|
+
default: []
|
26
28
|
|
27
29
|
def flatten_columns(columns)
|
28
30
|
columns.flat_map do |col|
|
@@ -66,7 +68,7 @@ module Playbook
|
|
66
68
|
end
|
67
69
|
|
68
70
|
# Additional class and data attributes needed for toggle logic
|
69
|
-
output << pb_rails("advanced_table/table_row", props: { id: id, row: row, column_definitions: leaf_columns, depth: current_depth, collapsible_trail: collapsible_trail, classname: additional_classes, table_data_attributes: current_data_attributes, responsive: responsive, loading: loading, selectable_rows: selectable_rows, row_id: row[:id], enable_toggle_expansion: enable_toggle_expansion })
|
71
|
+
output << pb_rails("advanced_table/table_row", props: { id: id, row: row, column_definitions: leaf_columns, depth: current_depth, collapsible_trail: collapsible_trail, classname: additional_classes, table_data_attributes: current_data_attributes, responsive: responsive, loading: loading, selectable_rows: selectable_rows, row_id: row[:id], enable_toggle_expansion: enable_toggle_expansion, row_styling: row_styling })
|
70
72
|
|
71
73
|
if row[:children].present?
|
72
74
|
row[:children].each do |child_row|
|
@@ -76,6 +76,30 @@ module Playbook
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
+
# Get original column definition for custom rendering
|
80
|
+
def find_original_column_def(accessor)
|
81
|
+
find_column_def_by_accessor(column_definitions, accessor)
|
82
|
+
end
|
83
|
+
|
84
|
+
# Check if a header cell has a custom renderer
|
85
|
+
def has_header_renderer?(cell)
|
86
|
+
return false unless cell[:accessor].present?
|
87
|
+
|
88
|
+
original_def = find_original_column_def(cell[:accessor])
|
89
|
+
original_def && original_def[:header].present?
|
90
|
+
end
|
91
|
+
|
92
|
+
# Render custom header content
|
93
|
+
def render_header(cell)
|
94
|
+
return cell[:label] unless has_header_renderer?(cell)
|
95
|
+
|
96
|
+
original_def = find_original_column_def(cell[:accessor])
|
97
|
+
custom_renderer = original_def[:header]
|
98
|
+
|
99
|
+
# Call the custom renderer with the cell data and label
|
100
|
+
custom_renderer.call(cell, cell[:label])
|
101
|
+
end
|
102
|
+
|
79
103
|
private
|
80
104
|
|
81
105
|
def compute_max_depth(columns)
|
@@ -148,6 +172,18 @@ module Playbook
|
|
148
172
|
end
|
149
173
|
wrapped
|
150
174
|
end
|
175
|
+
|
176
|
+
def find_column_def_by_accessor(defs, target_accessor)
|
177
|
+
defs.each do |col|
|
178
|
+
return col if col[:accessor] == target_accessor
|
179
|
+
|
180
|
+
if col[:columns].is_a?(Array)
|
181
|
+
found = find_column_def_by_accessor(col[:columns], target_accessor)
|
182
|
+
return found if found
|
183
|
+
end
|
184
|
+
end
|
185
|
+
nil
|
186
|
+
end
|
151
187
|
end
|
152
188
|
end
|
153
189
|
end
|
@@ -1,3 +1,10 @@
|
|
1
|
+
<%
|
2
|
+
row_style = object.row_styling.find { |style| style[:row_id].to_s == object.row_id.to_s }
|
3
|
+
button_color = row_style&.[](:expand_button_color)
|
4
|
+
bg_color = row_style&.[](:background_color)
|
5
|
+
font_color = row_style&.[](:font_color)
|
6
|
+
%>
|
7
|
+
|
1
8
|
<%= pb_content_tag(:tr) do %>
|
2
9
|
<% has_separate_checkbox = object.selectable_rows && object.enable_toggle_expansion == "none" %>
|
3
10
|
<% if has_separate_checkbox %>
|
@@ -5,7 +12,7 @@
|
|
5
12
|
<% end %>
|
6
13
|
<% object.column_definitions.each_with_index do |column, index| %>
|
7
14
|
<% next unless column[:accessor].present? %>
|
8
|
-
<%= pb_rails("table/table_cell", props: { classname:object.td_classname(column, index)}) do %>
|
15
|
+
<%= pb_rails("table/table_cell", props: { html_options: { style: { "background-color": bg_color, color: font_color } }, classname:object.td_classname(column, index)}) do %>
|
9
16
|
<%= pb_rails("flex", props:{ align: "center", justify: object.justify_for(column, index), classname: object.loading ? "loading-cell" : "" }) do %>
|
10
17
|
<% if collapsible_trail && index.zero? %>
|
11
18
|
<% (1..depth).each do |i| %>
|
@@ -28,7 +35,9 @@
|
|
28
35
|
<button
|
29
36
|
id="<%= "#{object.id}_#{object.row.object_id}" %>"
|
30
37
|
class="gray-icon expand-toggle-icon"
|
31
|
-
data-advanced-table="true"
|
38
|
+
data-advanced-table="true"
|
39
|
+
style="color: <%= button_color %>"
|
40
|
+
>
|
32
41
|
<%= pb_rails("icon", props: { id: "advanced-table_open_icon", icon: "circle-play", cursor: "pointer" }) %>
|
33
42
|
<%= pb_rails("icon", props: { id: "advanced-table_close_icon", icon: "circle-play-down", cursor: "pointer" }) %>
|
34
43
|
</button>
|
@@ -27,6 +27,8 @@ module Playbook
|
|
27
27
|
prop :enable_toggle_expansion, type: Playbook::Props::Enum,
|
28
28
|
values: %w[all header none],
|
29
29
|
default: "header"
|
30
|
+
prop :row_styling, type: Playbook::Props::Array,
|
31
|
+
default: []
|
30
32
|
|
31
33
|
def data
|
32
34
|
Hash(prop(:data)).merge(table_data_attributes)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
##### Prop
|
2
2
|
|
3
3
|
`align` **Type**: String | **Values**: left | center | right (defaults to center)
|
4
|
-
`verticalAlign` **Type**: String | **Values**: top | middle | bottom (defaults
|
4
|
+
`verticalAlign` **Type**: String | **Values**: top | middle | bottom (defaults to bottom)
|
5
5
|
`layout` **Type**: String | **Values**: horizontal | vertical | proximate (defaults to horizontal)
|
6
6
|
`x` **Type**: Number (defaults to 0)
|
7
7
|
`y` **Type**: Number (defaults to 0)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
##### Prop
|
2
2
|
|
3
3
|
`align` **Type**: String | **Values**: left | center | right (defaults to center)
|
4
|
-
`verticalAlign` **Type**: String | **Values**: top | middle | bottom (defaults
|
4
|
+
`verticalAlign` **Type**: String | **Values**: top | middle | bottom (defaults to bottom)
|
5
5
|
`layout` **Type**: String | **Values**: horizontal | vertical | proximate (defaults to horizontal)
|
6
6
|
`x` **Type**: Number (defaults to 0)
|
7
7
|
`y` **Type**: Number (defaults to 0)
|
@@ -0,0 +1 @@
|
|
1
|
+
**Important Note for the React Kit**: In order to leverage this kit, you must install `highcharts` and `highcharts-react-official` into your project as shown below. To then apply Playbook styles to your Highchart, import gaugeTheme.ts from playbook-ui and merge it with your Highchart options. Then, pass the merged value to the options prop. Playbook’s styling will be applied automatically. See the examples in the documentation below.
|
@@ -1,19 +1,36 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import
|
2
|
+
import gaugeTheme from '../gaugeTheme'
|
3
|
+
import Highcharts from "highcharts"
|
4
|
+
import HighchartsReact from "highcharts-react-official"
|
5
|
+
import HighchartsMore from "highcharts/highcharts-more"
|
6
|
+
import SolidGauge from "highcharts/modules/solid-gauge"
|
7
|
+
import colors from '../../tokens/exports/_colors.module.scss'
|
3
8
|
|
4
|
-
|
5
|
-
|
6
|
-
]
|
9
|
+
HighchartsMore(Highcharts);
|
10
|
+
SolidGauge(Highcharts);
|
7
11
|
|
8
|
-
const
|
9
|
-
<div>
|
10
|
-
<Gauge
|
11
|
-
chartData={data}
|
12
|
-
id="gauge-colors"
|
13
|
-
{...props}
|
14
|
-
colors={['data-7']}
|
15
|
-
/>
|
16
|
-
</div>
|
17
|
-
)
|
12
|
+
const data = [{ name: "Name", y: 67 }]
|
18
13
|
|
19
|
-
|
14
|
+
const baseOptions = {
|
15
|
+
series: [{ data: data }],
|
16
|
+
plotOptions: {
|
17
|
+
solidgauge: {
|
18
|
+
borderColor: colors.data_7,
|
19
|
+
}
|
20
|
+
},
|
21
|
+
};
|
22
|
+
|
23
|
+
const GaugeColors = () => {
|
24
|
+
const options = Highcharts.merge({}, gaugeTheme, baseOptions);
|
25
|
+
|
26
|
+
return (
|
27
|
+
<div>
|
28
|
+
<HighchartsReact
|
29
|
+
highcharts={Highcharts}
|
30
|
+
options={options}
|
31
|
+
/>
|
32
|
+
</div>
|
33
|
+
);
|
34
|
+
};
|
35
|
+
|
36
|
+
export default GaugeColors;
|
@@ -0,0 +1,2 @@
|
|
1
|
+
Custom data colors allow for color customization to match the needs of business requirements.
|
2
|
+
Pass the prop `plotOptions.solidgauge.borderColor` with a Playbook token like `colors.` + `data_1 | data_2 | data_3 | data_4 | data_5 | data_6 | data_7 | data_8`. Hex colors are also available `eg: #CA0095`
|
@@ -2,14 +2,44 @@ import React from "react";
|
|
2
2
|
|
3
3
|
import Flex from '../../pb_flex/_flex'
|
4
4
|
import FlexItem from '../../pb_flex/_flex_item'
|
5
|
-
import Gauge from '../../pb_gauge/_gauge'
|
6
5
|
import Card from '../../pb_card/_card'
|
7
6
|
import Caption from '../../pb_caption/_caption'
|
8
7
|
import Body from '../../pb_body/_body'
|
9
8
|
import SectionSeparator from '../../pb_section_separator/_section_separator'
|
10
9
|
import Title from '../../pb_title/_title'
|
10
|
+
import gaugeTheme from '../gaugeTheme'
|
11
|
+
import Highcharts from "highcharts"
|
12
|
+
import HighchartsReact from "highcharts-react-official"
|
13
|
+
import HighchartsMore from "highcharts/highcharts-more"
|
14
|
+
import SolidGauge from "highcharts/modules/solid-gauge"
|
15
|
+
import colors from '../../tokens/exports/_colors.module.scss'
|
16
|
+
import typography from '../../tokens/exports/_typography.module.scss'
|
11
17
|
|
12
|
-
|
18
|
+
HighchartsMore(Highcharts);
|
19
|
+
SolidGauge(Highcharts);
|
20
|
+
|
21
|
+
const data = [{ name: "Name", y: 10 }];
|
22
|
+
|
23
|
+
const baseOptions = {
|
24
|
+
series: [{ data: data }],
|
25
|
+
chart: {
|
26
|
+
height: "150",
|
27
|
+
},
|
28
|
+
plotOptions: {
|
29
|
+
series: {
|
30
|
+
animation: false,
|
31
|
+
},
|
32
|
+
solidgauge: {
|
33
|
+
dataLabels: {
|
34
|
+
format:
|
35
|
+
`<span class="fix">{y:,f}</span>` +
|
36
|
+
`<span style="fill: ${colors.text_lt_light}; font-size: ${typography.text_larger};">%</span>`,
|
37
|
+
},
|
38
|
+
},
|
39
|
+
},
|
40
|
+
};
|
41
|
+
|
42
|
+
const options = Highcharts.merge({}, gaugeTheme, baseOptions);
|
13
43
|
|
14
44
|
const GaugeComplex = (props) => (
|
15
45
|
<Flex
|
@@ -100,13 +130,9 @@ const GaugeComplex = (props) => (
|
|
100
130
|
shrink
|
101
131
|
{...props}
|
102
132
|
>
|
103
|
-
<
|
104
|
-
|
105
|
-
|
106
|
-
height="150"
|
107
|
-
id="gauge-complex"
|
108
|
-
suffix="%"
|
109
|
-
{...props}
|
133
|
+
<HighchartsReact
|
134
|
+
highcharts={Highcharts}
|
135
|
+
options={options}
|
110
136
|
/>
|
111
137
|
</FlexItem>
|
112
138
|
</Flex>
|
@@ -0,0 +1 @@
|
|
1
|
+
We are able to wrap the Highcharts Gauge kit within Playbook kits (such as Flex and Card components).
|
@@ -1,18 +1,30 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import
|
2
|
+
import gaugeTheme from '../gaugeTheme'
|
3
|
+
import Highcharts from "highcharts"
|
4
|
+
import HighchartsReact from "highcharts-react-official"
|
5
|
+
import HighchartsMore from "highcharts/highcharts-more"
|
6
|
+
import SolidGauge from "highcharts/modules/solid-gauge"
|
3
7
|
|
4
|
-
|
5
|
-
|
6
|
-
]
|
8
|
+
HighchartsMore(Highcharts);
|
9
|
+
SolidGauge(Highcharts);
|
7
10
|
|
8
|
-
const
|
9
|
-
<div>
|
10
|
-
<Gauge
|
11
|
-
chartData={data}
|
12
|
-
id="gauge-default"
|
13
|
-
{...props}
|
14
|
-
/>
|
15
|
-
</div>
|
16
|
-
)
|
11
|
+
const data = [{ name: "Name", y: 45 }]
|
17
12
|
|
18
|
-
|
13
|
+
const baseOptions = {
|
14
|
+
series: [{ data: data }],
|
15
|
+
};
|
16
|
+
|
17
|
+
const GaugeDefault = () => {
|
18
|
+
const options = Highcharts.merge({}, gaugeTheme, baseOptions);
|
19
|
+
|
20
|
+
return (
|
21
|
+
<div>
|
22
|
+
<HighchartsReact
|
23
|
+
highcharts={Highcharts}
|
24
|
+
options={options}
|
25
|
+
/>
|
26
|
+
</div>
|
27
|
+
);
|
28
|
+
};
|
29
|
+
|
30
|
+
export default GaugeDefault;
|
@@ -1,19 +1,36 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import
|
2
|
+
import gaugeTheme from '../gaugeTheme'
|
3
|
+
import Highcharts from "highcharts"
|
4
|
+
import HighchartsReact from "highcharts-react-official"
|
5
|
+
import HighchartsMore from "highcharts/highcharts-more"
|
6
|
+
import SolidGauge from "highcharts/modules/solid-gauge"
|
3
7
|
|
4
|
-
|
5
|
-
|
6
|
-
]
|
8
|
+
HighchartsMore(Highcharts);
|
9
|
+
SolidGauge(Highcharts);
|
7
10
|
|
8
|
-
const
|
9
|
-
<div>
|
10
|
-
<Gauge
|
11
|
-
chartData={data}
|
12
|
-
disableAnimation
|
13
|
-
id="gauge-disable-animation"
|
14
|
-
{...props}
|
15
|
-
/>
|
16
|
-
</div>
|
17
|
-
)
|
11
|
+
const data = [{ name: "Participants", y: 84 }]
|
18
12
|
|
19
|
-
|
13
|
+
const baseOptions = {
|
14
|
+
series: [{ data: data }],
|
15
|
+
plotOptions: {
|
16
|
+
series: {
|
17
|
+
animation: false,
|
18
|
+
},
|
19
|
+
},
|
20
|
+
};
|
21
|
+
|
22
|
+
const GaugeDisableAnimation = () => {
|
23
|
+
const options = Highcharts.merge({}, gaugeTheme, baseOptions);
|
24
|
+
|
25
|
+
return (
|
26
|
+
<div>
|
27
|
+
<HighchartsReact
|
28
|
+
disableAnimation
|
29
|
+
highcharts={Highcharts}
|
30
|
+
options={options}
|
31
|
+
/>
|
32
|
+
</div>
|
33
|
+
);
|
34
|
+
};
|
35
|
+
|
36
|
+
export default GaugeDisableAnimation;
|
@@ -1,21 +1,49 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import
|
2
|
+
import gaugeTheme from '../gaugeTheme'
|
3
|
+
import Highcharts from "highcharts"
|
4
|
+
import HighchartsReact from "highcharts-react-official"
|
5
|
+
import HighchartsMore from "highcharts/highcharts-more"
|
6
|
+
import SolidGauge from "highcharts/modules/solid-gauge"
|
7
|
+
import colors from '../../tokens/exports/_colors.module.scss'
|
8
|
+
import typography from '../../tokens/exports/_typography.module.scss'
|
3
9
|
|
4
|
-
|
5
|
-
|
6
|
-
]
|
10
|
+
HighchartsMore(Highcharts);
|
11
|
+
SolidGauge(Highcharts);
|
7
12
|
|
8
|
-
const
|
9
|
-
<div>
|
10
|
-
<Gauge
|
11
|
-
chartData={data}
|
12
|
-
fullCircle
|
13
|
-
id="gauge-full-circle"
|
14
|
-
suffix="%"
|
15
|
-
title="Seating Capacity"
|
16
|
-
{...props}
|
17
|
-
/>
|
18
|
-
</div>
|
19
|
-
)
|
13
|
+
const data = [{ name: "Capacity", y: 75 }]
|
20
14
|
|
21
|
-
|
15
|
+
const baseOptions = {
|
16
|
+
title: {
|
17
|
+
text: "Seating Capacity",
|
18
|
+
},
|
19
|
+
series: [{ data: data }],
|
20
|
+
pane: {
|
21
|
+
startAngle: 0,
|
22
|
+
endAngle: 360,
|
23
|
+
},
|
24
|
+
plotOptions: {
|
25
|
+
solidgauge: {
|
26
|
+
dataLabels: {
|
27
|
+
format:
|
28
|
+
`<span class="fix">{y:,f}</span>` +
|
29
|
+
`<span style="fill: ${colors.text_lt_light}; font-size: ${typography.text_larger};">%</span>`,
|
30
|
+
},
|
31
|
+
},
|
32
|
+
},
|
33
|
+
};
|
34
|
+
|
35
|
+
const GaugeFullCircle = () => {
|
36
|
+
const options = Highcharts.merge({}, gaugeTheme, baseOptions);
|
37
|
+
|
38
|
+
return (
|
39
|
+
<div>
|
40
|
+
<HighchartsReact
|
41
|
+
highcharts={Highcharts}
|
42
|
+
id="gauge-full-circle"
|
43
|
+
options={options}
|
44
|
+
/>
|
45
|
+
</div>
|
46
|
+
);
|
47
|
+
};
|
48
|
+
|
49
|
+
export default GaugeFullCircle;
|