playbook_ui 14.14.0.pre.rc.3 → 14.14.0.pre.rc.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss +58 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +64 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +1 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb +51 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md +2 -0
- data/app/pb_kits/playbook/pb_table/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_table/index.ts +41 -9
- data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +4 -0
- data/app/pb_kits/playbook/pb_table/table_row.html.erb +1 -0
- data/app/pb_kits/playbook/pb_table/table_row.rb +10 -1
- data/dist/chunks/{_typeahead-C_q1qAtC.js → _typeahead-KwZhr9u1.js} +2 -2
- data/dist/chunks/{_weekday_stacked-DCeouuO3.js → _weekday_stacked-DSJpSZ3B.js} +1 -1
- data/dist/chunks/{lib-WQEeEj3t.js → lib-D3us1bGD.js} +1 -1
- data/dist/chunks/{pb_form_validation-Cq64l4zn.js → pb_form_validation-BpihMSOQ.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/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +12 -7
- /data/app/pb_kits/playbook/pb_table/docs/{_table_with_collapsible_with_custom_click.md → _table_with_collapsible_with_custom_click_react.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: 9e26a89c343fcb92a9f78a01c6984bb27982ce2cbdb5816220abc4fef6c25f03
|
4
|
+
data.tar.gz: 2cdde195ecb34d8245bef7a748e2ed5cd445f76ea49bb053bcb1f5668b292c31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a528f6a6e71344e4819d491570747ca12e586705ee8eee6add394907a4769e5efd88222f5ea626f4ca1327e36ccd5f5b0d6cfd6d8f16082fe5c0b575855d40e
|
7
|
+
data.tar.gz: a73afe78046b88e1fdd0fb7846fce84ae7a884a4f225e5ffb254526b3b3a0d179d34403ab97a7f5125152ae7772c21bb257c85b5c19ea24a3f4f7fa7bde6642b
|
@@ -0,0 +1,58 @@
|
|
1
|
+
@import "../tokens/colors";
|
2
|
+
@import "../tokens/typography";
|
3
|
+
@import url("https://code.highcharts.com/css/highcharts.css");
|
4
|
+
|
5
|
+
:root {
|
6
|
+
--highcharts-color-0: #{$data_1};
|
7
|
+
--highcharts-color-1: #{$data_2};
|
8
|
+
--highcharts-color-2: #{$data_3};
|
9
|
+
--highcharts-color-3: #{$data_4};
|
10
|
+
--highcharts-color-4: #{$data_5};
|
11
|
+
--highcharts-color-5: #{$data_6};
|
12
|
+
--highcharts-color-6: #{$data_7};
|
13
|
+
--highcharts-color-7: #{$data_8};
|
14
|
+
}
|
15
|
+
|
16
|
+
.highcharts-title {
|
17
|
+
font-family: $font_family_base;
|
18
|
+
font-weight: $bold;
|
19
|
+
font-size: $heading_3;
|
20
|
+
color: $text_lt_default;
|
21
|
+
fill: $text_lt_default;
|
22
|
+
}
|
23
|
+
|
24
|
+
.highcharts-subtitle {
|
25
|
+
font-family: $font_family_base;
|
26
|
+
color: $text_lt_light;
|
27
|
+
fill: $text_lt_light;
|
28
|
+
font-weight: $regular;
|
29
|
+
font-size: $text_base;
|
30
|
+
}
|
31
|
+
|
32
|
+
.highcharts-yaxis > .highcharts-axis-title {
|
33
|
+
color: $text_lt_lighter;
|
34
|
+
fill: $text_lt_lighter;
|
35
|
+
font-family: $font_family_base;
|
36
|
+
font-weight: $bold;
|
37
|
+
font-size: $text_smaller;
|
38
|
+
}
|
39
|
+
|
40
|
+
.highcharts-axis-labels {
|
41
|
+
font-family: $font_family_base;
|
42
|
+
color: $text_lt_lighter;
|
43
|
+
fill: $text_lt_lighter;
|
44
|
+
font-weight: $bold;
|
45
|
+
font-size: $text_smaller;
|
46
|
+
}
|
47
|
+
|
48
|
+
.highcharts-grid-line {
|
49
|
+
stroke: $border_light;
|
50
|
+
}
|
51
|
+
|
52
|
+
.highcharts-point {
|
53
|
+
border-radius: 3px;
|
54
|
+
}
|
55
|
+
|
56
|
+
.highcharts-axis-line {
|
57
|
+
stroke: $border_light;
|
58
|
+
}
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import Highcharts from "highcharts";
|
3
|
+
import HighchartsReact from "highcharts-react-official";
|
4
|
+
|
5
|
+
import "../BarGraphStyles.scss";
|
6
|
+
// Your path might look more like this
|
7
|
+
//import "playbook-ui/dist/pb_bar_graph/BarGraphStyles.scss";
|
8
|
+
|
9
|
+
const columnChartData = [
|
10
|
+
{
|
11
|
+
name: "Installation",
|
12
|
+
data: [1475, 200, 3000, 654, 656],
|
13
|
+
},
|
14
|
+
{
|
15
|
+
name: "Manufacturing",
|
16
|
+
data: [4434, 524, 2320, 440, 500],
|
17
|
+
},
|
18
|
+
{
|
19
|
+
name: "Sales & Distribution",
|
20
|
+
data: [3387, 743, 1344, 434, 440],
|
21
|
+
},
|
22
|
+
{
|
23
|
+
name: "Project Development",
|
24
|
+
data: [3227, 878, 999, 780, 1000],
|
25
|
+
},
|
26
|
+
{
|
27
|
+
name: "Other",
|
28
|
+
data: [1111, 677, 3245, 500, 200],
|
29
|
+
},
|
30
|
+
];
|
31
|
+
|
32
|
+
const columnOptions = {
|
33
|
+
chart: {
|
34
|
+
type: "column",
|
35
|
+
},
|
36
|
+
series: columnChartData,
|
37
|
+
title: {
|
38
|
+
text: "Solar Employment Growth by Sector, 2010-2016",
|
39
|
+
},
|
40
|
+
subtitle: {
|
41
|
+
text: "Source: thesolarfoundation.com",
|
42
|
+
},
|
43
|
+
xAxis: {
|
44
|
+
categories: ["Jan", "Feb", "Mar", "Apr", "May"],
|
45
|
+
},
|
46
|
+
yAxis: {
|
47
|
+
min: 0,
|
48
|
+
title: {
|
49
|
+
text: "Number of Employees",
|
50
|
+
},
|
51
|
+
},
|
52
|
+
legend: { enabled: false },
|
53
|
+
credits: { enabled: false },
|
54
|
+
};
|
55
|
+
|
56
|
+
const BarGraphPbStyles = () => (
|
57
|
+
<div>
|
58
|
+
<HighchartsReact highcharts={Highcharts}
|
59
|
+
options={columnOptions}
|
60
|
+
/>
|
61
|
+
</div>
|
62
|
+
)
|
63
|
+
|
64
|
+
export default BarGraphPbStyles
|
@@ -0,0 +1 @@
|
|
1
|
+
You don't need to use the bar graph kit to apply the styles to your Highcharts bar graph. Just import the BarGraphStyles.scss to your component and the styles will apply automatically.
|
@@ -10,3 +10,4 @@ export { default as BarGraphStacked } from './_bar_graph_stacked.jsx'
|
|
10
10
|
export { default as BarGraphNegativeNumbers } from './_bar_graph_negative_numbers.jsx'
|
11
11
|
export { default as BarGraphSecondaryYAxis } from './_bar_graph_secondary_y_axis.jsx'
|
12
12
|
export { default as BarGraphHorizontal } from './_bar_graph_horizontal.jsx'
|
13
|
+
export { default as BarGraphPbStyles } from './_bar_graph_pb_styles.jsx'
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<% content = capture do %>
|
2
|
+
<%= pb_rails("card", props: { border_none: true, border_radius: "none", padding: "md" }) do %>
|
3
|
+
<%= pb_rails("body", props: { text: "Nested content inside a Table Row" }) %>
|
4
|
+
<% end %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<%= pb_rails("table", props: { size: "sm" }) do %>
|
8
|
+
<%= pb_rails("table/table_head") do %>
|
9
|
+
<%= pb_rails("table/table_row") do %>
|
10
|
+
<%= pb_rails("table/table_header", props: { text: "Column 1"}) %>
|
11
|
+
<%= pb_rails("table/table_header", props: { text: "Column 2"}) %>
|
12
|
+
<%= pb_rails("table/table_header", props: { text: "Column 3"}) %>
|
13
|
+
<%= pb_rails("table/table_header", props: { text: "Column 4"}) %>
|
14
|
+
<%= pb_rails("table/table_header", props: { text: "Column 5"}) %>
|
15
|
+
<%= pb_rails("table/table_header", props: { text: ""}) %>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
18
|
+
<%= pb_rails("table/table_body") do %>
|
19
|
+
<%= pb_rails("table/table_row", props: { collapsible: true, collapsible_content: content, collapsible_side_highlight: true, toggle_cell_id: "cell-1", id: "5" }) do %>
|
20
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
|
21
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
|
22
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
|
23
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
|
24
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
|
25
|
+
<%= pb_rails("table/table_cell", props: { text_align: "right", id: "cell-1", cursor: "pointer" }) do %>
|
26
|
+
<%= pb_rails("icon", props: { icon: "chevron-down", fixed_width: true, color: "primary" }) %>
|
27
|
+
<% end %>
|
28
|
+
<% end %>
|
29
|
+
<%= pb_rails("table/table_row", props: { collapsible: true, collapsible_content: content, collapsible_side_highlight: true, toggle_cell_id: "cell-2", id: "6" }) do %>
|
30
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
|
31
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
|
32
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
|
33
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
|
34
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
|
35
|
+
<%= pb_rails("table/table_cell", props: { text_align: "right", id: "cell-2", cursor: "pointer" }) do %>
|
36
|
+
<%= pb_rails("icon", props: { icon: "chevron-down", fixed_width: true, color: "primary" }) %>
|
37
|
+
<% end %>
|
38
|
+
<% end %>
|
39
|
+
<%= pb_rails("table/table_row", props: { collapsible: true, collapsible_content: content, collapsible_side_highlight: true, toggle_cell_id: "cell-3", id: "7" }) do %>
|
40
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
|
41
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
|
42
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
|
43
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
|
44
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
|
45
|
+
<%= pb_rails("table/table_cell", props: { text_align: "right", id: "cell-3", cursor: "pointer" }) do %>
|
46
|
+
<%= pb_rails("icon", props: { icon: "chevron-down", fixed_width: true, color: "primary" }) %>
|
47
|
+
<% end %>
|
48
|
+
<% end %>
|
49
|
+
<% end %>
|
50
|
+
<% end %>
|
51
|
+
|
@@ -0,0 +1,2 @@
|
|
1
|
+
When using the `collapsible` prop, the default functionality is that the entire Row will be clickable to toggle the Row. To limit the click event to a specific Table Cell, you can use the `toggle_cell_id` prop to pass in the id of the Cell you want to use as the trigger.
|
2
|
+
__NOTE__: `toggle_cell_id` and the `id` on the Cell you want to use as the trigger MUST be the same. Please also be aware that you will need to pass in an `id` to any Table Rows you want to be collapsible. Make sure every `id` is unique if you are using multipe collapsibles.
|
@@ -31,6 +31,7 @@ examples:
|
|
31
31
|
- table_with_subcomponents_as_divs: Table with Sub Components (Divs)
|
32
32
|
- table_outer_padding: Outer Padding
|
33
33
|
- table_with_collapsible: Table with Collapsible
|
34
|
+
- table_with_collapsible_with_custom_click: Table with Collapsible with Custom Click
|
34
35
|
- table_with_collapsible_with_custom_content_rails: Table with Collapsible with Custom Content
|
35
36
|
- table_with_collapsible_with_nested_rows_rails: Table with Collapsible with Nested Rows
|
36
37
|
- table_with_collapsible_with_nested_table_rails: Table with Collapsible with Nested Table
|
@@ -2,6 +2,7 @@ import PbEnhancedElement from '../pb_enhanced_element'
|
|
2
2
|
|
3
3
|
const TABLE_WRAPPER_SELECTOR = "[data-pb-table-wrapper]";
|
4
4
|
const TABLE_COLLAPSIBLE_WRAPPER_SELECTOR = "[data-pb-table-collapsible-wrapper]";
|
5
|
+
const TABLE_COLLAPSIBLE_CELL_SELECTOR = "[data-pb-table-collapsible-cell-id]";
|
5
6
|
|
6
7
|
export default class PbTable extends PbEnhancedElement {
|
7
8
|
stickyLeftColumns: string[] = [];
|
@@ -158,18 +159,49 @@ export default class PbTable extends PbEnhancedElement {
|
|
158
159
|
}
|
159
160
|
|
160
161
|
handleCollapsibleClick() {
|
162
|
+
const cells = this.element.querySelectorAll(TABLE_COLLAPSIBLE_CELL_SELECTOR);
|
161
163
|
const collapsibleElements = this.element.querySelectorAll(TABLE_COLLAPSIBLE_WRAPPER_SELECTOR);
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
164
|
+
|
165
|
+
if (cells.length > 0) {
|
166
|
+
cells.forEach((cell) => {
|
167
|
+
const cellId = (cell as HTMLElement).dataset.pbTableCollapsibleCellId;
|
168
|
+
|
169
|
+
Array.from(cell.children).forEach((child) => {
|
170
|
+
if (child.id === cellId) {
|
171
|
+
Array.from(child.children).forEach((svgChild) => {
|
172
|
+
svgChild.id = cellId; // Assign cellId to SVG child
|
173
|
+
Array.from(svgChild.children).forEach((pathChild) => {
|
174
|
+
pathChild.id = cellId; // Assign cellId to path child
|
175
|
+
});
|
176
|
+
});
|
177
|
+
}
|
178
|
+
});
|
179
|
+
cell.addEventListener('click', (event) => {
|
180
|
+
if ((event.target as HTMLElement).id) {
|
181
|
+
document.dispatchEvent(new CustomEvent(`collapsed-toggle${(event.currentTarget as HTMLElement).id}`));
|
182
|
+
|
183
|
+
const toggleElements = this.element.querySelectorAll(`.collapsible_border_toggle${(event.currentTarget as HTMLElement).id}`);
|
184
|
+
toggleElements.forEach((element) => {
|
185
|
+
element.classList.toggle('no-border');
|
186
|
+
element.classList.toggle('border-active');
|
187
|
+
});
|
188
|
+
}
|
170
189
|
});
|
190
|
+
});
|
191
|
+
|
192
|
+
} else {
|
193
|
+
collapsibleElements.forEach((collapsibleElement) => {
|
194
|
+
collapsibleElement.addEventListener('click', (event) => {
|
195
|
+
document.dispatchEvent(new CustomEvent(`collapsed-toggle${(event.currentTarget as HTMLElement).id}`))
|
196
|
+
|
197
|
+
const toggleElements = this.element.querySelectorAll(`.collapsible_border_toggle${(event.currentTarget as HTMLElement).id}`);
|
198
|
+
toggleElements.forEach(element => {
|
199
|
+
element.classList.toggle('no-border');
|
200
|
+
element.classList.toggle('border-active');
|
201
|
+
});
|
202
|
+
})
|
171
203
|
})
|
172
|
-
}
|
204
|
+
}
|
173
205
|
}
|
174
206
|
|
175
207
|
handleCollapsibleRow() {
|
@@ -13,13 +13,14 @@ module Playbook
|
|
13
13
|
prop :collapsible_content
|
14
14
|
prop :collapsible_side_highlight, type: Playbook::Props::Boolean,
|
15
15
|
default: true
|
16
|
+
prop :toggle_cell_id, type: Playbook::Props::String
|
16
17
|
prop :draggable_item, type: Playbook::Props::Boolean,
|
17
18
|
default: false
|
18
19
|
prop :drag_id, type: Playbook::Props::String,
|
19
20
|
default: nil
|
20
21
|
|
21
22
|
def classname
|
22
|
-
generate_classname("pb_table_row_kit", side_highlight_class) + tag_class
|
23
|
+
generate_classname("pb_table_row_kit", side_highlight_class) + tag_class + collapsible_cell_class
|
23
24
|
end
|
24
25
|
|
25
26
|
def side_highlight_class
|
@@ -29,6 +30,14 @@ module Playbook
|
|
29
30
|
def tag_class
|
30
31
|
" pb_table_tr"
|
31
32
|
end
|
33
|
+
|
34
|
+
def collapsible_cell_class
|
35
|
+
if toggle_cell_id
|
36
|
+
" collapsible_cell"
|
37
|
+
else
|
38
|
+
""
|
39
|
+
end
|
40
|
+
end
|
32
41
|
end
|
33
42
|
end
|
34
43
|
end
|