playbook_ui 14.13.0.pre.alpha.play1852reacthookformsupportradio6153 → 14.13.0.pre.alpha.play1884progresspill6064

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
  3. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +0 -1
  4. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +1 -3
  5. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.html.erb +2 -2
  6. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.md +1 -4
  7. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +0 -2
  8. data/app/pb_kits/playbook/pb_draggable/docs/index.js +1 -2
  9. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +4 -7
  10. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +3 -6
  11. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +6 -1
  12. data/app/pb_kits/playbook/pb_nav/item.html.erb +19 -7
  13. data/app/pb_kits/playbook/pb_nav/nav.html.erb +8 -3
  14. data/app/pb_kits/playbook/pb_online_status/online_status.html.erb +6 -1
  15. data/app/pb_kits/playbook/pb_popover/popover.html.erb +6 -1
  16. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +2 -1
  17. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +1 -0
  18. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +7 -0
  19. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.md +1 -0
  20. data/app/pb_kits/playbook/pb_radio/_radio.tsx +73 -85
  21. data/app/pb_kits/playbook/pb_radio/docs/example.yml +1 -2
  22. data/app/pb_kits/playbook/pb_radio/docs/index.js +0 -1
  23. data/app/pb_kits/playbook/pb_radio/radio.test.js +0 -16
  24. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +1 -1
  25. data/app/pb_kits/playbook/pb_table/docs/example.yml +1 -4
  26. data/app/pb_kits/playbook/pb_table/docs/index.js +1 -2
  27. data/app/pb_kits/playbook/pb_table/index.ts +9 -41
  28. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +0 -4
  29. data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +2 -29
  30. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +3 -31
  31. data/app/pb_kits/playbook/pb_table/table_body.html.erb +7 -13
  32. data/app/pb_kits/playbook/pb_table/table_body.rb +0 -2
  33. data/app/pb_kits/playbook/pb_table/table_row.html.erb +7 -14
  34. data/app/pb_kits/playbook/pb_table/table_row.rb +1 -14
  35. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.html.erb +0 -14
  36. data/app/pb_kits/playbook/pb_text_input/index.js +0 -9
  37. data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -5
  38. data/dist/chunks/_typeahead-btjo1UN5.js +36 -0
  39. data/dist/chunks/_weekday_stacked-TIh9nTmZ.js +45 -0
  40. data/dist/chunks/{lib-D3us1bGD.js → lib-DjpLC8uO.js} +2 -2
  41. data/dist/chunks/{pb_form_validation-BpihMSOQ.js → pb_form_validation-S56UaHZl.js} +1 -1
  42. data/dist/chunks/vendor.js +1 -1
  43. data/dist/playbook-doc.js +1 -1
  44. data/dist/playbook-rails-react-bindings.js +1 -1
  45. data/dist/playbook-rails.js +1 -1
  46. data/dist/playbook.css +1 -1
  47. data/lib/playbook/version.rb +1 -1
  48. metadata +8 -19
  49. data/app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss +0 -58
  50. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  51. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  52. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx +0 -90
  53. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +0 -5
  54. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +0 -60
  55. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.md +0 -1
  56. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb +0 -51
  57. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md +0 -2
  58. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +0 -96
  59. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.jsx +0 -101
  60. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.md +0 -1
  61. data/dist/chunks/_typeahead-B7kfgseZ.js +0 -36
  62. data/dist/chunks/_weekday_stacked-CQggx3_W.js +0 -45
  63. /data/app/pb_kits/playbook/pb_table/docs/{_table_with_collapsible_with_custom_click_react.md → _table_with_collapsible_with_custom_click.md} +0 -0
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Playbook
4
4
  PREVIOUS_VERSION = "14.13.0"
5
- VERSION = "14.13.0.pre.alpha.play1852reacthookformsupportradio6153"
5
+ VERSION = "14.13.0.pre.alpha.play1884progresspill6064"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.13.0.pre.alpha.play1852reacthookformsupportradio6153
4
+ version: 14.13.0.pre.alpha.play1884progresspill6064
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-02-18 00:00:00.000000000 Z
12
+ date: 2025-02-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -450,7 +450,6 @@ files:
450
450
  - app/pb_kits/playbook/pb_badge/docs/_description.md
451
451
  - app/pb_kits/playbook/pb_badge/docs/example.yml
452
452
  - app/pb_kits/playbook/pb_badge/docs/index.js
453
- - app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss
454
453
  - app/pb_kits/playbook/pb_bar_graph/_bar_graph.scss
455
454
  - app/pb_kits/playbook/pb_bar_graph/_bar_graph.tsx
456
455
  - app/pb_kits/playbook/pb_bar_graph/barGraph.test.js
@@ -479,8 +478,6 @@ files:
479
478
  - app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.md
480
479
  - app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_negative_numbers.html.erb
481
480
  - app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_negative_numbers.jsx
482
- - app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx
483
- - app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md
484
481
  - app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.html.erb
485
482
  - app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.jsx
486
483
  - app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.md
@@ -1190,8 +1187,6 @@ files:
1190
1187
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_rails.md
1191
1188
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.html.erb
1192
1189
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.md
1193
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx
1194
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md
1195
1190
  - app/pb_kits/playbook/pb_draggable/docs/example.yml
1196
1191
  - app/pb_kits/playbook/pb_draggable/docs/index.js
1197
1192
  - app/pb_kits/playbook/pb_draggable/draggable.html.erb
@@ -2281,6 +2276,7 @@ files:
2281
2276
  - app/pb_kits/playbook/pb_progress_pills/docs/_description.md
2282
2277
  - app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb
2283
2278
  - app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx
2279
+ - app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.md
2284
2280
  - app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.html.erb
2285
2281
  - app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.jsx
2286
2282
  - app/pb_kits/playbook/pb_progress_pills/docs/example.yml
@@ -2359,8 +2355,6 @@ files:
2359
2355
  - app/pb_kits/playbook/pb_radio/docs/_radio_orientation_swift.md
2360
2356
  - app/pb_kits/playbook/pb_radio/docs/_radio_padding_swift.md
2361
2357
  - app/pb_kits/playbook/pb_radio/docs/_radio_props_swift.md
2362
- - app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx
2363
- - app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.md
2364
2358
  - app/pb_kits/playbook/pb_radio/docs/_radio_spacing_swift.md
2365
2359
  - app/pb_kits/playbook/pb_radio/docs/_radio_subtitle_swift.md
2366
2360
  - app/pb_kits/playbook/pb_radio/docs/example.yml
@@ -2758,10 +2752,8 @@ files:
2758
2752
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx
2759
2753
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_rails.md
2760
2754
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_react.md
2761
- - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb
2762
2755
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx
2763
- - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md
2764
- - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_react.md
2756
+ - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.md
2765
2757
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.jsx
2766
2758
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.md
2767
2759
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content_rails.html.erb
@@ -2774,9 +2766,6 @@ files:
2774
2766
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md
2775
2767
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table_rails.html.erb
2776
2768
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table_rails.md
2777
- - app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb
2778
- - app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.jsx
2779
- - app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.md
2780
2769
  - app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents.jsx
2781
2770
  - app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents.md
2782
2771
  - app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents_as_divs.html.erb
@@ -3348,11 +3337,11 @@ files:
3348
3337
  - app/pb_kits/playbook/utilities/test/globalProps/truncate.test.js
3349
3338
  - app/pb_kits/playbook/utilities/text.ts
3350
3339
  - app/pb_kits/playbook/utilities/validEmojiChecker.ts
3351
- - dist/chunks/_typeahead-B7kfgseZ.js
3352
- - dist/chunks/_weekday_stacked-CQggx3_W.js
3340
+ - dist/chunks/_typeahead-btjo1UN5.js
3341
+ - dist/chunks/_weekday_stacked-TIh9nTmZ.js
3353
3342
  - dist/chunks/lazysizes-B7xYodB-.js
3354
- - dist/chunks/lib-D3us1bGD.js
3355
- - dist/chunks/pb_form_validation-BpihMSOQ.js
3343
+ - dist/chunks/lib-DjpLC8uO.js
3344
+ - dist/chunks/pb_form_validation-S56UaHZl.js
3356
3345
  - dist/chunks/vendor.js
3357
3346
  - dist/menu.yml
3358
3347
  - dist/playbook-doc.js
@@ -1,58 +0,0 @@
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
- }
@@ -1,64 +0,0 @@
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
@@ -1 +0,0 @@
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.
@@ -1,90 +0,0 @@
1
- import React, { useState } from "react";
2
- import { Flex, Table, Body, Avatar, DraggableProvider } from "playbook-ui";
3
-
4
- // Initial items to be dragged
5
- const data = [
6
- {
7
- id: "1",
8
- task: "Task 1",
9
- assignee_name: "Terry Miles",
10
- assignee_img: "https://randomuser.me/api/portraits/men/44.jpg",
11
- },
12
- {
13
- id: "2",
14
- task: "Task 2",
15
- assignee_name: "Sophia Miles",
16
- assignee_img: "https://randomuser.me/api/portraits/women/8.jpg",
17
- },
18
- {
19
- id: "3",
20
- task: "Task 3",
21
- assignee_name: "Alice Jones",
22
- assignee_img: "https://randomuser.me/api/portraits/women/10.jpg",
23
- },
24
- {
25
- id: "4",
26
- task: "Task 4",
27
- assignee_name: "Mike James",
28
- assignee_img: "https://randomuser.me/api/portraits/men/8.jpg",
29
- },
30
- {
31
- id: "5",
32
- task: "Task 5",
33
- assignee_name: "James Guy",
34
- assignee_img: "https://randomuser.me/api/portraits/men/18.jpg",
35
- }
36
- ];
37
-
38
- const DraggableWithTableReact = (props) => {
39
- const [initialState, setInitialState] = useState(data);
40
-
41
- return (
42
- <>
43
- <DraggableProvider initialItems={data}
44
- onReorder={(items) => setInitialState(items)}
45
- >
46
- <Table
47
- responsive="none"
48
- size="sm"
49
- {...props}
50
- >
51
- <Table.Head>
52
- <Table.Row>
53
- <Table.Header>{"id"}</Table.Header>
54
- <Table.Header>{"name"}</Table.Header>
55
- <Table.Header>{"task number"}</Table.Header>
56
- </Table.Row>
57
- </Table.Head>
58
- <Table.Body draggableContainer>
59
- {initialState.map(({ id, task, assignee_name, assignee_img }) => (
60
- <Table.Row
61
- dragId={id}
62
- draggableItem
63
- key={id}
64
- >
65
- <Table.Cell>{id}</Table.Cell>
66
- <Table.Cell>
67
- <Flex align="center">
68
- <Avatar
69
- imageUrl={assignee_img}
70
- size="xs"
71
- />
72
- <Body
73
- paddingLeft="xxs"
74
- text={assignee_name}
75
- {...props}
76
- />
77
- </Flex>
78
- </Table.Cell>
79
- <Table.Cell>{task}</Table.Cell>
80
- </Table.Row>
81
- ))}
82
- </Table.Body>
83
- </Table>
84
- </DraggableProvider>
85
- </>
86
-
87
- );
88
- };
89
-
90
- export default DraggableWithTableReact;
@@ -1,5 +0,0 @@
1
- The draggable kit can also be used in conjunction with the table kit to create draggable table rows. To do this:
2
-
3
- - Wrap the Table with the `DraggableProvider` and manage state as shown.
4
- - use the `draggableContainer` prop on the Table.Body to designate it as the Draggable Container
5
- - use the `draggableItem` prop on the Table.Row to designate it as the Draggable Item. Make sure to also pass id to the `dragId` prop here.
@@ -1,60 +0,0 @@
1
- import React from "react"
2
- import { useForm } from "react-hook-form"
3
- import { Radio, Flex, Body } from "playbook-ui"
4
-
5
- const RadioReactHook = () => {
6
- const { register, watch } = useForm({
7
- defaultValues: {
8
- size: "Small",
9
- },
10
- })
11
-
12
- const selectedSize = watch("size", "Small")
13
-
14
- return (
15
- <Flex orientation="row">
16
- <Flex
17
- align="start"
18
- orientation="column"
19
- paddingRight="lg"
20
- >
21
- <Radio
22
- alignment="left"
23
- label="Small"
24
- marginBottom='sm'
25
- name="size"
26
- value="Small"
27
- {...register("size")}
28
- />
29
- <br />
30
- <Radio
31
- alignment="left"
32
- label="Medium"
33
- marginBottom='sm'
34
- name="size"
35
- value="Medium"
36
- {...register("size")}
37
- />
38
- <br />
39
- <Radio
40
- alignment="left"
41
- label="Large"
42
- marginBottom='sm'
43
- name="size"
44
- value="Large"
45
- {...register("size")}
46
- />
47
- </Flex>
48
- <Flex
49
- align="start"
50
- orientation="column"
51
- >
52
- <Body
53
- text={`Selected Size: ${selectedSize}`}
54
- />
55
- </Flex>
56
- </Flex>
57
- )
58
- }
59
-
60
- export default RadioReactHook
@@ -1 +0,0 @@
1
- You can pass react hook props to the radio kit.
@@ -1,51 +0,0 @@
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
-
@@ -1,2 +0,0 @@
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.
@@ -1,96 +0,0 @@
1
- <% checkboxes = [
2
- { name: 'Coffee', id: 'coffee', checked: false },
3
- { name: 'Ice Cream', id: 'ice-cream', checked: false },
4
- { name: 'Chocolate', id: 'chocolate', checked: true }
5
- ] %>
6
-
7
- <%= pb_rails("flex", props: { justify: "end", margin_bottom: "sm" }) do %>
8
- <%= pb_rails("flex", props: { justify: "end", margin_bottom: "sm" }) do %>
9
- <%= pb_rails("button", props: { text: "Delete", id: "delete-button" }) %>
10
- <% end %>
11
- <% end %>
12
-
13
- <%= pb_rails("table", props: { size: "sm" }) do %>
14
- <%= pb_rails("table/table_head") do %>
15
- <%= pb_rails("table/table_row") do %>
16
- <%= pb_rails("table/table_header") do %>
17
- <%= pb_rails("checkbox", props: {
18
- checked: true,
19
- value: "checkbox-value",
20
- name: "main-checkbox-selectable",
21
- indeterminate: true,
22
- id: "checkbox-selectable"
23
- }) %>
24
- <% end %>
25
- <%= pb_rails("table/table_header", props: { text: "Column 1" }) %>
26
- <%= pb_rails("table/table_header", props: { text: "Column 2" }) %>
27
- <%= pb_rails("table/table_header", props: { text: "Column 3" }) %>
28
- <%= pb_rails("table/table_header", props: { text: "Column 4" }) %>
29
- <%= pb_rails("table/table_header", props: { text: "Column 5" }) %>
30
- <% end %>
31
- <% end %>
32
- <%= pb_rails("table/table_body") do %>
33
- <% checkboxes.each_with_index do |checkbox, index| %>
34
- <%= pb_rails("table/table_row") do %>
35
- <%= pb_rails("table/table_cell") do %>
36
- <%= pb_rails("checkbox", props: { checked: checkbox[:checked], id: "#{checkbox[:id]}-selectable-checkbox", name: "#{checkbox[:id]}-selectable-checkbox", on_change: "updateCheckboxes(#{index})", value: "check-box value" }) %>
37
- <% end %>
38
- <%= pb_rails("table/table_cell") do %>
39
- <%= pb_rails("image", props: { alt: "picture of a misty forest", size: "xs", url: "https://unsplash.it/500/400/?image=634" }) %>
40
- <% end %>
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
- <% end %>
46
- <% end %>
47
- <% end %>
48
- <% end %>
49
-
50
- <script>
51
- document.addEventListener('DOMContentLoaded', function() {
52
- const mainCheckboxWrapper = document.getElementById('checkbox-selectable');
53
- const mainCheckbox = document.getElementsByName("main-checkbox-selectable")[0];
54
- const childCheckboxes = document.querySelectorAll('input[type="checkbox"][id$="selectable-checkbox"]');
55
- const deleteButton = document.getElementById('delete-button');
56
-
57
- const updateDeleteButton = () => {
58
- const anyChecked = Array.from(childCheckboxes).some(checkbox => checkbox.checked);
59
- deleteButton.style.display = anyChecked ? 'block' : 'none';
60
- };
61
-
62
- const updateMainCheckbox = () => {
63
- // Count the number of checked child checkboxes
64
- const checkedCount = Array.from(childCheckboxes).filter(cb => cb.checked).length;
65
- // Determine if the main checkbox should be in an indeterminate state
66
- const indeterminate = checkedCount > 0 && checkedCount < childCheckboxes.length;
67
-
68
- // Set the main checkbox states
69
- mainCheckbox.indeterminate = indeterminate;
70
- mainCheckbox.checked = checkedCount > 0;
71
-
72
- // Determine the icon class to add and remove based on the number of checked checkboxes
73
- const iconClassToAdd = checkedCount === 0 ? 'pb_checkbox_checkmark' : 'pb_checkbox_indeterminate';
74
- const iconClassToRemove = checkedCount === 0 ? 'pb_checkbox_indeterminate' : 'pb_checkbox_checkmark';
75
-
76
- // Add and remove the icon class to the main checkbox wrapper
77
- mainCheckboxWrapper.querySelector('[data-pb-checkbox-icon-span]').classList.add(iconClassToAdd);
78
- mainCheckboxWrapper.querySelector('[data-pb-checkbox-icon-span]').classList.remove(iconClassToRemove);
79
-
80
- // Toggle the visibility of the checkbox icon based on the indeterminate state
81
- mainCheckboxWrapper.getElementsByClassName("indeterminate_icon")[0].classList.toggle('hidden', !indeterminate);
82
- mainCheckboxWrapper.getElementsByClassName("check_icon")[0].classList.toggle('hidden', indeterminate);
83
-
84
- updateDeleteButton();
85
- };
86
-
87
- mainCheckbox.addEventListener('change', function() {
88
- childCheckboxes.forEach(cb => cb.checked = this.checked);
89
- updateMainCheckbox();
90
- });
91
-
92
- childCheckboxes.forEach(cb => {
93
- cb.addEventListener('change', updateMainCheckbox);
94
- });
95
- });
96
- </script>
@@ -1,101 +0,0 @@
1
- import React, { useState } from 'react'
2
- import { Table, Checkbox, Image, Flex, Button } from 'playbook-ui'
3
-
4
- const TableWithSelectableRows = (props) => {
5
- const [checkboxes, setCheckboxes] = useState([
6
- { name: "Coffee", checked: false },
7
- { name: "Ice Cream", checked: false },
8
- { name: "Chocolate", checked: true },
9
- ]);
10
-
11
- const isAllChecked = !checkboxes.find((checkbox) => !checkbox.checked);
12
- const isNoneChecked = !checkboxes.find((checkbox) => checkbox.checked);
13
-
14
- const processCheckboxes = (checked) =>
15
- checkboxes.slice(0).map((checkbox) => {
16
- checkbox.checked = checked;
17
- return checkbox;
18
- });
19
-
20
- const onToggleAll = () => {
21
- setCheckboxes(
22
- isNoneChecked ? processCheckboxes(true) : processCheckboxes(false)
23
- );
24
- };
25
-
26
- const updateCheckboxes = (checkbox, index) => {
27
- const newCheckboxes = checkboxes.slice(0);
28
- newCheckboxes[index].checked = !checkbox.checked;
29
- setCheckboxes(newCheckboxes);
30
- };
31
-
32
- return (
33
- <>
34
- <Flex
35
- justify="end"
36
- marginBottom="sm"
37
- >
38
- {!isNoneChecked && (
39
- <Flex
40
- justify="end"
41
- marginBottom="sm"
42
- >
43
- <Button>Delete</Button>
44
- </Flex>
45
- )}
46
- </Flex>
47
- <Table
48
- size="sm"
49
- {...props}
50
- >
51
- <Table.Head>
52
- <Table.Row>
53
- <Table.Header>
54
- <Checkbox
55
- checked={isAllChecked}
56
- indeterminate={!isAllChecked && !isNoneChecked}
57
- name="checkbox-name"
58
- onChange={onToggleAll}
59
- value="check-box value"
60
- />
61
- </Table.Header>
62
- <Table.Header>{"Column 1"}</Table.Header>
63
- <Table.Header>{"Column 2"}</Table.Header>
64
- <Table.Header>{"Column 3"}</Table.Header>
65
- <Table.Header>{"Column 4"}</Table.Header>
66
- <Table.Header>{"Column 5"}</Table.Header>
67
- </Table.Row>
68
- </Table.Head>
69
- <Table.Body>
70
- {checkboxes.map((checkbox, index) => (
71
- <Table.Row key={index}>
72
- <Table.Cell>
73
- <Checkbox
74
- checked={checkbox.checked}
75
- name={checkbox.name}
76
- onChange={() => {
77
- updateCheckboxes(checkbox, index);
78
- }}
79
- value="check-box value"
80
- />
81
- </Table.Cell>
82
- <Table.Cell>
83
- <Image
84
- alt="picture of a misty forest"
85
- size="xs"
86
- url="https://unsplash.it/500/400/?image=634"
87
- />
88
- </Table.Cell>
89
- <Table.Cell>{"Value 2"}</Table.Cell>
90
- <Table.Cell>{"Value 3"}</Table.Cell>
91
- <Table.Cell>{"Value 4"}</Table.Cell>
92
- <Table.Cell>{"Value 5"}</Table.Cell>
93
- </Table.Row>
94
- ))}
95
- </Table.Body>
96
- </Table>
97
- </>
98
- )
99
- }
100
-
101
- export default TableWithSelectableRows
@@ -1 +0,0 @@
1
- Use the Checkbox kit with the Table to achieve the selectable row functionality seen here.