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

Sign up to get free protection for your applications and to get access to all the features.
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.