playbook_ui_docs 14.13.0.pre.alpha.PBNTR5596029 → 14.13.0.pre.alpha.PLAY1856doc6166
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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +64 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +1 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.html.erb +2 -2
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.md +4 -1
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx +1 -0
- data/app/pb_kits/playbook/pb_draggable/docs/example.yml +1 -1
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +71 -36
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +6 -6
- data/app/pb_kits/playbook/pb_drawer/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_default.html.erb +1 -2
- data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_sizes.html.erb +27 -0
- data/app/pb_kits/playbook/pb_icon_button/docs/example.yml +1 -3
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +7 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.md +1 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.html.erb +47 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.jsx +88 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.md +1 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb +51 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md +2 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +96 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.jsx +101 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.md +1 -0
- data/app/pb_kits/playbook/pb_table/docs/example.yml +5 -0
- data/app/pb_kits/playbook/pb_table/docs/index.js +3 -1
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.html.erb +14 -0
- data/dist/playbook-doc.js +1 -1
- metadata +15 -14
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.html.erb +0 -19
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.jsx +0 -26
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.html.erb +0 -10
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.jsx +0 -17
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_on_click.jsx +0 -19
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_onclick.html.erb +0 -16
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.html.erb +0 -35
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.jsx +0 -42
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_tooltip.html.erb +0 -13
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/example.yml +0 -15
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/index.js +0 -4
- /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
@@ -0,0 +1,96 @@
|
|
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>
|
@@ -0,0 +1,101 @@
|
|
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
|
@@ -0,0 +1 @@
|
|
1
|
+
Use the Checkbox kit with the Table to achieve the selectable row functionality seen here.
|
@@ -31,9 +31,12 @@ 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
|
38
|
+
- table_with_clickable_rows: Table with Clickable Rows
|
39
|
+
- table_with_selectable_rows: Table with Selectable Rows
|
37
40
|
|
38
41
|
react:
|
39
42
|
- table_sm: Small
|
@@ -70,3 +73,5 @@ examples:
|
|
70
73
|
- table_with_collapsible_with_custom_content: Table with Collapsible with Custom Content
|
71
74
|
- table_with_collapsible_with_nested_rows: Table with Collapsible with Nested Rows
|
72
75
|
- table_with_collapsible_with_nested_table: Table with Collapsible with Nested Table
|
76
|
+
- table_with_clickable_rows: Table with Clickable Rows
|
77
|
+
- table_with_selectable_rows: Table with Selectable Rows
|
@@ -32,4 +32,6 @@ export { default as TableWithCollapsible } from './_table_with_collapsible.jsx'
|
|
32
32
|
export { default as TableWithCollapsibleWithCustomContent } from './_table_with_collapsible_with_custom_content.jsx'
|
33
33
|
export { default as TableWithCollapsibleWithNestedTable } from './_table_with_collapsible_with_nested_table.jsx'
|
34
34
|
export { default as TableWithCollapsibleWithNestedRows } from './_table_with_collapsible_with_nested_rows.jsx'
|
35
|
-
export { default as TableWithCollapsibleWithCustomClick } from './_table_with_collapsible_with_custom_click.jsx'
|
35
|
+
export { default as TableWithCollapsibleWithCustomClick } from './_table_with_collapsible_with_custom_click.jsx'
|
36
|
+
export { default as TableWithSelectableRows } from './_table_with_selectable_rows.jsx'
|
37
|
+
export { default as TableWithClickableRows } from './_table_with_clickable_rows.jsx'
|
@@ -27,6 +27,20 @@
|
|
27
27
|
placeholder: "123-45-6789"
|
28
28
|
}) %>
|
29
29
|
|
30
|
+
<%= pb_rails("text_input", props: {
|
31
|
+
label: "Credit Card",
|
32
|
+
mask: "credit_card",
|
33
|
+
margin_bottom: "md",
|
34
|
+
placeholder: "1234 5678 9012 3456"
|
35
|
+
}) %>
|
36
|
+
|
37
|
+
<%= pb_rails("text_input", props: {
|
38
|
+
label: "CVV",
|
39
|
+
mask: "cvv",
|
40
|
+
margin_bottom: "md",
|
41
|
+
placeholder: "123"
|
42
|
+
}) %>
|
43
|
+
|
30
44
|
<%= pb_rails("title" , props: {
|
31
45
|
text: "Hidden Input Under The Hood",
|
32
46
|
padding_bottom: "sm"
|