@atlaskit/emoji 64.0.1 → 64.2.0

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 (188) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/components/common/CachingEmoji.js +8 -6
  4. package/dist/cjs/components/common/DeleteButton.js +1 -1
  5. package/dist/cjs/components/common/Emoji.js +35 -14
  6. package/dist/cjs/components/common/EmojiActions.js +233 -0
  7. package/dist/cjs/components/common/EmojiPlaceholder.js +3 -10
  8. package/dist/cjs/components/common/EmojiPreview.js +2 -2
  9. package/dist/cjs/components/common/ResourcedEmojiComponent.js +12 -17
  10. package/dist/cjs/components/common/styles.js +22 -25
  11. package/dist/cjs/components/picker/EmojiPickerComponent.js +19 -43
  12. package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +2 -1
  13. package/dist/cjs/components/picker/EmojiPickerFooter.js +7 -49
  14. package/dist/cjs/components/picker/EmojiPickerList.js +36 -30
  15. package/dist/cjs/components/picker/EmojiPickerPreview.js +87 -0
  16. package/dist/cjs/components/picker/styles.js +21 -16
  17. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +11 -16
  18. package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +3 -3
  19. package/dist/cjs/components/typeahead/styles.js +2 -2
  20. package/dist/cjs/components/uploader/styles.js +1 -1
  21. package/dist/cjs/context/EmojiContext.js +11 -0
  22. package/dist/cjs/context/EmojiContextProvider.js +22 -0
  23. package/dist/cjs/i18n/cs.js +2 -2
  24. package/dist/cjs/i18n/da.js +2 -2
  25. package/dist/cjs/i18n/de.js +2 -2
  26. package/dist/cjs/i18n/en_ZZ.js +51 -0
  27. package/dist/cjs/i18n/es.js +2 -2
  28. package/dist/cjs/i18n/et.js +2 -2
  29. package/dist/cjs/i18n/fi.js +2 -2
  30. package/dist/cjs/i18n/fr.js +2 -2
  31. package/dist/cjs/i18n/hu.js +2 -2
  32. package/dist/cjs/i18n/it.js +2 -2
  33. package/dist/cjs/i18n/ja.js +2 -2
  34. package/dist/cjs/i18n/ko.js +2 -2
  35. package/dist/cjs/i18n/nb.js +2 -2
  36. package/dist/cjs/i18n/nl.js +2 -2
  37. package/dist/cjs/i18n/pl.js +2 -2
  38. package/dist/cjs/i18n/pt_BR.js +2 -2
  39. package/dist/cjs/i18n/pt_PT.js +2 -2
  40. package/dist/cjs/i18n/ru.js +2 -2
  41. package/dist/cjs/i18n/sk.js +2 -2
  42. package/dist/cjs/i18n/sv.js +2 -2
  43. package/dist/cjs/i18n/th.js +2 -2
  44. package/dist/cjs/i18n/tr.js +2 -2
  45. package/dist/cjs/i18n/uk.js +2 -2
  46. package/dist/cjs/i18n/vi.js +2 -2
  47. package/dist/cjs/i18n/zh.js +2 -2
  48. package/dist/cjs/i18n/zh_TW.js +2 -2
  49. package/dist/cjs/util/shared-styles.js +6 -6
  50. package/dist/cjs/version.json +1 -1
  51. package/dist/es2019/components/common/CachingEmoji.js +7 -5
  52. package/dist/es2019/components/common/DeleteButton.js +1 -1
  53. package/dist/es2019/components/common/Emoji.js +33 -13
  54. package/dist/es2019/components/common/EmojiActions.js +178 -0
  55. package/dist/es2019/components/common/EmojiPlaceholder.js +3 -7
  56. package/dist/es2019/components/common/EmojiPreview.js +1 -2
  57. package/dist/es2019/components/common/ResourcedEmojiComponent.js +11 -16
  58. package/dist/es2019/components/common/styles.js +19 -24
  59. package/dist/es2019/components/picker/EmojiPickerComponent.js +18 -44
  60. package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +2 -1
  61. package/dist/es2019/components/picker/EmojiPickerFooter.js +6 -46
  62. package/dist/es2019/components/picker/EmojiPickerList.js +36 -29
  63. package/dist/es2019/components/picker/EmojiPickerPreview.js +43 -0
  64. package/dist/es2019/components/picker/styles.js +18 -14
  65. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +10 -15
  66. package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +2 -2
  67. package/dist/es2019/components/typeahead/styles.js +2 -2
  68. package/dist/es2019/components/uploader/styles.js +1 -1
  69. package/dist/es2019/context/EmojiContext.js +2 -0
  70. package/dist/es2019/context/EmojiContextProvider.js +10 -0
  71. package/dist/es2019/i18n/cs.js +2 -2
  72. package/dist/es2019/i18n/da.js +2 -2
  73. package/dist/es2019/i18n/de.js +2 -2
  74. package/dist/es2019/i18n/en_ZZ.js +43 -0
  75. package/dist/es2019/i18n/es.js +2 -2
  76. package/dist/es2019/i18n/et.js +2 -2
  77. package/dist/es2019/i18n/fi.js +2 -2
  78. package/dist/es2019/i18n/fr.js +2 -2
  79. package/dist/es2019/i18n/hu.js +2 -2
  80. package/dist/es2019/i18n/it.js +2 -2
  81. package/dist/es2019/i18n/ja.js +2 -2
  82. package/dist/es2019/i18n/ko.js +2 -2
  83. package/dist/es2019/i18n/nb.js +2 -2
  84. package/dist/es2019/i18n/nl.js +2 -2
  85. package/dist/es2019/i18n/pl.js +2 -2
  86. package/dist/es2019/i18n/pt_BR.js +2 -2
  87. package/dist/es2019/i18n/pt_PT.js +2 -2
  88. package/dist/es2019/i18n/ru.js +2 -2
  89. package/dist/es2019/i18n/sk.js +2 -2
  90. package/dist/es2019/i18n/sv.js +2 -2
  91. package/dist/es2019/i18n/th.js +2 -2
  92. package/dist/es2019/i18n/tr.js +2 -2
  93. package/dist/es2019/i18n/uk.js +2 -2
  94. package/dist/es2019/i18n/vi.js +2 -2
  95. package/dist/es2019/i18n/zh.js +2 -2
  96. package/dist/es2019/i18n/zh_TW.js +2 -2
  97. package/dist/es2019/util/shared-styles.js +6 -6
  98. package/dist/es2019/version.json +1 -1
  99. package/dist/esm/components/common/CachingEmoji.js +7 -5
  100. package/dist/esm/components/common/DeleteButton.js +1 -1
  101. package/dist/esm/components/common/Emoji.js +35 -13
  102. package/dist/esm/components/common/EmojiActions.js +200 -0
  103. package/dist/esm/components/common/EmojiPlaceholder.js +3 -7
  104. package/dist/esm/components/common/EmojiPreview.js +2 -2
  105. package/dist/esm/components/common/ResourcedEmojiComponent.js +10 -16
  106. package/dist/esm/components/common/styles.js +19 -22
  107. package/dist/esm/components/picker/EmojiPickerComponent.js +18 -45
  108. package/dist/esm/components/picker/EmojiPickerEmojiRow.js +2 -1
  109. package/dist/esm/components/picker/EmojiPickerFooter.js +6 -46
  110. package/dist/esm/components/picker/EmojiPickerList.js +36 -31
  111. package/dist/esm/components/picker/EmojiPickerPreview.js +67 -0
  112. package/dist/esm/components/picker/styles.js +18 -14
  113. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +10 -16
  114. package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +2 -2
  115. package/dist/esm/components/typeahead/styles.js +2 -2
  116. package/dist/esm/components/uploader/styles.js +1 -1
  117. package/dist/esm/context/EmojiContext.js +2 -0
  118. package/dist/esm/context/EmojiContextProvider.js +9 -0
  119. package/dist/esm/i18n/cs.js +2 -2
  120. package/dist/esm/i18n/da.js +2 -2
  121. package/dist/esm/i18n/de.js +2 -2
  122. package/dist/esm/i18n/en_ZZ.js +43 -0
  123. package/dist/esm/i18n/es.js +2 -2
  124. package/dist/esm/i18n/et.js +2 -2
  125. package/dist/esm/i18n/fi.js +2 -2
  126. package/dist/esm/i18n/fr.js +2 -2
  127. package/dist/esm/i18n/hu.js +2 -2
  128. package/dist/esm/i18n/it.js +2 -2
  129. package/dist/esm/i18n/ja.js +2 -2
  130. package/dist/esm/i18n/ko.js +2 -2
  131. package/dist/esm/i18n/nb.js +2 -2
  132. package/dist/esm/i18n/nl.js +2 -2
  133. package/dist/esm/i18n/pl.js +2 -2
  134. package/dist/esm/i18n/pt_BR.js +2 -2
  135. package/dist/esm/i18n/pt_PT.js +2 -2
  136. package/dist/esm/i18n/ru.js +2 -2
  137. package/dist/esm/i18n/sk.js +2 -2
  138. package/dist/esm/i18n/sv.js +2 -2
  139. package/dist/esm/i18n/th.js +2 -2
  140. package/dist/esm/i18n/tr.js +2 -2
  141. package/dist/esm/i18n/uk.js +2 -2
  142. package/dist/esm/i18n/vi.js +2 -2
  143. package/dist/esm/i18n/zh.js +2 -2
  144. package/dist/esm/i18n/zh_TW.js +2 -2
  145. package/dist/esm/util/shared-styles.js +6 -6
  146. package/dist/esm/version.json +1 -1
  147. package/dist/types/components/common/CachingEmoji.d.ts +6 -8
  148. package/dist/types/components/common/Emoji.d.ts +1 -0
  149. package/dist/types/components/common/EmojiActions.d.ts +43 -0
  150. package/dist/types/components/common/ResourcedEmojiComponent.d.ts +0 -6
  151. package/dist/types/components/common/styles.d.ts +1 -1
  152. package/dist/types/components/picker/EmojiPickerComponent.d.ts +0 -9
  153. package/dist/types/components/picker/EmojiPickerFooter.d.ts +3 -19
  154. package/dist/types/components/picker/EmojiPickerList.d.ts +17 -13
  155. package/dist/types/components/picker/EmojiPickerPreview.d.ts +9 -0
  156. package/dist/types/components/picker/styles.d.ts +1 -0
  157. package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +0 -6
  158. package/dist/types/context/EmojiContext.d.ts +4 -0
  159. package/dist/types/context/EmojiContextProvider.d.ts +7 -0
  160. package/dist/types/i18n/cs.d.ts +1 -1
  161. package/dist/types/i18n/da.d.ts +1 -1
  162. package/dist/types/i18n/de.d.ts +1 -1
  163. package/dist/types/i18n/en_ZZ.d.ts +43 -0
  164. package/dist/types/i18n/es.d.ts +1 -1
  165. package/dist/types/i18n/et.d.ts +1 -1
  166. package/dist/types/i18n/fi.d.ts +1 -1
  167. package/dist/types/i18n/fr.d.ts +1 -1
  168. package/dist/types/i18n/hu.d.ts +1 -1
  169. package/dist/types/i18n/it.d.ts +1 -1
  170. package/dist/types/i18n/ja.d.ts +1 -1
  171. package/dist/types/i18n/ko.d.ts +1 -1
  172. package/dist/types/i18n/nb.d.ts +1 -1
  173. package/dist/types/i18n/nl.d.ts +1 -1
  174. package/dist/types/i18n/pl.d.ts +1 -1
  175. package/dist/types/i18n/pt_BR.d.ts +1 -1
  176. package/dist/types/i18n/pt_PT.d.ts +1 -1
  177. package/dist/types/i18n/ru.d.ts +1 -1
  178. package/dist/types/i18n/sk.d.ts +1 -1
  179. package/dist/types/i18n/sv.d.ts +1 -1
  180. package/dist/types/i18n/th.d.ts +1 -1
  181. package/dist/types/i18n/tr.d.ts +1 -1
  182. package/dist/types/i18n/uk.d.ts +1 -1
  183. package/dist/types/i18n/vi.d.ts +1 -1
  184. package/dist/types/i18n/zh.d.ts +1 -1
  185. package/dist/types/i18n/zh_TW.d.ts +1 -1
  186. package/dist/types/util/shared-styles.d.ts +6 -6
  187. package/local-config-example.ts +3 -3
  188. package/package.json +12 -10
@@ -8,10 +8,10 @@ exports.default = void 0;
8
8
  /**
9
9
  * NOTE:
10
10
  *
11
- * This file is automatically generated by i18n-tools.
11
+ * This file is automatically generated by Traduki 2.0.
12
12
  * DO NOT CHANGE IT BY HAND or your changes will be lost.
13
13
  */
14
- // Chinese
14
+ //Chinese (Simplified)
15
15
  var _default = {
16
16
  'fabric.emoji.add.custom.emoji.label': '添加您自己的表情符号',
17
17
  'fabric.emoji.add.label': '添加表情符号',
@@ -8,10 +8,10 @@ exports.default = void 0;
8
8
  /**
9
9
  * NOTE:
10
10
  *
11
- * This file is automatically generated by i18n-tools.
11
+ * This file is automatically generated by Traduki 2.0.
12
12
  * DO NOT CHANGE IT BY HAND or your changes will be lost.
13
13
  */
14
- // undefined
14
+ //Chinese (Traditional)
15
15
  var _default = {
16
16
  'fabric.emoji.add.custom.emoji.label': '新增專屬的表情符號',
17
17
  'fabric.emoji.add.label': '新增表情符號',
@@ -17,19 +17,19 @@ var emojiPickerListWidth = _constants2.emojiPickerWidth;
17
17
  exports.emojiPickerListWidth = emojiPickerListWidth;
18
18
  var emojiPickerListHeight = 205;
19
19
  exports.emojiPickerListHeight = emojiPickerListHeight;
20
- var emojiPickerBorderColor = (0, _tokens.token)('color.border.neutral', _colors.N40);
20
+ var emojiPickerBorderColor = (0, _tokens.token)('color.border', _colors.N40);
21
21
  exports.emojiPickerBorderColor = emojiPickerBorderColor;
22
- var emojiPickerBoxShadow = (0, _tokens.token)('shadow.overlay', '0 3px 6px rgba(0, 0, 0, 0.2)');
22
+ var emojiPickerBoxShadow = (0, _tokens.token)('elevation.shadow.overlay', '0 3px 6px rgba(0, 0, 0, 0.2)');
23
23
  exports.emojiPickerBoxShadow = emojiPickerBoxShadow;
24
- var noDialogContainerBorderColor = (0, _tokens.token)('color.border.neutral', _colors.N40);
24
+ var noDialogContainerBorderColor = (0, _tokens.token)('color.border', _colors.N40);
25
25
  exports.noDialogContainerBorderColor = noDialogContainerBorderColor;
26
26
  var noDialogContainerBorderRadius = "".concat((0, _constants.borderRadius)(), "px");
27
27
  exports.noDialogContainerBorderRadius = noDialogContainerBorderRadius;
28
- var noDialogContainerBoxShadow = (0, _tokens.token)('shadow.overlay', '0 3px 6px rgba(0, 0, 0, 0.2)');
28
+ var noDialogContainerBoxShadow = (0, _tokens.token)('elevation.shadow.overlay', '0 3px 6px rgba(0, 0, 0, 0.2)');
29
29
  exports.noDialogContainerBoxShadow = noDialogContainerBoxShadow;
30
- var akEmojiSelectedBackgroundColor = (0, _tokens.token)('color.background.transparentNeutral.hover', _colors.N30);
30
+ var akEmojiSelectedBackgroundColor = (0, _tokens.token)('color.background.neutral.subtle.hovered', _colors.N30);
31
31
  exports.akEmojiSelectedBackgroundColor = akEmojiSelectedBackgroundColor;
32
- var emojiPreviewSelectedColor = (0, _tokens.token)('color.background.subtleNeutral.resting', _colors.N30);
32
+ var emojiPreviewSelectedColor = (0, _tokens.token)('color.background.neutral', _colors.N30);
33
33
  exports.emojiPreviewSelectedColor = emojiPreviewSelectedColor;
34
34
  var emojiTypeAheadMaxHeight = 350;
35
35
  exports.emojiTypeAheadMaxHeight = emojiTypeAheadMaxHeight;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "64.0.1",
3
+ "version": "64.2.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- import PropTypes from 'prop-types';
4
3
  import React from 'react';
5
4
  import { PureComponent } from 'react';
6
5
  import { shouldUseAltRepresentation } from '../../api/EmojiUtils';
@@ -8,6 +7,7 @@ import { isEmojiDescription, isMediaEmoji, isPromise } from '../../util/type-hel
8
7
  import debug from '../../util/logger';
9
8
  import Emoji from './Emoji';
10
9
  import EmojiPlaceholder from './EmojiPlaceholder';
10
+ import { EmojiContext } from '../../context/EmojiContext';
11
11
 
12
12
  /**
13
13
  * Renders an emoji from a cached image, if required.
@@ -33,7 +33,7 @@ export const CachingEmoji = props => {
33
33
 
34
34
  export class CachingMediaEmoji extends PureComponent {
35
35
  constructor(props, context) {
36
- super(props, context);
36
+ super(props);
37
37
 
38
38
  _defineProperty(this, "mounted", false);
39
39
 
@@ -76,6 +76,10 @@ export class CachingMediaEmoji extends PureComponent {
76
76
  }
77
77
 
78
78
  loadEmoji(emoji, context, forceLoad) {
79
+ if (!context) {
80
+ return;
81
+ }
82
+
79
83
  if (!context.emoji) {
80
84
  return undefined;
81
85
  }
@@ -168,8 +172,6 @@ export class CachingMediaEmoji extends PureComponent {
168
172
 
169
173
  }
170
174
 
171
- _defineProperty(CachingMediaEmoji, "contextTypes", {
172
- emoji: PropTypes.object
173
- });
175
+ _defineProperty(CachingMediaEmoji, "contextType", EmojiContext);
174
176
 
175
177
  export default CachingEmoji;
@@ -11,7 +11,7 @@ const DeleteButton = props => /*#__PURE__*/React.createElement("span", {
11
11
  }, /*#__PURE__*/React.createElement(Button, {
12
12
  iconBefore: /*#__PURE__*/React.createElement(CrossCircleIcon, {
13
13
  label: deleteEmojiLabel,
14
- primaryColor: token('color.text.mediumEmphasis', N500),
14
+ primaryColor: token('color.text.subtle', N500),
15
15
  size: "small"
16
16
  }),
17
17
  onClick: props.onClick,
@@ -1,5 +1,4 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import Tooltip from '@atlaskit/tooltip';
3
2
  import classNames from 'classnames';
4
3
  import React from 'react';
5
4
  import { shouldUseAltRepresentation } from '../../api/EmojiUtils';
@@ -26,6 +25,23 @@ const handleMouseDown = (props, event) => {
26
25
  }
27
26
  };
28
27
 
28
+ const handleKeyPress = (props, event) => {
29
+ // Clicked emoji delete button
30
+ if (event.target instanceof Element && event.target.getAttribute('aria-label') === deleteEmojiLabel) {
31
+ return;
32
+ }
33
+
34
+ const {
35
+ emoji,
36
+ onSelected
37
+ } = props;
38
+ event.preventDefault();
39
+
40
+ if (onSelected && (event.key === 'Enter' || event.key === ' ')) {
41
+ onSelected(toEmojiId(emoji), emoji, event);
42
+ }
43
+ };
44
+
29
45
  const handleMouseMove = (props, event) => {
30
46
  const {
31
47
  emoji,
@@ -73,7 +89,8 @@ const renderAsSprite = props => {
73
89
  selected,
74
90
  selectOnHover,
75
91
  className,
76
- showTooltip
92
+ showTooltip,
93
+ shouldBeInteractive
77
94
  } = props;
78
95
  const representation = emoji.representation;
79
96
  const sprite = representation.sprite;
@@ -110,18 +127,19 @@ const renderAsSprite = props => {
110
127
  style: style
111
128
  }, "\xA0");
112
129
  return /*#__PURE__*/React.createElement("span", {
130
+ tabIndex: shouldBeInteractive ? 0 : undefined,
131
+ role: shouldBeInteractive ? 'button' : undefined,
113
132
  className: classNames(classes),
133
+ onKeyPress: event => handleKeyPress(props, event),
114
134
  onMouseDown: event => {
115
135
  handleMouseDown(props, event);
116
136
  },
117
137
  onMouseMove: event => {
118
138
  handleMouseMove(props, event);
119
139
  },
120
- "aria-label": emoji.shortName
121
- }, showTooltip ? /*#__PURE__*/React.createElement(Tooltip, {
122
- tag: "span",
123
- content: emoji.shortName
124
- }, emojiNode) : emojiNode);
140
+ "aria-label": emoji.shortName,
141
+ title: showTooltip ? emoji.shortName : ''
142
+ }, emojiNode);
125
143
  }; // Keep as pure functional component, see renderAsSprite.
126
144
 
127
145
 
@@ -133,7 +151,8 @@ const renderAsImage = props => {
133
151
  selectOnHover,
134
152
  className,
135
153
  showTooltip,
136
- showDelete
154
+ showDelete,
155
+ shouldBeInteractive
137
156
  } = props;
138
157
  const classes = {
139
158
  [styles.emoji]: true,
@@ -205,18 +224,19 @@ const renderAsImage = props => {
205
224
  onError: onError
206
225
  }, sizing));
207
226
  return /*#__PURE__*/React.createElement("span", {
227
+ tabIndex: shouldBeInteractive ? 0 : undefined,
228
+ role: shouldBeInteractive ? 'button' : undefined,
208
229
  className: classNames(classes),
230
+ onKeyPress: event => handleKeyPress(props, event),
209
231
  onMouseDown: event => {
210
232
  handleMouseDown(props, event);
211
233
  },
212
234
  onMouseMove: event => {
213
235
  handleMouseMove(props, event);
214
236
  },
215
- "aria-label": emoji.shortName
216
- }, deleteButton, showTooltip ? /*#__PURE__*/React.createElement(Tooltip, {
217
- tag: "span",
218
- content: emoji.shortName
219
- }, emojiNode) : emojiNode);
237
+ "aria-label": emoji.shortName,
238
+ title: showTooltip ? emoji.shortName : ''
239
+ }, deleteButton, emojiNode);
220
240
  };
221
241
 
222
242
  export const Emoji = props => {
@@ -0,0 +1,178 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import classNames from 'classnames';
3
+ import React from 'react';
4
+ import { PureComponent } from 'react';
5
+ import { FormattedMessage, injectIntl } from 'react-intl-next';
6
+ import EmojiDeletePreview from '../common/EmojiDeletePreview';
7
+ import EmojiUploadPicker from '../common/EmojiUploadPicker';
8
+ import * as styles from './styles';
9
+ import * as footerStyles from '../picker/styles';
10
+ import EmojiPickerListSearch from '../picker/EmojiPickerListSearch';
11
+ import ToneSelector from './ToneSelector';
12
+ import EmojiButton from './EmojiButton';
13
+ import { messages } from '../i18n';
14
+ import AkButton from '@atlaskit/button/standard-button';
15
+ import AddIcon from '@atlaskit/icon/glyph/add';
16
+ import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
17
+ export class EmojiActions extends PureComponent {
18
+ constructor(...args) {
19
+ super(...args);
20
+
21
+ _defineProperty(this, "state", {
22
+ selectingTone: false
23
+ });
24
+
25
+ _defineProperty(this, "onToneButtonClick", () => {
26
+ this.setState({
27
+ selectingTone: !this.state.selectingTone
28
+ });
29
+ });
30
+
31
+ _defineProperty(this, "onToneSelected", toneValue => {
32
+ this.setState({
33
+ selectingTone: false
34
+ });
35
+
36
+ if (this.props.onToneSelected) {
37
+ this.props.onToneSelected(toneValue);
38
+ }
39
+ });
40
+
41
+ _defineProperty(this, "onMouseLeave", () => {
42
+ const {
43
+ selectingTone
44
+ } = this.state;
45
+ const {
46
+ onToneSelectorCancelled
47
+ } = this.props;
48
+
49
+ if (selectingTone && onToneSelectorCancelled) {
50
+ onToneSelectorCancelled();
51
+ }
52
+
53
+ this.setState({
54
+ selectingTone: false
55
+ });
56
+ });
57
+ }
58
+
59
+ renderTones() {
60
+ const {
61
+ toneEmoji,
62
+ selectedTone,
63
+ intl
64
+ } = this.props;
65
+ const {
66
+ formatMessage
67
+ } = intl;
68
+
69
+ if (!toneEmoji) {
70
+ return null;
71
+ }
72
+
73
+ let previewEmoji = toneEmoji;
74
+
75
+ if (selectedTone && previewEmoji.skinVariations) {
76
+ previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
77
+ }
78
+
79
+ return /*#__PURE__*/React.createElement("div", {
80
+ className: styles.emojiToneSelectorContainer
81
+ }, this.state.selectingTone && /*#__PURE__*/React.createElement(ToneSelector, {
82
+ emoji: toneEmoji,
83
+ onToneSelected: this.onToneSelected,
84
+ previewEmojiId: previewEmoji.id
85
+ }), /*#__PURE__*/React.createElement(EmojiButton, {
86
+ ariaExpanded: this.state.selectingTone,
87
+ emoji: previewEmoji,
88
+ selectOnHover: true,
89
+ onSelected: this.onToneButtonClick,
90
+ ariaLabelText: formatMessage(messages.emojiSelectSkinToneButtonAriaLabelText, {
91
+ selectedTone: `${setSkinToneAriaLabelText(previewEmoji.name)} selected`
92
+ })
93
+ }));
94
+ } // note: emoji-picker-add-emoji className is used by pollinator synthetic checks
95
+
96
+
97
+ renderAddOwnEmoji() {
98
+ const {
99
+ onOpenUpload,
100
+ uploadEnabled,
101
+ intl
102
+ } = this.props;
103
+ const {
104
+ formatMessage
105
+ } = intl;
106
+
107
+ if (!uploadEnabled) {
108
+ return null;
109
+ }
110
+
111
+ return /*#__PURE__*/React.createElement("div", {
112
+ className: styles.AddCustomEmoji
113
+ }, /*#__PURE__*/React.createElement(FormattedMessage, messages.addCustomEmojiLabel, label => /*#__PURE__*/React.createElement(AkButton, {
114
+ onClick: onOpenUpload,
115
+ iconBefore: /*#__PURE__*/React.createElement(AddIcon, {
116
+ label: formatMessage(messages.addCustomEmojiLabel),
117
+ size: "small"
118
+ }),
119
+ appearance: "subtle",
120
+ className: styles.addCustomEmojiButton + ' emoji-picker-add-emoji'
121
+ }, label)));
122
+ }
123
+
124
+ render() {
125
+ const {
126
+ initialUploadName,
127
+ onUploadCancelled,
128
+ onUploadEmoji,
129
+ onCloseDelete,
130
+ onDeleteEmoji,
131
+ uploadErrorMessage,
132
+ uploading,
133
+ onFileChooserClicked,
134
+ emojiToDelete,
135
+ onChange,
136
+ query
137
+ } = this.props;
138
+ const previewFooterClassnames = classNames([footerStyles.emojiPickerFooter, footerStyles.emojiActionsContainerWithBottomShadow]);
139
+
140
+ if (uploading) {
141
+ return /*#__PURE__*/React.createElement("div", {
142
+ className: previewFooterClassnames
143
+ }, /*#__PURE__*/React.createElement(EmojiUploadPicker, {
144
+ onUploadCancelled: onUploadCancelled,
145
+ onUploadEmoji: onUploadEmoji,
146
+ onFileChooserClicked: onFileChooserClicked,
147
+ errorMessage: uploadErrorMessage,
148
+ initialUploadName: initialUploadName
149
+ }));
150
+ }
151
+
152
+ if (emojiToDelete) {
153
+ return /*#__PURE__*/React.createElement("div", {
154
+ className: previewFooterClassnames
155
+ }, /*#__PURE__*/React.createElement(EmojiDeletePreview, {
156
+ emoji: emojiToDelete,
157
+ onDeleteEmoji: onDeleteEmoji,
158
+ onCloseDelete: onCloseDelete
159
+ }));
160
+ }
161
+
162
+ return /*#__PURE__*/React.createElement("div", {
163
+ className: previewFooterClassnames,
164
+ onMouseLeave: this.onMouseLeave
165
+ }, /*#__PURE__*/React.createElement("div", {
166
+ style: {
167
+ display: 'flex',
168
+ justifyContent: 'flex-end',
169
+ alignItems: 'center'
170
+ }
171
+ }, !this.state.selectingTone && /*#__PURE__*/React.createElement(EmojiPickerListSearch, {
172
+ onChange: onChange,
173
+ query: query
174
+ }), this.renderTones()), this.renderAddOwnEmoji());
175
+ }
176
+
177
+ }
178
+ export default injectIntl(EmojiActions);
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import classNames from 'classnames';
3
- import Tooltip from '@atlaskit/tooltip';
4
3
  import { placeholder, placeholderContainer } from './styles';
5
4
  import { defaultEmojiHeight } from '../../util/constants';
6
5
  import { isImageRepresentation, isMediaRepresentation } from '../../util/type-helpers';
@@ -36,15 +35,12 @@ const EmojiPlaceholder = props => {
36
35
  [placeholder]: true,
37
36
  [placeholderContainer]: true
38
37
  };
39
- const placeholderNode = /*#__PURE__*/React.createElement("span", {
38
+ return /*#__PURE__*/React.createElement("span", {
40
39
  "aria-label": shortName,
41
40
  className: classNames(classes),
42
- style: style
41
+ style: style,
42
+ title: showTooltip ? shortName : ''
43
43
  });
44
- return showTooltip ? /*#__PURE__*/React.createElement(Tooltip, {
45
- tag: "span",
46
- content: shortName
47
- }, placeholderNode) : placeholderNode;
48
44
  };
49
45
 
50
46
  export default EmojiPlaceholder;
@@ -104,8 +104,7 @@ export class EmojiPreview extends PureComponent {
104
104
  }
105
105
 
106
106
  const previewClasses = classNames({
107
- [styles.preview]: true,
108
- [styles.withToneSelector]: !!this.props.toneEmoji
107
+ [styles.preview]: true
109
108
  });
110
109
  const previewTextClasses = classNames({
111
110
  [styles.previewText]: true,
@@ -1,11 +1,11 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import PropTypes from 'prop-types';
3
2
  import React from 'react';
4
3
  import { Component } from 'react';
5
4
  import { defaultEmojiHeight } from '../../util/constants';
6
5
  import { isPromise } from '../../util/type-helpers';
7
6
  import CachingEmoji from './CachingEmoji';
8
7
  import EmojiPlaceholder from './EmojiPlaceholder';
8
+ import { EmojiContextProvider } from '../../context/EmojiContextProvider';
9
9
  export default class ResourcedEmojiComponent extends Component {
10
10
  constructor(props) {
11
11
  super(props);
@@ -18,14 +18,6 @@ export default class ResourcedEmojiComponent extends Component {
18
18
  };
19
19
  }
20
20
 
21
- getChildContext() {
22
- return {
23
- emoji: {
24
- emojiProvider: this.props.emojiProvider
25
- }
26
- };
27
- }
28
-
29
21
  refreshEmoji(emojiProvider, emojiId) {
30
22
  const foundEmoji = emojiProvider.findByEmojiId(emojiId);
31
23
 
@@ -110,15 +102,18 @@ export default class ResourcedEmojiComponent extends Component {
110
102
  id,
111
103
  fallback
112
104
  } = this.props.emojiId;
113
- return /*#__PURE__*/React.createElement("span", {
105
+ const emojiContextValue = {
106
+ emoji: {
107
+ emojiProvider: this.props.emojiProvider
108
+ }
109
+ };
110
+ return /*#__PURE__*/React.createElement(EmojiContextProvider, {
111
+ emojiContextValue: emojiContextValue
112
+ }, /*#__PURE__*/React.createElement("span", {
114
113
  "data-emoji-id": id,
115
114
  "data-emoji-short-name": shortName,
116
115
  "data-emoji-text": fallback || shortName
117
- }, element);
116
+ }, element));
118
117
  }
119
118
 
120
- }
121
-
122
- _defineProperty(ResourcedEmojiComponent, "childContextTypes", {
123
- emoji: PropTypes.object
124
- });
119
+ }
@@ -120,7 +120,6 @@ export const name = 'emoji-common-name';
120
120
  export const shortName = 'emoji-common-shortname';
121
121
  export const previewSingleLine = 'emoji-common-preview-single-line';
122
122
  export const toneSelectorContainer = 'emoji-common-tone-selector-container';
123
- export const withToneSelector = 'emoji-common-with-tone-selector';
124
123
  export const emojiPreviewSection = 'emoji-preview-section';
125
124
  export const emojiPreview = style({
126
125
  display: 'flex',
@@ -177,7 +176,7 @@ export const emojiPreview = style({
177
176
  $nest: {
178
177
  [`.${name}`]: {
179
178
  display: 'block',
180
- color: token('color.text.highEmphasis', colors.N900),
179
+ color: token('color.text', colors.N900),
181
180
  overflow: 'hidden',
182
181
  textOverflow: 'ellipsis',
183
182
  whiteSpace: 'nowrap',
@@ -189,7 +188,7 @@ export const emojiPreview = style({
189
188
  },
190
189
  [`.${shortName}`]: {
191
190
  display: 'block',
192
- color: token('color.text.mediumEmphasis', colors.N200),
191
+ color: token('color.text.subtle', colors.N200),
193
192
  fontSize: '12px',
194
193
  lineHeight: 1,
195
194
  marginBottom: '-2px',
@@ -207,35 +206,30 @@ export const emojiPreview = style({
207
206
  display: 'none'
208
207
  },
209
208
  [`.${shortName}`]: {
210
- color: token('color.text.highEmphasis', colors.N900),
209
+ color: token('color.text', colors.N900),
211
210
  fontSize: '14px'
212
211
  }
213
212
  }
214
213
  }
215
214
  }
216
215
  },
217
- [`.${buttons}`]: {
218
- flex: 1,
219
- textAlign: 'right',
220
- margin: '6px'
221
- },
222
- [`.${toneSelectorContainer}`]: {
223
- flex: 1,
224
- display: 'flex',
225
- justifyContent: 'flex-end',
226
- margin: '6px'
227
- },
228
- [`.${withToneSelector} .${previewText}`]: {
216
+ [`.${previewText}`]: {
229
217
  maxWidth: '235px',
230
218
  width: '235px'
231
219
  /* IE */
232
220
 
233
221
  }
234
222
  }
223
+ });
224
+ export const emojiToneSelectorContainer = style({
225
+ flex: 1,
226
+ display: 'flex',
227
+ justifyContent: 'flex-end',
228
+ padding: '8px 10px 8px 0'
235
229
  }); // Scrollable
236
230
 
237
231
  export const emojiScrollable = style({
238
- border: `1px solid ${token('color.border.neutral', '#fff')}`,
232
+ border: `1px solid ${token('color.border', '#fff')}`,
239
233
  borderRadius: `${borderRadius()}px`,
240
234
  display: 'block',
241
235
  margin: '0',
@@ -252,7 +246,7 @@ export const emojiUpload = style({
252
246
  justifyContent: 'space-around'
253
247
  });
254
248
  export const uploadChooseFileMessage = style({
255
- color: token('color.text.mediumEmphasis', colors.N300),
249
+ color: token('color.text.subtle', colors.N300),
256
250
  fontSize: '12px',
257
251
  paddingBottom: '7px'
258
252
  });
@@ -295,14 +289,14 @@ export const uploadPreview = style({
295
289
  display: 'flex',
296
290
  justifyContent: 'space-between',
297
291
  alignItems: 'center',
298
- background: token('color.background.subtleNeutral.resting', colors.N20),
292
+ background: token('color.background.neutral', colors.N20),
299
293
  borderRadius: `${borderRadius()}px`,
300
294
  padding: '10px'
301
295
  });
302
296
  export const uploadPreviewText = style({
303
297
  $nest: {
304
298
  h5: {
305
- color: token('color.text.mediumEmphasis', colors.N300),
299
+ color: token('color.text.subtle', colors.N300),
306
300
  paddingBottom: '4px',
307
301
  fontSize: '12px'
308
302
  },
@@ -329,7 +323,8 @@ export const uploadAddRow = style({
329
323
  });
330
324
  export const AddCustomEmoji = style({
331
325
  alignSelf: 'center',
332
- marginLeft: '10px'
326
+ marginLeft: '10px',
327
+ marginBottom: '10px'
333
328
  }); // Emoji Delete preview
334
329
 
335
330
  export const submitDelete = 'emoji-submit-delete';
@@ -339,14 +334,14 @@ export const deletePreview = style({
339
334
  padding: '10px',
340
335
  display: 'flex',
341
336
  flexDirection: 'column',
342
- justifyContent: 'flex-end',
343
- fontSize: '12px'
337
+ justifyContent: 'flex-end'
344
338
  });
345
339
  export const deleteText = style({
346
340
  height: '64px',
341
+ fontSize: '12px',
347
342
  $nest: {
348
343
  ':first-child': {
349
- color: token('color.text.mediumEmphasis', colors.N300),
344
+ color: token('color.text.subtle', colors.N300),
350
345
  lineHeight: '16px'
351
346
  }
352
347
  }