playbook_ui 16.1.0.pre.alpha.play2708fixmaxdisplayeduserprop14270 → 16.1.0.pre.alpha.play2711phonenumberkitupdatevalidation14239
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_multiple_users/_multiple_users.scss +3 -8
- data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.tsx +67 -71
- data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_multiple_users/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +9 -0
- data/dist/chunks/{_typeahead-CmMqokN8.js → _typeahead-3YhMXuMs.js} +1 -1
- data/dist/chunks/vendor.js +2 -2
- 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 +3 -4
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_max_displayed_users.jsx +0 -71
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dd27de80b668a2b1542488069299e9aa43faa0df6685fc515f67ecde9c12fef1
|
|
4
|
+
data.tar.gz: 715e911ecef41a4ae1c9915e60cb51e0913026e4448376a0e8bcf6ee6da6e2a0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 17a22ef6df9fdff617631f912aeee82d7170ca9b9f0039979e82ada596d00ba555a91019e68424c16b8e01dc6f3b43a39bbfb0a803105b76cee4f329afbec248
|
|
7
|
+
data.tar.gz: 6fb8ebbe3f63d1d3774be2f84754eb8eb5004ad9d79f4119935175f8eb70a707bc2fa50e9b3b713d163ff50c9fdecd6f79398ecee33ef78fff021e4f47ae2af7
|
|
@@ -37,11 +37,11 @@ $pb_multiple_users_size_xxs: map-get($avatar-sizes, "xxs");
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
.
|
|
40
|
+
.user_tooltip {
|
|
41
41
|
margin-left: $pb_multiple_users_overlap !important;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
.
|
|
44
|
+
.user_count_tooltip {
|
|
45
45
|
margin-left: $pb_multiple_users_overlap !important;
|
|
46
46
|
position: relative;
|
|
47
47
|
}
|
|
@@ -83,9 +83,4 @@ $pb_multiple_users_size_xxs: map-get($avatar-sizes, "xxs");
|
|
|
83
83
|
margin-right: 0;
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
|
|
87
|
-
.pb_multiple_users_count_overlap {
|
|
88
|
-
margin-left: 0 !important;
|
|
89
|
-
margin-right: $pb_multiple_users_overlap !important;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
86
|
+
}
|
|
@@ -37,7 +37,7 @@ const MultipleUsers = (props: MultipleUsersProps): React.ReactElement => {
|
|
|
37
37
|
} = props
|
|
38
38
|
|
|
39
39
|
const displayCount =
|
|
40
|
-
users.length > maxDisplayedUsers ?
|
|
40
|
+
users.length > maxDisplayedUsers ? maxDisplayedUsers - 1 : users.length
|
|
41
41
|
const usersToDisplay = users.slice(0, displayCount)
|
|
42
42
|
|
|
43
43
|
const reverseClass = reverse === true ? 'reverse' : ''
|
|
@@ -57,70 +57,6 @@ const MultipleUsers = (props: MultipleUsersProps): React.ReactElement => {
|
|
|
57
57
|
buildCss('multiple_users_badge', avatarSizeClass)
|
|
58
58
|
)
|
|
59
59
|
|
|
60
|
-
const shouldApplyOverlapClass = (index: number, length: number): boolean => {
|
|
61
|
-
return reverse ? index < length - 1 : index > 0;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const renderAvatar = (avatarData: { [key: string]: string; }, index: number) => {
|
|
65
|
-
const avatar = (
|
|
66
|
-
<Avatar
|
|
67
|
-
{...avatarData}
|
|
68
|
-
className={`pb_multiple_users_item${shouldApplyOverlapClass(index, usersToDisplay.length) ? ' pb_multiple_users_overlap' : ''}`}
|
|
69
|
-
dark={dark}
|
|
70
|
-
imageAlt={avatarData.name}
|
|
71
|
-
size={size}
|
|
72
|
-
/>
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
if (withTooltip) {
|
|
76
|
-
return (
|
|
77
|
-
<Tooltip
|
|
78
|
-
key={"user_tooltip_" + index}
|
|
79
|
-
placement='top'
|
|
80
|
-
text={avatarData.tooltip ? avatarData.tooltip : ''}
|
|
81
|
-
zIndex={10}
|
|
82
|
-
>
|
|
83
|
-
{avatar}
|
|
84
|
-
</Tooltip>
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return <div key={index}>{avatar}</div>;
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
const renderCountBadge = () => {
|
|
92
|
-
const badge = (
|
|
93
|
-
<div className={itemClasses + " pb_multiple_users_count_overlap"}>
|
|
94
|
-
{`+${users.length - displayCount}`}
|
|
95
|
-
</div>
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
if (withTooltip) {
|
|
99
|
-
return (
|
|
100
|
-
<Tooltip
|
|
101
|
-
placement='top'
|
|
102
|
-
text={
|
|
103
|
-
<div>
|
|
104
|
-
{
|
|
105
|
-
usersToDisplay.length < users.length ?
|
|
106
|
-
users.slice(displayCount).map((u, i) => (
|
|
107
|
-
<div key={i}>{u.tooltip}</div>
|
|
108
|
-
))
|
|
109
|
-
:
|
|
110
|
-
''
|
|
111
|
-
}
|
|
112
|
-
</div>
|
|
113
|
-
}
|
|
114
|
-
zIndex={10}
|
|
115
|
-
>
|
|
116
|
-
{badge}
|
|
117
|
-
</Tooltip>
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
return badge;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
60
|
return (
|
|
125
61
|
<div
|
|
126
62
|
{...ariaProps}
|
|
@@ -129,12 +65,72 @@ const MultipleUsers = (props: MultipleUsersProps): React.ReactElement => {
|
|
|
129
65
|
className={classes}
|
|
130
66
|
id={id}
|
|
131
67
|
>
|
|
132
|
-
{
|
|
133
|
-
|
|
134
|
-
|
|
68
|
+
{withTooltip ?
|
|
69
|
+
<>
|
|
70
|
+
{usersToDisplay.map((avatarData, index) => (
|
|
71
|
+
<Tooltip
|
|
72
|
+
key={"user_tooltip_" + index}
|
|
73
|
+
placement='top'
|
|
74
|
+
text={avatarData.tooltip ? avatarData.tooltip : ''}
|
|
75
|
+
zIndex={10}
|
|
76
|
+
>
|
|
77
|
+
<Avatar
|
|
78
|
+
{...avatarData}
|
|
79
|
+
className={"pb_multiple_users_item" + (withTooltip ? " user_tooltip" : "")}
|
|
80
|
+
dark={dark}
|
|
81
|
+
imageAlt={avatarData.name}
|
|
82
|
+
key={index}
|
|
83
|
+
size={size}
|
|
84
|
+
/>
|
|
85
|
+
</Tooltip>
|
|
86
|
+
))}
|
|
87
|
+
|
|
88
|
+
{users.length > maxDisplayedUsers &&
|
|
89
|
+
<Tooltip
|
|
90
|
+
placement='top'
|
|
91
|
+
text={
|
|
92
|
+
<div>
|
|
93
|
+
{
|
|
94
|
+
usersToDisplay.length < users.length ?
|
|
95
|
+
users.slice(displayCount).map((u, i) => (
|
|
96
|
+
<div key={i}>{u.tooltip}</div>
|
|
97
|
+
))
|
|
98
|
+
:
|
|
99
|
+
''
|
|
100
|
+
}
|
|
101
|
+
</div>
|
|
102
|
+
}
|
|
103
|
+
zIndex={10}
|
|
104
|
+
>
|
|
105
|
+
<div className={itemClasses + (withTooltip ? " user_count_tooltip" : "")}>
|
|
106
|
+
{`+${users.length - displayCount}`}
|
|
107
|
+
</div>
|
|
108
|
+
</Tooltip>
|
|
109
|
+
}
|
|
110
|
+
</>
|
|
111
|
+
:
|
|
112
|
+
<>
|
|
113
|
+
{usersToDisplay.map((avatarData, index) => (
|
|
114
|
+
<Avatar
|
|
115
|
+
{...avatarData}
|
|
116
|
+
className="pb_multiple_users_item"
|
|
117
|
+
dark={dark}
|
|
118
|
+
imageAlt={avatarData.name}
|
|
119
|
+
key={index}
|
|
120
|
+
size={size}
|
|
121
|
+
/>
|
|
122
|
+
))}
|
|
123
|
+
|
|
124
|
+
{users.length > maxDisplayedUsers &&
|
|
125
|
+
<div className={itemClasses}>
|
|
126
|
+
{`+${users.length - 3}`}
|
|
127
|
+
</div>
|
|
128
|
+
}
|
|
129
|
+
</>
|
|
130
|
+
}
|
|
135
131
|
|
|
136
132
|
</div>
|
|
137
|
-
)
|
|
138
|
-
}
|
|
133
|
+
)
|
|
134
|
+
}
|
|
139
135
|
|
|
140
|
-
export default MultipleUsers
|
|
136
|
+
export default MultipleUsers
|
|
@@ -12,10 +12,9 @@ examples:
|
|
|
12
12
|
- multiple_users_reverse: Reverse
|
|
13
13
|
- multiple_users_size: Size
|
|
14
14
|
- multiple_users_with_tooltip: With Tooltip
|
|
15
|
-
- multiple_users_max_displayed_users: Max Displayed Users
|
|
16
15
|
|
|
17
16
|
swift:
|
|
18
17
|
- multiple_users_default_swift: Default
|
|
19
18
|
- multiple_users_reverse_swift: Reverse
|
|
20
19
|
- multiple_users_size_swift: Small
|
|
21
|
-
- multiple_users_props_swift: ""
|
|
20
|
+
- multiple_users_props_swift: ""
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export { default as MultipleUsersDefault } from './_multiple_users_default.jsx'
|
|
2
2
|
export { default as MultipleUsersReverse } from './_multiple_users_reverse.jsx'
|
|
3
3
|
export { default as MultipleUsersSize } from './_multiple_users_size.jsx'
|
|
4
|
-
export { default as MultipleUsersWithTooltip } from './_multiple_users_with_tooltip.jsx'
|
|
5
|
-
export { default as MultipleUsersMaxDisplayedUsers } from './_multiple_users_max_displayed_users.jsx'
|
|
4
|
+
export { default as MultipleUsersWithTooltip } from './_multiple_users_with_tooltip.jsx'
|
|
@@ -154,6 +154,15 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
|
|
|
154
154
|
wrapperRef.current.removeAttribute('data-pb-phone-validation-error')
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
+
|
|
158
|
+
// Set custom validity on the input element to prevent form submission
|
|
159
|
+
if (inputRef.current) {
|
|
160
|
+
if (hasError && error) {
|
|
161
|
+
inputRef.current.setCustomValidity(error)
|
|
162
|
+
} else {
|
|
163
|
+
inputRef.current.setCustomValidity('')
|
|
164
|
+
}
|
|
165
|
+
}
|
|
157
166
|
}
|
|
158
167
|
|
|
159
168
|
// Determine which error to display
|