@atlaskit/emoji 71.3.3 → 71.4.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 71.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`404be770a2ccf`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/404be770a2ccf) -
8
+ Update i18n NPM package versions for editor,editor-extensions,activity-platform,media,elements
9
+ (Group 3)
10
+
11
+ ### Patch Changes
12
+
13
+ - [`9e5de3ca1a915`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9e5de3ca1a915) -
14
+ Increase z-index of the popup for color picker
15
+ - [`2690a770de7bf`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2690a770de7bf) -
16
+ Do not focus the added emoji after uploading new emoji
17
+ - Updated dependencies
18
+
3
19
  ## 71.3.3
4
20
 
5
21
  ### Patch Changes
@@ -76,6 +76,9 @@
76
76
  {
77
77
  "path": "../../../design-system/textfield/afm-cc/tsconfig.json"
78
78
  },
79
+ {
80
+ "path": "../../../design-system/theme/afm-cc/tsconfig.json"
81
+ },
79
82
  {
80
83
  "path": "../../../editor/tmp-editor-statsig/afm-cc/tsconfig.json"
81
84
  },
@@ -76,6 +76,9 @@
76
76
  {
77
77
  "path": "../../../design-system/textfield/afm-products/tsconfig.json"
78
78
  },
79
+ {
80
+ "path": "../../../design-system/theme/afm-products/tsconfig.json"
81
+ },
79
82
  {
80
83
  "path": "../../../editor/tmp-editor-statsig/afm-products/tsconfig.json"
81
84
  },
@@ -54,6 +54,9 @@ var handleMouseDown = function handleMouseDown(props, event) {
54
54
  var emoji = props.emoji,
55
55
  onSelected = props.onSelected;
56
56
  if (onSelected && (0, _mouse.leftClick)(event)) {
57
+ if (props.preventFocusOnMouseDown) {
58
+ event.preventDefault();
59
+ }
57
60
  onSelected((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
58
61
  }
59
62
  };
@@ -30,6 +30,7 @@ var _styles = require("./styles");
30
30
  var _constants = require("../../util/constants");
31
31
  var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
32
32
  var _compiled = require("@atlaskit/primitives/compiled");
33
+ var _constants2 = require("@atlaskit/theme/constants");
33
34
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
34
35
  var styles = {
35
36
  icon: "_18u0r5cr _2hwx1i6y"
@@ -70,9 +71,10 @@ var AddOwnEmoji = exports.AddOwnEmoji = function AddOwnEmoji(props) {
70
71
  })),
71
72
  appearance: "subtle"
72
73
  // TODO: (from codemod) Buttons with "component", "css" or "style" prop can't be automatically migrated with codemods. Please migrate it manually.
74
+ // eslint-disable-next-line @atlaskit/design-system/no-unsafe-style-overrides
73
75
  ,
74
76
 
75
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
77
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/design-system/no-unsafe-style-overrides -- Ignored via go/DSP-18766
76
78
  className: (0, _runtime.ax)(["_p12f3sup", _styles.emojiPickerAddEmoji]),
77
79
  tabIndex: 0,
78
80
  id: "add-custom-emoji"
@@ -138,7 +140,9 @@ var TonesWrapper = function TonesWrapper(props) {
138
140
  openProductivityColorSelectorWithKeyboard.current = true;
139
141
  }
140
142
  }, []);
141
- var shouldShowProductivityColorSelector = !!(activeCategoryId === 'ATLASSIAN' && productivityColorPreviewEmojis && selectedProductivityColor && onProductivityColorSelected && _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
143
+ var shouldShowProductivityColorSelector = !!(activeCategoryId === 'ATLASSIAN' && productivityColorPreviewEmojis && selectedProductivityColor && onProductivityColorSelected &&
144
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
145
+ _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
142
146
  if (shouldShowProductivityColorSelector) {
143
147
  var previewEmoji = (productivityColorPreviewEmojis === null || productivityColorPreviewEmojis === void 0 ? void 0 : productivityColorPreviewEmojis[selectedProductivityColor]) || Object.values(productivityColorPreviewEmojis || {})[0];
144
148
  if (!previewEmoji) {
@@ -151,7 +155,7 @@ var TonesWrapper = function TonesWrapper(props) {
151
155
  relativePosition: "below",
152
156
  horizontalAlign: "end-to-start",
153
157
  offsetY: 4,
154
- zIndex: 510
158
+ zIndex: _constants2.layers.tooltip()
155
159
  }, /*#__PURE__*/React.createElement("div", {
156
160
  className: (0, _runtime.ax)(["_19itia51 _2rkofajl _bfhk1bhr _16qs130s _ca0q12x7 _u5f312x7 _n3td12x7 _19bv12x7"])
157
161
  }, /*#__PURE__*/React.createElement(_ProductivityColorSelector.default, {
@@ -219,7 +223,9 @@ var EmojiActions = exports.EmojiActions = function EmojiActions(props) {
219
223
  showToneSelector = _useState6[0],
220
224
  setShowToneSelector = _useState6[1];
221
225
  var wasProductivityColorSelectorOpen = (0, _react.useRef)(false);
222
- var shouldUseProductivityColorControl = !!(props.activeCategoryId === 'ATLASSIAN' && props.productivityColorPreviewEmojis && props.selectedProductivityColor && props.onProductivityColorSelected && _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
226
+ var shouldUseProductivityColorControl = !!(props.activeCategoryId === 'ATLASSIAN' && props.productivityColorPreviewEmojis && props.selectedProductivityColor && props.onProductivityColorSelected &&
227
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
228
+ _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
223
229
  var onToneOpenHandler = (0, _react.useCallback)(function () {
224
230
  return setShowToneSelector(true);
225
231
  }, []);
@@ -257,6 +263,7 @@ var EmojiActions = exports.EmojiActions = function EmojiActions(props) {
257
263
  }
258
264
  }, [shouldUseProductivityColorControl, showToneSelector]);
259
265
  if (uploading) {
266
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
260
267
  return _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
261
268
  className: (0, _runtime.ax)(["_16jlidpf _1o9zidpf _i0dl1wug"])
262
269
  }, /*#__PURE__*/React.createElement(_EmojiUploadPicker.default, {
@@ -276,6 +283,7 @@ var EmojiActions = exports.EmojiActions = function EmojiActions(props) {
276
283
  }));
277
284
  }
278
285
  if (emojiToDelete) {
286
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
279
287
  return _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
280
288
  className: (0, _runtime.ax)(["_16jlidpf _1o9zidpf _i0dl1wug"])
281
289
  }, /*#__PURE__*/React.createElement(_EmojiDeletePreview.default, {
@@ -290,6 +298,8 @@ var EmojiActions = exports.EmojiActions = function EmojiActions(props) {
290
298
  onCloseDelete: onCloseDelete
291
299
  }));
292
300
  }
301
+
302
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
293
303
  return _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
294
304
  "data-testid": emojiActionsTestId,
295
305
  onMouseLeave: onMouseLeaveHandler,
@@ -494,7 +494,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
494
494
  // Wait a tick to ensure repaint and updated height for picker list
495
495
  window.setTimeout(function () {
496
496
  var _emojiPickerList$curr2;
497
- (_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 || _emojiPickerList$curr2.scrollToRecentlyUploaded(emojiDescription);
497
+ (_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 || _emojiPickerList$curr2.scrollToRecentlyUploaded(emojiDescription, false);
498
498
  }, 0);
499
499
  }
500
500
  }, [emojiPickerList]);
@@ -13,6 +13,7 @@ var React = _react;
13
13
  var _runtime = require("@compiled/react/runtime");
14
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
15
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
+ var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
16
17
  var _reactIntl = require("react-intl");
17
18
  var _CachingEmoji = _interopRequireDefault(require("../common/CachingEmoji"));
18
19
  var _useEmojiPickerListContext = require("../../hooks/useEmojiPickerListContext");
@@ -21,6 +22,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
21
22
  var emojiItem = null;
22
23
  var emojiPickerRow = null;
23
24
  var emojiPickerRowList = null;
25
+ var teamojiRefreshExperimentName = 'platform_teamoji_26_refresh_emoji_picker';
24
26
  var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
25
27
  var emojis = _ref.emojis,
26
28
  onSelected = _ref.onSelected,
@@ -38,6 +40,7 @@ var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
38
40
  var _useIntl = (0, _reactIntl.useIntl)(),
39
41
  formatMessage = _useIntl.formatMessage;
40
42
  var fitToHeight = (0, _platformFeatureFlags.fg)('platform_twemoji_removal_unicode_emojis') ? 24 : undefined;
43
+ var preventFocusOnMouseDown = _featureGateJsClient.default.getExperimentValue(teamojiRefreshExperimentName, 'isEnabled', false);
41
44
  var handleFocus = function handleFocus(index) {
42
45
  return function (emojiId, emoji, event) {
43
46
  setEmojisFocus({
@@ -71,7 +74,8 @@ var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
71
74
  "data-focus-index": "".concat(rowIndex, "-").concat(index),
72
75
  tabIndex: focus ? 0 : -1,
73
76
  "aria-roledescription": formatMessage(_i18n.messages.emojiButtonRoleDescription),
74
- shouldBeInteractive: true
77
+ shouldBeInteractive: true,
78
+ preventFocusOnMouseDown: preventFocusOnMouseDown
75
79
  }));
76
80
  }));
77
81
  }
@@ -105,7 +109,8 @@ var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
105
109
  tabIndex: focus ? 0 : -1,
106
110
  "aria-roledescription": formatMessage(_i18n.messages.emojiButtonRoleDescription),
107
111
  shouldBeInteractive: true,
108
- fitToHeight: fitToHeight
112
+ fitToHeight: fitToHeight,
113
+ preventFocusOnMouseDown: preventFocusOnMouseDown
109
114
  }));
110
115
  }));
111
116
  };
@@ -395,21 +395,32 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
395
395
  (0, _utils.scrollToRow)(listRef, index);
396
396
  },
397
397
  scrollToRecentlyUploaded: function scrollToRecentlyUploaded(uploadedEmoji) {
398
+ var shouldFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
398
399
  // when search results is shown
399
400
  if (query) {
400
401
  var _findEmojiRowAndColum = findEmojiRowAndColumnById(uploadedEmoji.id),
401
402
  rowIndex = _findEmojiRowAndColum.rowIndex,
402
403
  columnIndex = _findEmojiRowAndColum.columnIndex;
403
404
  if (rowIndex !== -1) {
404
- var _listRef$current;
405
- (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollToEmojiAndFocus(rowIndex, columnIndex);
405
+ if (shouldFocus) {
406
+ var _listRef$current;
407
+ (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollToEmojiAndFocus(rowIndex, columnIndex);
408
+ } else {
409
+ var _listRef$current2;
410
+ (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollToRow(rowIndex);
411
+ }
406
412
  }
407
413
  } else {
408
414
  // when seeing all emojis
409
415
  var row = lastYourUploadsRow;
410
416
  if (row > 0) {
411
- var _listRef$current2;
412
- (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollToRowAndFocusLastEmoji(lastYourUploadsRow);
417
+ if (shouldFocus) {
418
+ var _listRef$current3;
419
+ (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.scrollToRowAndFocusLastEmoji(lastYourUploadsRow);
420
+ } else {
421
+ var _listRef$current4;
422
+ (_listRef$current4 = listRef.current) === null || _listRef$current4 === void 0 || _listRef$current4.scrollToRow(lastYourUploadsRow);
423
+ }
413
424
  }
414
425
  }
415
426
  }
@@ -20,7 +20,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
20
20
  actionSubjectId: actionSubjectId,
21
21
  attributes: _objectSpread({
22
22
  packageName: "@atlaskit/emoji",
23
- packageVersion: "71.3.2"
23
+ packageVersion: "71.3.3"
24
24
  }, attributes)
25
25
  };
26
26
  };
@@ -39,6 +39,9 @@ const handleMouseDown = (props, event) => {
39
39
  onSelected
40
40
  } = props;
41
41
  if (onSelected && leftClick(event)) {
42
+ if (props.preventFocusOnMouseDown) {
43
+ event.preventDefault();
44
+ }
42
45
  onSelected(toEmojiId(emoji), emoji, event);
43
46
  }
44
47
  };
@@ -21,6 +21,7 @@ import { emojiPickerAddEmoji } from './styles';
21
21
  import { DEFAULT_TONE } from '../../util/constants';
22
22
  import FeatureGates from '@atlaskit/feature-gate-js-client';
23
23
  import { Box } from '@atlaskit/primitives/compiled';
24
+ import { layers } from '@atlaskit/theme/constants';
24
25
  const styles = {
25
26
  icon: "_18u0r5cr _2hwx1i6y"
26
27
  };
@@ -61,9 +62,10 @@ export const AddOwnEmoji = props => {
61
62
  })),
62
63
  appearance: "subtle"
63
64
  // TODO: (from codemod) Buttons with "component", "css" or "style" prop can't be automatically migrated with codemods. Please migrate it manually.
65
+ // eslint-disable-next-line @atlaskit/design-system/no-unsafe-style-overrides
64
66
  ,
65
67
 
66
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
68
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/design-system/no-unsafe-style-overrides -- Ignored via go/DSP-18766
67
69
  className: ax(["_p12f3sup", emojiPickerAddEmoji]),
68
70
  tabIndex: 0,
69
71
  id: "add-custom-emoji"
@@ -129,7 +131,9 @@ const TonesWrapper = props => {
129
131
  openProductivityColorSelectorWithKeyboard.current = true;
130
132
  }
131
133
  }, []);
132
- const shouldShowProductivityColorSelector = !!(activeCategoryId === 'ATLASSIAN' && productivityColorPreviewEmojis && selectedProductivityColor && onProductivityColorSelected && FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
134
+ const shouldShowProductivityColorSelector = !!(activeCategoryId === 'ATLASSIAN' && productivityColorPreviewEmojis && selectedProductivityColor && onProductivityColorSelected &&
135
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
136
+ FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
133
137
  if (shouldShowProductivityColorSelector) {
134
138
  const previewEmoji = (productivityColorPreviewEmojis === null || productivityColorPreviewEmojis === void 0 ? void 0 : productivityColorPreviewEmojis[selectedProductivityColor]) || Object.values(productivityColorPreviewEmojis || {})[0];
135
139
  if (!previewEmoji) {
@@ -142,7 +146,7 @@ const TonesWrapper = props => {
142
146
  relativePosition: "below",
143
147
  horizontalAlign: "end-to-start",
144
148
  offsetY: 4,
145
- zIndex: 510
149
+ zIndex: layers.tooltip()
146
150
  }, /*#__PURE__*/React.createElement("div", {
147
151
  className: ax(["_19itia51 _2rkofajl _bfhk1bhr _16qs130s _ca0q12x7 _u5f312x7 _n3td12x7 _19bv12x7"])
148
152
  }, /*#__PURE__*/React.createElement(ProductivityColorSelector, {
@@ -208,7 +212,9 @@ export const EmojiActions = props => {
208
212
  } = props;
209
213
  const [showToneSelector, setShowToneSelector] = useState(false);
210
214
  const wasProductivityColorSelectorOpen = useRef(false);
211
- const shouldUseProductivityColorControl = !!(props.activeCategoryId === 'ATLASSIAN' && props.productivityColorPreviewEmojis && props.selectedProductivityColor && props.onProductivityColorSelected && FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
215
+ const shouldUseProductivityColorControl = !!(props.activeCategoryId === 'ATLASSIAN' && props.productivityColorPreviewEmojis && props.selectedProductivityColor && props.onProductivityColorSelected &&
216
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
217
+ FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
212
218
  const onToneOpenHandler = useCallback(() => setShowToneSelector(true), []);
213
219
  const onToneCloseHandler = useCallback(() => setShowToneSelector(false), []);
214
220
  const onToneToggleHandler = useCallback(() => {
@@ -240,6 +246,7 @@ export const EmojiActions = props => {
240
246
  }
241
247
  }, [shouldUseProductivityColorControl, showToneSelector]);
242
248
  if (uploading) {
249
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
243
250
  return FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
244
251
  className: ax(["_16jlidpf _1o9zidpf _i0dl1wug"])
245
252
  }, /*#__PURE__*/React.createElement(EmojiUploadPicker, {
@@ -259,6 +266,7 @@ export const EmojiActions = props => {
259
266
  }));
260
267
  }
261
268
  if (emojiToDelete) {
269
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
262
270
  return FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
263
271
  className: ax(["_16jlidpf _1o9zidpf _i0dl1wug"])
264
272
  }, /*#__PURE__*/React.createElement(EmojiDeletePreview, {
@@ -273,6 +281,8 @@ export const EmojiActions = props => {
273
281
  onCloseDelete: onCloseDelete
274
282
  }));
275
283
  }
284
+
285
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
276
286
  return FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
277
287
  "data-testid": emojiActionsTestId,
278
288
  onMouseLeave: onMouseLeaveHandler,
@@ -423,7 +423,7 @@ const EmojiPickerComponent = ({
423
423
  // Wait a tick to ensure repaint and updated height for picker list
424
424
  window.setTimeout(() => {
425
425
  var _emojiPickerList$curr2;
426
- (_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 ? void 0 : _emojiPickerList$curr2.scrollToRecentlyUploaded(emojiDescription);
426
+ (_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 ? void 0 : _emojiPickerList$curr2.scrollToRecentlyUploaded(emojiDescription, false);
427
427
  }, 0);
428
428
  }
429
429
  }, [emojiPickerList]);
@@ -5,6 +5,7 @@ import * as React from 'react';
5
5
  import { ax, ix } from "@compiled/react/runtime";
6
6
  import { memo } from 'react';
7
7
  import { fg } from '@atlaskit/platform-feature-flags';
8
+ import FeatureGates from '@atlaskit/feature-gate-js-client';
8
9
  import { useIntl } from 'react-intl';
9
10
  import CachingEmoji from '../common/CachingEmoji';
10
11
  import { useEmojiPickerListContext } from '../../hooks/useEmojiPickerListContext';
@@ -12,6 +13,7 @@ import { messages } from '../i18n';
12
13
  const emojiItem = null;
13
14
  const emojiPickerRow = null;
14
15
  const emojiPickerRowList = null;
16
+ const teamojiRefreshExperimentName = 'platform_teamoji_26_refresh_emoji_picker';
15
17
  const EmojiPickerEmojiRow = ({
16
18
  emojis,
17
19
  onSelected,
@@ -32,6 +34,7 @@ const EmojiPickerEmojiRow = ({
32
34
  formatMessage
33
35
  } = useIntl();
34
36
  const fitToHeight = fg('platform_twemoji_removal_unicode_emojis') ? 24 : undefined;
37
+ const preventFocusOnMouseDown = FeatureGates.getExperimentValue(teamojiRefreshExperimentName, 'isEnabled', false);
35
38
  const handleFocus = index => (emojiId, emoji, event) => {
36
39
  setEmojisFocus({
37
40
  rowIndex,
@@ -65,7 +68,8 @@ const EmojiPickerEmojiRow = ({
65
68
  "data-focus-index": `${rowIndex}-${index}`,
66
69
  tabIndex: focus ? 0 : -1,
67
70
  "aria-roledescription": formatMessage(messages.emojiButtonRoleDescription),
68
- shouldBeInteractive: true
71
+ shouldBeInteractive: true,
72
+ preventFocusOnMouseDown: preventFocusOnMouseDown
69
73
  }));
70
74
  }));
71
75
  }
@@ -101,7 +105,8 @@ const EmojiPickerEmojiRow = ({
101
105
  tabIndex: focus ? 0 : -1,
102
106
  "aria-roledescription": formatMessage(messages.emojiButtonRoleDescription),
103
107
  shouldBeInteractive: true,
104
- fitToHeight: fitToHeight
108
+ fitToHeight: fitToHeight,
109
+ preventFocusOnMouseDown: preventFocusOnMouseDown
105
110
  }));
106
111
  }));
107
112
  };
@@ -354,7 +354,7 @@ export const EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef((pro
354
354
  scrollToRow(index) {
355
355
  scrollToRow(listRef, index);
356
356
  },
357
- scrollToRecentlyUploaded(uploadedEmoji) {
357
+ scrollToRecentlyUploaded(uploadedEmoji, shouldFocus = true) {
358
358
  // when search results is shown
359
359
  if (query) {
360
360
  const {
@@ -362,15 +362,25 @@ export const EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef((pro
362
362
  columnIndex
363
363
  } = findEmojiRowAndColumnById(uploadedEmoji.id);
364
364
  if (rowIndex !== -1) {
365
- var _listRef$current;
366
- (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollToEmojiAndFocus(rowIndex, columnIndex);
365
+ if (shouldFocus) {
366
+ var _listRef$current;
367
+ (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollToEmojiAndFocus(rowIndex, columnIndex);
368
+ } else {
369
+ var _listRef$current2;
370
+ (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 ? void 0 : _listRef$current2.scrollToRow(rowIndex);
371
+ }
367
372
  }
368
373
  } else {
369
374
  // when seeing all emojis
370
375
  const row = lastYourUploadsRow;
371
376
  if (row > 0) {
372
- var _listRef$current2;
373
- (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 ? void 0 : _listRef$current2.scrollToRowAndFocusLastEmoji(lastYourUploadsRow);
377
+ if (shouldFocus) {
378
+ var _listRef$current3;
379
+ (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 ? void 0 : _listRef$current3.scrollToRowAndFocusLastEmoji(lastYourUploadsRow);
380
+ } else {
381
+ var _listRef$current4;
382
+ (_listRef$current4 = listRef.current) === null || _listRef$current4 === void 0 ? void 0 : _listRef$current4.scrollToRow(lastYourUploadsRow);
383
+ }
374
384
  }
375
385
  }
376
386
  }
@@ -9,7 +9,7 @@ const createEvent = (eventType, action, actionSubject, actionSubjectId, attribut
9
9
  actionSubjectId,
10
10
  attributes: {
11
11
  packageName: "@atlaskit/emoji",
12
- packageVersion: "71.3.2",
12
+ packageVersion: "71.3.3",
13
13
  ...attributes
14
14
  }
15
15
  });
@@ -45,6 +45,9 @@ var handleMouseDown = function handleMouseDown(props, event) {
45
45
  var emoji = props.emoji,
46
46
  onSelected = props.onSelected;
47
47
  if (onSelected && leftClick(event)) {
48
+ if (props.preventFocusOnMouseDown) {
49
+ event.preventDefault();
50
+ }
48
51
  onSelected(toEmojiId(emoji), emoji, event);
49
52
  }
50
53
  };
@@ -22,6 +22,7 @@ import { emojiPickerAddEmoji } from './styles';
22
22
  import { DEFAULT_TONE } from '../../util/constants';
23
23
  import FeatureGates from '@atlaskit/feature-gate-js-client';
24
24
  import { Box } from '@atlaskit/primitives/compiled';
25
+ import { layers } from '@atlaskit/theme/constants';
25
26
  var styles = {
26
27
  icon: "_18u0r5cr _2hwx1i6y"
27
28
  };
@@ -61,9 +62,10 @@ export var AddOwnEmoji = function AddOwnEmoji(props) {
61
62
  })),
62
63
  appearance: "subtle"
63
64
  // TODO: (from codemod) Buttons with "component", "css" or "style" prop can't be automatically migrated with codemods. Please migrate it manually.
65
+ // eslint-disable-next-line @atlaskit/design-system/no-unsafe-style-overrides
64
66
  ,
65
67
 
66
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
68
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/design-system/no-unsafe-style-overrides -- Ignored via go/DSP-18766
67
69
  className: ax(["_p12f3sup", emojiPickerAddEmoji]),
68
70
  tabIndex: 0,
69
71
  id: "add-custom-emoji"
@@ -129,7 +131,9 @@ var TonesWrapper = function TonesWrapper(props) {
129
131
  openProductivityColorSelectorWithKeyboard.current = true;
130
132
  }
131
133
  }, []);
132
- var shouldShowProductivityColorSelector = !!(activeCategoryId === 'ATLASSIAN' && productivityColorPreviewEmojis && selectedProductivityColor && onProductivityColorSelected && FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
134
+ var shouldShowProductivityColorSelector = !!(activeCategoryId === 'ATLASSIAN' && productivityColorPreviewEmojis && selectedProductivityColor && onProductivityColorSelected &&
135
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
136
+ FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
133
137
  if (shouldShowProductivityColorSelector) {
134
138
  var previewEmoji = (productivityColorPreviewEmojis === null || productivityColorPreviewEmojis === void 0 ? void 0 : productivityColorPreviewEmojis[selectedProductivityColor]) || Object.values(productivityColorPreviewEmojis || {})[0];
135
139
  if (!previewEmoji) {
@@ -142,7 +146,7 @@ var TonesWrapper = function TonesWrapper(props) {
142
146
  relativePosition: "below",
143
147
  horizontalAlign: "end-to-start",
144
148
  offsetY: 4,
145
- zIndex: 510
149
+ zIndex: layers.tooltip()
146
150
  }, /*#__PURE__*/React.createElement("div", {
147
151
  className: ax(["_19itia51 _2rkofajl _bfhk1bhr _16qs130s _ca0q12x7 _u5f312x7 _n3td12x7 _19bv12x7"])
148
152
  }, /*#__PURE__*/React.createElement(ProductivityColorSelector, {
@@ -210,7 +214,9 @@ export var EmojiActions = function EmojiActions(props) {
210
214
  showToneSelector = _useState6[0],
211
215
  setShowToneSelector = _useState6[1];
212
216
  var wasProductivityColorSelectorOpen = useRef(false);
213
- var shouldUseProductivityColorControl = !!(props.activeCategoryId === 'ATLASSIAN' && props.productivityColorPreviewEmojis && props.selectedProductivityColor && props.onProductivityColorSelected && FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
217
+ var shouldUseProductivityColorControl = !!(props.activeCategoryId === 'ATLASSIAN' && props.productivityColorPreviewEmojis && props.selectedProductivityColor && props.onProductivityColorSelected &&
218
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
219
+ FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
214
220
  var onToneOpenHandler = useCallback(function () {
215
221
  return setShowToneSelector(true);
216
222
  }, []);
@@ -248,6 +254,7 @@ export var EmojiActions = function EmojiActions(props) {
248
254
  }
249
255
  }, [shouldUseProductivityColorControl, showToneSelector]);
250
256
  if (uploading) {
257
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
251
258
  return FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
252
259
  className: ax(["_16jlidpf _1o9zidpf _i0dl1wug"])
253
260
  }, /*#__PURE__*/React.createElement(EmojiUploadPicker, {
@@ -267,6 +274,7 @@ export var EmojiActions = function EmojiActions(props) {
267
274
  }));
268
275
  }
269
276
  if (emojiToDelete) {
277
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
270
278
  return FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
271
279
  className: ax(["_16jlidpf _1o9zidpf _i0dl1wug"])
272
280
  }, /*#__PURE__*/React.createElement(EmojiDeletePreview, {
@@ -281,6 +289,8 @@ export var EmojiActions = function EmojiActions(props) {
281
289
  onCloseDelete: onCloseDelete
282
290
  }));
283
291
  }
292
+
293
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
284
294
  return FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
285
295
  "data-testid": emojiActionsTestId,
286
296
  onMouseLeave: onMouseLeaveHandler,
@@ -485,7 +485,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
485
485
  // Wait a tick to ensure repaint and updated height for picker list
486
486
  window.setTimeout(function () {
487
487
  var _emojiPickerList$curr2;
488
- (_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 || _emojiPickerList$curr2.scrollToRecentlyUploaded(emojiDescription);
488
+ (_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 || _emojiPickerList$curr2.scrollToRecentlyUploaded(emojiDescription, false);
489
489
  }, 0);
490
490
  }
491
491
  }, [emojiPickerList]);
@@ -5,6 +5,7 @@ import * as React from 'react';
5
5
  import { ax, ix } from "@compiled/react/runtime";
6
6
  import { memo } from 'react';
7
7
  import { fg } from '@atlaskit/platform-feature-flags';
8
+ import FeatureGates from '@atlaskit/feature-gate-js-client';
8
9
  import { useIntl } from 'react-intl';
9
10
  import CachingEmoji from '../common/CachingEmoji';
10
11
  import { useEmojiPickerListContext } from '../../hooks/useEmojiPickerListContext';
@@ -12,6 +13,7 @@ import { messages } from '../i18n';
12
13
  var emojiItem = null;
13
14
  var emojiPickerRow = null;
14
15
  var emojiPickerRowList = null;
16
+ var teamojiRefreshExperimentName = 'platform_teamoji_26_refresh_emoji_picker';
15
17
  var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
16
18
  var emojis = _ref.emojis,
17
19
  onSelected = _ref.onSelected,
@@ -29,6 +31,7 @@ var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
29
31
  var _useIntl = useIntl(),
30
32
  formatMessage = _useIntl.formatMessage;
31
33
  var fitToHeight = fg('platform_twemoji_removal_unicode_emojis') ? 24 : undefined;
34
+ var preventFocusOnMouseDown = FeatureGates.getExperimentValue(teamojiRefreshExperimentName, 'isEnabled', false);
32
35
  var handleFocus = function handleFocus(index) {
33
36
  return function (emojiId, emoji, event) {
34
37
  setEmojisFocus({
@@ -62,7 +65,8 @@ var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
62
65
  "data-focus-index": "".concat(rowIndex, "-").concat(index),
63
66
  tabIndex: focus ? 0 : -1,
64
67
  "aria-roledescription": formatMessage(messages.emojiButtonRoleDescription),
65
- shouldBeInteractive: true
68
+ shouldBeInteractive: true,
69
+ preventFocusOnMouseDown: preventFocusOnMouseDown
66
70
  }));
67
71
  }));
68
72
  }
@@ -96,7 +100,8 @@ var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
96
100
  tabIndex: focus ? 0 : -1,
97
101
  "aria-roledescription": formatMessage(messages.emojiButtonRoleDescription),
98
102
  shouldBeInteractive: true,
99
- fitToHeight: fitToHeight
103
+ fitToHeight: fitToHeight,
104
+ preventFocusOnMouseDown: preventFocusOnMouseDown
100
105
  }));
101
106
  }));
102
107
  };
@@ -387,21 +387,32 @@ export var EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef(functi
387
387
  _scrollToRow(listRef, index);
388
388
  },
389
389
  scrollToRecentlyUploaded: function scrollToRecentlyUploaded(uploadedEmoji) {
390
+ var shouldFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
390
391
  // when search results is shown
391
392
  if (query) {
392
393
  var _findEmojiRowAndColum = findEmojiRowAndColumnById(uploadedEmoji.id),
393
394
  rowIndex = _findEmojiRowAndColum.rowIndex,
394
395
  columnIndex = _findEmojiRowAndColum.columnIndex;
395
396
  if (rowIndex !== -1) {
396
- var _listRef$current;
397
- (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollToEmojiAndFocus(rowIndex, columnIndex);
397
+ if (shouldFocus) {
398
+ var _listRef$current;
399
+ (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollToEmojiAndFocus(rowIndex, columnIndex);
400
+ } else {
401
+ var _listRef$current2;
402
+ (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollToRow(rowIndex);
403
+ }
398
404
  }
399
405
  } else {
400
406
  // when seeing all emojis
401
407
  var row = lastYourUploadsRow;
402
408
  if (row > 0) {
403
- var _listRef$current2;
404
- (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollToRowAndFocusLastEmoji(lastYourUploadsRow);
409
+ if (shouldFocus) {
410
+ var _listRef$current3;
411
+ (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.scrollToRowAndFocusLastEmoji(lastYourUploadsRow);
412
+ } else {
413
+ var _listRef$current4;
414
+ (_listRef$current4 = listRef.current) === null || _listRef$current4 === void 0 || _listRef$current4.scrollToRow(lastYourUploadsRow);
415
+ }
405
416
  }
406
417
  }
407
418
  }
@@ -14,7 +14,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
14
14
  actionSubjectId: actionSubjectId,
15
15
  attributes: _objectSpread({
16
16
  packageName: "@atlaskit/emoji",
17
- packageVersion: "71.3.2"
17
+ packageVersion: "71.3.3"
18
18
  }, attributes)
19
19
  };
20
20
  };
@@ -59,6 +59,11 @@ export interface Props extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'onMo
59
59
  * Called when an emoji is selected
60
60
  */
61
61
  onSelected?: OnEmojiEvent;
62
+ /**
63
+ * Prevent mouse selection from moving browser focus to the emoji.
64
+ * Keyboard selection still keeps focus on the emoji for grid navigation.
65
+ */
66
+ preventFocusOnMouseDown?: boolean;
62
67
  /**
63
68
  * Renders unicode emoji through an image representation when a fixed height is supplied.
64
69
  * Defaults to `true`.
@@ -10,22 +10,22 @@ import { type OnDeleteEmoji } from './EmojiDeletePreview';
10
10
  import { type OnUploadEmoji } from './EmojiUploadPicker';
11
11
  import type { ProductivityColor } from '../../util/productivity-colors';
12
12
  export interface Props {
13
+ activeCategoryId?: CategoryId | null;
13
14
  emojiToDelete?: EmojiDescription;
14
15
  initialUploadName?: string;
15
16
  onChange: (value: string) => void;
16
17
  onCloseDelete: () => void;
17
- onProductivityColorSelected?: (color: ProductivityColor) => void;
18
18
  onDeleteEmoji: OnDeleteEmoji;
19
19
  onFileChooserClicked?: () => void;
20
20
  onOpenUpload: () => void;
21
+ onProductivityColorSelected?: (color: ProductivityColor) => void;
21
22
  onToneSelected?: OnToneSelected;
22
23
  onToneSelectorCancelled?: OnToneSelectorCancelled;
23
24
  onUploadCancelled: () => void;
24
25
  onUploadEmoji: OnUploadEmoji;
26
+ productivityColorPreviewEmojis?: Partial<Record<ProductivityColor, EmojiDescription>>;
25
27
  query?: string;
26
28
  resultsCount?: number;
27
- activeCategoryId?: CategoryId | null;
28
- productivityColorPreviewEmojis?: Partial<Record<ProductivityColor, EmojiDescription>>;
29
29
  selectedProductivityColor?: ProductivityColor;
30
30
  selectedTone?: ToneSelection;
31
31
  toneEmoji?: EmojiDescriptionWithVariations;
@@ -47,7 +47,7 @@ export interface State {
47
47
  export type PickerListRef = {
48
48
  reveal: (category: CategoryId, preferYourUploads?: boolean) => void;
49
49
  scrollToBottom: () => void;
50
- scrollToRecentlyUploaded: (uploadedEmoji: EmojiDescription) => void;
50
+ scrollToRecentlyUploaded: (uploadedEmoji: EmojiDescription, shouldFocus?: boolean) => void;
51
51
  scrollToRow: (index?: number) => void;
52
52
  scrollToTop: () => void;
53
53
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "71.3.3",
3
+ "version": "71.4.0",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -29,7 +29,7 @@
29
29
  "access": "public"
30
30
  },
31
31
  "dependencies": {
32
- "@atlaskit/afm-i18n-platform-elements-emoji": "2.158.0",
32
+ "@atlaskit/afm-i18n-platform-elements-emoji": "2.160.0",
33
33
  "@atlaskit/analytics-next": "^12.0.0",
34
34
  "@atlaskit/browser-apis": "^1.0.0",
35
35
  "@atlaskit/button": "^24.1.0",
@@ -48,6 +48,7 @@
48
48
  "@atlaskit/radio": "^9.0.0",
49
49
  "@atlaskit/spinner": "^20.0.0",
50
50
  "@atlaskit/textfield": "^9.0.0",
51
+ "@atlaskit/theme": "^26.0.0",
51
52
  "@atlaskit/tmp-editor-statsig": "^109.0.0",
52
53
  "@atlaskit/tokens": "^14.0.0",
53
54
  "@atlaskit/tooltip": "^23.0.0",
@@ -75,7 +76,6 @@
75
76
  "@af/visual-regression": "workspace:^",
76
77
  "@atlaskit/media-core": "^38.0.0",
77
78
  "@atlaskit/ssr": "workspace:^",
78
- "@atlaskit/theme": "^26.0.0",
79
79
  "@atlassian/a11y-jest-testing": "^0.12.0",
80
80
  "@atlassian/feature-flags-test-utils": "^1.1.0",
81
81
  "@emotion/jest": "^11.8.0",