@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.
Files changed (83) hide show
  1. package/CHANGELOG.json +46 -1
  2. package/CHANGELOG.md +26 -2
  3. package/jest.config.js +2 -0
  4. package/lib/JSAvatar.d.ts.map +1 -1
  5. package/lib/JSAvatar.js +7 -6
  6. package/lib/JSAvatar.js.map +1 -1
  7. package/lib/JSAvatar.styling.d.ts.map +1 -1
  8. package/lib/JSAvatar.styling.js +9 -12
  9. package/lib/JSAvatar.styling.js.map +1 -1
  10. package/lib/JSAvatar.types.d.ts +50 -7
  11. package/lib/JSAvatar.types.d.ts.map +1 -1
  12. package/lib/JSAvatar.types.js +2 -1
  13. package/lib/JSAvatar.types.js.map +1 -1
  14. package/lib/JSAvatarTokens.d.ts.map +1 -1
  15. package/lib/JSAvatarTokens.js +142 -56
  16. package/lib/JSAvatarTokens.js.map +1 -1
  17. package/lib/titles.d.ts +2 -0
  18. package/lib/titles.d.ts.map +1 -0
  19. package/lib/titles.js +109 -0
  20. package/lib/titles.js.map +1 -0
  21. package/lib/useAvatar.d.ts +25 -0
  22. package/lib/useAvatar.d.ts.map +1 -1
  23. package/lib/useAvatar.js +49 -2
  24. package/lib/useAvatar.js.map +1 -1
  25. package/lib/utils/getInitials.d.ts +15 -0
  26. package/lib/utils/getInitials.d.ts.map +1 -0
  27. package/lib/utils/getInitials.js +78 -0
  28. package/lib/utils/getInitials.js.map +1 -0
  29. package/lib/utils/getInitials.test.d.ts +2 -0
  30. package/lib/utils/getInitials.test.d.ts.map +1 -0
  31. package/lib/utils/getInitials.test.js +116 -0
  32. package/lib/utils/getInitials.test.js.map +1 -0
  33. package/lib/utils/index.d.ts +2 -0
  34. package/lib/utils/index.d.ts.map +1 -0
  35. package/lib/utils/index.js +2 -0
  36. package/lib/utils/index.js.map +1 -0
  37. package/lib-commonjs/JSAvatar.d.ts.map +1 -1
  38. package/lib-commonjs/JSAvatar.js +7 -6
  39. package/lib-commonjs/JSAvatar.js.map +1 -1
  40. package/lib-commonjs/JSAvatar.styling.d.ts.map +1 -1
  41. package/lib-commonjs/JSAvatar.styling.js +7 -10
  42. package/lib-commonjs/JSAvatar.styling.js.map +1 -1
  43. package/lib-commonjs/JSAvatar.types.d.ts +50 -7
  44. package/lib-commonjs/JSAvatar.types.d.ts.map +1 -1
  45. package/lib-commonjs/JSAvatar.types.js +3 -2
  46. package/lib-commonjs/JSAvatar.types.js.map +1 -1
  47. package/lib-commonjs/JSAvatarTokens.d.ts.map +1 -1
  48. package/lib-commonjs/JSAvatarTokens.js +142 -56
  49. package/lib-commonjs/JSAvatarTokens.js.map +1 -1
  50. package/lib-commonjs/titles.d.ts +2 -0
  51. package/lib-commonjs/titles.d.ts.map +1 -0
  52. package/lib-commonjs/titles.js +112 -0
  53. package/lib-commonjs/titles.js.map +1 -0
  54. package/lib-commonjs/useAvatar.d.ts +25 -0
  55. package/lib-commonjs/useAvatar.d.ts.map +1 -1
  56. package/lib-commonjs/useAvatar.js +53 -3
  57. package/lib-commonjs/useAvatar.js.map +1 -1
  58. package/lib-commonjs/utils/getInitials.d.ts +15 -0
  59. package/lib-commonjs/utils/getInitials.d.ts.map +1 -0
  60. package/lib-commonjs/utils/getInitials.js +82 -0
  61. package/lib-commonjs/utils/getInitials.js.map +1 -0
  62. package/lib-commonjs/utils/getInitials.test.d.ts +2 -0
  63. package/lib-commonjs/utils/getInitials.test.d.ts.map +1 -0
  64. package/lib-commonjs/utils/getInitials.test.js +118 -0
  65. package/lib-commonjs/utils/getInitials.test.js.map +1 -0
  66. package/lib-commonjs/utils/index.d.ts +2 -0
  67. package/lib-commonjs/utils/index.d.ts.map +1 -0
  68. package/lib-commonjs/utils/index.js +6 -0
  69. package/lib-commonjs/utils/index.js.map +1 -0
  70. package/package.json +1 -1
  71. package/src/.eslintrc.js +3 -0
  72. package/src/JSAvatar.styling.ts +8 -9
  73. package/src/JSAvatar.tsx +7 -6
  74. package/src/JSAvatar.types.ts +57 -7
  75. package/src/JSAvatarTokens.ts +142 -56
  76. package/src/__tests__/JSAvatar.test.jsx +156 -0
  77. package/src/__tests__/__snapshots__/JSAvatar.test.jsx.snap +34 -0
  78. package/src/titles.ts +108 -0
  79. package/src/useAvatar.ts +53 -1
  80. package/src/utils/getInitials.test.ts +154 -0
  81. package/src/utils/getInitials.ts +92 -0
  82. package/src/utils/index.ts +1 -0
  83. package/tsconfig.json +2 -1
@@ -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: 10,
27
- initialsSize: 16,
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: 10,
34
- initialsSize: 16,
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: 16,
41
- initialsSize: 20,
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: 16,
48
- initialsSize: 20,
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: 16,
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: 16,
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: 20,
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: 24,
76
- initialsSize: 28,
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: 28,
83
- initialsSize: 32,
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: 28,
90
- initialsSize: 32,
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: 40,
97
- initialsSize: 48,
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: 40,
104
- initialsSize: 48,
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
- ringColor: t.colors.defaultBorder,
135
+ borderColor: t.colors.defaultBorder,
110
136
  },
111
137
  brand: {
112
138
  backgroundColor: t.colors.brandBackgroundStatic,
113
139
  color: t.colors.neutralForegroundOnBrand,
114
- ringColor: t.colors.brandedBorder,
140
+ borderColor: t.colors.brandedBorder,
115
141
  },
116
142
  darkRed: {
117
- backgroundColor: globalTokens.color.darkRed.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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.primary,
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
+ ]);