playbook_ui 14.12.0.pre.alpha.play1887homeaddressfix5910 → 14.12.0.pre.alpha.playrailsinputmaskissue5775
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_avatar/_avatar.scss +0 -9
- data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +7 -11
- data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +7 -6
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_badge_component_overlay.jsx +3 -9
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_circle_icon_component_overlay.jsx +2 -6
- data/app/pb_kits/playbook/pb_button/button.rb +1 -1
- data/app/pb_kits/playbook/pb_copy_button/_copy_button.scss +1 -2
- data/app/pb_kits/playbook/pb_copy_button/docs/example.yml +3 -3
- data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +6 -1
- data/app/pb_kits/playbook/pb_filter/filter.html.erb +5 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/index.js +5 -7
- data/app/pb_kits/playbook/pb_form_group/form_group.html.erb +6 -1
- data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +1 -1
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +7 -11
- data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_home_address_street/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +2 -13
- data/app/pb_kits/playbook/pb_link/_link.tsx +0 -18
- data/app/pb_kits/playbook/pb_link/docs/example.yml +3 -5
- data/app/pb_kits/playbook/pb_link/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_link/link.html.erb +1 -1
- data/app/pb_kits/playbook/pb_link/link.rb +0 -6
- data/app/pb_kits/playbook/pb_link/link.test.jsx +0 -30
- data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tooltip.html.erb +6 -6
- data/app/pb_kits/playbook/pb_table/docs/_table_with_background_kit.html.erb +9 -6
- data/app/pb_kits/playbook/pb_table/docs/_table_with_background_kit.jsx +9 -6
- data/app/pb_kits/playbook/pb_table/styles/_desktop_collapse.scss +0 -26
- data/app/pb_kits/playbook/pb_table/styles/_mobile.scss +1 -0
- data/app/pb_kits/playbook/pb_table/styles/_mobile_collapse.scss +0 -25
- data/app/pb_kits/playbook/pb_table/styles/_tablet_collapse.scss +0 -25
- data/app/pb_kits/playbook/pb_text_input/index.js +54 -55
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +1 -1
- data/app/pb_kits/playbook/pb_tooltip/index.js +27 -45
- data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +1 -5
- data/app/pb_kits/playbook/pb_user/_user.tsx +0 -3
- data/app/pb_kits/playbook/pb_user/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_user/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_user/user.html.erb +1 -1
- data/app/pb_kits/playbook/pb_user/user.rb +0 -1
- data/app/pb_kits/playbook/pb_user/user.test.js +0 -14
- data/dist/chunks/{_typeahead-CkemExmL.js → _typeahead-BIhRQo8Q.js} +3 -3
- data/dist/chunks/{_weekday_stacked-C2x2rHKi.js → _weekday_stacked-CttHBFW3.js} +2 -2
- data/dist/chunks/{lib-DjpLC8uO.js → lib-kMuhBuU7.js} +1 -1
- data/dist/chunks/{pb_form_validation-S56UaHZl.js → pb_form_validation-DBJ0wZuS.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +2 -2
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +7 -23
- data/app/pb_kits/playbook/pb_copy_button/copy_button.html.erb +0 -15
- data/app/pb_kits/playbook/pb_copy_button/copy_button.rb +0 -28
- data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.html.erb +0 -2
- data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.html.erb +0 -5
- data/app/pb_kits/playbook/pb_copy_button/index.js +0 -47
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close.html.erb +0 -58
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close_rails.md +0 -3
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting.html.erb +0 -11
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting.jsx +0 -22
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_rails.md +0 -1
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_react.md +0 -1
- data/app/pb_kits/playbook/pb_link/docs/_link_target.html.erb +0 -15
- data/app/pb_kits/playbook/pb_link/docs/_link_target.jsx +0 -29
- data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.html.erb +0 -42
- data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.jsx +0 -59
- data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.md +0 -2
- /data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/{_fixed_confirmation_toast_auto_close_react.md → _fixed_confirmation_toast_auto_close.md} +0 -0
@@ -2,7 +2,7 @@
|
|
2
2
|
<%= pb_rails("progress_step/progress_step_item", props: {status: "complete", classname: "tooltip-trigger-1", tooltip: "Tooltip for step 1", tooltip_position: "right", step_direction: "horizontal" }) do %>
|
3
3
|
step 1
|
4
4
|
<% end %>
|
5
|
-
<%= pb_rails("progress_step/progress_step_item", props: {status: "complete", classname: "tooltip-trigger-2", tooltip: "Tooltip for step 2",
|
5
|
+
<%= pb_rails("progress_step/progress_step_item", props: {status: "complete", classname: "tooltip-trigger-2", tooltip: "Tooltip for step 2", step_direction: "horizontal" }) do %>
|
6
6
|
step 2
|
7
7
|
<% end %>
|
8
8
|
<%= pb_rails("progress_step/progress_step_item", props: {status: "active", classname: "tooltip-trigger-3", tooltip: "Tooltip for step 3", tooltip_position: "left", step_direction: "horizontal" }) do %>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<%= pb_rails("progress_step/progress_step_item", props: {status: "inactive", classname: "tooltip-trigger-4", tooltip: "Tooltip for step 4", tooltip_position: "bottom" }) do %>
|
12
12
|
step 4
|
13
13
|
<% end %>
|
14
|
-
<%= pb_rails("progress_step/progress_step_item", props: {status: "inactive", classname: "tooltip-trigger-5", tooltip: "Tooltip for step 5"
|
14
|
+
<%= pb_rails("progress_step/progress_step_item", props: {status: "inactive", classname: "tooltip-trigger-5", tooltip: "Tooltip for step 5" }) do %>
|
15
15
|
step 5
|
16
16
|
<% end %>
|
17
17
|
<% end %>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<br /><br />
|
20
20
|
|
21
21
|
<%= pb_rails("progress_step", props: {orientation: "vertical"}) do %>
|
22
|
-
<%= pb_rails("progress_step/progress_step_item", props: {status: "complete", classname: "tooltip-trigger-6", tooltip: "Tooltip step 1", step_direction: "vertical"
|
22
|
+
<%= pb_rails("progress_step/progress_step_item", props: {status: "complete", classname: "tooltip-trigger-6", tooltip: "Tooltip step 1", step_direction: "vertical" }) do %>
|
23
23
|
<% end %>
|
24
24
|
<%= pb_rails("progress_step/progress_step_item", props: {status: "active", classname: "tooltip-trigger-7", tooltip: "Tooltip step 2", tooltip_position: "left"}) do %>
|
25
25
|
<% end %>
|
@@ -31,10 +31,10 @@
|
|
31
31
|
|
32
32
|
<br /><br>
|
33
33
|
<%= pb_rails("progress_step",props:{ variant:"tracker", icon:true}) do %>
|
34
|
-
<%= pb_rails("progress_step/progress_step_item", props: {status: "complete", classname: "tooltip-trigger-10", tooltip: "The order has been received", step_direction: "horizontal" , tooltip_position: "right"
|
34
|
+
<%= pb_rails("progress_step/progress_step_item", props: {status: "complete", classname: "tooltip-trigger-10", tooltip: "The order has been received", step_direction: "horizontal" , tooltip_position: "right" }) do %>
|
35
35
|
<%= pb_rails("caption", props:{text: "Ordered"})%>
|
36
36
|
<% end %>
|
37
|
-
<%= pb_rails("progress_step/progress_step_item", props: {status: "active", classname: "tooltip-trigger-11", tooltip:"Item(s) have been shipped"
|
37
|
+
<%= pb_rails("progress_step/progress_step_item", props: {status: "active", classname: "tooltip-trigger-11", tooltip:"Item(s) have been shipped" }) do %>
|
38
38
|
<%= pb_rails("caption", props:{text: "Shipped"})%>
|
39
39
|
<% end %>
|
40
40
|
<%= pb_rails("progress_step/progress_step_item", props: {status: "inactive", classname: "tooltip-trigger-12", tooltip:"This step has not been reached", tooltip_position: "left" }) do %>
|
@@ -50,7 +50,7 @@
|
|
50
50
|
<%= pb_rails("progress_step/progress_step_item", props: {status: "active", icon: "exclamation-triangle", classname: "tooltip-trigger-14", tooltip: "More details needed before shipment", tooltip_position: "bottom" }) do %>
|
51
51
|
<%= pb_rails("caption", props:{text: "Shipped"})%>
|
52
52
|
<% end %>
|
53
|
-
<%= pb_rails("progress_step/progress_step_item", props: {status: "inactive", classname: "tooltip-trigger-15", tooltip: "This step is inactive"
|
53
|
+
<%= pb_rails("progress_step/progress_step_item", props: {status: "inactive", classname: "tooltip-trigger-15", tooltip: "This step is inactive"}) do %>
|
54
54
|
<%= pb_rails("caption", props:{text: "Out for Delivery"})%>
|
55
55
|
<% end %>
|
56
56
|
<%= pb_rails("progress_step/progress_step_item", props: {status: "inactive", classname: "tooltip-trigger-16", tooltip: "Estimated delivery: Jun 27", tooltip_position: "left"}) do %>
|
@@ -39,17 +39,20 @@
|
|
39
39
|
</tr>
|
40
40
|
</tbody>
|
41
41
|
<% end %>
|
42
|
+
|
42
43
|
<%= pb_rails("table", props: { size: "sm", margin_bottom: "lg" }) do %>
|
43
44
|
<colgroup>
|
44
45
|
<%= pb_rails("background", props: { background_color: "error_subtle", tag: "col" }) %>
|
45
|
-
<%= pb_rails("background", props: { background_color: "
|
46
|
+
<%= pb_rails("background", props: { background_color: "card_light", tag: "col" }) %>
|
46
47
|
<%= pb_rails("background", props: { background_color: "warning_subtle", tag: "col" }) %>
|
47
48
|
</colgroup>
|
48
|
-
|
49
|
-
<
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
<%= pb_rails("background", props: { background_color: "card_light", tag: "thead" }) do %>
|
50
|
+
<tr>
|
51
|
+
<th>Column 1</th>
|
52
|
+
<th>Column 2</th>
|
53
|
+
<th>Column 3</th>
|
54
|
+
</tr>
|
55
|
+
<% end %>
|
53
56
|
<tbody>
|
54
57
|
<tr>
|
55
58
|
<td>Value 1</td>
|
@@ -68,7 +68,7 @@ const TableWithBackgroundKit = (props) => {
|
|
68
68
|
tag='col'
|
69
69
|
/>
|
70
70
|
<Background
|
71
|
-
backgroundColor="
|
71
|
+
backgroundColor="card_light"
|
72
72
|
tag='col'
|
73
73
|
/>
|
74
74
|
<Background
|
@@ -76,13 +76,16 @@ const TableWithBackgroundKit = (props) => {
|
|
76
76
|
tag='col'
|
77
77
|
/>
|
78
78
|
</colgroup>
|
79
|
-
<
|
79
|
+
<Background
|
80
|
+
backgroundColor="card_light"
|
81
|
+
tag='thead'
|
82
|
+
>
|
80
83
|
<tr>
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
+
<th>{'Column 1'}</th>
|
85
|
+
<th>{'Column 2'}</th>
|
86
|
+
<th>{'Column 3'}</th>
|
84
87
|
</tr>
|
85
|
-
</
|
88
|
+
</Background>
|
86
89
|
<tbody>
|
87
90
|
<tr>
|
88
91
|
<td>{'Value 1'}</td>
|
@@ -74,31 +74,6 @@
|
|
74
74
|
&.table-card {
|
75
75
|
background: none !important;
|
76
76
|
|
77
|
-
&.dark {
|
78
|
-
tbody, .pb_table_tbody {
|
79
|
-
tr, .pb_table_tr {
|
80
|
-
td, .pb_table_td {
|
81
|
-
background: $bg_dark_card !important;
|
82
|
-
border-color: $border_dark !important;
|
83
|
-
&:before {
|
84
|
-
color: $text_dk_light !important;
|
85
|
-
}
|
86
|
-
&:after {
|
87
|
-
height: 0;
|
88
|
-
background-color: transparent;
|
89
|
-
}
|
90
|
-
|
91
|
-
&:first-child {
|
92
|
-
border-radius: $border_rad_light $border_rad_light 0 0 !important;
|
93
|
-
}
|
94
|
-
&:last-child {
|
95
|
-
border-radius: 0 0 $border_rad_light $border_rad_light !important;
|
96
|
-
}
|
97
|
-
}
|
98
|
-
}
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
77
|
tbody, .pb_table_tbody {
|
103
78
|
tr, .pb_table_tr {
|
104
79
|
td, .pb_table_td {
|
@@ -106,7 +81,6 @@
|
|
106
81
|
border-left-width: 1px !important;
|
107
82
|
border-right-width: 1px !important;
|
108
83
|
border-top-width: 1px !important;
|
109
|
-
|
110
84
|
&:after {
|
111
85
|
height: 0;
|
112
86
|
background-color: transparent;
|
@@ -74,31 +74,6 @@
|
|
74
74
|
&.table-card {
|
75
75
|
background: none !important;
|
76
76
|
|
77
|
-
&.dark {
|
78
|
-
tbody, .pb_table_tbody {
|
79
|
-
tr, .pb_table_tr {
|
80
|
-
td, .pb_table_td {
|
81
|
-
background: $bg_dark_card !important;
|
82
|
-
border-color: $border_dark !important;
|
83
|
-
&:before {
|
84
|
-
color: $text_dk_light !important;
|
85
|
-
}
|
86
|
-
&:after {
|
87
|
-
height: 0;
|
88
|
-
background-color: transparent;
|
89
|
-
}
|
90
|
-
|
91
|
-
&:first-child {
|
92
|
-
border-radius: $border_rad_light $border_rad_light 0 0 !important;
|
93
|
-
}
|
94
|
-
&:last-child {
|
95
|
-
border-radius: 0 0 $border_rad_light $border_rad_light !important;
|
96
|
-
}
|
97
|
-
}
|
98
|
-
}
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
77
|
tbody, .pb_table_tbody {
|
103
78
|
tr, .pb_table_tr {
|
104
79
|
td, .pb_table_td {
|
@@ -74,31 +74,6 @@
|
|
74
74
|
&.table-card {
|
75
75
|
background: none !important;
|
76
76
|
|
77
|
-
&.dark {
|
78
|
-
tbody, .pb_table_tbody {
|
79
|
-
tr, .pb_table_tr {
|
80
|
-
td, .pb_table_td {
|
81
|
-
background: $bg_dark_card !important;
|
82
|
-
border-color: $border_dark !important;
|
83
|
-
&:before {
|
84
|
-
color: $text_dk_light !important;
|
85
|
-
}
|
86
|
-
&:after {
|
87
|
-
height: 0;
|
88
|
-
background-color: transparent;
|
89
|
-
}
|
90
|
-
|
91
|
-
&:first-child {
|
92
|
-
border-radius: $border_rad_light $border_rad_light 0 0 !important;
|
93
|
-
}
|
94
|
-
&:last-child {
|
95
|
-
border-radius: 0 0 $border_rad_light $border_rad_light !important;
|
96
|
-
}
|
97
|
-
}
|
98
|
-
}
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
77
|
tbody, .pb_table_tbody {
|
103
78
|
tr, .pb_table_tr {
|
104
79
|
td, .pb_table_td {
|
@@ -1,65 +1,67 @@
|
|
1
|
-
|
2
|
-
static start() {
|
3
|
-
const inputElements = document.querySelectorAll('[data-pb-input-mask="true"]');
|
1
|
+
import PbEnhancedElement from "../pb_enhanced_element";
|
4
2
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
let rawValue = event.target.value;
|
11
|
-
let formattedValue = rawValue;
|
12
|
-
|
13
|
-
// Apply formatting based on the mask type
|
14
|
-
switch (maskType) {
|
15
|
-
case "currency":
|
16
|
-
formattedValue = formatCurrency(rawValue);
|
17
|
-
break;
|
18
|
-
case "ssn":
|
19
|
-
formattedValue = formatSSN(rawValue);
|
20
|
-
break;
|
21
|
-
case "postal_code":
|
22
|
-
formattedValue = formatPostalCode(rawValue);
|
23
|
-
break;
|
24
|
-
case "zip_code":
|
25
|
-
formattedValue = formatZipCode(rawValue);
|
26
|
-
break;
|
27
|
-
}
|
28
|
-
|
29
|
-
// Update the sanitized input field in the same wrapper
|
30
|
-
const sanitizedInput = inputElement
|
31
|
-
.closest(".text_input_wrapper")
|
32
|
-
?.querySelector('[data="sanitized-pb-input"]');
|
3
|
+
export default class PbTextInput extends PbEnhancedElement {
|
4
|
+
static get selector() {
|
5
|
+
return '[data-pb-input-mask="true"]';
|
6
|
+
}
|
33
7
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
break;
|
39
|
-
case "currency":
|
40
|
-
sanitizedInput.value = sanitizeCurrency(formattedValue);
|
41
|
-
break;
|
42
|
-
default:
|
43
|
-
sanitizedInput.value = formattedValue;
|
44
|
-
}
|
45
|
-
}
|
8
|
+
connect() {
|
9
|
+
this.handleInput = this.handleInput.bind(this);
|
10
|
+
this.element.addEventListener("input", this.handleInput);
|
11
|
+
}
|
46
12
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
});
|
13
|
+
disconnect() {
|
14
|
+
this.element.removeEventListener("input", this.handleInput);
|
15
|
+
}
|
51
16
|
|
17
|
+
handleInput() {
|
18
|
+
const maskType = this.element.getAttribute("mask");
|
19
|
+
const cursorPosition = this.element.selectionStart;
|
20
|
+
const rawValue = this.element.value;
|
21
|
+
let formattedValue = rawValue;
|
22
|
+
|
23
|
+
switch (maskType) {
|
24
|
+
case "currency":
|
25
|
+
formattedValue = formatCurrency(rawValue);
|
26
|
+
break;
|
27
|
+
case "ssn":
|
28
|
+
formattedValue = formatSSN(rawValue);
|
29
|
+
break;
|
30
|
+
case "postal_code":
|
31
|
+
formattedValue = formatPostalCode(rawValue);
|
32
|
+
break;
|
33
|
+
case "zip_code":
|
34
|
+
formattedValue = formatZipCode(rawValue);
|
35
|
+
break;
|
36
|
+
}
|
37
|
+
|
38
|
+
const sanitizedInput = this.element
|
39
|
+
.closest(".text_input_wrapper")
|
40
|
+
?.querySelector('[data="sanitized-pb-input"]');
|
41
|
+
|
42
|
+
if (sanitizedInput) {
|
43
|
+
switch (maskType) {
|
44
|
+
case "ssn":
|
45
|
+
sanitizedInput.value = sanitizeSSN(formattedValue);
|
46
|
+
break;
|
47
|
+
case "currency":
|
48
|
+
sanitizedInput.value = sanitizeCurrency(formattedValue);
|
49
|
+
break;
|
50
|
+
default:
|
51
|
+
sanitizedInput.value = formattedValue;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
this.element.value = formattedValue;
|
56
|
+
setCursorPosition(this.element, cursorPosition, rawValue, formattedValue);
|
52
57
|
}
|
53
58
|
}
|
54
59
|
|
55
60
|
function formatCurrency(value) {
|
56
61
|
const numericValue = value.replace(/[^0-9]/g, "").slice(0, 15);
|
57
|
-
|
58
62
|
if (!numericValue) return "";
|
59
|
-
|
60
63
|
const dollars = parseFloat((parseInt(numericValue) / 100).toFixed(2));
|
61
64
|
if (dollars === 0) return "";
|
62
|
-
|
63
65
|
return new Intl.NumberFormat("en-US", {
|
64
66
|
style: "currency",
|
65
67
|
currency: "USD",
|
@@ -84,19 +86,16 @@ function formatPostalCode(value) {
|
|
84
86
|
}
|
85
87
|
|
86
88
|
function sanitizeSSN(input) {
|
87
|
-
return input.replace(/\D/g, "");
|
89
|
+
return input.replace(/\D/g, "");
|
88
90
|
}
|
89
91
|
|
90
92
|
function sanitizeCurrency(input) {
|
91
|
-
return input.replace(/[$,]/g, "");
|
93
|
+
return input.replace(/[$,]/g, "");
|
92
94
|
}
|
93
95
|
|
94
|
-
// function to set cursor position
|
95
96
|
function setCursorPosition(inputElement, cursorPosition, rawValue, formattedValue) {
|
96
97
|
const difference = formattedValue.length - rawValue.length;
|
97
|
-
|
98
98
|
const newPosition = Math.max(0, cursorPosition + difference);
|
99
|
-
|
100
99
|
requestAnimationFrame(() => {
|
101
100
|
inputElement.setSelectionRange(newPosition, newPosition);
|
102
101
|
});
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import PbEnhancedElement from '../pb_enhanced_element'
|
2
|
+
|
2
3
|
import {
|
3
4
|
createPopperLite as createPopper,
|
4
5
|
flip,
|
@@ -16,34 +17,27 @@ export default class PbTooltip extends PbEnhancedElement {
|
|
16
17
|
|
17
18
|
connect() {
|
18
19
|
this.triggerElements.forEach((trigger) => {
|
19
|
-
|
20
|
-
|
21
|
-
if (method === 'click') {
|
22
|
-
trigger.addEventListener('click', () => {
|
20
|
+
trigger.addEventListener('mouseenter', () => {
|
21
|
+
this.mouseenterTimeout = setTimeout(() => {
|
23
22
|
this.showTooltip(trigger)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
this.showTooltip(trigger)
|
29
|
-
this.checkCloseTooltip(trigger)
|
30
|
-
}, TOOLTIP_TIMEOUT)
|
31
|
-
|
32
|
-
trigger.addEventListener('mouseleave', () => {
|
33
|
-
clearTimeout(this.mouseenterTimeout)
|
34
|
-
setTimeout(() => {
|
35
|
-
this.hideTooltip()
|
36
|
-
}, 0)
|
37
|
-
}, { once: true })
|
38
|
-
})
|
39
|
-
|
40
|
-
this.tooltip.addEventListener('mouseenter', () => {
|
23
|
+
this.checkCloseTooltip(trigger)
|
24
|
+
}, TOOLTIP_TIMEOUT)
|
25
|
+
|
26
|
+
trigger.addEventListener('mouseleave', () => {
|
41
27
|
clearTimeout(this.mouseenterTimeout)
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
28
|
+
|
29
|
+
setTimeout(() => {
|
30
|
+
this.hideTooltip()
|
31
|
+
}, 0)
|
32
|
+
}, { once: true })
|
33
|
+
})
|
34
|
+
})
|
35
|
+
|
36
|
+
this.tooltip.addEventListener('mouseenter', () => {
|
37
|
+
clearTimeout(this.mouseenterTimeout)
|
38
|
+
})
|
39
|
+
this.tooltip.addEventListener('mouseleave', () => {
|
40
|
+
this.hideTooltip()
|
47
41
|
})
|
48
42
|
}
|
49
43
|
|
@@ -60,7 +54,7 @@ export default class PbTooltip extends PbEnhancedElement {
|
|
60
54
|
}
|
61
55
|
|
62
56
|
showTooltip(trigger) {
|
63
|
-
if (this.shouldShowTooltip ===
|
57
|
+
if (this.shouldShowTooltip === "false") return
|
64
58
|
|
65
59
|
this.popper = createPopper(trigger, this.tooltip, {
|
66
60
|
placement: this.position,
|
@@ -84,13 +78,6 @@ export default class PbTooltip extends PbEnhancedElement {
|
|
84
78
|
],
|
85
79
|
})
|
86
80
|
this.tooltip.classList.add('show')
|
87
|
-
|
88
|
-
if (this.triggerMethod === 'click') {
|
89
|
-
clearTimeout(this.autoHideTimeout)
|
90
|
-
this.autoHideTimeout = setTimeout(() => {
|
91
|
-
this.hideTooltip()
|
92
|
-
}, 1000)
|
93
|
-
}
|
94
81
|
}
|
95
82
|
|
96
83
|
hideTooltip() {
|
@@ -107,26 +94,25 @@ export default class PbTooltip extends PbEnhancedElement {
|
|
107
94
|
let triggerEl
|
108
95
|
|
109
96
|
if (this.triggerElementId) {
|
110
|
-
triggerEl = document.querySelector(`#${this.triggerElementId}`)
|
97
|
+
triggerEl = document.querySelector(`#${this.triggerElementId}`) //deprecated
|
111
98
|
} else {
|
112
99
|
const selectorIsId = this.triggerElementSelector.indexOf('#') > -1
|
113
|
-
triggerEl = selectorIsId
|
114
|
-
|
115
|
-
: document.querySelectorAll(`${this.triggerElementSelector}`)
|
100
|
+
triggerEl = selectorIsId ? document.querySelector(`${this.triggerElementSelector}`) :
|
101
|
+
document.querySelectorAll(`${this.triggerElementSelector}`)
|
116
102
|
}
|
117
103
|
|
118
104
|
if (!triggerEl) {
|
105
|
+
/* eslint no-console: ["error", { allow: ["warn", "error"] }] */
|
119
106
|
console.error('Tooltip Kit: an invalid or unavailable DOM reference was provided!')
|
120
107
|
return []
|
121
108
|
}
|
122
109
|
|
123
110
|
if (!triggerEl.length) triggerEl = [triggerEl]
|
124
|
-
return
|
111
|
+
return this._triggerElements = (this._triggerElements || triggerEl)
|
125
112
|
}
|
126
113
|
|
127
114
|
get tooltip() {
|
128
|
-
return (this._tooltip
|
129
|
-
this._tooltip || this.element.querySelector(`#${this.tooltipId}`))
|
115
|
+
return this._tooltip = (this._tooltip || this.element.querySelector(`#${this.tooltipId}`))
|
130
116
|
}
|
131
117
|
|
132
118
|
get position() {
|
@@ -148,8 +134,4 @@ export default class PbTooltip extends PbEnhancedElement {
|
|
148
134
|
get shouldShowTooltip() {
|
149
135
|
return this.element.dataset.pbTooltipShowTooltip
|
150
136
|
}
|
151
|
-
|
152
|
-
get triggerMethod() {
|
153
|
-
return this.element.dataset.pbTooltipTriggerMethod || 'hover'
|
154
|
-
}
|
155
137
|
}
|
@@ -9,9 +9,6 @@ module Playbook
|
|
9
9
|
prop :tooltip_id
|
10
10
|
prop :dark, type: Playbook::Props::Boolean,
|
11
11
|
default: false
|
12
|
-
prop :trigger_method, type: Playbook::Props::Enum,
|
13
|
-
values: %w[hover click],
|
14
|
-
default: "hover"
|
15
12
|
|
16
13
|
def classname
|
17
14
|
generate_classname("pb_tooltip_kit", dark_class)
|
@@ -24,8 +21,7 @@ module Playbook
|
|
24
21
|
pb_tooltip_trigger_element_selector: trigger_element_selector,
|
25
22
|
pb_tooltip_trigger_element_id: trigger_element_id,
|
26
23
|
pb_tooltip_tooltip_id: tooltip_id,
|
27
|
-
pb_tooltip_show_tooltip: true
|
28
|
-
pb_tooltip_trigger_method: trigger_method
|
24
|
+
pb_tooltip_show_tooltip: true
|
29
25
|
)
|
30
26
|
end
|
31
27
|
|
@@ -13,7 +13,6 @@ type UserProps = {
|
|
13
13
|
aria?: {[key: string]: string},
|
14
14
|
avatar?: boolean,
|
15
15
|
avatarUrl?: string,
|
16
|
-
bold?: boolean,
|
17
16
|
className?: string,
|
18
17
|
dark?: boolean,
|
19
18
|
data?: {[key: string]: string},
|
@@ -33,7 +32,6 @@ const User = (props: UserProps): React.ReactElement => {
|
|
33
32
|
aria = {},
|
34
33
|
avatar = false,
|
35
34
|
avatarUrl,
|
36
|
-
bold = true,
|
37
35
|
className,
|
38
36
|
dark = false,
|
39
37
|
data = {},
|
@@ -77,7 +75,6 @@ const User = (props: UserProps): React.ReactElement => {
|
|
77
75
|
}
|
78
76
|
<div className="content_wrapper">
|
79
77
|
<Title
|
80
|
-
bold={bold}
|
81
78
|
dark={dark}
|
82
79
|
size={size == 'lg' ? 3 : 4}
|
83
80
|
text={name}
|
@@ -2,7 +2,6 @@ examples:
|
|
2
2
|
|
3
3
|
rails:
|
4
4
|
- user_default: Default
|
5
|
-
- user_light_weight: Light Weight
|
6
5
|
- user_with_territory: With Territory
|
7
6
|
- user_text_only: Text Only
|
8
7
|
- user_size: Horizontal Size
|
@@ -12,7 +11,6 @@ examples:
|
|
12
11
|
|
13
12
|
react:
|
14
13
|
- user_default: Default
|
15
|
-
- user_light_weight: Light Weight
|
16
14
|
- user_with_territory: With Territory
|
17
15
|
- user_text_only: Text Only
|
18
16
|
- user_size: Horizontal Size
|
@@ -1,5 +1,4 @@
|
|
1
1
|
export { default as UserDefault } from './_user_default.jsx'
|
2
|
-
export { default as UserLightWeight } from './_user_light_weight.jsx'
|
3
2
|
export { default as UserWithTerritory } from './_user_with_territory.jsx'
|
4
3
|
export { default as UserTextOnly } from './_user_text_only.jsx'
|
5
4
|
export { default as UserSize } from './_user_size.jsx'
|
@@ -12,7 +12,7 @@
|
|
12
12
|
}) %>
|
13
13
|
<% end %>
|
14
14
|
<%= content_tag(:div, class: "content_wrapper") do %>
|
15
|
-
<%= pb_rails("title", props: { text: object.name, size: object.title_size, dark: object.dark
|
15
|
+
<%= pb_rails("title", props: { text: object.name, size: object.title_size, dark: object.dark }) %>
|
16
16
|
<%= pb_rails("body", props: {
|
17
17
|
text: "#{object.details}",
|
18
18
|
dark: object.dark,
|
@@ -26,17 +26,3 @@ test('subtitle prop accepts a node', () => {
|
|
26
26
|
|
27
27
|
expect(screen.getByTestId('test-subtitle-block')).toHaveTextContent('test caption')
|
28
28
|
})
|
29
|
-
|
30
|
-
test('bold prop applies correct styling when false', () => {
|
31
|
-
render(
|
32
|
-
<User
|
33
|
-
bold={false}
|
34
|
-
data={{ testid: 'test-bold-false' }}
|
35
|
-
name="Anna Black"
|
36
|
-
/>
|
37
|
-
)
|
38
|
-
const titleElement = screen.getByText("Anna Black")
|
39
|
-
expect(titleElement).toBeInTheDocument()
|
40
|
-
|
41
|
-
expect(titleElement).toHaveClass('pb_title_kit_size_4_thin')
|
42
|
-
})
|