playbook_ui 13.28.0.pre.alpha.PLAY1349checkboxzindexsticky2947 → 13.28.0.pre.alpha.dialogturbostreameventlistener3017

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -3
  3. data/app/pb_kits/playbook/index.js +2 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +2 -2
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.html.erb +40 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.md +3 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_subrow_headers.md +1 -1
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -1
  9. data/app/pb_kits/playbook/pb_advanced_table/table_body.html.erb +1 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +14 -4
  11. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +10 -2
  12. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +1 -1
  13. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +2 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.html.erb +34 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.rb +31 -0
  16. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.tsx +4 -1
  17. data/app/pb_kits/playbook/pb_bar_graph/barGraph.test.js +31 -0
  18. data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +16 -0
  19. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +5 -2
  20. data/app/pb_kits/playbook/pb_circle_chart/circleChart.test.js +45 -0
  21. data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +16 -0
  22. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +53 -0
  23. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +14 -8
  24. data/app/pb_kits/playbook/pb_collapsible/collapsible.test.js +24 -0
  25. data/app/pb_kits/playbook/pb_dashboard/pbChartsDarkTheme.ts +7 -1
  26. data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.ts +9 -1
  27. data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +2 -3
  28. data/app/pb_kits/playbook/pb_draggable/_draggable.scss +10 -0
  29. data/app/pb_kits/playbook/pb_draggable/_draggable.tsx +53 -0
  30. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +92 -0
  31. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_default.jsx +53 -0
  32. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers.jsx +159 -0
  33. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards.jsx +121 -0
  34. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +9 -0
  35. data/app/pb_kits/playbook/pb_draggable/docs/index.js +3 -0
  36. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +65 -0
  37. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +54 -0
  38. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +57 -0
  39. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +10 -0
  40. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +2 -2
  41. data/app/pb_kits/playbook/pb_gauge/gauge.test.js +35 -0
  42. data/app/pb_kits/playbook/pb_line_graph/_line_graph.tsx +4 -1
  43. data/app/pb_kits/playbook/pb_line_graph/lineGraph.test.js +52 -0
  44. data/app/pb_kits/playbook/pb_line_graph/line_graph.rb +16 -0
  45. data/app/pb_kits/playbook/pb_pill/docs/_description.md +1 -1
  46. data/app/pb_kits/playbook/pb_table/_table.tsx +5 -0
  47. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_column.jsx +33 -32
  48. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_column.md +1 -1
  49. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_column_rails.md +2 -0
  50. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_row.jsx +33 -33
  51. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_row.md +1 -1
  52. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_row_rails.html.erb +34 -0
  53. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_row_rails.md +2 -0
  54. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_data.jsx +51 -50
  55. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_data.md +1 -1
  56. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_data_rails.html.erb +54 -0
  57. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_data_rails.md +2 -0
  58. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_row.jsx +37 -38
  59. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_row.md +1 -0
  60. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_row_rails.html.erb +53 -0
  61. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_row_rails.md +1 -0
  62. data/app/pb_kits/playbook/pb_table/docs/{_table_alignment_row.html.erb → _table_outer_padding.html.erb} +7 -7
  63. data/app/pb_kits/playbook/pb_table/docs/_table_outer_padding.jsx +76 -0
  64. data/app/pb_kits/playbook/pb_table/docs/_table_outer_padding.md +1 -0
  65. data/app/pb_kits/playbook/pb_table/docs/example.yml +9 -9
  66. data/app/pb_kits/playbook/pb_table/docs/index.js +1 -0
  67. data/app/pb_kits/playbook/pb_table/styles/_all.scss +1 -0
  68. data/app/pb_kits/playbook/pb_table/styles/_outer_padding.scss +21 -0
  69. data/app/pb_kits/playbook/pb_table/table.rb +14 -1
  70. data/app/pb_kits/playbook/pb_table/table.test.js +5 -1
  71. data/app/pb_kits/playbook/pb_tooltip/index.js +1 -0
  72. data/app/pb_kits/playbook/pb_treemap_chart/treemapChart.test.js +61 -0
  73. data/app/pb_kits/playbook/playbook-doc.js +2 -0
  74. data/app/pb_kits/playbook/tokens/_vertical_align.scss +18 -0
  75. data/app/pb_kits/playbook/utilities/_vertical_align.scss +16 -0
  76. data/app/pb_kits/playbook/utilities/globalProps.ts +12 -1
  77. data/dist/menu.yml +5 -2
  78. data/dist/playbook-rails.js +6 -6
  79. data/lib/playbook/classnames.rb +1 -0
  80. data/lib/playbook/forms/builder/dropdown_field.rb +14 -0
  81. data/lib/playbook/forms/builder.rb +1 -0
  82. data/lib/playbook/kit_base.rb +2 -0
  83. data/lib/playbook/version.rb +1 -1
  84. data/lib/playbook/vertical_align.rb +37 -0
  85. metadata +40 -6
  86. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_data.html.erb +0 -63
  87. data/app/pb_kits/playbook/pb_table/docs/_table_alignment_shift_row.html.erb +0 -52
  88. /data/app/pb_kits/playbook/pb_table/docs/{_table_alignment_column.html.erb → _table_alignment_column_rails.html.erb} +0 -0
@@ -13,6 +13,15 @@
13
13
  ]
14
14
  %>
15
15
 
16
+ <%
17
+ example_dropdown_options = [
18
+ { label: 'United States', value: 'United States', id: 'us' },
19
+ { label: 'Canada', value: 'Canada', id: 'ca' },
20
+ { label: 'Pakistan', value: 'Pakistan', id: 'pk' },
21
+ ]
22
+
23
+ %>
24
+
16
25
  <%= pb_form_with(scope: :example, url: "", method: :get) do |form| %>
17
26
  <%= form.typeahead :example_user, props: { data: { typeahead_example1: true, user: {} }, placeholder: "Search for a user" } %>
18
27
  <%= form.text_field :example_text_field, props: { label: true } %>
@@ -23,6 +32,7 @@
23
32
  <%= form.password_field :example_password_field, props: { label: true } %>
24
33
  <%= form.url_field :example_url_field, props: { label: true } %>
25
34
  <%= form.text_area :example_text_area, props: { label: true } %>
35
+ <%= form.dropdown_field :example_dropdown, props: { label: true, options: example_dropdown_options } %>
26
36
  <%= form.select :example_select, [ ["Yes", 1], ["No", 2] ], props: { label: true } %>
27
37
  <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
28
38
  <%= form.check_box :example_checkbox,
@@ -107,7 +107,7 @@
107
107
  }
108
108
 
109
109
  & > [class^=pb_date_picker_kit]:not(:last-child) {
110
- .text_input_wrapper input, [class^=pb_text_input_kit] .text_input_wrapper .flatpickr-wrapper {
110
+ .input_wrapper input, [class^=pb_text_input_kit] .date_picker_input_wrapper .flatpickr-wrapper {
111
111
  border-bottom-right-radius: 0;
112
112
  border-top-right-radius: 0;
113
113
  border-right-width: 0;
@@ -115,7 +115,7 @@
115
115
  }
116
116
 
117
117
  & > [class^=pb_date_picker_kit]:not(:first-child) {
118
- .text_input_wrapper input, [class^=pb_text_input_kit] .text_input_wrapper .flatpickr-wrapper {
118
+ .input_wrapper input, [class^=pb_text_input_kit] .date_picker_input_wrapper .flatpickr-wrapper {
119
119
  border-bottom-left-radius: 0;
120
120
  border-top-left-radius: 0;
121
121
  }
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import { render, screen } from '../utilities/test-utils';
3
+ import Gauge from './_gauge';
4
+
5
+ beforeEach(() => {
6
+ // Silences error logs within the test suite.
7
+ jest.spyOn(console, 'error');
8
+ jest.spyOn(console, 'warn');
9
+ console.error.mockImplementation(() => {});
10
+ console.warn.mockImplementation(() => {});
11
+ });
12
+
13
+ afterEach(() => {
14
+ console.error.mockRestore();
15
+ console.warn.mockRestore();
16
+ });
17
+
18
+ const testId = 'gauge1';
19
+
20
+ test('uses exact classname', () => {
21
+ const data = [
22
+ { name: 'Name', value: 45 },
23
+ ]
24
+ render(
25
+ <Gauge
26
+ chartData={data}
27
+ data={{ testid: testId }}
28
+ id='gaugeid'
29
+ />
30
+ );
31
+
32
+ const kit = screen.getByTestId(testId);
33
+ expect(kit).toHaveClass('pb_gauge_kit');
34
+ });
35
+
@@ -130,6 +130,9 @@ const LineGraph = ({
130
130
  staticOptions.plotOptions.series.events = { legendItemClick: () => false };
131
131
  }
132
132
 
133
+ const filteredProps: any = {...props};
134
+ delete filteredProps.verticalAlign;
135
+
133
136
  const [options, setOptions] = useState({});
134
137
 
135
138
  useEffect(() => {
@@ -139,7 +142,7 @@ const LineGraph = ({
139
142
  return (
140
143
  <HighchartsReact
141
144
  containerProps={{
142
- className: classnames(globalProps(props), className),
145
+ className: classnames(globalProps(filteredProps), className),
143
146
  id: id,
144
147
  ...ariaProps,
145
148
  ...dataProps,
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+ import { render, screen } from '../utilities/test-utils';
3
+ import LineGraph from './_line_graph';
4
+
5
+ beforeEach(() => {
6
+ // Silences error logs within the test suite.
7
+ jest.spyOn(console, 'error');
8
+ jest.spyOn(console, 'warn');
9
+ console.error.mockImplementation(() => {});
10
+ console.warn.mockImplementation(() => {});
11
+ });
12
+
13
+ afterEach(() => {
14
+ console.error.mockRestore();
15
+ console.warn.mockRestore();
16
+ });
17
+
18
+ const testId = 'linechart1';
19
+
20
+ test('uses exact classname', () => {
21
+ const data = [{
22
+ name: 'Installation',
23
+ data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],
24
+ }, {
25
+ name: 'Manufacturing',
26
+ data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434],
27
+ }, {
28
+ name: 'Sales & Distribution',
29
+ data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387],
30
+ }, {
31
+ name: 'Project Development',
32
+ data: [null, null, 7988, 12169, 15112, 22452, 34400, 34227],
33
+ }, {
34
+ name: 'Other',
35
+ data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],
36
+ }]
37
+ render(
38
+ <LineGraph
39
+ axisTitle="Number of Employees"
40
+ chartData={data}
41
+ data={{ testid: testId }}
42
+ id="line-default"
43
+ subTitle="Source: thesolarfoundation.com"
44
+ title="Solar Employment Growth by Sector, 2010-2016"
45
+ xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']}
46
+ yAxisMin={0}
47
+ />
48
+ );
49
+
50
+ const kit = screen.getByTestId(testId);
51
+ expect(kit).toHaveClass('pb_bar_graph');
52
+ });
@@ -64,6 +64,22 @@ module Playbook
64
64
  }
65
65
  end
66
66
 
67
+ def vertical_align_props
68
+ if vertical_align
69
+ if object.vertical_align
70
+ original_result = super
71
+ class_to_remove = "vertical_align_#{object.vertical_align}"
72
+
73
+ modified_result = original_result.gsub(class_to_remove, "").strip
74
+ modified_result.empty? ? nil : modified_result
75
+ else
76
+ super
77
+ end
78
+ else
79
+ super
80
+ end
81
+ end
82
+
67
83
  def classname
68
84
  generate_classname("pb_line_graph")
69
85
  end
@@ -1 +1 @@
1
- A pill uses both a keyword and a specific color to categorize an item. Each pill directly corresponds to a data color here: https://playbook.powerapp.cloud/utilities
1
+ A pill uses both a keyword and a specific color to categorize an item. Each pill directly corresponds to a data color <a href="https://playbook.powerapp.cloud/visual_guidelines/colors" target="_blank">here</a>.
@@ -23,6 +23,7 @@ type TableProps = {
23
23
  disableHover?: boolean,
24
24
  htmlOptions?: { [key: string]: string | number | boolean | (() => void) },
25
25
  id?: string,
26
+ outerPadding?: "none" | "xxs" | "xs" | "sm" | "md" | "lg" | "xl",
26
27
  responsive?: "collapse" | "scroll" | "none",
27
28
  singleLine?: boolean,
28
29
  size?: "sm" | "md" | "lg",
@@ -45,6 +46,7 @@ const Table = (props: TableProps) => {
45
46
  disableHover = false,
46
47
  htmlOptions = {},
47
48
  id,
49
+ outerPadding = '',
48
50
  responsive = 'collapse',
49
51
  singleLine = false,
50
52
  size = 'sm',
@@ -59,6 +61,8 @@ const Table = (props: TableProps) => {
59
61
  const htmlProps = buildHtmlProps(htmlOptions)
60
62
  const tableCollapseCss = responsive !== 'none' ? `table-collapse-${collapse}` : ''
61
63
  const verticalBorderCss = verticalBorder ? 'vertical-border' : ''
64
+ const spaceCssName = outerPadding !== 'none' ? 'space_' : ''
65
+ const outerPaddingCss = outerPadding ? `outer_padding_${spaceCssName}${outerPadding}` : ''
62
66
  const isTableTag = tag === 'table'
63
67
 
64
68
  const classNames = classnames(
@@ -73,6 +77,7 @@ const Table = (props: TableProps) => {
73
77
  'no-hover': disableHover,
74
78
  'sticky-header': sticky,
75
79
  'striped': striped,
80
+ [outerPaddingCss]: outerPadding !== '',
76
81
  },
77
82
  globalProps(props),
78
83
  tableCollapseCss,
@@ -7,39 +7,40 @@ const TableAlignmentColumn = (props) => {
7
7
  <Table
8
8
  {...props}
9
9
  >
10
- <thead>
11
- <tr>
12
- <th>{'Column 1'}</th>
13
- <th>{'Column 2'}</th>
14
- <th>{'Column 3'}</th>
15
- <th align="center">{'Rating'}</th>
16
- <th align="right">{'Money'}</th>
17
- </tr>
18
- </thead>
19
- <tbody>
20
- <tr>
21
- <td>{'Value 1'}</td>
22
- <td>{'Value 2'}</td>
23
- <td>{'Value 3'}</td>
24
- <td align="center">{'3'}</td>
25
- <td align="right">{'$57.32'}</td>
26
- </tr>
27
- <tr>
28
- <td>{'Value 1'}</td>
29
- <td>{'Value 2'}</td>
30
- <td>{'Value 3'}</td>
31
- <td align="center">{'2'}</td>
32
- <td align="right">{'$5,657.08'}</td>
33
- </tr>
34
- <tr>
35
- <td>{'Value 1'}</td>
36
- <td>{'Value 2'}</td>
37
- <td>{'Value 3'}</td>
38
- <td align="center">{'4'}</td>
39
- <td align="right">{'$358.77'}</td>
40
- </tr>
41
- </tbody>
10
+ <Table.Head>
11
+ <Table.Row>
12
+ <Table.Header>{'Column 1'}</Table.Header>
13
+ <Table.Header>{'Column 2'}</Table.Header>
14
+ <Table.Header>{'Column 3'}</Table.Header>
15
+ <Table.Header textAlign="center">{'Rating'}</Table.Header>
16
+ <Table.Header textAlign="right">{'Money'}</Table.Header>
17
+ </Table.Row>
18
+ </Table.Head>
19
+ <Table.Body>
20
+ <Table.Row>
21
+ <Table.Cell>{'Value 1'}</Table.Cell>
22
+ <Table.Cell>{'Value 2'}</Table.Cell>
23
+ <Table.Cell>{'Value 3'}</Table.Cell>
24
+ <Table.Cell textAlign="center">{'3'}</Table.Cell>
25
+ <Table.Cell textAlign="right">{'$57.32'}</Table.Cell>
26
+ </Table.Row>
27
+ <Table.Row>
28
+ <Table.Cell>{'Value 1'}</Table.Cell>
29
+ <Table.Cell>{'Value 2'}</Table.Cell>
30
+ <Table.Cell>{'Value 3'}</Table.Cell>
31
+ <Table.Cell textAlign="center">{'2'}</Table.Cell>
32
+ <Table.Cell textAlign="right">{'$5,657.08'}</Table.Cell>
33
+ </Table.Row>
34
+ <Table.Row>
35
+ <Table.Cell>{'Value 1'}</Table.Cell>
36
+ <Table.Cell>{'Value 2'}</Table.Cell>
37
+ <Table.Cell>{'Value 3'}</Table.Cell>
38
+ <Table.Cell textAlign="center">{'4'}</Table.Cell>
39
+ <Table.Cell textAlign="right">{'$358.77'}</Table.Cell>
40
+ </Table.Row>
41
+ </Table.Body>
42
42
  </Table>
43
+
43
44
  )
44
45
  }
45
46
 
@@ -1,2 +1,2 @@
1
- You can individually align a piece of table data, but a more practical use would be applied to align a column.
1
+ Pass our `textAlign` global prop to any `table.cell` subcomponent to change the text alignment of individual cells, or apply this prop persistently to align entire columns.
2
2
  In the table above the "Rating" column contents is centered and the "Money" column contents is right aligned.
@@ -0,0 +1,2 @@
1
+ Pass our `text_align` global prop to any `table/table_cell` subcomponent to change the text alignment of individual cells, or apply this prop persistently to align entire columns.
2
+ In the table above the "Rating" column contents is centered and the "Money" column contents is right aligned.
@@ -7,39 +7,39 @@ const TableAlignmentRow = (props) => {
7
7
  <Table
8
8
  {...props}
9
9
  >
10
- <thead>
11
- <tr>
12
- <th>{'Column 1'}</th>
13
- <th>{'Column 2'}</th>
14
- <th>{'Column 3'}</th>
15
- <th>{'Column 4'}</th>
16
- <th>{'Column 5'}</th>
17
- </tr>
18
- </thead>
19
- <tbody>
20
- <tr>
21
- <td>{'Value 1'}</td>
22
- <td>{'Value 2'}</td>
23
- <td>{'Value 3'}</td>
24
- <td>{'Value 4'}</td>
25
- <td>{'Value 5'}</td>
26
- </tr>
27
- <tr align="center">
28
- <td>{'Value 1'}</td>
29
- <td>{'Value 2'}</td>
30
- <td>{'Value 3'}</td>
31
- <td>{'Value 4'}</td>
32
- <td>{'Value 5'}</td>
33
- </tr>
34
- <tr align="right">
35
- <td>{'Value 1'}</td>
36
- <td>{'Value 2'}</td>
37
- <td>{'Value 3'}</td>
38
- <td>{'Value 4'}</td>
39
- <td>{'Value 5'}</td>
40
- </tr>
41
- </tbody>
42
- </Table>
10
+ <Table.Head>
11
+ <Table.Row>
12
+ <Table.Header>{'Column 1'}</Table.Header>
13
+ <Table.Header>{'Column 2'}</Table.Header>
14
+ <Table.Header>{'Column 3'}</Table.Header>
15
+ <Table.Header>{'Column 4'}</Table.Header>
16
+ <Table.Header>{'Column 5'}</Table.Header>
17
+ </Table.Row>
18
+ </Table.Head>
19
+ <Table.Body>
20
+ <Table.Row>
21
+ <Table.Cell>{'Value 1'}</Table.Cell>
22
+ <Table.Cell>{'Value 2'}</Table.Cell>
23
+ <Table.Cell>{'Value 3'}</Table.Cell>
24
+ <Table.Cell>{'Value 4'}</Table.Cell>
25
+ <Table.Cell>{'Value 5'}</Table.Cell>
26
+ </Table.Row>
27
+ <Table.Row textAlign="center">
28
+ <Table.Cell>{'Value 1'}</Table.Cell>
29
+ <Table.Cell>{'Value 2'}</Table.Cell>
30
+ <Table.Cell>{'Value 3'}</Table.Cell>
31
+ <Table.Cell>{'Value 4'}</Table.Cell>
32
+ <Table.Cell>{'Value 5'}</Table.Cell>
33
+ </Table.Row>
34
+ <Table.Row textAlign="right">
35
+ <Table.Cell>{'Value 1'}</Table.Cell>
36
+ <Table.Cell>{'Value 2'}</Table.Cell>
37
+ <Table.Cell>{'Value 3'}</Table.Cell>
38
+ <Table.Cell>{'Value 4'}</Table.Cell>
39
+ <Table.Cell>{'Value 5'}</Table.Cell>
40
+ </Table.Row>
41
+ </Table.Body>
42
+ </Table>
43
43
  )
44
44
  }
45
45
 
@@ -1,2 +1,2 @@
1
- This is to be used to shift the whole row.
1
+ Pass our `textAlign` global prop to any `table.row` subcomponent to change the text alignment of all cells within that row.
2
2
  The header/ first row is the default, followed by the second row being centered, and then the last row shifted to the right.
@@ -0,0 +1,34 @@
1
+ <%= pb_rails("table") do %>
2
+ <%= pb_rails("table/table_head") do %>
3
+ <%= pb_rails("table/table_row") do %>
4
+ <%= pb_rails("table/table_header", props: { text: "Column 1"}) %>
5
+ <%= pb_rails("table/table_header", props: { text: "Column 2"}) %>
6
+ <%= pb_rails("table/table_header", props: { text: "Column 3"}) %>
7
+ <%= pb_rails("table/table_header", props: { text: "Column 4"}) %>
8
+ <%= pb_rails("table/table_header", props: { text: "Column 5"}) %>
9
+ <% end %>
10
+ <% end %>
11
+ <%= pb_rails("table/table_body") do %>
12
+ <%= pb_rails("table/table_row") do %>
13
+ <%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
14
+ <%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
15
+ <%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
16
+ <%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
17
+ <%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
18
+ <% end %>
19
+ <%= pb_rails("table/table_row", props: { text_align: "center" }) 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
+ <% end %>
26
+ <%= pb_rails("table/table_row", props: { text_align: "right" }) do %>
27
+ <%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
28
+ <%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
29
+ <%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
30
+ <%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
31
+ <%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
32
+ <% end %>
33
+ <% end %>
34
+ <% end %>
@@ -0,0 +1,2 @@
1
+ Pass our `text_align` global prop to any `table/table_row` subcomponent to change the text alignment of all cells within that row.
2
+ The header/ first row is the default, followed by the second row being centered, and then the last row shifted to the right.
@@ -9,16 +9,16 @@ const TableAlignmentShiftData = (props) => {
9
9
  marginBottom="md"
10
10
  {...props}
11
11
  >
12
- <thead>
13
- <tr>
14
- <th>&nbsp;</th>
15
- <th>{'Price'}</th>
16
- </tr>
17
- </thead>
18
- <tbody>
19
- <tr>
20
- <td shift="down">{'Total'}</td>
21
- <td>
12
+ <Table.Head>
13
+ <Table.Row>
14
+ <Table.Header>&nbsp;</Table.Header>
15
+ <Table.Header>{'Price'}</Table.Header>
16
+ </Table.Row>
17
+ </Table.Head>
18
+ <Table.Body>
19
+ <Table.Row>
20
+ <Table.Cell verticalAlign="bottom">{'Total'}</Table.Cell>
21
+ <Table.Cell>
22
22
  {'$12'}
23
23
  <br />
24
24
  {'$46'}
@@ -28,50 +28,51 @@ const TableAlignmentShiftData = (props) => {
28
28
  {'-------'}
29
29
  <br />
30
30
  {'$83'}
31
- </td>
32
- </tr>
33
- </tbody>
31
+ </Table.Cell>
32
+ </Table.Row>
33
+ </Table.Body>
34
34
  </Table>
35
+
35
36
  <Table
36
37
  {...props}
37
38
  >
38
- <thead>
39
- <tr>
40
- <th>{'Espresso Drinks'}</th>
41
- <th>{'Ingredients'}</th>
42
- </tr>
43
- </thead>
44
- <tbody>
45
- <tr>
46
- <td shift="up">{'Cappuccino'}</td>
47
- <td>
48
- {'Espresso'}
49
- <br />
50
- {'Steamed Milk'}
51
- <br />
52
- {'Milk Foam'}
53
- </td>
54
- </tr>
55
- <tr>
56
- <td shift="up">{'Macchiato'}</td>
57
- <td>
58
- {'Espresso'}
59
- <br />
60
- {'Steamed Milk'}
61
- </td>
62
- </tr>
63
- <tr>
64
- <td shift="up">{'Mocha'}</td>
65
- <td>
66
- {'Espresso'}
67
- <br />
68
- {'Hot Chocolate'}
69
- <br />
70
- {'Steamed Milk'}
71
- </td>
72
- </tr>
73
- </tbody>
74
- </Table>
39
+ <Table.Head>
40
+ <Table.Row>
41
+ <Table.Header>{'Espresso Drinks'}</Table.Header>
42
+ <Table.Header>{'Ingredients'}</Table.Header>
43
+ </Table.Row>
44
+ </Table.Head>
45
+ <Table.Body>
46
+ <Table.Row>
47
+ <Table.Cell verticalAlign="top">{'Cappuccino'} </Table.Cell>
48
+ <Table.Cell>
49
+ {'Steamed Milk'}
50
+ <br />
51
+ {'Milk Foam'}
52
+ </Table.Cell>
53
+ </Table.Row>
54
+ <Table.Row>
55
+ <Table.Cell verticalAlign="top">
56
+ {'Macchiato'}
57
+ </Table.Cell>
58
+ <Table.Cell verticalAlign="top">
59
+ {'Espresso'}
60
+ <br />
61
+ {'Steamed Milk'}
62
+ </Table.Cell>
63
+ </Table.Row>
64
+ <Table.Row>
65
+ <Table.Cell>
66
+ {'Mocha'}
67
+ </Table.Cell>
68
+ <Table.Cell>
69
+ {'Hot Chocolate'}
70
+ <br />
71
+ {'Steamed Milk'}
72
+ </Table.Cell>
73
+ </Table.Row>
74
+ </Table.Body>
75
+ </Table>
75
76
  </div>
76
77
  )
77
78
  }
@@ -1,2 +1,2 @@
1
- You can individually shift a piece of table data, or shift an entire column.
1
+ Pass our `verticalAlign` global prop to any `table.cell` subcomponent to change the text alignment of individual cells, or apply this prop persistently to align entire columns.
2
2
  The first table shifts "Total" down, whereas the second table shifts the "Espresso Drinks" column contents up.
@@ -0,0 +1,54 @@
1
+ <%= pb_rails("table") do %>
2
+ <%= pb_rails("table/table_head") do %>
3
+ <%= pb_rails("table/table_row") do %>
4
+ <%= pb_rails("table/table_header", props: { text: "&nbsp;" }) %>
5
+ <%= pb_rails("table/table_header", props: { text: "Price" }) %>
6
+ <% end %>
7
+ <% end %>
8
+ <%= pb_rails("table/table_body") do %>
9
+ <%= pb_rails("table/table_row") do %>
10
+ <%= pb_rails("table/table_cell", props: { text: "Total", vertical_align: "bottom" }) %>
11
+ <%= pb_rails("table/table_cell") do %>
12
+ $12<br/>
13
+ $46<br/>
14
+ $25<br/>
15
+ -------<br/>
16
+ $83
17
+ <% end %>
18
+ <% end %>
19
+ <% end %>
20
+ <% end %>
21
+ <br/>
22
+ <%= pb_rails("table", props: { size: "sm" }) do %>
23
+ <%= pb_rails("table/table_head") do %>
24
+ <%= pb_rails("table/table_row") do %>
25
+ <%= pb_rails("table/table_header", props: { text: "Espresso Drinks" }) %>
26
+ <%= pb_rails("table/table_header", props: { text: "Ingredients" }) %>
27
+ <% end %>
28
+ <% end %>
29
+ <%= pb_rails("table/table_body") do %>
30
+ <%= pb_rails("table/table_row") do %>
31
+ <%= pb_rails("table/table_cell", props: { text: "Cappuccino", vertical_align: "top" }) %>
32
+ <%= pb_rails("table/table_cell") do %>
33
+ Espresso<br/>
34
+ Steamed Milk<br/>
35
+ Milk Foam
36
+ <% end %>
37
+ <% end %>
38
+ <%= pb_rails("table/table_row") do %>
39
+ <%= pb_rails("table/table_cell", props: { text: "Macchiato", vertical_align: "top" }) %>
40
+ <%= pb_rails("table/table_cell") do %>
41
+ Espresso<br/>
42
+ Steamed Milk
43
+ <% end %>
44
+ <% end %>
45
+ <%= pb_rails("table/table_row") do %>
46
+ <%= pb_rails("table/table_cell", props: { text: "Mocha", vertical_align: "top" }) %>
47
+ <%= pb_rails("table/table_cell") do %>
48
+ Espresso<br/>
49
+ Hot Chocolate<br/>
50
+ Steamed Milk
51
+ <% end %>
52
+ <% end %>
53
+ <% end %>
54
+ <% end %>
@@ -0,0 +1,2 @@
1
+ Pass our `vertical_align` global prop to any `table/table_cell` subcomponent to change the text alignment of individual cells, or apply this prop persistently to align entire columns.
2
+ The first table shifts "Total" down, whereas the second table shifts the "Espresso Drinks" column contents up.