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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f98400b497a72993f63ef503a8c014b76aa9345a4cf5079947ab08a900f429b
4
- data.tar.gz: 2f0cf3ca2f463c3c5e1f507949c1eb17b285beca9026fdc1036fa6c254a53b18
3
+ metadata.gz: dd27de80b668a2b1542488069299e9aa43faa0df6685fc515f67ecde9c12fef1
4
+ data.tar.gz: 715e911ecef41a4ae1c9915e60cb51e0913026e4448376a0e8bcf6ee6da6e2a0
5
5
  SHA512:
6
- metadata.gz: fcd74946caa8e71c7d93b0a23a2bc0b620b0f8007a40caa7176275c8f5735298bc1a658760e76b2c7b1227d77fd705b945a118c3b8aa15895ed2bfa405a828c0
7
- data.tar.gz: c896dd839df6ce0bda00019e7a277991e76dcfdd965e2474c198a004b1e1fa281e1db977769ca88ff7437e0f135916280a952860e543a35ddc97609ebd116f4d
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
- .pb_multiple_users_overlap {
40
+ .user_tooltip {
41
41
  margin-left: $pb_multiple_users_overlap !important;
42
42
  }
43
43
 
44
- .pb_multiple_users_count_overlap {
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 ? Math.max(1, maxDisplayedUsers - 1) : users.length
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
- {usersToDisplay.map((avatarData, index) => renderAvatar(avatarData, index))}
133
-
134
- {users.length > maxDisplayedUsers && renderCountBadge()}
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