@atlaskit/emoji 64.0.1 → 64.1.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 (62) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/components/common/DeleteButton.js +1 -1
  3. package/dist/cjs/components/common/Emoji.js +35 -14
  4. package/dist/cjs/components/common/EmojiActions.js +233 -0
  5. package/dist/cjs/components/common/EmojiPlaceholder.js +3 -10
  6. package/dist/cjs/components/common/EmojiPreview.js +2 -2
  7. package/dist/cjs/components/common/styles.js +22 -25
  8. package/dist/cjs/components/picker/EmojiPickerComponent.js +8 -27
  9. package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +2 -1
  10. package/dist/cjs/components/picker/EmojiPickerFooter.js +7 -49
  11. package/dist/cjs/components/picker/EmojiPickerList.js +36 -10
  12. package/dist/cjs/components/picker/EmojiPickerPreview.js +87 -0
  13. package/dist/cjs/components/picker/styles.js +21 -16
  14. package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +3 -3
  15. package/dist/cjs/components/typeahead/styles.js +2 -2
  16. package/dist/cjs/components/uploader/styles.js +1 -1
  17. package/dist/cjs/util/shared-styles.js +6 -6
  18. package/dist/cjs/version.json +1 -1
  19. package/dist/es2019/components/common/DeleteButton.js +1 -1
  20. package/dist/es2019/components/common/Emoji.js +33 -13
  21. package/dist/es2019/components/common/EmojiActions.js +178 -0
  22. package/dist/es2019/components/common/EmojiPlaceholder.js +3 -7
  23. package/dist/es2019/components/common/EmojiPreview.js +1 -2
  24. package/dist/es2019/components/common/styles.js +19 -24
  25. package/dist/es2019/components/picker/EmojiPickerComponent.js +8 -29
  26. package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +2 -1
  27. package/dist/es2019/components/picker/EmojiPickerFooter.js +6 -46
  28. package/dist/es2019/components/picker/EmojiPickerList.js +36 -10
  29. package/dist/es2019/components/picker/EmojiPickerPreview.js +43 -0
  30. package/dist/es2019/components/picker/styles.js +18 -14
  31. package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +2 -2
  32. package/dist/es2019/components/typeahead/styles.js +2 -2
  33. package/dist/es2019/components/uploader/styles.js +1 -1
  34. package/dist/es2019/util/shared-styles.js +6 -6
  35. package/dist/es2019/version.json +1 -1
  36. package/dist/esm/components/common/DeleteButton.js +1 -1
  37. package/dist/esm/components/common/Emoji.js +35 -13
  38. package/dist/esm/components/common/EmojiActions.js +200 -0
  39. package/dist/esm/components/common/EmojiPlaceholder.js +3 -7
  40. package/dist/esm/components/common/EmojiPreview.js +2 -2
  41. package/dist/esm/components/common/styles.js +19 -22
  42. package/dist/esm/components/picker/EmojiPickerComponent.js +8 -29
  43. package/dist/esm/components/picker/EmojiPickerEmojiRow.js +2 -1
  44. package/dist/esm/components/picker/EmojiPickerFooter.js +6 -46
  45. package/dist/esm/components/picker/EmojiPickerList.js +36 -10
  46. package/dist/esm/components/picker/EmojiPickerPreview.js +67 -0
  47. package/dist/esm/components/picker/styles.js +18 -14
  48. package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +2 -2
  49. package/dist/esm/components/typeahead/styles.js +2 -2
  50. package/dist/esm/components/uploader/styles.js +1 -1
  51. package/dist/esm/util/shared-styles.js +6 -6
  52. package/dist/esm/version.json +1 -1
  53. package/dist/types/components/common/Emoji.d.ts +1 -0
  54. package/dist/types/components/common/EmojiActions.d.ts +43 -0
  55. package/dist/types/components/common/styles.d.ts +1 -1
  56. package/dist/types/components/picker/EmojiPickerComponent.d.ts +0 -3
  57. package/dist/types/components/picker/EmojiPickerFooter.d.ts +3 -19
  58. package/dist/types/components/picker/EmojiPickerList.d.ts +17 -3
  59. package/dist/types/components/picker/EmojiPickerPreview.d.ts +9 -0
  60. package/dist/types/components/picker/styles.d.ts +1 -0
  61. package/dist/types/util/shared-styles.d.ts +6 -6
  62. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 64.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`19d72473dfb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/19d72473dfb) - [ux] Task: https://a11y-internal.atlassian.net/browse/AK-97, Emoji picker: made emojis list keyboard accessible, moved tone selector and place it right after search input, placed upload/remove emoji menus above the emoji list.
8
+ - [`19d72473dfb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/19d72473dfb) - Remove @atlaskit/tooltip from critical path of rendering emoji
9
+ - [`19d72473dfb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/19d72473dfb) - Upgrade js-search to v2
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+
3
15
  ## 64.0.1
4
16
 
5
17
  ### Patch Changes
@@ -33,7 +33,7 @@ var DeleteButton = function DeleteButton(props) {
33
33
  }, /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
34
34
  iconBefore: /*#__PURE__*/_react.default.createElement(_crossCircle.default, {
35
35
  label: _constants.deleteEmojiLabel,
36
- primaryColor: (0, _tokens.token)('color.text.mediumEmphasis', _colors.N500),
36
+ primaryColor: (0, _tokens.token)('color.text.subtle', _colors.N500),
37
37
  size: "small"
38
38
  }),
39
39
  onClick: props.onClick,
@@ -13,8 +13,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
13
13
 
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
 
16
- var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
17
-
18
16
  var _classnames = _interopRequireDefault(require("classnames"));
19
17
 
20
18
  var _react = _interopRequireDefault(require("react"));
@@ -54,6 +52,21 @@ var handleMouseDown = function handleMouseDown(props, event) {
54
52
  }
55
53
  };
56
54
 
55
+ var handleKeyPress = function handleKeyPress(props, event) {
56
+ // Clicked emoji delete button
57
+ if (event.target instanceof Element && event.target.getAttribute('aria-label') === _constants.deleteEmojiLabel) {
58
+ return;
59
+ }
60
+
61
+ var emoji = props.emoji,
62
+ onSelected = props.onSelected;
63
+ event.preventDefault();
64
+
65
+ if (onSelected && (event.key === 'Enter' || event.key === ' ')) {
66
+ onSelected((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
67
+ }
68
+ };
69
+
57
70
  var handleMouseMove = function handleMouseMove(props, event) {
58
71
  var emoji = props.emoji,
59
72
  onMouseMove = props.onMouseMove;
@@ -96,7 +109,8 @@ var renderAsSprite = function renderAsSprite(props) {
96
109
  selected = props.selected,
97
110
  selectOnHover = props.selectOnHover,
98
111
  className = props.className,
99
- showTooltip = props.showTooltip;
112
+ showTooltip = props.showTooltip,
113
+ shouldBeInteractive = props.shouldBeInteractive;
100
114
  var representation = emoji.representation;
101
115
  var sprite = representation.sprite;
102
116
  var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, styles.emojiContainer, true), (0, _defineProperty2.default)(_classes, styles.emojiNode, true), (0, _defineProperty2.default)(_classes, styles.selected, selected), (0, _defineProperty2.default)(_classes, styles.selectOnHover, selectOnHover), _classes);
@@ -129,18 +143,21 @@ var renderAsSprite = function renderAsSprite(props) {
129
143
  }, "\xA0");
130
144
 
131
145
  return /*#__PURE__*/_react.default.createElement("span", {
146
+ tabIndex: shouldBeInteractive ? 0 : undefined,
147
+ role: shouldBeInteractive ? 'button' : undefined,
132
148
  className: (0, _classnames.default)(classes),
149
+ onKeyPress: function onKeyPress(event) {
150
+ return handleKeyPress(props, event);
151
+ },
133
152
  onMouseDown: function onMouseDown(event) {
134
153
  handleMouseDown(props, event);
135
154
  },
136
155
  onMouseMove: function onMouseMove(event) {
137
156
  handleMouseMove(props, event);
138
157
  },
139
- "aria-label": emoji.shortName
140
- }, showTooltip ? /*#__PURE__*/_react.default.createElement(_tooltip.default, {
141
- tag: "span",
142
- content: emoji.shortName
143
- }, emojiNode) : emojiNode);
158
+ "aria-label": emoji.shortName,
159
+ title: showTooltip ? emoji.shortName : ''
160
+ }, emojiNode);
144
161
  }; // Keep as pure functional component, see renderAsSprite.
145
162
 
146
163
 
@@ -153,7 +170,8 @@ var renderAsImage = function renderAsImage(props) {
153
170
  selectOnHover = props.selectOnHover,
154
171
  className = props.className,
155
172
  showTooltip = props.showTooltip,
156
- showDelete = props.showDelete;
173
+ showDelete = props.showDelete,
174
+ shouldBeInteractive = props.shouldBeInteractive;
157
175
  var classes = (_classes2 = {}, (0, _defineProperty2.default)(_classes2, styles.emoji, true), (0, _defineProperty2.default)(_classes2, styles.emojiNode, true), (0, _defineProperty2.default)(_classes2, styles.selected, selected), (0, _defineProperty2.default)(_classes2, styles.selectOnHover, selectOnHover), (0, _defineProperty2.default)(_classes2, styles.emojiImage, true), _classes2);
158
176
 
159
177
  if (className) {
@@ -221,18 +239,21 @@ var renderAsImage = function renderAsImage(props) {
221
239
  }, sizing));
222
240
 
223
241
  return /*#__PURE__*/_react.default.createElement("span", {
242
+ tabIndex: shouldBeInteractive ? 0 : undefined,
243
+ role: shouldBeInteractive ? 'button' : undefined,
224
244
  className: (0, _classnames.default)(classes),
245
+ onKeyPress: function onKeyPress(event) {
246
+ return handleKeyPress(props, event);
247
+ },
225
248
  onMouseDown: function onMouseDown(event) {
226
249
  handleMouseDown(props, event);
227
250
  },
228
251
  onMouseMove: function onMouseMove(event) {
229
252
  handleMouseMove(props, event);
230
253
  },
231
- "aria-label": emoji.shortName
232
- }, deleteButton, showTooltip ? /*#__PURE__*/_react.default.createElement(_tooltip.default, {
233
- tag: "span",
234
- content: emoji.shortName
235
- }, emojiNode) : emojiNode);
254
+ "aria-label": emoji.shortName,
255
+ title: showTooltip ? emoji.shortName : ''
256
+ }, deleteButton, emojiNode);
236
257
  };
237
258
 
238
259
  var Emoji = function Emoji(props) {
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = exports.EmojiActions = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _classnames = _interopRequireDefault(require("classnames"));
27
+
28
+ var _react = _interopRequireWildcard(require("react"));
29
+
30
+ var _reactIntlNext = require("react-intl-next");
31
+
32
+ var _EmojiDeletePreview = _interopRequireDefault(require("../common/EmojiDeletePreview"));
33
+
34
+ var _EmojiUploadPicker = _interopRequireDefault(require("../common/EmojiUploadPicker"));
35
+
36
+ var styles = _interopRequireWildcard(require("./styles"));
37
+
38
+ var footerStyles = _interopRequireWildcard(require("../picker/styles"));
39
+
40
+ var _EmojiPickerListSearch = _interopRequireDefault(require("../picker/EmojiPickerListSearch"));
41
+
42
+ var _ToneSelector = _interopRequireDefault(require("./ToneSelector"));
43
+
44
+ var _EmojiButton = _interopRequireDefault(require("./EmojiButton"));
45
+
46
+ var _i18n = require("../i18n");
47
+
48
+ var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
49
+
50
+ var _add = _interopRequireDefault(require("@atlaskit/icon/glyph/add"));
51
+
52
+ var _setSkinToneAriaLabelText = require("./setSkinToneAriaLabelText");
53
+
54
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
55
+
56
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
57
+
58
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
59
+
60
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
61
+
62
+ var EmojiActions = /*#__PURE__*/function (_PureComponent) {
63
+ (0, _inherits2.default)(EmojiActions, _PureComponent);
64
+
65
+ var _super = _createSuper(EmojiActions);
66
+
67
+ function EmojiActions() {
68
+ var _this;
69
+
70
+ (0, _classCallCheck2.default)(this, EmojiActions);
71
+
72
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
73
+ args[_key] = arguments[_key];
74
+ }
75
+
76
+ _this = _super.call.apply(_super, [this].concat(args));
77
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
78
+ selectingTone: false
79
+ });
80
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onToneButtonClick", function () {
81
+ _this.setState({
82
+ selectingTone: !_this.state.selectingTone
83
+ });
84
+ });
85
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onToneSelected", function (toneValue) {
86
+ _this.setState({
87
+ selectingTone: false
88
+ });
89
+
90
+ if (_this.props.onToneSelected) {
91
+ _this.props.onToneSelected(toneValue);
92
+ }
93
+ });
94
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMouseLeave", function () {
95
+ var selectingTone = _this.state.selectingTone;
96
+ var onToneSelectorCancelled = _this.props.onToneSelectorCancelled;
97
+
98
+ if (selectingTone && onToneSelectorCancelled) {
99
+ onToneSelectorCancelled();
100
+ }
101
+
102
+ _this.setState({
103
+ selectingTone: false
104
+ });
105
+ });
106
+ return _this;
107
+ }
108
+
109
+ (0, _createClass2.default)(EmojiActions, [{
110
+ key: "renderTones",
111
+ value: function renderTones() {
112
+ var _this$props = this.props,
113
+ toneEmoji = _this$props.toneEmoji,
114
+ selectedTone = _this$props.selectedTone,
115
+ intl = _this$props.intl;
116
+ var formatMessage = intl.formatMessage;
117
+
118
+ if (!toneEmoji) {
119
+ return null;
120
+ }
121
+
122
+ var previewEmoji = toneEmoji;
123
+
124
+ if (selectedTone && previewEmoji.skinVariations) {
125
+ previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
126
+ }
127
+
128
+ return /*#__PURE__*/_react.default.createElement("div", {
129
+ className: styles.emojiToneSelectorContainer
130
+ }, this.state.selectingTone && /*#__PURE__*/_react.default.createElement(_ToneSelector.default, {
131
+ emoji: toneEmoji,
132
+ onToneSelected: this.onToneSelected,
133
+ previewEmojiId: previewEmoji.id
134
+ }), /*#__PURE__*/_react.default.createElement(_EmojiButton.default, {
135
+ ariaExpanded: this.state.selectingTone,
136
+ emoji: previewEmoji,
137
+ selectOnHover: true,
138
+ onSelected: this.onToneButtonClick,
139
+ ariaLabelText: formatMessage(_i18n.messages.emojiSelectSkinToneButtonAriaLabelText, {
140
+ selectedTone: "".concat((0, _setSkinToneAriaLabelText.setSkinToneAriaLabelText)(previewEmoji.name), " selected")
141
+ })
142
+ }));
143
+ } // note: emoji-picker-add-emoji className is used by pollinator synthetic checks
144
+
145
+ }, {
146
+ key: "renderAddOwnEmoji",
147
+ value: function renderAddOwnEmoji() {
148
+ var _this$props2 = this.props,
149
+ onOpenUpload = _this$props2.onOpenUpload,
150
+ uploadEnabled = _this$props2.uploadEnabled,
151
+ intl = _this$props2.intl;
152
+ var formatMessage = intl.formatMessage;
153
+
154
+ if (!uploadEnabled) {
155
+ return null;
156
+ }
157
+
158
+ return /*#__PURE__*/_react.default.createElement("div", {
159
+ className: styles.AddCustomEmoji
160
+ }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _i18n.messages.addCustomEmojiLabel, function (label) {
161
+ return /*#__PURE__*/_react.default.createElement(_standardButton.default, {
162
+ onClick: onOpenUpload,
163
+ iconBefore: /*#__PURE__*/_react.default.createElement(_add.default, {
164
+ label: formatMessage(_i18n.messages.addCustomEmojiLabel),
165
+ size: "small"
166
+ }),
167
+ appearance: "subtle",
168
+ className: styles.addCustomEmojiButton + ' emoji-picker-add-emoji'
169
+ }, label);
170
+ }));
171
+ }
172
+ }, {
173
+ key: "render",
174
+ value: function render() {
175
+ var _this$props3 = this.props,
176
+ initialUploadName = _this$props3.initialUploadName,
177
+ onUploadCancelled = _this$props3.onUploadCancelled,
178
+ onUploadEmoji = _this$props3.onUploadEmoji,
179
+ onCloseDelete = _this$props3.onCloseDelete,
180
+ onDeleteEmoji = _this$props3.onDeleteEmoji,
181
+ uploadErrorMessage = _this$props3.uploadErrorMessage,
182
+ uploading = _this$props3.uploading,
183
+ onFileChooserClicked = _this$props3.onFileChooserClicked,
184
+ emojiToDelete = _this$props3.emojiToDelete,
185
+ onChange = _this$props3.onChange,
186
+ query = _this$props3.query;
187
+ var previewFooterClassnames = (0, _classnames.default)([footerStyles.emojiPickerFooter, footerStyles.emojiActionsContainerWithBottomShadow]);
188
+
189
+ if (uploading) {
190
+ return /*#__PURE__*/_react.default.createElement("div", {
191
+ className: previewFooterClassnames
192
+ }, /*#__PURE__*/_react.default.createElement(_EmojiUploadPicker.default, {
193
+ onUploadCancelled: onUploadCancelled,
194
+ onUploadEmoji: onUploadEmoji,
195
+ onFileChooserClicked: onFileChooserClicked,
196
+ errorMessage: uploadErrorMessage,
197
+ initialUploadName: initialUploadName
198
+ }));
199
+ }
200
+
201
+ if (emojiToDelete) {
202
+ return /*#__PURE__*/_react.default.createElement("div", {
203
+ className: previewFooterClassnames
204
+ }, /*#__PURE__*/_react.default.createElement(_EmojiDeletePreview.default, {
205
+ emoji: emojiToDelete,
206
+ onDeleteEmoji: onDeleteEmoji,
207
+ onCloseDelete: onCloseDelete
208
+ }));
209
+ }
210
+
211
+ return /*#__PURE__*/_react.default.createElement("div", {
212
+ className: previewFooterClassnames,
213
+ onMouseLeave: this.onMouseLeave
214
+ }, /*#__PURE__*/_react.default.createElement("div", {
215
+ style: {
216
+ display: 'flex',
217
+ justifyContent: 'flex-end',
218
+ alignItems: 'center'
219
+ }
220
+ }, !this.state.selectingTone && /*#__PURE__*/_react.default.createElement(_EmojiPickerListSearch.default, {
221
+ onChange: onChange,
222
+ query: query
223
+ }), this.renderTones()), this.renderAddOwnEmoji());
224
+ }
225
+ }]);
226
+ return EmojiActions;
227
+ }(_react.PureComponent);
228
+
229
+ exports.EmojiActions = EmojiActions;
230
+
231
+ var _default = (0, _reactIntlNext.injectIntl)(EmojiActions);
232
+
233
+ exports.default = _default;
@@ -13,8 +13,6 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
15
 
16
- var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
17
-
18
16
  var _styles = require("./styles");
19
17
 
20
18
  var _constants = require("../../util/constants");
@@ -50,17 +48,12 @@ var EmojiPlaceholder = function EmojiPlaceholder(props) {
50
48
  height: "".concat(height, "px")
51
49
  };
52
50
  var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, _styles.placeholder, true), (0, _defineProperty2.default)(_classes, _styles.placeholderContainer, true), _classes);
53
-
54
- var placeholderNode = /*#__PURE__*/_react.default.createElement("span", {
51
+ return /*#__PURE__*/_react.default.createElement("span", {
55
52
  "aria-label": shortName,
56
53
  className: (0, _classnames.default)(classes),
57
- style: style
54
+ style: style,
55
+ title: showTooltip ? shortName : ''
58
56
  });
59
-
60
- return showTooltip ? /*#__PURE__*/_react.default.createElement(_tooltip.default, {
61
- tag: "span",
62
- content: shortName
63
- }, placeholderNode) : placeholderNode;
64
57
  };
65
58
 
66
59
  var _default = EmojiPlaceholder;
@@ -138,7 +138,7 @@ var EmojiPreview = /*#__PURE__*/function (_PureComponent) {
138
138
  }, {
139
139
  key: "renderEmojiPreview",
140
140
  value: function renderEmojiPreview() {
141
- var _classNames, _classNames2;
141
+ var _classNames2;
142
142
 
143
143
  var selectingTone = this.state.selectingTone;
144
144
  var _this$props2 = this.props,
@@ -149,7 +149,7 @@ var EmojiPreview = /*#__PURE__*/function (_PureComponent) {
149
149
  return null;
150
150
  }
151
151
 
152
- var previewClasses = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, styles.preview, true), (0, _defineProperty2.default)(_classNames, styles.withToneSelector, !!this.props.toneEmoji), _classNames));
152
+ var previewClasses = (0, _classnames.default)((0, _defineProperty2.default)({}, styles.preview, true));
153
153
  var previewTextClasses = (0, _classnames.default)((_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, styles.previewText, true), (0, _defineProperty2.default)(_classNames2, styles.previewSingleLine, !emoji.name), _classNames2));
154
154
  return /*#__PURE__*/_react.default.createElement("div", {
155
155
  className: previewClasses
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.withToneSelector = exports.uploadRetryButton = exports.uploadPreviewText = exports.uploadPreviewFooter = exports.uploadPreview = exports.uploadEmojiButton = exports.uploadChooseFileRow = exports.uploadChooseFileMessage = exports.uploadChooseFileEmojiName = exports.uploadChooseFileBrowse = exports.uploadAddRow = exports.toneSelectorContainer = exports.submitDelete = exports.shortName = exports.selected = exports.selectOnHover = exports.previewText = exports.previewSingleLine = exports.previewImg = exports.previewButtonGroup = exports.preview = exports.placeholderEmoji = exports.placeholderContainer = exports.placeholder = exports.name = exports.hiddenToneButton = exports.emojiUploadBottom = exports.emojiUpload = exports.emojiSprite = exports.emojiScrollable = exports.emojiPreviewSection = exports.emojiPreviewErrorMessage = exports.emojiPreview = exports.emojiNode = exports.emojiImage = exports.emojiDeleteErrorMessage = exports.emojiContainer = exports.emojiChooseFileErrorMessage = exports.emojiButton = exports.emoji = exports.deleteText = exports.deletePreview = exports.deleteFooter = exports.deleteButton = exports.cancelButton = exports.buttons = exports.buttonSpinner = exports.bigEmojiPreview = exports.addCustomEmojiButton = exports.AddCustomEmoji = void 0;
10
+ exports.uploadRetryButton = exports.uploadPreviewText = exports.uploadPreviewFooter = exports.uploadPreview = exports.uploadEmojiButton = exports.uploadChooseFileRow = exports.uploadChooseFileMessage = exports.uploadChooseFileEmojiName = exports.uploadChooseFileBrowse = exports.uploadAddRow = exports.toneSelectorContainer = exports.submitDelete = exports.shortName = exports.selected = exports.selectOnHover = exports.previewText = exports.previewSingleLine = exports.previewImg = exports.previewButtonGroup = exports.preview = exports.placeholderEmoji = exports.placeholderContainer = exports.placeholder = exports.name = exports.hiddenToneButton = exports.emojiUploadBottom = exports.emojiUpload = exports.emojiToneSelectorContainer = exports.emojiSprite = exports.emojiScrollable = exports.emojiPreviewSection = exports.emojiPreviewErrorMessage = exports.emojiPreview = exports.emojiNode = exports.emojiImage = exports.emojiDeleteErrorMessage = exports.emojiContainer = exports.emojiChooseFileErrorMessage = exports.emojiButton = exports.emoji = exports.deleteText = exports.deletePreview = exports.deleteFooter = exports.deleteButton = exports.cancelButton = exports.buttons = exports.buttonSpinner = exports.bigEmojiPreview = exports.addCustomEmojiButton = exports.AddCustomEmoji = void 0;
11
11
 
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
 
@@ -150,8 +150,6 @@ var previewSingleLine = 'emoji-common-preview-single-line';
150
150
  exports.previewSingleLine = previewSingleLine;
151
151
  var toneSelectorContainer = 'emoji-common-tone-selector-container';
152
152
  exports.toneSelectorContainer = toneSelectorContainer;
153
- var withToneSelector = 'emoji-common-with-tone-selector';
154
- exports.withToneSelector = withToneSelector;
155
153
  var emojiPreviewSection = 'emoji-preview-section';
156
154
  exports.emojiPreviewSection = emojiPreviewSection;
157
155
  var emojiPreview = (0, _typestyle.style)({
@@ -204,7 +202,7 @@ var emojiPreview = (0, _typestyle.style)({
204
202
  flexShrink: 1,
205
203
  $nest: (_$nest6 = {}, (0, _defineProperty2.default)(_$nest6, ".".concat(name), {
206
204
  display: 'block',
207
- color: (0, _tokens.token)('color.text.highEmphasis', colors.N900),
205
+ color: (0, _tokens.token)('color.text', colors.N900),
208
206
  overflow: 'hidden',
209
207
  textOverflow: 'ellipsis',
210
208
  whiteSpace: 'nowrap',
@@ -213,7 +211,7 @@ var emojiPreview = (0, _typestyle.style)({
213
211
  })
214
212
  }), (0, _defineProperty2.default)(_$nest6, ".".concat(shortName), {
215
213
  display: 'block',
216
- color: (0, _tokens.token)('color.text.mediumEmphasis', colors.N200),
214
+ color: (0, _tokens.token)('color.text.subtle', colors.N200),
217
215
  fontSize: '12px',
218
216
  lineHeight: 1,
219
217
  marginBottom: '-2px',
@@ -227,30 +225,28 @@ var emojiPreview = (0, _typestyle.style)({
227
225
  $nest: (_$nest7 = {}, (0, _defineProperty2.default)(_$nest7, ".".concat(name), {
228
226
  display: 'none'
229
227
  }), (0, _defineProperty2.default)(_$nest7, ".".concat(shortName), {
230
- color: (0, _tokens.token)('color.text.highEmphasis', colors.N900),
228
+ color: (0, _tokens.token)('color.text', colors.N900),
231
229
  fontSize: '14px'
232
230
  }), _$nest7)
233
231
  }), _$nest8)
234
- }), (0, _defineProperty2.default)(_$nest9, ".".concat(buttons), {
235
- flex: 1,
236
- textAlign: 'right',
237
- margin: '6px'
238
- }), (0, _defineProperty2.default)(_$nest9, ".".concat(toneSelectorContainer), {
239
- flex: 1,
240
- display: 'flex',
241
- justifyContent: 'flex-end',
242
- margin: '6px'
243
- }), (0, _defineProperty2.default)(_$nest9, ".".concat(withToneSelector, " .").concat(previewText), {
232
+ }), (0, _defineProperty2.default)(_$nest9, ".".concat(previewText), {
244
233
  maxWidth: '235px',
245
234
  width: '235px'
246
235
  /* IE */
247
236
 
248
237
  }), _$nest9)
238
+ });
239
+ exports.emojiPreview = emojiPreview;
240
+ var emojiToneSelectorContainer = (0, _typestyle.style)({
241
+ flex: 1,
242
+ display: 'flex',
243
+ justifyContent: 'flex-end',
244
+ padding: '8px 10px 8px 0'
249
245
  }); // Scrollable
250
246
 
251
- exports.emojiPreview = emojiPreview;
247
+ exports.emojiToneSelectorContainer = emojiToneSelectorContainer;
252
248
  var emojiScrollable = (0, _typestyle.style)({
253
- border: "1px solid ".concat((0, _tokens.token)('color.border.neutral', '#fff')),
249
+ border: "1px solid ".concat((0, _tokens.token)('color.border', '#fff')),
254
250
  borderRadius: "".concat((0, _constants.borderRadius)(), "px"),
255
251
  display: 'block',
256
252
  margin: '0',
@@ -269,7 +265,7 @@ var emojiUpload = (0, _typestyle.style)({
269
265
  });
270
266
  exports.emojiUpload = emojiUpload;
271
267
  var uploadChooseFileMessage = (0, _typestyle.style)({
272
- color: (0, _tokens.token)('color.text.mediumEmphasis', colors.N300),
268
+ color: (0, _tokens.token)('color.text.subtle', colors.N300),
273
269
  fontSize: '12px',
274
270
  paddingBottom: '7px'
275
271
  });
@@ -315,7 +311,7 @@ var uploadPreview = (0, _typestyle.style)({
315
311
  display: 'flex',
316
312
  justifyContent: 'space-between',
317
313
  alignItems: 'center',
318
- background: (0, _tokens.token)('color.background.subtleNeutral.resting', colors.N20),
314
+ background: (0, _tokens.token)('color.background.neutral', colors.N20),
319
315
  borderRadius: "".concat((0, _constants.borderRadius)(), "px"),
320
316
  padding: '10px'
321
317
  });
@@ -323,7 +319,7 @@ exports.uploadPreview = uploadPreview;
323
319
  var uploadPreviewText = (0, _typestyle.style)({
324
320
  $nest: {
325
321
  h5: {
326
- color: (0, _tokens.token)('color.text.mediumEmphasis', colors.N300),
322
+ color: (0, _tokens.token)('color.text.subtle', colors.N300),
327
323
  paddingBottom: '4px',
328
324
  fontSize: '12px'
329
325
  },
@@ -353,7 +349,8 @@ var uploadAddRow = (0, _typestyle.style)({
353
349
  exports.uploadAddRow = uploadAddRow;
354
350
  var AddCustomEmoji = (0, _typestyle.style)({
355
351
  alignSelf: 'center',
356
- marginLeft: '10px'
352
+ marginLeft: '10px',
353
+ marginBottom: '10px'
357
354
  }); // Emoji Delete preview
358
355
 
359
356
  exports.AddCustomEmoji = AddCustomEmoji;
@@ -366,15 +363,15 @@ var deletePreview = (0, _typestyle.style)({
366
363
  padding: '10px',
367
364
  display: 'flex',
368
365
  flexDirection: 'column',
369
- justifyContent: 'flex-end',
370
- fontSize: '12px'
366
+ justifyContent: 'flex-end'
371
367
  });
372
368
  exports.deletePreview = deletePreview;
373
369
  var deleteText = (0, _typestyle.style)({
374
370
  height: '64px',
371
+ fontSize: '12px',
375
372
  $nest: {
376
373
  ':first-child': {
377
- color: (0, _tokens.token)('color.text.mediumEmphasis', colors.N300),
374
+ color: (0, _tokens.token)('color.text.subtle', colors.N300),
378
375
  lineHeight: '16px'
379
376
  }
380
377
  }
@@ -86,12 +86,7 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
86
86
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onEmojiActive", function (_emojiId, emoji) {
87
87
  if (_this.state.selectedEmoji !== emoji) {
88
88
  _this.setState({
89
- selectedEmoji: emoji,
90
- showUploadButton: false
91
- });
92
- } else {
93
- _this.setState({
94
- showUploadButton: false
89
+ selectedEmoji: emoji
95
90
  });
96
91
  }
97
92
  });
@@ -141,16 +136,6 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
141
136
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onFileChooserClicked", function () {
142
137
  _this.fireAnalytics((0, _analytics.selectedFileEvent)());
143
138
  });
144
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onEmojiPickerMouseLeave", function () {
145
- _this.setState({
146
- showUploadButton: true
147
- });
148
- });
149
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onEmojiPickerMouseEnter", function () {
150
- _this.setState({
151
- showUploadButton: false
152
- });
153
- });
154
139
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fireAnalytics", function (analyticsEvent) {
155
140
  var createAnalyticsEvent = _this.props.createAnalyticsEvent;
156
141
 
@@ -380,8 +365,7 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
380
365
  selectedTone: !hideToneSelector ? _emojiProvider.getSelectedTone() : undefined,
381
366
  loading: true,
382
367
  uploadSupported: false,
383
- uploading: false,
384
- showUploadButton: true
368
+ uploading: false
385
369
  };
386
370
  _this.openTime = 0;
387
371
  return _this;
@@ -562,8 +546,7 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
562
546
  emojiToDelete = _this$state3.emojiToDelete,
563
547
  uploading = _this$state3.uploading,
564
548
  uploadErrorMessage = _this$state3.uploadErrorMessage,
565
- uploadSupported = _this$state3.uploadSupported,
566
- showUploadButton = _this$state3.showUploadButton;
549
+ uploadSupported = _this$state3.uploadSupported;
567
550
  var recordUsageOnSelection = (0, _RecordSelectionDefault.createRecordSelectionDefault)(emojiProvider, this.onSelectWrapper, function (analytic) {
568
551
  return _this4.fireAnalytics(analytic('picker'));
569
552
  });
@@ -586,30 +569,28 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
586
569
  onEmojiActive: this.onEmojiActive,
587
570
  onEmojiDelete: this.onTriggerDelete,
588
571
  onCategoryActivated: this.onCategoryActivated,
589
- onMouseLeave: this.onEmojiPickerMouseLeave,
590
- onMouseEnter: this.onEmojiPickerMouseEnter,
591
572
  onSearch: this.onSearch,
592
573
  query: query,
593
574
  selectedTone: selectedTone,
594
575
  loading: loading,
595
- ref: "emojiPickerList"
596
- }), /*#__PURE__*/_react.default.createElement(_EmojiPickerFooter.default, {
576
+ ref: "emojiPickerList",
597
577
  initialUploadName: query,
598
- selectedEmoji: selectedEmoji,
599
- selectedTone: selectedTone,
600
578
  onToneSelected: this.onToneSelected,
601
579
  onToneSelectorCancelled: this.onToneSelectorCancelled,
602
580
  toneEmoji: toneEmoji,
603
581
  uploading: uploading,
604
582
  emojiToDelete: emojiToDelete,
605
583
  uploadErrorMessage: formattedErrorMessage,
606
- uploadEnabled: uploadSupported && showUploadButton && !uploading,
584
+ uploadEnabled: uploadSupported && !uploading,
607
585
  onUploadEmoji: this.onUploadEmoji,
608
586
  onUploadCancelled: this.onUploadCancelled,
609
587
  onDeleteEmoji: this.onDeleteEmoji,
610
588
  onCloseDelete: this.onCloseDelete,
611
589
  onFileChooserClicked: this.onFileChooserClicked,
612
590
  onOpenUpload: this.onOpenUpload
591
+ }), /*#__PURE__*/_react.default.createElement(_EmojiPickerFooter.default, {
592
+ selectedEmoji: selectedEmoji,
593
+ isUploading: uploading
613
594
  }));
614
595
 
615
596
  return picker;
@@ -69,7 +69,8 @@ var EmojiPickerEmojiRow = /*#__PURE__*/function (_PureComponent) {
69
69
  onMouseMove: onMouseMove,
70
70
  showDelete: showDelete,
71
71
  onDelete: onDelete,
72
- placeholderSize: 24
72
+ placeholderSize: 24,
73
+ shouldBeInteractive: true
73
74
  }));
74
75
  }));
75
76
  }