playbook_ui 14.14.0.pre.rc.2 → 14.14.0.pre.rc.3
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_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_draggable/subcomponents/DraggableContainer.tsx +7 -4
- data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +6 -3
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +1 -6
- data/app/pb_kits/playbook/pb_nav/item.html.erb +7 -19
- data/app/pb_kits/playbook/pb_nav/nav.html.erb +3 -8
- data/app/pb_kits/playbook/pb_online_status/online_status.html.erb +1 -6
- data/app/pb_kits/playbook/pb_popover/popover.html.erb +1 -6
- 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 +3 -1
- data/app/pb_kits/playbook/pb_table/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +29 -2
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +31 -3
- data/app/pb_kits/playbook/pb_table/table_body.html.erb +13 -7
- data/app/pb_kits/playbook/pb_table/table_body.rb +2 -0
- data/app/pb_kits/playbook/pb_table/table_row.html.erb +13 -7
- data/app/pb_kits/playbook/pb_table/table_row.rb +4 -0
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.html.erb +14 -0
- data/app/pb_kits/playbook/pb_text_input/index.js +9 -0
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +5 -2
- data/dist/chunks/{_typeahead-DQTwAd_2.js → _typeahead-C_q1qAtC.js} +4 -4
- data/dist/chunks/_weekday_stacked-DCeouuO3.js +45 -0
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +8 -3
- data/dist/chunks/_weekday_stacked-ei-exO-N.js +0 -45
@@ -9,6 +9,7 @@ import {
|
|
9
9
|
import { globalProps } from "../../utilities/globalProps";
|
10
10
|
import Collapsible from "../../pb_collapsible/_collapsible";
|
11
11
|
import useCollapsible from "../../pb_collapsible/useCollapsible";
|
12
|
+
import Draggable from "../../pb_draggable/_draggable";
|
12
13
|
|
13
14
|
type TableRowPropTypes = {
|
14
15
|
aria?: { [key: string]: string };
|
@@ -19,6 +20,8 @@ type TableRowPropTypes = {
|
|
19
20
|
collapsibleSideHighlight?: boolean;
|
20
21
|
data?: { [key: string]: string };
|
21
22
|
dark?: boolean;
|
23
|
+
dragId?: string;
|
24
|
+
draggableItem?: boolean;
|
22
25
|
htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
|
23
26
|
id?: string;
|
24
27
|
toggleCellId?: string;
|
@@ -36,6 +39,8 @@ const TableRow = (props: TableRowPropTypes): React.ReactElement => {
|
|
36
39
|
className,
|
37
40
|
data = {},
|
38
41
|
dark = false,
|
42
|
+
dragId,
|
43
|
+
draggableItem = false,
|
39
44
|
htmlOptions = {},
|
40
45
|
id,
|
41
46
|
toggleCellId,
|
@@ -152,15 +157,38 @@ const TableRow = (props: TableRowPropTypes): React.ReactElement => {
|
|
152
157
|
</>
|
153
158
|
)
|
154
159
|
) : isTableTag ? (
|
155
|
-
|
160
|
+
draggableItem ? (
|
161
|
+
<Draggable.Item
|
162
|
+
{...ariaProps}
|
163
|
+
{...dataProps}
|
164
|
+
{...htmlProps}
|
165
|
+
className={classes}
|
166
|
+
dragId={dragId}
|
167
|
+
tag="tr"
|
168
|
+
>
|
169
|
+
{children}
|
170
|
+
</Draggable.Item>
|
171
|
+
) : (
|
172
|
+
<tr
|
173
|
+
{...ariaProps}
|
174
|
+
{...dataProps}
|
175
|
+
{...htmlProps}
|
176
|
+
className={classes}
|
177
|
+
id={id}
|
178
|
+
>
|
179
|
+
{children}
|
180
|
+
</tr>
|
181
|
+
)
|
182
|
+
) : draggableItem ? (
|
183
|
+
<Draggable.Item
|
156
184
|
{...ariaProps}
|
157
185
|
{...dataProps}
|
158
186
|
{...htmlProps}
|
159
187
|
className={classes}
|
160
|
-
|
188
|
+
dragId={dragId}
|
161
189
|
>
|
162
190
|
{children}
|
163
|
-
</
|
191
|
+
</Draggable.Item>
|
164
192
|
) : (
|
165
193
|
<div
|
166
194
|
{...ariaProps}
|
@@ -1,11 +1,17 @@
|
|
1
1
|
<% if object.tag == "table" %>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
2
|
+
<% if object.draggable_container %>
|
3
|
+
<%= pb_rails("draggable/draggable_container", props: { tag: "tbody", classname: object.classname, data: object.data }) do %>
|
4
|
+
<%= content.presence %>
|
5
|
+
<% end %>
|
6
|
+
<% else %>
|
7
|
+
<%= content_tag(:tbody,
|
8
|
+
aria: object.aria,
|
9
|
+
class: object.classname,
|
10
|
+
data: object.data,
|
11
|
+
id: object.id,
|
12
|
+
**combined_html_options) do %>
|
13
|
+
<%= content.presence %>
|
14
|
+
<% end %>
|
9
15
|
<% end %>
|
10
16
|
<% else %>
|
11
17
|
<%= content_tag(:div,
|
@@ -18,13 +18,19 @@
|
|
18
18
|
<% end %>
|
19
19
|
</tr>
|
20
20
|
<% elsif object.tag == "table" %>
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
21
|
+
<% if object.draggable_item %>
|
22
|
+
<%= pb_rails("draggable/draggable_item", props:{ drag_id: object.drag_id, tag: "tr", classname: object.classname, data: object.data }) do %>
|
23
|
+
<%= content.presence %>
|
24
|
+
<% end %>
|
25
|
+
<% else %>
|
26
|
+
<%= content_tag(:tr,
|
27
|
+
aria: object.aria,
|
28
|
+
class: object.classname,
|
29
|
+
data: object.data,
|
30
|
+
id: object.id,
|
31
|
+
**combined_html_options) do %>
|
32
|
+
<%= content.presence %>
|
33
|
+
<% end %>
|
28
34
|
<% end %>
|
29
35
|
<% else %>
|
30
36
|
<%= content_tag(:div,
|
@@ -13,6 +13,10 @@ module Playbook
|
|
13
13
|
prop :collapsible_content
|
14
14
|
prop :collapsible_side_highlight, type: Playbook::Props::Boolean,
|
15
15
|
default: true
|
16
|
+
prop :draggable_item, type: Playbook::Props::Boolean,
|
17
|
+
default: false
|
18
|
+
prop :drag_id, type: Playbook::Props::String,
|
19
|
+
default: nil
|
16
20
|
|
17
21
|
def classname
|
18
22
|
generate_classname("pb_table_row_kit", side_highlight_class) + tag_class
|
@@ -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"
|
@@ -27,6 +27,8 @@ export default class PbTextInput extends PbEnhancedElement {
|
|
27
27
|
ssn: 'ssn',
|
28
28
|
postal_code: 'postalCode',
|
29
29
|
zip_code: 'zipCode',
|
30
|
+
credit_card: 'creditCard',
|
31
|
+
cvv: 'cvv',
|
30
32
|
}[maskType];
|
31
33
|
|
32
34
|
if (maskKey && INPUTMASKS[maskKey]) {
|
@@ -45,6 +47,9 @@ export default class PbTextInput extends PbEnhancedElement {
|
|
45
47
|
case "currency":
|
46
48
|
sanitizedInput.value = sanitizeCurrency(formattedValue);
|
47
49
|
break;
|
50
|
+
case "credit_card":
|
51
|
+
sanitizedInput.value = sanitizeCreditCard(formattedValue);
|
52
|
+
break;
|
48
53
|
default:
|
49
54
|
sanitizedInput.value = formattedValue;
|
50
55
|
}
|
@@ -63,6 +68,10 @@ function sanitizeCurrency(input) {
|
|
63
68
|
return input.replace(/[$,]/g, "");
|
64
69
|
}
|
65
70
|
|
71
|
+
function sanitizeCreditCard(input) {
|
72
|
+
return input.replace(/\D/g, "");
|
73
|
+
}
|
74
|
+
|
66
75
|
function setCursorPosition(inputElement, cursorPosition, rawValue, formattedValue) {
|
67
76
|
const difference = formattedValue.length - rawValue.length;
|
68
77
|
const newPosition = Math.max(0, cursorPosition + difference);
|
@@ -4,13 +4,15 @@
|
|
4
4
|
module Playbook
|
5
5
|
module PbTextInput
|
6
6
|
class TextInput < Playbook::KitBase
|
7
|
-
VALID_MASKS = %w[currency
|
7
|
+
VALID_MASKS = %w[currency zip_code postal_code ssn credit_card cvv].freeze
|
8
8
|
|
9
9
|
MASK_PATTERNS = {
|
10
10
|
"currency" => '^\$\d{1,3}(?:,\d{3})*(?:\.\d{2})?$',
|
11
11
|
"zip_code" => '\d{5}',
|
12
12
|
"postal_code" => '\d{5}-\d{4}',
|
13
13
|
"ssn" => '\d{3}-\d{2}-\d{4}',
|
14
|
+
"credit_card" => '\d{4} \d{4} \d{4} \d{4}',
|
15
|
+
"cvv" => '\d{3,4}',
|
14
16
|
}.freeze
|
15
17
|
|
16
18
|
prop :autocomplete, type: Playbook::Props::Boolean,
|
@@ -34,7 +36,8 @@ module Playbook
|
|
34
36
|
prop :add_on, type: Playbook::Props::NestedProps,
|
35
37
|
nested_kit: Playbook::PbTextInput::AddOn
|
36
38
|
|
37
|
-
prop :mask, type: Playbook::Props::
|
39
|
+
prop :mask, type: Playbook::Props::Enum,
|
40
|
+
values: ["currency", "zip_code", "postal_code", "ssn", "credit_card", "cvv", nil],
|
38
41
|
default: nil
|
39
42
|
|
40
43
|
def classname
|