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.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss +58 -0
  3. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +64 -0
  4. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +1 -0
  5. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +1 -0
  6. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +1 -0
  7. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +1 -1
  8. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb +51 -0
  9. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md +2 -0
  10. data/app/pb_kits/playbook/pb_table/docs/example.yml +1 -0
  11. data/app/pb_kits/playbook/pb_table/index.ts +41 -9
  12. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +4 -0
  13. data/app/pb_kits/playbook/pb_table/table_row.html.erb +1 -0
  14. data/app/pb_kits/playbook/pb_table/table_row.rb +10 -1
  15. data/dist/chunks/{_typeahead-C_q1qAtC.js → _typeahead-KwZhr9u1.js} +2 -2
  16. data/dist/chunks/{_weekday_stacked-DCeouuO3.js → _weekday_stacked-DSJpSZ3B.js} +1 -1
  17. data/dist/chunks/{lib-WQEeEj3t.js → lib-D3us1bGD.js} +1 -1
  18. data/dist/chunks/{pb_form_validation-Cq64l4zn.js → pb_form_validation-BpihMSOQ.js} +1 -1
  19. data/dist/chunks/vendor.js +1 -1
  20. data/dist/playbook-doc.js +1 -1
  21. data/dist/playbook-rails-react-bindings.js +1 -1
  22. data/dist/playbook-rails.js +1 -1
  23. data/dist/playbook.css +1 -1
  24. data/lib/playbook/version.rb +1 -1
  25. metadata +12 -7
  26. /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: 0a2659b0154123970bd8603b86d5d89e44d148d198b1675eca357f394bbdf404
4
- data.tar.gz: b34b5df725809a814312250861cd58f5713b433aabd2dc82d0c16d5261b6aca6
3
+ metadata.gz: 9e26a89c343fcb92a9f78a01c6984bb27982ce2cbdb5816220abc4fef6c25f03
4
+ data.tar.gz: 2cdde195ecb34d8245bef7a748e2ed5cd445f76ea49bb053bcb1f5668b292c31
5
5
  SHA512:
6
- metadata.gz: ef0c56bcfe1ebb41fe01ebad3ae9270673a12a6402e8e1cc91811eb3356a3c8ccc08fad0bd73825b6176cd649860556634c70319f575bd3a866fe085ada89017
7
- data.tar.gz: 1a0d8cd29a1cb2fb51b346c37bcdeda59676762bebf9edb5759e950542d9586611d5f8c578f4e135494cb1ceb1b0fa3cea554102f26e40eaeab1049fe9e08a84
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.
@@ -17,6 +17,7 @@ examples:
17
17
 
18
18
  react:
19
19
  - bar_graph_default: Default
20
+ - bar_graph_pb_styles: Playbook Styles
20
21
  - bar_graph_legend: Legend
21
22
  - bar_graph_legend_position: Legend Position
22
23
  - bar_graph_legend_non_clickable: Legend Non Clickable
@@ -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'
@@ -16,7 +16,7 @@ const TableWithCollapsible = (props) => {
16
16
  );
17
17
  };
18
18
 
19
- return (
19
+ return (
20
20
  <Table
21
21
  size="sm"
22
22
  {...props}
@@ -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
- collapsibleElements.forEach((collapsibleElement) => {
163
- collapsibleElement.addEventListener('click', (event) => {
164
- document.dispatchEvent(new CustomEvent(`collapsed-toggle${(event.currentTarget as HTMLElement).id}`))
165
-
166
- const toggleElements = this.element.querySelectorAll(`.collapsible_border_toggle${(event.currentTarget as HTMLElement).id}`);
167
- toggleElements.forEach(element => {
168
- element.classList.toggle('no-border');
169
- element.classList.toggle('border-active');
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() {
@@ -37,6 +37,10 @@
37
37
  cursor: pointer;
38
38
  }
39
39
 
40
+ .collapsible_cell {
41
+ cursor: default;
42
+ }
43
+
40
44
  .no-border {
41
45
  border-bottom: none !important;
42
46
  }
@@ -5,6 +5,7 @@
5
5
  data: object.data.merge(id: object.id),
6
6
  id: object.id,
7
7
  'data-pb-table-collapsible-wrapper' => true,
8
+ 'data-pb-table-collapsible-cell-id' => object.toggle_cell_id,
8
9
  **combined_html_options) do %>
9
10
  <%= content.presence %>
10
11
  <% end %>
@@ -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