@fluentui-react-native/experimental-avatar 0.14.42 → 0.14.43

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 (46) hide show
  1. package/CHANGELOG.json +23 -2
  2. package/CHANGELOG.md +11 -2
  3. package/FRNAvatar.podspec +0 -2
  4. package/lib/JSAvatar.js +1 -1
  5. package/lib/JSAvatar.js.map +1 -1
  6. package/lib/useAvatar.d.ts +3 -5
  7. package/lib/useAvatar.d.ts.map +1 -1
  8. package/lib/useAvatar.js +22 -13
  9. package/lib/useAvatar.js.map +1 -1
  10. package/lib-commonjs/JSAvatar.js +1 -1
  11. package/lib-commonjs/JSAvatar.js.map +1 -1
  12. package/lib-commonjs/useAvatar.d.ts +3 -5
  13. package/lib-commonjs/useAvatar.d.ts.map +1 -1
  14. package/lib-commonjs/useAvatar.js +24 -15
  15. package/lib-commonjs/useAvatar.js.map +1 -1
  16. package/package.json +1 -1
  17. package/src/JSAvatar.tsx +1 -1
  18. package/src/__tests__/JSAvatar.test.jsx +48 -77
  19. package/src/useAvatar.ts +25 -13
  20. package/lib/utils/getInitials.d.ts +0 -15
  21. package/lib/utils/getInitials.d.ts.map +0 -1
  22. package/lib/utils/getInitials.js +0 -78
  23. package/lib/utils/getInitials.js.map +0 -1
  24. package/lib/utils/getInitials.test.d.ts +0 -2
  25. package/lib/utils/getInitials.test.d.ts.map +0 -1
  26. package/lib/utils/getInitials.test.js +0 -116
  27. package/lib/utils/getInitials.test.js.map +0 -1
  28. package/lib/utils/index.d.ts +0 -2
  29. package/lib/utils/index.d.ts.map +0 -1
  30. package/lib/utils/index.js +0 -2
  31. package/lib/utils/index.js.map +0 -1
  32. package/lib-commonjs/utils/getInitials.d.ts +0 -15
  33. package/lib-commonjs/utils/getInitials.d.ts.map +0 -1
  34. package/lib-commonjs/utils/getInitials.js +0 -82
  35. package/lib-commonjs/utils/getInitials.js.map +0 -1
  36. package/lib-commonjs/utils/getInitials.test.d.ts +0 -2
  37. package/lib-commonjs/utils/getInitials.test.d.ts.map +0 -1
  38. package/lib-commonjs/utils/getInitials.test.js +0 -118
  39. package/lib-commonjs/utils/getInitials.test.js.map +0 -1
  40. package/lib-commonjs/utils/index.d.ts +0 -2
  41. package/lib-commonjs/utils/index.d.ts.map +0 -1
  42. package/lib-commonjs/utils/index.js +0 -6
  43. package/lib-commonjs/utils/index.js.map +0 -1
  44. package/src/utils/getInitials.test.ts +0 -154
  45. package/src/utils/getInitials.ts +0 -92
  46. package/src/utils/index.ts +0 -1
package/CHANGELOG.json CHANGED
@@ -2,7 +2,28 @@
2
2
  "name": "@fluentui-react-native/experimental-avatar",
3
3
  "entries": [
4
4
  {
5
- "date": "Thu, 16 Jun 2022 09:39:13 GMT",
5
+ "date": "Thu, 16 Jun 2022 17:08:40 GMT",
6
+ "tag": "@fluentui-react-native/experimental-avatar_v0.14.43",
7
+ "version": "0.14.43",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "v.kozova13@gmail.com",
12
+ "package": "@fluentui-react-native/experimental-avatar",
13
+ "commit": "3080fa33cf5408c754ed55811456bed58536bf2c",
14
+ "comment": "Fixed error on Mac and Windows in getINitials method"
15
+ },
16
+ {
17
+ "author": "sanajmi@microsoft.com",
18
+ "package": "@fluentui-react-native/experimental-avatar",
19
+ "commit": "c5a694d12a1926f4c49d28ae83ad9f52c22ec7f7",
20
+ "comment": "apple: remove unneccesary build settings from podspec"
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ {
26
+ "date": "Thu, 16 Jun 2022 09:39:38 GMT",
6
27
  "tag": "@fluentui-react-native/experimental-avatar_v0.14.42",
7
28
  "version": "0.14.42",
8
29
  "comments": {
@@ -11,7 +32,7 @@
11
32
  "author": "beachball",
12
33
  "package": "@fluentui-react-native/experimental-avatar",
13
34
  "comment": "Bump @fluentui-react-native/badge to v0.0.43",
14
- "commit": "5a2f469becf5dc40beb9c571d4bbb4a2b285320e"
35
+ "commit": "3080fa33cf5408c754ed55811456bed58536bf2c"
15
36
  }
16
37
  ]
17
38
  }
package/CHANGELOG.md CHANGED
@@ -1,12 +1,21 @@
1
1
  # Change Log - @fluentui-react-native/experimental-avatar
2
2
 
3
- This log was last generated on Thu, 16 Jun 2022 09:39:13 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 16 Jun 2022 17:08:40 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 0.14.43
8
+
9
+ Thu, 16 Jun 2022 17:08:40 GMT
10
+
11
+ ### Patches
12
+
13
+ - Fixed error on Mac and Windows in getINitials method (v.kozova13@gmail.com)
14
+ - apple: remove unneccesary build settings from podspec (sanajmi@microsoft.com)
15
+
7
16
  ## 0.14.42
8
17
 
9
- Thu, 16 Jun 2022 09:39:13 GMT
18
+ Thu, 16 Jun 2022 09:39:38 GMT
10
19
 
11
20
  ### Patches
12
21
 
package/FRNAvatar.podspec CHANGED
@@ -14,8 +14,6 @@ Pod::Spec.new do |s|
14
14
  s.source = { :git => "https://github.com/microsoft/fluentui-react-native.git", :tag => "#{s.version}" }
15
15
  s.swift_version = "5.0"
16
16
 
17
- s.pod_target_xcconfig = { 'BUILD_LIBRARY_FOR_DISTRIBUTION' => 'YES', 'OTHER_SWIFT_FLAGS' => '-gline-tables-only' }
18
-
19
17
  s.ios.deployment_target = "14.0"
20
18
  s.ios.source_files = "ios/*.{swift,h,m}"
21
19
  s.ios.dependency 'MicrosoftFluentUI/Avatar_ios', '0.5.0'
package/lib/JSAvatar.js CHANGED
@@ -67,7 +67,7 @@ export var JSAvatar = compose(__assign(__assign({ displayName: JSAvatarName }, s
67
67
  var svgIconsEnabled = ['ios', 'macos', 'win32', 'android'].includes(Platform.OS);
68
68
  var fallBackIconXml = "<svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 0C4.79086 0 3 1.79086 3 4C3 6.20914 4.79086 8 7 8C9.20914 8 11 6.20914 11 4C11 1.79086 9.20914 0 7 0ZM4 4C4 2.34315 5.34315 1 7 1C8.65685 1 10 2.34315 10 4C10 5.65685 8.65685 7 7 7C5.34315 7 4 5.65685 4 4ZM2.00873 9C0.903151 9 0 9.88687 0 11C0 12.6912 0.83281 13.9663 2.13499 14.7966C3.41697 15.614 5.14526 16 7 16C8.85474 16 10.583 15.614 11.865 14.7966C13.1672 13.9663 14 12.6912 14 11C14 9.89557 13.1045 9.00001 12 9.00001L2.00873 9ZM1 11C1 10.4467 1.44786 10 2.00873 10L12 10C12.5522 10 13 10.4478 13 11C13 12.3088 12.3777 13.2837 11.3274 13.9534C10.2568 14.636 8.73511 15 7 15C5.26489 15 3.74318 14.636 2.67262 13.9534C1.62226 13.2837 1 12.3088 1 11Z\" fill=\"currentColor\"/>\n </svg>\n ";
69
69
  return (withSlots(Slots.root, __assign({}, mergedProps),
70
- imageUrl ? (withSlots(Slots.image, { source: { uri: imageUrl } })) : (withSlots(Slots.initialsBackground, { accessible: false }, initials ? (withSlots(Slots.initials, { accessible: false }, initials)) : userProps.icon ? (withSlots(Slots.icon, __assign({}, iconProps, { accessible: false }))) : (withSlots(SvgXml, { xml: fallBackIconXml })))),
70
+ imageUrl ? (withSlots(Slots.image, { source: { uri: imageUrl } })) : (withSlots(Slots.initialsBackground, { accessible: false }, initials ? (withSlots(Slots.initials, { accessible: false }, initials)) : userProps.icon ? (withSlots(Slots.icon, __assign({}, iconProps, { accessible: false }))) : (svgIconsEnabled && withSlots(SvgXml, { xml: fallBackIconXml })))),
71
71
  showRing && !transparentRing && withSlots(Slots.ring, null),
72
72
  svgIconsEnabled && showBadge && withSlots(Slots.badge, __assign({}, badge))));
73
73
  };
@@ -1 +1 @@
1
- {"version":3,"file":"JSAvatar.js","sourceRoot":"","sources":["../src/JSAvatar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JSAvatar.js","sourceRoot":"","sources":["../src/JSAvatar.tsx"],"names":[],"mappings":"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"}
@@ -17,14 +17,12 @@ export declare const useAvatar: (props: JSAvatarProps) => AvatarInfo;
17
17
  */
18
18
  export declare const getInitials: (name: string) => string;
19
19
  /**
20
- * A function which verifies whether a name contains non-alphabetical characters
20
+ * A function which takes a name and returns array of valid words
21
21
  *
22
22
  * @param name
23
- * @returns true if the name contains alphabetical characters. Returns false if there are
24
- * numeric values or the first character is non-alphabetical. In this case avatar should
25
- * fall back to icon.
23
+ * @returns array of words without phone numbers and special characters.
26
24
  */
27
- export declare const validateAlphabeticalCharacters: (name: string) => boolean;
25
+ export declare const removeRedundantCharacters: (name: string) => string[];
28
26
  /**
29
27
  * A function which verifies whether words array contains title
30
28
  *
@@ -1 +1 @@
1
- {"version":3,"file":"useAvatar.d.ts","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAA+B,MAAM,kBAAkB,CAAC;AAI1F;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW,aAAa,KAAG,UAqDhD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAY1C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,SAAU,MAAM,KAAG,OAG7D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,UAAW,MAAM,EAAE,KAAG,MAAM,EAE5D,CAAC"}
1
+ {"version":3,"file":"useAvatar.d.ts","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAA+B,MAAM,kBAAkB,CAAC;AAI1F;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW,aAAa,KAAG,UAqDhD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAe1C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,SAAU,MAAM,KAAG,MAAM,EAc9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,UAAW,MAAM,EAAE,KAAG,MAAM,EAE5D,CAAC"}
package/lib/useAvatar.js CHANGED
@@ -60,29 +60,38 @@ export var useAvatar = function (props) {
60
60
  * Words in braces, titles, special characters, parantheses and dashes should be ignored.
61
61
  */
62
62
  export var getInitials = function (name) {
63
- if (!name && !validateAlphabeticalCharacters(name)) {
63
+ if (!name) {
64
64
  return '';
65
65
  }
66
- var nonWordRegExp = new RegExp('\\W+(?<!\\S-)', 'g');
67
- var wordsInBracesRegExp = new RegExp('(\\(|\\[|\\{)\\w+(\\)|\\]|\\})', 'g');
68
- var words = name.replace(wordsInBracesRegExp, ' ').replace(nonWordRegExp, ' ').trim().split(' ');
69
- words = removeTitlesFromName(words);
66
+ var ARABIC_ASIAN_REGEXP = new RegExp('[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uAC00-\uD7AF\uD7B0-\uD7FF\u3040-\u309F\u30A0-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uD840-\uD869]', 'g');
67
+ var words = removeRedundantCharacters(name);
70
68
  var wordsLength = words.length;
71
69
  var lastWordIdx = wordsLength - 1;
72
- var initials = "".concat(words[0].charAt(0).toUpperCase()).concat(wordsLength > 1 ? words[lastWordIdx].charAt(0).toUpperCase() : '');
70
+ var firstLetter = words[0].charAt(0).toUpperCase();
71
+ var lastLetter = wordsLength > 1 ? words[lastWordIdx].charAt(0).toUpperCase() : '';
72
+ var initials = "".concat(firstLetter).concat(ARABIC_ASIAN_REGEXP.test(name) ? '' : lastLetter);
73
73
  return initials;
74
74
  };
75
75
  /**
76
- * A function which verifies whether a name contains non-alphabetical characters
76
+ * A function which takes a name and returns array of valid words
77
77
  *
78
78
  * @param name
79
- * @returns true if the name contains alphabetical characters. Returns false if there are
80
- * numeric values or the first character is non-alphabetical. In this case avatar should
81
- * fall back to icon.
79
+ * @returns array of words without phone numbers and special characters.
82
80
  */
83
- export var validateAlphabeticalCharacters = function (name) {
84
- var alphabeticalRegExp = new RegExp('[a-zA-Z]', 'g');
85
- return name ? alphabeticalRegExp.test(name) : false;
81
+ export var removeRedundantCharacters = function (name) {
82
+ if (!name) {
83
+ return [];
84
+ }
85
+ var WORDS_IN_BRACES_REGEXP = new RegExp('[(\\[\\{][^\\)\\]\\}]*[\\)\\]\\}]', 'g');
86
+ var PHONE_NUMBER_REGEXP = new RegExp('(\\+|(\\d|\\s))', 'g');
87
+ var SPECIAL_CHARACTERS_REGEXP = new RegExp('[!"#\'$%&*+,-./:;>=<?@^_`|~¡¢£¤¥¦§¨©ª«¬®ˉ°±²¼½¾¿×÷]', 'g');
88
+ var words = name
89
+ .replace(WORDS_IN_BRACES_REGEXP, '')
90
+ .replace(PHONE_NUMBER_REGEXP, ' ')
91
+ .replace(SPECIAL_CHARACTERS_REGEXP, '')
92
+ .trim()
93
+ .split(' ');
94
+ return removeTitlesFromName(words);
86
95
  };
87
96
  /**
88
97
  * A function which verifies whether words array contains title
@@ -1 +1 @@
1
- {"version":3,"file":"useAvatar.js","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAvatar.js","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"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"}
@@ -71,7 +71,7 @@ exports.JSAvatar = (0, framework_1.compose)(__assign(__assign({ displayName: JSA
71
71
  var svgIconsEnabled = ['ios', 'macos', 'win32', 'android'].includes(react_native_1.Platform.OS);
72
72
  var fallBackIconXml = "<svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 0C4.79086 0 3 1.79086 3 4C3 6.20914 4.79086 8 7 8C9.20914 8 11 6.20914 11 4C11 1.79086 9.20914 0 7 0ZM4 4C4 2.34315 5.34315 1 7 1C8.65685 1 10 2.34315 10 4C10 5.65685 8.65685 7 7 7C5.34315 7 4 5.65685 4 4ZM2.00873 9C0.903151 9 0 9.88687 0 11C0 12.6912 0.83281 13.9663 2.13499 14.7966C3.41697 15.614 5.14526 16 7 16C8.85474 16 10.583 15.614 11.865 14.7966C13.1672 13.9663 14 12.6912 14 11C14 9.89557 13.1045 9.00001 12 9.00001L2.00873 9ZM1 11C1 10.4467 1.44786 10 2.00873 10L12 10C12.5522 10 13 10.4478 13 11C13 12.3088 12.3777 13.2837 11.3274 13.9534C10.2568 14.636 8.73511 15 7 15C5.26489 15 3.74318 14.636 2.67262 13.9534C1.62226 13.2837 1 12.3088 1 11Z\" fill=\"currentColor\"/>\n </svg>\n ";
73
73
  return ((0, framework_1.withSlots)(Slots.root, __assign({}, mergedProps),
74
- imageUrl ? ((0, framework_1.withSlots)(Slots.image, { source: { uri: imageUrl } })) : ((0, framework_1.withSlots)(Slots.initialsBackground, { accessible: false }, initials ? ((0, framework_1.withSlots)(Slots.initials, { accessible: false }, initials)) : userProps.icon ? ((0, framework_1.withSlots)(Slots.icon, __assign({}, iconProps, { accessible: false }))) : ((0, framework_1.withSlots)(react_native_svg_1.SvgXml, { xml: fallBackIconXml })))),
74
+ imageUrl ? ((0, framework_1.withSlots)(Slots.image, { source: { uri: imageUrl } })) : ((0, framework_1.withSlots)(Slots.initialsBackground, { accessible: false }, initials ? ((0, framework_1.withSlots)(Slots.initials, { accessible: false }, initials)) : userProps.icon ? ((0, framework_1.withSlots)(Slots.icon, __assign({}, iconProps, { accessible: false }))) : (svgIconsEnabled && (0, framework_1.withSlots)(react_native_svg_1.SvgXml, { xml: fallBackIconXml })))),
75
75
  showRing && !transparentRing && (0, framework_1.withSlots)(Slots.ring, null),
76
76
  svgIconsEnabled && showBadge && (0, framework_1.withSlots)(Slots.badge, __assign({}, badge))));
77
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"JSAvatar.js","sourceRoot":"","sources":["../src/JSAvatar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JSAvatar.js","sourceRoot":"","sources":["../src/JSAvatar.tsx"],"names":[],"mappings":"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"}
@@ -17,14 +17,12 @@ export declare const useAvatar: (props: JSAvatarProps) => AvatarInfo;
17
17
  */
18
18
  export declare const getInitials: (name: string) => string;
19
19
  /**
20
- * A function which verifies whether a name contains non-alphabetical characters
20
+ * A function which takes a name and returns array of valid words
21
21
  *
22
22
  * @param name
23
- * @returns true if the name contains alphabetical characters. Returns false if there are
24
- * numeric values or the first character is non-alphabetical. In this case avatar should
25
- * fall back to icon.
23
+ * @returns array of words without phone numbers and special characters.
26
24
  */
27
- export declare const validateAlphabeticalCharacters: (name: string) => boolean;
25
+ export declare const removeRedundantCharacters: (name: string) => string[];
28
26
  /**
29
27
  * A function which verifies whether words array contains title
30
28
  *
@@ -1 +1 @@
1
- {"version":3,"file":"useAvatar.d.ts","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAA+B,MAAM,kBAAkB,CAAC;AAI1F;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW,aAAa,KAAG,UAqDhD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAY1C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,SAAU,MAAM,KAAG,OAG7D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,UAAW,MAAM,EAAE,KAAG,MAAM,EAE5D,CAAC"}
1
+ {"version":3,"file":"useAvatar.d.ts","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAA+B,MAAM,kBAAkB,CAAC;AAI1F;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW,aAAa,KAAG,UAqDhD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAe1C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,SAAU,MAAM,KAAG,MAAM,EAc9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,UAAW,MAAM,EAAE,KAAG,MAAM,EAE5D,CAAC"}
@@ -22,7 +22,7 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  return t;
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.removeTitlesFromName = exports.validateAlphabeticalCharacters = exports.getInitials = exports.useAvatar = void 0;
25
+ exports.removeTitlesFromName = exports.removeRedundantCharacters = exports.getInitials = exports.useAvatar = void 0;
26
26
  var JSAvatar_types_1 = require("./JSAvatar.types");
27
27
  var titles_1 = require("./titles");
28
28
  var getHashCode_1 = require("./getHashCode");
@@ -64,32 +64,41 @@ exports.useAvatar = useAvatar;
64
64
  * Words in braces, titles, special characters, parantheses and dashes should be ignored.
65
65
  */
66
66
  var getInitials = function (name) {
67
- if (!name && !(0, exports.validateAlphabeticalCharacters)(name)) {
67
+ if (!name) {
68
68
  return '';
69
69
  }
70
- var nonWordRegExp = new RegExp('\\W+(?<!\\S-)', 'g');
71
- var wordsInBracesRegExp = new RegExp('(\\(|\\[|\\{)\\w+(\\)|\\]|\\})', 'g');
72
- var words = name.replace(wordsInBracesRegExp, ' ').replace(nonWordRegExp, ' ').trim().split(' ');
73
- words = (0, exports.removeTitlesFromName)(words);
70
+ var ARABIC_ASIAN_REGEXP = new RegExp('[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uAC00-\uD7AF\uD7B0-\uD7FF\u3040-\u309F\u30A0-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uD840-\uD869]', 'g');
71
+ var words = (0, exports.removeRedundantCharacters)(name);
74
72
  var wordsLength = words.length;
75
73
  var lastWordIdx = wordsLength - 1;
76
- var initials = "".concat(words[0].charAt(0).toUpperCase()).concat(wordsLength > 1 ? words[lastWordIdx].charAt(0).toUpperCase() : '');
74
+ var firstLetter = words[0].charAt(0).toUpperCase();
75
+ var lastLetter = wordsLength > 1 ? words[lastWordIdx].charAt(0).toUpperCase() : '';
76
+ var initials = "".concat(firstLetter).concat(ARABIC_ASIAN_REGEXP.test(name) ? '' : lastLetter);
77
77
  return initials;
78
78
  };
79
79
  exports.getInitials = getInitials;
80
80
  /**
81
- * A function which verifies whether a name contains non-alphabetical characters
81
+ * A function which takes a name and returns array of valid words
82
82
  *
83
83
  * @param name
84
- * @returns true if the name contains alphabetical characters. Returns false if there are
85
- * numeric values or the first character is non-alphabetical. In this case avatar should
86
- * fall back to icon.
84
+ * @returns array of words without phone numbers and special characters.
87
85
  */
88
- var validateAlphabeticalCharacters = function (name) {
89
- var alphabeticalRegExp = new RegExp('[a-zA-Z]', 'g');
90
- return name ? alphabeticalRegExp.test(name) : false;
86
+ var removeRedundantCharacters = function (name) {
87
+ if (!name) {
88
+ return [];
89
+ }
90
+ var WORDS_IN_BRACES_REGEXP = new RegExp('[(\\[\\{][^\\)\\]\\}]*[\\)\\]\\}]', 'g');
91
+ var PHONE_NUMBER_REGEXP = new RegExp('(\\+|(\\d|\\s))', 'g');
92
+ var SPECIAL_CHARACTERS_REGEXP = new RegExp('[!"#\'$%&*+,-./:;>=<?@^_`|~¡¢£¤¥¦§¨©ª«¬®ˉ°±²¼½¾¿×÷]', 'g');
93
+ var words = name
94
+ .replace(WORDS_IN_BRACES_REGEXP, '')
95
+ .replace(PHONE_NUMBER_REGEXP, ' ')
96
+ .replace(SPECIAL_CHARACTERS_REGEXP, '')
97
+ .trim()
98
+ .split(' ');
99
+ return (0, exports.removeTitlesFromName)(words);
91
100
  };
92
- exports.validateAlphabeticalCharacters = validateAlphabeticalCharacters;
101
+ exports.removeRedundantCharacters = removeRedundantCharacters;
93
102
  /**
94
103
  * A function which verifies whether words array contains title
95
104
  *
@@ -1 +1 @@
1
- {"version":3,"file":"useAvatar.js","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAvatar.js","sourceRoot":"","sources":["../src/useAvatar.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/experimental-avatar",
3
- "version": "0.14.42",
3
+ "version": "0.14.43",
4
4
  "description": "A cross-platform Avatar component using the Fluent Design System. Currently only implemented on iOS",
5
5
  "license": "MIT",
6
6
  "author": "Microsoft <fluentuinativeowners@microsoft.com>",
package/src/JSAvatar.tsx CHANGED
@@ -67,7 +67,7 @@ export const JSAvatar = compose<JSAvatarType>({
67
67
  ) : userProps.icon ? (
68
68
  <Slots.icon {...iconProps} accessible={false} />
69
69
  ) : (
70
- <SvgXml xml={fallBackIconXml} />
70
+ svgIconsEnabled && <SvgXml xml={fallBackIconXml} />
71
71
  )}
72
72
  </Slots.initialsBackground>
73
73
  )}
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { JSAvatar } from '..';
3
- import { getInitials, validateAlphabeticalCharacters, removeTitlesFromName } from '../useAvatar';
3
+ import { getInitials } from '../useAvatar';
4
4
  import * as renderer from 'react-test-renderer';
5
5
 
6
6
  const alphabeticalTestNames = [
@@ -18,7 +18,6 @@ const alphabeticalTestNames = [
18
18
  'Richard Feynman {Teams}',
19
19
  ];
20
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
21
  const namesWithTitles = ['Mr Feynman', 'Dr Richard Feynman'];
23
22
  const initialsForNameWithTitles = ['F', 'RF'];
24
23
 
@@ -29,130 +28,102 @@ describe('Avatar rendering', () => {
29
28
  });
30
29
  });
31
30
 
32
- describe('validateAlphabeticalCharacters method', () => {
33
- it('validates alphabetical characters', () => {
34
- for (let i = 0; i < alphabeticalTestNames.length; i++) {
35
- expect(validateAlphabeticalCharacters(alphabeticalTestNames[i])).toBeTruthy();
36
- }
37
- for (let i = 0; i < otherTestNames.length; i++) {
38
- expect(validateAlphabeticalCharacters(otherTestNames[i])).toBeFalsy();
39
- }
31
+ describe('getInitials - names with titles', () => {
32
+ it('returns initials without title', () => {
33
+ expect(getInitials('Mr Faynman')).toBe('F');
40
34
  });
35
+ it('returns initials for names with multi-word titles', () => {
36
+ expect(getInitials('Consul General Richard Faynman')).toBe('RF');
37
+ expect(getInitials('Major General Victor')).toBe('V');
38
+ });
39
+ });
41
40
 
42
- it("doesn't validate undefined name", () => {
43
- expect(validateAlphabeticalCharacters(undefined)).toBeFalsy();
41
+ describe('getInitials method - language support', () => {
42
+ it('returns correct initials cyrillic language', () => {
43
+ const test = getInitials('Илон Маск');
44
+ expect(test).toBe('ИМ');
44
45
  });
45
- it("doesn't validate an empty string", () => {
46
- expect(validateAlphabeticalCharacters('')).toBeFalsy();
46
+ it('calculates correct initials for non-ASCII characters', () => {
47
+ const test = getInitials('Írissa Þórðardóttir');
48
+ expect(test).toBe('ÍÞ');
47
49
  });
48
- it("doesn't validate null name", () => {
49
- expect(validateAlphabeticalCharacters(null)).toBeFalsy();
50
+ it('returns correct initials for non-ASCII characters', () => {
51
+ const test = getInitials('Øyvind Åsen');
52
+ expect(test).toBe('ØÅ');
50
53
  });
51
54
  });
52
55
 
53
- describe('removeTitlesFromName method', () => {
54
- it('removes titles from the name', () => {
55
- const words = ['Mr', 'Faynman'];
56
- expect(removeTitlesFromName(words)).toStrictEqual(['Faynman']);
57
- });
58
- // it('removes multiword titles from the name', () => {
59
- // const name = 'Consul General Richard Faynman';
60
- // expect(removeTitlesFromName(name)).toStrictEqual(['Richard Faynman']);
61
- // });
62
- });
63
-
64
56
  describe('getInitials method', () => {
65
57
  it('returns correct initials', () => {
66
58
  const test = getInitials('-Test str with *spaces');
67
59
  expect(test).toBe('TS');
68
60
  });
69
-
70
61
  it('returns an empty string if name is undefined', () => {
71
62
  expect(getInitials(undefined)).toBe('');
72
63
  });
73
-
74
64
  it('return initials for alphabetical words', () => {
75
65
  for (let i = 0; i < alphabeticalTestNames.length; i++) {
76
66
  expect(getInitials(alphabeticalTestNames[i])).toBe(alphabeticalInitials[i]);
77
67
  }
78
68
  });
79
-
80
69
  it('return initials for words with titles', () => {
81
70
  for (let i = 0; i < namesWithTitles.length; i++) {
82
71
  expect(getInitials(namesWithTitles[i])).toBe(initialsForNameWithTitles[i]);
83
72
  }
84
73
  });
85
-
86
74
  it("returns initials when there's a coma", () => {
87
75
  expect(getInitials('Second, First')).toEqual('SF');
88
76
  });
89
-
90
77
  // Unit tests from Web
91
78
  it('handles null inputs', () => {
92
79
  expect(getInitials(null)).toEqual('');
93
80
  expect(getInitials(undefined)).toEqual('');
94
81
  });
95
-
96
- // it('calculates an expected initials in LTR for non-ASCII characters', () => {
97
- // expect(getInitials('Írissa Þórðardóttir')).toEqual('ÍÞ');
98
- // expect(getInitials('Øyvind Åsen')).toEqual('ØÅ');
99
- // });
100
-
101
82
  it('calculates an expected initials in LTR with a hypen', () => {
102
83
  expect(getInitials('David Zearing-Goff')).toEqual('DZ');
103
84
  });
104
-
105
- // it('calculates an expected initials in LTR with numbers', () => {
106
- // expect(getInitials('4lex 5loo')).toEqual('45');
107
- // });
85
+ it('calculates an expected initials in LTR with numbers', () => {
86
+ expect(getInitials('4lex 5loo')).toEqual('LL');
87
+ });
108
88
  it('calculates an expected initials in LTR with multiple parentheses, extra spaces, and unwanted characters', () => {
109
89
  const result = getInitials(' !@#$%^&*()=+ (Alpha) David (The man) `~<>,./?[]{}| Goff (Gamma) ');
110
90
  expect(result).toEqual('DG');
111
91
  });
112
-
113
92
  it('calculates an expected initials in LTR with multiple types of unwanted text', () => {
114
- const result = getInitials(' !@#$%^&*()=+ (Alpha) David (The man) `~<>,./?[]{}| Goff (Gamma) [Beta] ');
93
+ const result = getInitials(" !@#$%^&*()=+ (Alpha) /David (The man) `~<>,./?[]{}| 'Goff (Gamma) [Beta] ");
115
94
  expect(result).toEqual('DG');
116
95
  });
117
-
118
96
  it('calculates an expected initials for Arabic names', () => {
119
- expect(getInitials('خسرو رحیمی')).toEqual('');
97
+ expect(getInitials('خسرو رحیمی')).toEqual('خ');
120
98
  });
121
-
122
99
  it('calculates an expected initials for Chinese names', () => {
123
- expect(getInitials('桂英')).toEqual('');
124
- expect(getInitials('佳')).toEqual('');
125
- expect(getInitials('宋智洋')).toEqual('');
100
+ expect(getInitials('桂英')).toEqual('');
101
+ expect(getInitials('佳')).toEqual('');
102
+ expect(getInitials('宋智洋')).toEqual('');
126
103
  });
127
-
128
104
  it('calculates an expected initials for Korean names', () => {
129
- expect(getInitials('강현')).toEqual('');
130
- expect(getInitials('최종래')).toEqual('');
131
- expect(getInitials('남궁 성종')).toEqual('');
105
+ expect(getInitials('강현')).toEqual('');
106
+ expect(getInitials('최종래')).toEqual('');
107
+ expect(getInitials('남궁 성종')).toEqual('');
132
108
  });
133
-
134
109
  it('calculates an expected initials for Japanese names', () => {
135
- expect(getInitials('松田')).toEqual('');
136
- expect(getInitials('海野')).toEqual('');
137
- expect(getInitials('かり')).toEqual('');
110
+ expect(getInitials('松田')).toEqual('');
111
+ expect(getInitials('海野')).toEqual('');
112
+ expect(getInitials('かり')).toEqual('');
113
+ });
114
+ it('validates phone numbers', () => {
115
+ expect(getInitials('12345678')).toEqual('');
116
+ // expect(getInitials('+1 (555) 123-4567 ext.4567')).toEqual('');
117
+ expect(getInitials('+47 12 34 56 78 (X 5678)')).toEqual('');
118
+ expect(getInitials('47 12 34')).toEqual('');
119
+ expect(getInitials('47 12')).toEqual('');
120
+
121
+ expect(getInitials('James Ext 2')).toEqual('JE');
122
+ // expect(getInitials('1 Ext 2')).toEqual('');
123
+ // expect(getInitials('1x1')).toEqual('');
124
+ result = getInitials('1');
125
+ expect(result).toEqual('');
126
+ result = getInitials('A 2');
127
+ expect(result).toEqual('A');
138
128
  });
139
-
140
- // it('validates phone numbers', () => {
141
- // expect(getInitials('12345678')).toEqual('');
142
- // expect(getInitials('+1 (555) 123-4567 ext.4567')).toEqual('');
143
- // expect(getInitials('+47 12 34 56 78 (X 5678)')).toEqual('4');
144
- // expect(getInitials('47 12 34')).toEqual('');
145
- // expect(getInitials('47 12')).toEqual('');
146
- // expect(getInitials('1 Ext 2')).toEqual('');
147
- // result = getInitials('James Ext 2');
148
- // expect(result).toEqual('JE');
149
- // result = getInitials('1x1');
150
- // expect(result).toEqual('');
151
- // result = getInitials('1y1');
152
- // expect(result).toEqual('');
153
- // result = getInitials('1');
154
- // expect(result).toEqual('');
155
- // result = getInitials('A 2');
156
- // expect(result).toEqual('A');
157
- // });
158
129
  });
package/src/useAvatar.ts CHANGED
@@ -73,30 +73,42 @@ export const useAvatar = (props: JSAvatarProps): AvatarInfo => {
73
73
  * Words in braces, titles, special characters, parantheses and dashes should be ignored.
74
74
  */
75
75
  export const getInitials = (name: string): string => {
76
- if (!name && !validateAlphabeticalCharacters(name)) {
76
+ if (!name) {
77
77
  return '';
78
78
  }
79
- const nonWordRegExp = new RegExp('\\W+(?<!\\S-)', 'g');
80
- const wordsInBracesRegExp = new RegExp('(\\(|\\[|\\{)\\w+(\\)|\\]|\\})', 'g');
81
- let words = name.replace(wordsInBracesRegExp, ' ').replace(nonWordRegExp, ' ').trim().split(' ');
82
- words = removeTitlesFromName(words);
79
+ const ARABIC_ASIAN_REGEXP = new RegExp(
80
+ '[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uAC00-\uD7AF\uD7B0-\uD7FF\u3040-\u309F\u30A0-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uD840-\uD869]',
81
+ 'g',
82
+ );
83
+ const words = removeRedundantCharacters(name);
83
84
  const wordsLength = words.length;
84
85
  const lastWordIdx = wordsLength - 1;
85
- const initials = `${words[0].charAt(0).toUpperCase()}${wordsLength > 1 ? words[lastWordIdx].charAt(0).toUpperCase() : ''}`;
86
+ const firstLetter = words[0].charAt(0).toUpperCase();
87
+ const lastLetter = wordsLength > 1 ? words[lastWordIdx].charAt(0).toUpperCase() : '';
88
+ const initials = `${firstLetter}${ARABIC_ASIAN_REGEXP.test(name) ? '' : lastLetter}`;
86
89
  return initials;
87
90
  };
88
91
 
89
92
  /**
90
- * A function which verifies whether a name contains non-alphabetical characters
93
+ * A function which takes a name and returns array of valid words
91
94
  *
92
95
  * @param name
93
- * @returns true if the name contains alphabetical characters. Returns false if there are
94
- * numeric values or the first character is non-alphabetical. In this case avatar should
95
- * fall back to icon.
96
+ * @returns array of words without phone numbers and special characters.
96
97
  */
97
- export const validateAlphabeticalCharacters = (name: string): boolean => {
98
- const alphabeticalRegExp = new RegExp('[a-zA-Z]', 'g');
99
- return name ? alphabeticalRegExp.test(name) : false;
98
+ export const removeRedundantCharacters = (name: string): string[] => {
99
+ if (!name) {
100
+ return [];
101
+ }
102
+ const WORDS_IN_BRACES_REGEXP = new RegExp('[(\\[\\{][^\\)\\]\\}]*[\\)\\]\\}]', 'g');
103
+ const PHONE_NUMBER_REGEXP = new RegExp('(\\+|(\\d|\\s))', 'g');
104
+ const SPECIAL_CHARACTERS_REGEXP = new RegExp('[!"#\'$%&*+,-./:;>=<?@^_`|~¡¢£¤¥¦§¨©ª«¬®ˉ°±²¼½¾¿×÷]', 'g');
105
+ const words = name
106
+ .replace(WORDS_IN_BRACES_REGEXP, '')
107
+ .replace(PHONE_NUMBER_REGEXP, ' ')
108
+ .replace(SPECIAL_CHARACTERS_REGEXP, '')
109
+ .trim()
110
+ .split(' ');
111
+ return removeTitlesFromName(words);
100
112
  };
101
113
 
102
114
  /**
@@ -1,15 +0,0 @@
1
- /**
2
- * Regular expressions matching characters to ignore when calculating the initials.
3
- */
4
- /**
5
- * Get (up to 2 characters) initials based on display name of the persona.
6
- *
7
- * @param displayName - The full name of the person or entity
8
- * @param isRtl - Whether the display is in RTL
9
- * @param allowPhoneInitials - Should initials be generated from phone numbers (default false)
10
- *
11
- * @returns The 1 or 2 character initials based on the name. Or an empty string if no initials
12
- * could be derived from the name.
13
- */
14
- export declare function getInitials(displayName: string | undefined | null, isRtl: boolean, allowPhoneInitials?: boolean): string;
15
- //# sourceMappingURL=getInitials.d.ts.map