@fluentui-react-native/experimental-avatar 0.14.24 → 0.14.27
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.
- package/CHANGELOG.json +46 -1
- package/CHANGELOG.md +26 -2
- package/jest.config.js +2 -0
- package/lib/JSAvatar.d.ts.map +1 -1
- package/lib/JSAvatar.js +7 -6
- package/lib/JSAvatar.js.map +1 -1
- package/lib/JSAvatar.styling.d.ts.map +1 -1
- package/lib/JSAvatar.styling.js +9 -12
- package/lib/JSAvatar.styling.js.map +1 -1
- package/lib/JSAvatar.types.d.ts +50 -7
- package/lib/JSAvatar.types.d.ts.map +1 -1
- package/lib/JSAvatar.types.js +2 -1
- package/lib/JSAvatar.types.js.map +1 -1
- package/lib/JSAvatarTokens.d.ts.map +1 -1
- package/lib/JSAvatarTokens.js +142 -56
- package/lib/JSAvatarTokens.js.map +1 -1
- package/lib/titles.d.ts +2 -0
- package/lib/titles.d.ts.map +1 -0
- package/lib/titles.js +109 -0
- package/lib/titles.js.map +1 -0
- package/lib/useAvatar.d.ts +25 -0
- package/lib/useAvatar.d.ts.map +1 -1
- package/lib/useAvatar.js +49 -2
- package/lib/useAvatar.js.map +1 -1
- package/lib/utils/getInitials.d.ts +15 -0
- package/lib/utils/getInitials.d.ts.map +1 -0
- package/lib/utils/getInitials.js +78 -0
- package/lib/utils/getInitials.js.map +1 -0
- package/lib/utils/getInitials.test.d.ts +2 -0
- package/lib/utils/getInitials.test.d.ts.map +1 -0
- package/lib/utils/getInitials.test.js +116 -0
- package/lib/utils/getInitials.test.js.map +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +2 -0
- package/lib/utils/index.js.map +1 -0
- package/lib-commonjs/JSAvatar.d.ts.map +1 -1
- package/lib-commonjs/JSAvatar.js +7 -6
- package/lib-commonjs/JSAvatar.js.map +1 -1
- package/lib-commonjs/JSAvatar.styling.d.ts.map +1 -1
- package/lib-commonjs/JSAvatar.styling.js +7 -10
- package/lib-commonjs/JSAvatar.styling.js.map +1 -1
- package/lib-commonjs/JSAvatar.types.d.ts +50 -7
- package/lib-commonjs/JSAvatar.types.d.ts.map +1 -1
- package/lib-commonjs/JSAvatar.types.js +3 -2
- package/lib-commonjs/JSAvatar.types.js.map +1 -1
- package/lib-commonjs/JSAvatarTokens.d.ts.map +1 -1
- package/lib-commonjs/JSAvatarTokens.js +142 -56
- package/lib-commonjs/JSAvatarTokens.js.map +1 -1
- package/lib-commonjs/titles.d.ts +2 -0
- package/lib-commonjs/titles.d.ts.map +1 -0
- package/lib-commonjs/titles.js +112 -0
- package/lib-commonjs/titles.js.map +1 -0
- package/lib-commonjs/useAvatar.d.ts +25 -0
- package/lib-commonjs/useAvatar.d.ts.map +1 -1
- package/lib-commonjs/useAvatar.js +53 -3
- package/lib-commonjs/useAvatar.js.map +1 -1
- package/lib-commonjs/utils/getInitials.d.ts +15 -0
- package/lib-commonjs/utils/getInitials.d.ts.map +1 -0
- package/lib-commonjs/utils/getInitials.js +82 -0
- package/lib-commonjs/utils/getInitials.js.map +1 -0
- package/lib-commonjs/utils/getInitials.test.d.ts +2 -0
- package/lib-commonjs/utils/getInitials.test.d.ts.map +1 -0
- package/lib-commonjs/utils/getInitials.test.js +118 -0
- package/lib-commonjs/utils/getInitials.test.js.map +1 -0
- package/lib-commonjs/utils/index.d.ts +2 -0
- package/lib-commonjs/utils/index.d.ts.map +1 -0
- package/lib-commonjs/utils/index.js +6 -0
- package/lib-commonjs/utils/index.js.map +1 -0
- package/package.json +1 -1
- package/src/.eslintrc.js +3 -0
- package/src/JSAvatar.styling.ts +8 -9
- package/src/JSAvatar.tsx +7 -6
- package/src/JSAvatar.types.ts +57 -7
- package/src/JSAvatarTokens.ts +142 -56
- package/src/__tests__/JSAvatar.test.jsx +156 -0
- package/src/__tests__/__snapshots__/JSAvatar.test.jsx.snap +34 -0
- package/src/titles.ts +108 -0
- package/src/useAvatar.ts +53 -1
- package/src/utils/getInitials.test.ts +154 -0
- package/src/utils/getInitials.ts +92 -0
- package/src/utils/index.ts +1 -0
- package/tsconfig.json +2 -1
package/src/JSAvatarTokens.ts
CHANGED
|
@@ -10,6 +10,11 @@ export const defaultJSAvatarTokens: TokenSettings<JSAvatarTokens, Theme> = (t: T
|
|
|
10
10
|
color: globalTokens.color.white,
|
|
11
11
|
backgroundColor: globalTokens.color.cornflower.primary,
|
|
12
12
|
avatarOpacity: 1,
|
|
13
|
+
fontFamily: t.typography.families.primary,
|
|
14
|
+
fontWeight: globalTokens.font.weight.semibold,
|
|
15
|
+
fontSize: globalTokens.font.size[200],
|
|
16
|
+
width: 24,
|
|
17
|
+
height: 24,
|
|
13
18
|
circular: {
|
|
14
19
|
borderRadius: globalTokens.corner.radius.circle,
|
|
15
20
|
},
|
|
@@ -23,184 +28,265 @@ export const defaultJSAvatarTokens: TokenSettings<JSAvatarTokens, Theme> = (t: T
|
|
|
23
28
|
width: 20,
|
|
24
29
|
height: 20,
|
|
25
30
|
badgeSize: 'smallest',
|
|
26
|
-
iconSize:
|
|
27
|
-
|
|
31
|
+
iconSize: 16,
|
|
32
|
+
fontSize: globalTokens.font.size[100],
|
|
33
|
+
square: {
|
|
34
|
+
borderRadius: globalTokens.corner.radius.small,
|
|
35
|
+
},
|
|
28
36
|
},
|
|
29
37
|
size24: {
|
|
30
38
|
width: 24,
|
|
31
39
|
height: 24,
|
|
32
40
|
badgeSize: 'smallest',
|
|
33
|
-
iconSize:
|
|
34
|
-
|
|
41
|
+
iconSize: 16,
|
|
42
|
+
fontSize: globalTokens.font.size[100],
|
|
43
|
+
square: {
|
|
44
|
+
borderRadius: globalTokens.corner.radius.small,
|
|
45
|
+
},
|
|
35
46
|
},
|
|
36
47
|
size28: {
|
|
37
48
|
width: 28,
|
|
38
49
|
height: 28,
|
|
39
50
|
badgeSize: 'smaller',
|
|
40
|
-
iconSize:
|
|
41
|
-
|
|
51
|
+
iconSize: 20,
|
|
52
|
+
fontWeight: globalTokens.font.weight.semibold,
|
|
53
|
+
fontSize: globalTokens.font.size[100],
|
|
42
54
|
},
|
|
43
55
|
size32: {
|
|
44
56
|
width: 32,
|
|
45
57
|
height: 32,
|
|
46
58
|
badgeSize: 'smaller',
|
|
47
|
-
iconSize:
|
|
48
|
-
|
|
59
|
+
iconSize: 20,
|
|
60
|
+
fontSize: globalTokens.font.size[100],
|
|
49
61
|
},
|
|
50
62
|
size36: {
|
|
51
63
|
width: 36,
|
|
52
64
|
height: 36,
|
|
53
65
|
badgeSize: 'smaller',
|
|
54
|
-
iconSize:
|
|
55
|
-
initialsSize: 20,
|
|
66
|
+
iconSize: 20,
|
|
56
67
|
},
|
|
57
68
|
size40: {
|
|
58
69
|
width: 40,
|
|
59
70
|
height: 40,
|
|
60
71
|
badgeSize: 'small',
|
|
61
|
-
iconSize:
|
|
62
|
-
initialsSize: 20,
|
|
72
|
+
iconSize: 20,
|
|
63
73
|
},
|
|
64
74
|
size48: {
|
|
65
75
|
width: 48,
|
|
66
76
|
height: 48,
|
|
67
77
|
badgeSize: 'small',
|
|
68
|
-
iconSize:
|
|
69
|
-
initialsSize: 24,
|
|
78
|
+
iconSize: 24,
|
|
70
79
|
},
|
|
71
80
|
size56: {
|
|
72
81
|
width: 56,
|
|
73
82
|
height: 56,
|
|
74
83
|
badgeSize: 'medium',
|
|
75
|
-
iconSize:
|
|
76
|
-
|
|
84
|
+
iconSize: 28,
|
|
85
|
+
fontSize: globalTokens.font.size[400],
|
|
86
|
+
square: {
|
|
87
|
+
borderRadius: globalTokens.corner.radius.large,
|
|
88
|
+
},
|
|
77
89
|
},
|
|
78
90
|
size64: {
|
|
79
91
|
width: 64,
|
|
80
92
|
height: 64,
|
|
81
93
|
badgeSize: 'large',
|
|
82
|
-
iconSize:
|
|
83
|
-
|
|
94
|
+
iconSize: 32,
|
|
95
|
+
fontSize: globalTokens.font.size[500],
|
|
96
|
+
square: {
|
|
97
|
+
borderRadius: globalTokens.corner.radius.large,
|
|
98
|
+
},
|
|
84
99
|
},
|
|
85
100
|
size72: {
|
|
86
101
|
width: 72,
|
|
87
102
|
height: 72,
|
|
88
103
|
badgeSize: 'large',
|
|
89
|
-
iconSize:
|
|
90
|
-
|
|
104
|
+
iconSize: 32,
|
|
105
|
+
fontSize: globalTokens.font.size[500],
|
|
106
|
+
square: {
|
|
107
|
+
borderRadius: globalTokens.corner.radius.large,
|
|
108
|
+
},
|
|
91
109
|
},
|
|
92
110
|
size96: {
|
|
93
111
|
width: 96,
|
|
94
112
|
height: 96,
|
|
95
113
|
badgeSize: 'largest',
|
|
96
|
-
iconSize:
|
|
97
|
-
|
|
114
|
+
iconSize: 48,
|
|
115
|
+
fontWeight: globalTokens.font.weight.regular,
|
|
116
|
+
fontSize: globalTokens.font.size[700],
|
|
117
|
+
square: {
|
|
118
|
+
borderRadius: globalTokens.corner.radius.extraLarge,
|
|
119
|
+
},
|
|
98
120
|
},
|
|
99
121
|
size120: {
|
|
100
122
|
width: 120,
|
|
101
123
|
height: 120,
|
|
102
124
|
badgeSize: 'largest',
|
|
103
|
-
iconSize:
|
|
104
|
-
|
|
125
|
+
iconSize: 48,
|
|
126
|
+
fontWeight: globalTokens.font.weight.regular,
|
|
127
|
+
fontSize: globalTokens.font.size[900],
|
|
128
|
+
square: {
|
|
129
|
+
borderRadius: globalTokens.corner.radius.extraLarge,
|
|
130
|
+
},
|
|
105
131
|
},
|
|
106
132
|
neutral: {
|
|
107
133
|
backgroundColor: t.colors.neutralBackground6,
|
|
108
134
|
color: t.colors.neutralForeground3,
|
|
109
|
-
|
|
135
|
+
borderColor: t.colors.defaultBorder,
|
|
110
136
|
},
|
|
111
137
|
brand: {
|
|
112
138
|
backgroundColor: t.colors.brandBackgroundStatic,
|
|
113
139
|
color: t.colors.neutralForegroundOnBrand,
|
|
114
|
-
|
|
140
|
+
borderColor: t.colors.brandedBorder,
|
|
115
141
|
},
|
|
116
142
|
darkRed: {
|
|
117
|
-
backgroundColor: globalTokens.color.darkRed.
|
|
143
|
+
backgroundColor: globalTokens.color.darkRed.tint40,
|
|
144
|
+
color: globalTokens.color.darkRed.shade30,
|
|
145
|
+
borderColor: globalTokens.color.darkRed.primary,
|
|
118
146
|
},
|
|
119
147
|
cranberry: {
|
|
120
|
-
backgroundColor: globalTokens.color.cranberry.
|
|
148
|
+
backgroundColor: globalTokens.color.cranberry.tint40,
|
|
149
|
+
color: globalTokens.color.cranberry.shade30,
|
|
150
|
+
borderColor: globalTokens.color.cranberry.primary,
|
|
121
151
|
},
|
|
122
152
|
red: {
|
|
123
|
-
backgroundColor: globalTokens.color.red.
|
|
153
|
+
backgroundColor: globalTokens.color.red.tint40,
|
|
154
|
+
color: globalTokens.color.red.shade30,
|
|
155
|
+
borderColor: globalTokens.color.red.primary,
|
|
124
156
|
},
|
|
125
157
|
pumpkin: {
|
|
126
|
-
backgroundColor: globalTokens.color.pumpkin.
|
|
158
|
+
backgroundColor: globalTokens.color.pumpkin.tint40,
|
|
159
|
+
color: globalTokens.color.pumpkin.shade30,
|
|
160
|
+
borderColor: globalTokens.color.pumpkin.primary,
|
|
127
161
|
},
|
|
128
162
|
peach: {
|
|
129
|
-
backgroundColor: globalTokens.color.peach.
|
|
163
|
+
backgroundColor: globalTokens.color.peach.tint40,
|
|
164
|
+
color: globalTokens.color.peach.shade30,
|
|
165
|
+
borderColor: globalTokens.color.peach.primary,
|
|
130
166
|
},
|
|
131
167
|
marigold: {
|
|
132
|
-
backgroundColor: globalTokens.color.marigold.
|
|
168
|
+
backgroundColor: globalTokens.color.marigold.tint40,
|
|
169
|
+
color: globalTokens.color.marigold.shade30,
|
|
170
|
+
borderColor: globalTokens.color.marigold.primary,
|
|
133
171
|
},
|
|
134
172
|
gold: {
|
|
135
|
-
backgroundColor: globalTokens.color.gold.
|
|
173
|
+
backgroundColor: globalTokens.color.gold.tint40,
|
|
174
|
+
color: globalTokens.color.gold.shade30,
|
|
175
|
+
borderColor: globalTokens.color.gold.primary,
|
|
136
176
|
},
|
|
137
177
|
brass: {
|
|
138
|
-
backgroundColor: globalTokens.color.brass.
|
|
178
|
+
backgroundColor: globalTokens.color.brass.tint40,
|
|
179
|
+
color: globalTokens.color.brass.shade30,
|
|
180
|
+
borderColor: globalTokens.color.brass.primary,
|
|
139
181
|
},
|
|
140
182
|
brown: {
|
|
141
|
-
backgroundColor: globalTokens.color.brown.
|
|
183
|
+
backgroundColor: globalTokens.color.brown.tint40,
|
|
184
|
+
color: globalTokens.color.brown.shade30,
|
|
185
|
+
borderColor: globalTokens.color.brown.primary,
|
|
142
186
|
},
|
|
143
187
|
forest: {
|
|
144
|
-
backgroundColor: globalTokens.color.forest.
|
|
188
|
+
backgroundColor: globalTokens.color.forest.tint40,
|
|
189
|
+
color: globalTokens.color.forest.shade30,
|
|
190
|
+
borderColor: globalTokens.color.forest.primary,
|
|
145
191
|
},
|
|
146
192
|
seafoam: {
|
|
147
|
-
backgroundColor: globalTokens.color.seafoam.
|
|
193
|
+
backgroundColor: globalTokens.color.seafoam.tint40,
|
|
194
|
+
color: globalTokens.color.seafoam.shade30,
|
|
195
|
+
borderColor: globalTokens.color.seafoam.primary,
|
|
148
196
|
},
|
|
149
197
|
darkGreen: {
|
|
150
|
-
backgroundColor: globalTokens.color.darkGreen.
|
|
198
|
+
backgroundColor: globalTokens.color.darkGreen.tint40,
|
|
199
|
+
color: globalTokens.color.darkGreen.shade30,
|
|
200
|
+
borderColor: globalTokens.color.darkGreen.primary,
|
|
151
201
|
},
|
|
152
202
|
lightTeal: {
|
|
153
|
-
backgroundColor: globalTokens.color.lightTeal.
|
|
203
|
+
backgroundColor: globalTokens.color.lightTeal.tint40,
|
|
204
|
+
color: globalTokens.color.lightTeal.shade30,
|
|
205
|
+
borderColor: globalTokens.color.lightTeal.primary,
|
|
154
206
|
},
|
|
155
207
|
teal: {
|
|
156
|
-
backgroundColor: globalTokens.color.teal.
|
|
208
|
+
backgroundColor: globalTokens.color.teal.tint40,
|
|
209
|
+
color: globalTokens.color.teal.shade30,
|
|
210
|
+
borderColor: globalTokens.color.teal.primary,
|
|
157
211
|
},
|
|
158
212
|
steel: {
|
|
159
|
-
backgroundColor: globalTokens.color.steel.
|
|
213
|
+
backgroundColor: globalTokens.color.steel.tint40,
|
|
214
|
+
color: globalTokens.color.steel.shade30,
|
|
215
|
+
borderColor: globalTokens.color.steel.primary,
|
|
160
216
|
},
|
|
161
217
|
blue: {
|
|
162
|
-
backgroundColor: globalTokens.color.blue.
|
|
218
|
+
backgroundColor: globalTokens.color.blue.tint40,
|
|
219
|
+
color: globalTokens.color.blue.shade30,
|
|
220
|
+
borderColor: globalTokens.color.blue.primary,
|
|
163
221
|
},
|
|
164
222
|
royalBlue: {
|
|
165
|
-
backgroundColor: globalTokens.color.royalBlue.
|
|
223
|
+
backgroundColor: globalTokens.color.royalBlue.tint40,
|
|
224
|
+
color: globalTokens.color.royalBlue.shade30,
|
|
225
|
+
borderColor: globalTokens.color.royalBlue.primary,
|
|
166
226
|
},
|
|
167
227
|
cornflower: {
|
|
168
|
-
backgroundColor: globalTokens.color.cornflower.
|
|
228
|
+
backgroundColor: globalTokens.color.cornflower.tint40,
|
|
229
|
+
color: globalTokens.color.cornflower.shade30,
|
|
230
|
+
borderColor: globalTokens.color.cornflower.primary,
|
|
169
231
|
},
|
|
170
232
|
navy: {
|
|
171
|
-
backgroundColor: globalTokens.color.navy.
|
|
233
|
+
backgroundColor: globalTokens.color.navy.tint40,
|
|
234
|
+
color: globalTokens.color.navy.shade30,
|
|
235
|
+
borderColor: globalTokens.color.navy.primary,
|
|
172
236
|
},
|
|
173
237
|
lavender: {
|
|
174
|
-
backgroundColor: globalTokens.color.lavender.
|
|
238
|
+
backgroundColor: globalTokens.color.lavender.tint40,
|
|
239
|
+
color: globalTokens.color.lavender.shade30,
|
|
240
|
+
borderColor: globalTokens.color.lavender.primary,
|
|
175
241
|
},
|
|
176
242
|
purple: {
|
|
177
|
-
backgroundColor: globalTokens.color.purple.
|
|
243
|
+
backgroundColor: globalTokens.color.purple.tint40,
|
|
244
|
+
color: globalTokens.color.purple.shade30,
|
|
245
|
+
borderColor: globalTokens.color.purple.primary,
|
|
178
246
|
},
|
|
179
247
|
grape: {
|
|
180
|
-
backgroundColor: globalTokens.color.grape.
|
|
248
|
+
backgroundColor: globalTokens.color.grape.tint40,
|
|
249
|
+
color: globalTokens.color.grape.shade30,
|
|
250
|
+
borderColor: globalTokens.color.grape.primary,
|
|
181
251
|
},
|
|
182
252
|
lilac: {
|
|
183
|
-
backgroundColor: globalTokens.color.lilac.
|
|
253
|
+
backgroundColor: globalTokens.color.lilac.tint40,
|
|
254
|
+
color: globalTokens.color.lilac.shade30,
|
|
255
|
+
borderColor: globalTokens.color.lilac.primary,
|
|
184
256
|
},
|
|
185
257
|
pink: {
|
|
186
|
-
backgroundColor: globalTokens.color.pink.
|
|
258
|
+
backgroundColor: globalTokens.color.pink.tint40,
|
|
259
|
+
color: globalTokens.color.pink.shade30,
|
|
260
|
+
borderColor: globalTokens.color.pink.primary,
|
|
187
261
|
},
|
|
188
262
|
magenta: {
|
|
189
|
-
backgroundColor: globalTokens.color.magenta.
|
|
263
|
+
backgroundColor: globalTokens.color.magenta.tint40,
|
|
264
|
+
color: globalTokens.color.magenta.shade30,
|
|
265
|
+
borderColor: globalTokens.color.magenta.primary,
|
|
190
266
|
},
|
|
191
267
|
plum: {
|
|
192
|
-
backgroundColor: globalTokens.color.plum.
|
|
268
|
+
backgroundColor: globalTokens.color.plum.tint40,
|
|
269
|
+
color: globalTokens.color.plum.shade30,
|
|
270
|
+
borderColor: globalTokens.color.plum.primary,
|
|
193
271
|
},
|
|
194
272
|
beige: {
|
|
195
|
-
backgroundColor: globalTokens.color.beige.
|
|
273
|
+
backgroundColor: globalTokens.color.beige.tint40,
|
|
274
|
+
color: globalTokens.color.beige.shade30,
|
|
275
|
+
borderColor: globalTokens.color.beige.primary,
|
|
196
276
|
},
|
|
197
277
|
mink: {
|
|
198
|
-
backgroundColor: globalTokens.color.mink.
|
|
278
|
+
backgroundColor: globalTokens.color.mink.tint40,
|
|
279
|
+
color: globalTokens.color.mink.shade30,
|
|
280
|
+
borderColor: globalTokens.color.mink.primary,
|
|
199
281
|
},
|
|
200
282
|
platinum: {
|
|
201
|
-
backgroundColor: globalTokens.color.platinum.
|
|
283
|
+
backgroundColor: globalTokens.color.platinum.tint40,
|
|
284
|
+
color: globalTokens.color.platinum.shade30,
|
|
285
|
+
borderColor: globalTokens.color.platinum.primary,
|
|
202
286
|
},
|
|
203
287
|
anchor: {
|
|
204
|
-
backgroundColor: globalTokens.color.anchor.
|
|
288
|
+
backgroundColor: globalTokens.color.anchor.tint40,
|
|
289
|
+
color: globalTokens.color.anchor.shade30,
|
|
290
|
+
borderColor: globalTokens.color.anchor.primary,
|
|
205
291
|
},
|
|
206
292
|
} as JSAvatarTokens);
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { JSAvatar } from '..';
|
|
3
|
+
import { getInitials, validateAlphabeticalCharacters, removeTitlesFromName } from '../useAvatar';
|
|
4
|
+
import * as renderer from 'react-test-renderer';
|
|
5
|
+
|
|
6
|
+
const alphabeticalTestNames = [
|
|
7
|
+
'Marie',
|
|
8
|
+
'Aadi KaPoor',
|
|
9
|
+
'Marie Beaudouin',
|
|
10
|
+
'Aadi Meni KaPoor',
|
|
11
|
+
'Aadi Meni Ka Jr',
|
|
12
|
+
'Will Little (Teams)',
|
|
13
|
+
'Will Little-Tanaka',
|
|
14
|
+
'-Aadi Kapoor',
|
|
15
|
+
'Richard 23 Feynman',
|
|
16
|
+
'* Richard *',
|
|
17
|
+
'Richard Feynman [Teams]',
|
|
18
|
+
'Richard Feynman {Teams}',
|
|
19
|
+
];
|
|
20
|
+
const alphabeticalInitials = ['M', 'AK', 'MB', 'AK', 'AK', 'WL', 'WL', 'AK', 'RF', 'R', 'RF', 'RF'];
|
|
21
|
+
const otherTestNames = ['(206) 123-4567', '耿盈盈']; // will return this case after bug bash - '耿 James'
|
|
22
|
+
const namesWithTitles = ['Mr Feynman', 'Dr Richard Feynman'];
|
|
23
|
+
const initialsForNameWithTitles = ['F', 'RF'];
|
|
24
|
+
|
|
25
|
+
it('renders Avatar', () => {
|
|
26
|
+
const tree = renderer.create(<JSAvatar />).toJSON();
|
|
27
|
+
expect(tree).toMatchSnapshot();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
describe('validateAlphabeticalCharacters method', () => {
|
|
31
|
+
it('validates alphabetical characters', () => {
|
|
32
|
+
for (let i = 0; i < alphabeticalTestNames.length; i++) {
|
|
33
|
+
expect(validateAlphabeticalCharacters(alphabeticalTestNames[i])).toBeTruthy();
|
|
34
|
+
}
|
|
35
|
+
for (let i = 0; i < otherTestNames.length; i++) {
|
|
36
|
+
expect(validateAlphabeticalCharacters(otherTestNames[i])).toBeFalsy();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("doesn't validate undefined name", () => {
|
|
41
|
+
expect(validateAlphabeticalCharacters(undefined)).toBeFalsy();
|
|
42
|
+
});
|
|
43
|
+
it("doesn't validate an empty string", () => {
|
|
44
|
+
expect(validateAlphabeticalCharacters('')).toBeFalsy();
|
|
45
|
+
});
|
|
46
|
+
it("doesn't validate null name", () => {
|
|
47
|
+
expect(validateAlphabeticalCharacters(null)).toBeFalsy();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe('removeTitlesFromName method', () => {
|
|
52
|
+
it('removes titles from the name', () => {
|
|
53
|
+
const words = ['Mr', 'Faynman'];
|
|
54
|
+
expect(removeTitlesFromName(words)).toStrictEqual(['Faynman']);
|
|
55
|
+
});
|
|
56
|
+
// it('removes multiword titles from the name', () => {
|
|
57
|
+
// const name = 'Consul General Richard Faynman';
|
|
58
|
+
// expect(removeTitlesFromName(name)).toStrictEqual(['Richard Faynman']);
|
|
59
|
+
// });
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
describe('getInitials method', () => {
|
|
63
|
+
it('returns correct initials', () => {
|
|
64
|
+
const test = getInitials('-Test str with *spaces');
|
|
65
|
+
expect(test).toBe('TS');
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('returns an empty string if name is undefined', () => {
|
|
69
|
+
expect(getInitials(undefined)).toBe('');
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('return initials for alphabetical words', () => {
|
|
73
|
+
for (let i = 0; i < alphabeticalTestNames.length; i++) {
|
|
74
|
+
expect(getInitials(alphabeticalTestNames[i])).toBe(alphabeticalInitials[i]);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('return initials for words with titles', () => {
|
|
79
|
+
for (let i = 0; i < namesWithTitles.length; i++) {
|
|
80
|
+
expect(getInitials(namesWithTitles[i])).toBe(initialsForNameWithTitles[i]);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it("returns initials when there's a coma", () => {
|
|
85
|
+
expect(getInitials('Second, First')).toEqual('SF');
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Unit tests from Web
|
|
89
|
+
it('handles null inputs', () => {
|
|
90
|
+
expect(getInitials(null)).toEqual('');
|
|
91
|
+
expect(getInitials(undefined)).toEqual('');
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// it('calculates an expected initials in LTR for non-ASCII characters', () => {
|
|
95
|
+
// expect(getInitials('Írissa Þórðardóttir')).toEqual('ÍÞ');
|
|
96
|
+
// expect(getInitials('Øyvind Åsen')).toEqual('ØÅ');
|
|
97
|
+
// });
|
|
98
|
+
|
|
99
|
+
it('calculates an expected initials in LTR with a hypen', () => {
|
|
100
|
+
expect(getInitials('David Zearing-Goff')).toEqual('DZ');
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// it('calculates an expected initials in LTR with numbers', () => {
|
|
104
|
+
// expect(getInitials('4lex 5loo')).toEqual('45');
|
|
105
|
+
// });
|
|
106
|
+
it('calculates an expected initials in LTR with multiple parentheses, extra spaces, and unwanted characters', () => {
|
|
107
|
+
const result = getInitials(' !@#$%^&*()=+ (Alpha) David (The man) `~<>,./?[]{}| Goff (Gamma) ');
|
|
108
|
+
expect(result).toEqual('DG');
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it('calculates an expected initials in LTR with multiple types of unwanted text', () => {
|
|
112
|
+
const result = getInitials(' !@#$%^&*()=+ (Alpha) David (The man) `~<>,./?[]{}| Goff (Gamma) [Beta] ');
|
|
113
|
+
expect(result).toEqual('DG');
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('calculates an expected initials for Arabic names', () => {
|
|
117
|
+
expect(getInitials('خسرو رحیمی')).toEqual('');
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it('calculates an expected initials for Chinese names', () => {
|
|
121
|
+
expect(getInitials('桂英')).toEqual('');
|
|
122
|
+
expect(getInitials('佳')).toEqual('');
|
|
123
|
+
expect(getInitials('宋智洋')).toEqual('');
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
it('calculates an expected initials for Korean names', () => {
|
|
127
|
+
expect(getInitials('강현')).toEqual('');
|
|
128
|
+
expect(getInitials('최종래')).toEqual('');
|
|
129
|
+
expect(getInitials('남궁 성종')).toEqual('');
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('calculates an expected initials for Japanese names', () => {
|
|
133
|
+
expect(getInitials('松田')).toEqual('');
|
|
134
|
+
expect(getInitials('海野')).toEqual('');
|
|
135
|
+
expect(getInitials('かり')).toEqual('');
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// it('validates phone numbers', () => {
|
|
139
|
+
// expect(getInitials('12345678')).toEqual('');
|
|
140
|
+
// expect(getInitials('+1 (555) 123-4567 ext.4567')).toEqual('');
|
|
141
|
+
// expect(getInitials('+47 12 34 56 78 (X 5678)')).toEqual('4');
|
|
142
|
+
// expect(getInitials('47 12 34')).toEqual('');
|
|
143
|
+
// expect(getInitials('47 12')).toEqual('');
|
|
144
|
+
// expect(getInitials('1 Ext 2')).toEqual('');
|
|
145
|
+
// result = getInitials('James Ext 2');
|
|
146
|
+
// expect(result).toEqual('JE');
|
|
147
|
+
// result = getInitials('1x1');
|
|
148
|
+
// expect(result).toEqual('');
|
|
149
|
+
// result = getInitials('1y1');
|
|
150
|
+
// expect(result).toEqual('');
|
|
151
|
+
// result = getInitials('1');
|
|
152
|
+
// expect(result).toEqual('');
|
|
153
|
+
// result = getInitials('A 2');
|
|
154
|
+
// expect(result).toEqual('A');
|
|
155
|
+
// });
|
|
156
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`renders Avatar 1`] = `
|
|
4
|
+
<View
|
|
5
|
+
shape="circular"
|
|
6
|
+
style={
|
|
7
|
+
Object {
|
|
8
|
+
"alignItems": "flex-end",
|
|
9
|
+
"flexDirection": "row",
|
|
10
|
+
"height": 24,
|
|
11
|
+
"horizontalIconAlignment": "end",
|
|
12
|
+
"justifyContent": "flex-end",
|
|
13
|
+
"opacity": 1,
|
|
14
|
+
"verticalIconAlignment": "end",
|
|
15
|
+
"width": 24,
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
>
|
|
19
|
+
<View
|
|
20
|
+
style={
|
|
21
|
+
Object {
|
|
22
|
+
"alignItems": "center",
|
|
23
|
+
"alignSelf": "stretch",
|
|
24
|
+
"backgroundColor": "#4f6bed",
|
|
25
|
+
"borderRadius": 9999,
|
|
26
|
+
"flexGrow": 1,
|
|
27
|
+
"height": 24,
|
|
28
|
+
"justifyContent": "center",
|
|
29
|
+
"width": 24,
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/>
|
|
33
|
+
</View>
|
|
34
|
+
`;
|
package/src/titles.ts
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export const titles = new Set<string>([
|
|
2
|
+
'Mr',
|
|
3
|
+
'Mrs',
|
|
4
|
+
'Miss',
|
|
5
|
+
'Ms',
|
|
6
|
+
'Dr',
|
|
7
|
+
'Admiral',
|
|
8
|
+
'Air Comm',
|
|
9
|
+
'Ambassador',
|
|
10
|
+
'Baron',
|
|
11
|
+
'Baroness',
|
|
12
|
+
'Brig & Mrs',
|
|
13
|
+
'Brig Gen',
|
|
14
|
+
'Brigadier',
|
|
15
|
+
'Brother',
|
|
16
|
+
'Canon',
|
|
17
|
+
'Capt',
|
|
18
|
+
'Chief',
|
|
19
|
+
'Cllr',
|
|
20
|
+
'Col',
|
|
21
|
+
'Commander',
|
|
22
|
+
'Commander & Mrs',
|
|
23
|
+
'Consul',
|
|
24
|
+
'Consul General',
|
|
25
|
+
'Count',
|
|
26
|
+
'Countess',
|
|
27
|
+
'Countess of',
|
|
28
|
+
'Cpl',
|
|
29
|
+
'Dame',
|
|
30
|
+
'Deputy',
|
|
31
|
+
'Dr & Mrs',
|
|
32
|
+
'Drs',
|
|
33
|
+
'Duchess',
|
|
34
|
+
'Duke',
|
|
35
|
+
'Earl',
|
|
36
|
+
'Father',
|
|
37
|
+
'General',
|
|
38
|
+
'Gräfin',
|
|
39
|
+
'HE',
|
|
40
|
+
'HMA',
|
|
41
|
+
'Her Grace',
|
|
42
|
+
'His Excellency',
|
|
43
|
+
'Jr',
|
|
44
|
+
'Judge',
|
|
45
|
+
'Justice',
|
|
46
|
+
'Lady',
|
|
47
|
+
'Lic',
|
|
48
|
+
'Llc',
|
|
49
|
+
'Lord',
|
|
50
|
+
'Lord & Lady',
|
|
51
|
+
'Lt',
|
|
52
|
+
'Lt Col',
|
|
53
|
+
'Lt Cpl',
|
|
54
|
+
'M',
|
|
55
|
+
'Madam',
|
|
56
|
+
'Madame',
|
|
57
|
+
'Major',
|
|
58
|
+
'Major General',
|
|
59
|
+
'Marchioness',
|
|
60
|
+
'Marquis',
|
|
61
|
+
'Minister',
|
|
62
|
+
'Mme',
|
|
63
|
+
'Mr & Dr',
|
|
64
|
+
'Mr & Mrs',
|
|
65
|
+
'Mr & Ms',
|
|
66
|
+
'Prince',
|
|
67
|
+
'Princess',
|
|
68
|
+
'Professor',
|
|
69
|
+
'Prof',
|
|
70
|
+
'Prof & Dr',
|
|
71
|
+
'Prof & Mrs',
|
|
72
|
+
'Prof & Rev',
|
|
73
|
+
'Prof Dame',
|
|
74
|
+
'Prof Dr',
|
|
75
|
+
'Pvt',
|
|
76
|
+
'Rabbi',
|
|
77
|
+
'Rear Admiral',
|
|
78
|
+
'Rev',
|
|
79
|
+
'Rev & Mrs',
|
|
80
|
+
'Rev Canon',
|
|
81
|
+
'Rev Dr',
|
|
82
|
+
'Senator',
|
|
83
|
+
'Sgt',
|
|
84
|
+
'Sheriff',
|
|
85
|
+
'Sir',
|
|
86
|
+
'Sir & Lady',
|
|
87
|
+
'Sister',
|
|
88
|
+
'Sr',
|
|
89
|
+
'Sqr. Leader',
|
|
90
|
+
'The Earl of',
|
|
91
|
+
'The Hon',
|
|
92
|
+
'The Hon Dr',
|
|
93
|
+
'The Hon Lady',
|
|
94
|
+
'The Hon Lord',
|
|
95
|
+
'The Hon Mrs',
|
|
96
|
+
'The Hon Sir',
|
|
97
|
+
'The Honourable',
|
|
98
|
+
'The Rt Hon',
|
|
99
|
+
'The Rt Hon Dr',
|
|
100
|
+
'The Rt Hon Lord',
|
|
101
|
+
'The Rt Hon Sir',
|
|
102
|
+
'The Rt Hon Visc',
|
|
103
|
+
'Viscount',
|
|
104
|
+
'van',
|
|
105
|
+
'I',
|
|
106
|
+
'II',
|
|
107
|
+
'III',
|
|
108
|
+
]);
|