playbook_ui_docs 14.13.0.pre.alpha.play1884progresspill6064 → 14.13.0.pre.alpha.rails8compatible6228
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_custom_cell.jsx +75 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_rails.md +3 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_react.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb +33 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -1
- 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_checkbox/docs/_checkbox_react_hook.jsx +69 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.md +1 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +2 -1
- data/app/pb_kits/playbook/pb_checkbox/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 +90 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +5 -0
- data/app/pb_kits/playbook/pb_draggable/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_draggable/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +37 -0
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional_react.md +1 -0
- data/app/pb_kits/playbook/pb_overlay/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_overlay/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.html.erb +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.jsx +18 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_rails.md +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_react.md +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/index.js +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 +4 -1
- data/app/pb_kits/playbook/pb_table/docs/index.js +2 -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 +23 -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,51 @@
|
|
1
|
+
<% content = capture do %>
|
2
|
+
<%= pb_rails("card", props: { border_none: true, border_radius: "none", padding: "md" }) do %>
|
3
|
+
<%= pb_rails("body", props: { text: "Nested content inside a Table Row" }) %>
|
4
|
+
<% end %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<%= pb_rails("table", props: { size: "sm" }) do %>
|
8
|
+
<%= pb_rails("table/table_head") do %>
|
9
|
+
<%= pb_rails("table/table_row") do %>
|
10
|
+
<%= pb_rails("table/table_header", props: { text: "Column 1"}) %>
|
11
|
+
<%= pb_rails("table/table_header", props: { text: "Column 2"}) %>
|
12
|
+
<%= pb_rails("table/table_header", props: { text: "Column 3"}) %>
|
13
|
+
<%= pb_rails("table/table_header", props: { text: "Column 4"}) %>
|
14
|
+
<%= pb_rails("table/table_header", props: { text: "Column 5"}) %>
|
15
|
+
<%= pb_rails("table/table_header", props: { text: ""}) %>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
18
|
+
<%= pb_rails("table/table_body") do %>
|
19
|
+
<%= pb_rails("table/table_row", props: { collapsible: true, collapsible_content: content, collapsible_side_highlight: true, toggle_cell_id: "cell-1", id: "5" }) do %>
|
20
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
|
21
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
|
22
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
|
23
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
|
24
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
|
25
|
+
<%= pb_rails("table/table_cell", props: { text_align: "right", id: "cell-1", cursor: "pointer" }) do %>
|
26
|
+
<%= pb_rails("icon", props: { icon: "chevron-down", fixed_width: true, color: "primary" }) %>
|
27
|
+
<% end %>
|
28
|
+
<% end %>
|
29
|
+
<%= pb_rails("table/table_row", props: { collapsible: true, collapsible_content: content, collapsible_side_highlight: true, toggle_cell_id: "cell-2", id: "6" }) do %>
|
30
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
|
31
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
|
32
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
|
33
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
|
34
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
|
35
|
+
<%= pb_rails("table/table_cell", props: { text_align: "right", id: "cell-2", cursor: "pointer" }) do %>
|
36
|
+
<%= pb_rails("icon", props: { icon: "chevron-down", fixed_width: true, color: "primary" }) %>
|
37
|
+
<% end %>
|
38
|
+
<% end %>
|
39
|
+
<%= pb_rails("table/table_row", props: { collapsible: true, collapsible_content: content, collapsible_side_highlight: true, toggle_cell_id: "cell-3", id: "7" }) do %>
|
40
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
|
41
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
|
42
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
|
43
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
|
44
|
+
<%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
|
45
|
+
<%= pb_rails("table/table_cell", props: { text_align: "right", id: "cell-3", cursor: "pointer" }) do %>
|
46
|
+
<%= pb_rails("icon", props: { icon: "chevron-down", fixed_width: true, color: "primary" }) %>
|
47
|
+
<% end %>
|
48
|
+
<% end %>
|
49
|
+
<% end %>
|
50
|
+
<% end %>
|
51
|
+
|
@@ -0,0 +1,2 @@
|
|
1
|
+
When using the `collapsible` prop, the default functionality is that the entire Row will be clickable to toggle the Row. To limit the click event to a specific Table Cell, you can use the `toggle_cell_id` prop to pass in the id of the Cell you want to use as the trigger.
|
2
|
+
__NOTE__: `toggle_cell_id` and the `id` on the Cell you want to use as the trigger MUST be the same. Please also be aware that you will need to pass in an `id` to any Table Rows you want to be collapsible. Make sure every `id` is unique if you are using multipe collapsibles.
|
@@ -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,10 +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
|
37
38
|
- table_with_clickable_rows: Table with Clickable Rows
|
39
|
+
- table_with_selectable_rows: Table with Selectable Rows
|
38
40
|
|
39
41
|
react:
|
40
42
|
- table_sm: Small
|
@@ -71,4 +73,5 @@ examples:
|
|
71
73
|
- table_with_collapsible_with_custom_content: Table with Collapsible with Custom Content
|
72
74
|
- table_with_collapsible_with_nested_rows: Table with Collapsible with Nested Rows
|
73
75
|
- table_with_collapsible_with_nested_table: Table with Collapsible with Nested Table
|
74
|
-
- table_with_clickable_rows: Table with Clickable Rows
|
76
|
+
- table_with_clickable_rows: Table with Clickable Rows
|
77
|
+
- table_with_selectable_rows: Table with Selectable Rows
|
@@ -33,4 +33,5 @@ export { default as TableWithCollapsibleWithCustomContent } from './_table_with_
|
|
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
35
|
export { default as TableWithCollapsibleWithCustomClick } from './_table_with_collapsible_with_custom_click.jsx'
|
36
|
-
export { default as
|
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"
|