@atlaskit/emoji 71.7.3 → 71.7.5

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,23 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 71.7.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`2e769066c051f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2e769066c051f) -
8
+ Stop propagation to stop Add emoji click closing picker
9
+ - [`400e0ad47f25f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/400e0ad47f25f) -
10
+ Do not close picker on cancel/delete emoji in post update
11
+ - Updated dependencies
12
+
13
+ ## 71.7.4
14
+
15
+ ### Patch Changes
16
+
17
+ - [`eaa674ef4c640`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/eaa674ef4c640) -
18
+ The popup for productivity color picker should render relative to, and move with picker
19
+ - Updated dependencies
20
+
3
21
  ## 71.7.3
4
22
 
5
23
  ### Patch Changes
@@ -12,12 +12,22 @@ var _react = _interopRequireWildcard(require("react"));
12
12
  var React = _react;
13
13
  var _runtime = require("@compiled/react/runtime");
14
14
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
+ var _featureGates = _interopRequireDefault(require("@atlaskit/feature-gate-js-client/feature-gates"));
15
16
  var _reactIntl = require("react-intl");
16
17
  var _i18n = require("../i18n");
17
18
  var _new = _interopRequireDefault(require("@atlaskit/button/new"));
18
19
  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); }
19
20
  var emojiActionsTestId = exports.emojiActionsTestId = 'emoji-actions';
20
21
  var uploadEmojiTestId = exports.uploadEmojiTestId = 'upload-emoji';
22
+ var isRefreshEmojiPickerEnabled = function isRefreshEmojiPickerEnabled() {
23
+ if (!_featureGates.default.initializeCompleted()) {
24
+ return false;
25
+ }
26
+
27
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
28
+ var isEnabled = _featureGates.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false);
29
+ return isEnabled;
30
+ };
21
31
  var addCustomEmoji = null;
22
32
 
23
33
  // Generic Type for the wrapped functional component
@@ -26,7 +36,7 @@ var AddOwnEmoji = exports.AddOwnEmoji = function AddOwnEmoji(props) {
26
36
  var onOpenUpload = props.onOpenUpload,
27
37
  uploadEnabled = props.uploadEnabled;
28
38
  var handleOpenUpload = (0, _react.useCallback)(function (event) {
29
- if ((0, _platformFeatureFlags.fg)('platform_emoji_keep_picker_open_on_upload')) {
39
+ if ((0, _platformFeatureFlags.fg)('platform_emoji_keep_picker_open_on_upload') || isRefreshEmojiPickerEnabled()) {
30
40
  event.preventDefault();
31
41
  event.stopPropagation();
32
42
  }
@@ -1,7 +1,8 @@
1
1
 
2
2
  ._19itia51{border:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
3
3
  ._2rkofajl{border-radius:var(--ds-radius-small,3px)}
4
- ._n7zl1uh4{border-bottom:var(--ds-border-width-selected,2px) solid var(--ds-border,#0b120e24)}._16jlidpf{flex-grow:0}
4
+ ._n7zl1uh4{border-bottom:var(--ds-border-width-selected,2px) solid var(--ds-border,#0b120e24)}._154i15iq{top:calc(100% + var(--ds-space-050, 4px))}
5
+ ._16jlidpf{flex-grow:0}
5
6
  ._16jlkb7n{flex-grow:1}
6
7
  ._16qs130s{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #1e1f2126,0 0 1px #1e1f214f)}
7
8
  ._16qsjgpa{box-shadow:0 1px 1px 0 var(--ds-border,#0b120e24)}
@@ -10,10 +11,13 @@
10
11
  ._19bv12x7{padding-left:var(--ds-space-075,6px)}
11
12
  ._19bvidpf{padding-left:0}
12
13
  ._1bahesu3{justify-content:flex-end}
14
+ ._1e0c116y{display:inline-flex}
13
15
  ._1e0c1txw{display:flex}
14
16
  ._1o9zidpf{flex-shrink:0}
15
17
  ._1o9zkb7n{flex-shrink:1}
18
+ ._1pbydx66{z-index:9999}
16
19
  ._1wpz1h6o{align-self:center}
20
+ ._1xi2idpf{right:0}
17
21
  ._2hwx1i6y{margin-right:var(--ds-space-negative-025,-2px)}
18
22
  ._4cvr1h6o{align-items:center}
19
23
  ._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
@@ -21,6 +25,8 @@
21
25
  ._ca0q1skh{padding-top:11px}
22
26
  ._i0dl1wug{flex-basis:auto}
23
27
  ._i0dlf1ug{flex-basis:0%}
28
+ ._kqswh2mm{position:relative}
29
+ ._kqswstnw{position:absolute}
24
30
  ._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
25
31
  ._n3td1crf{padding-bottom:9pt}
26
32
  ._otyr19bv{margin-bottom:10px}
@@ -21,7 +21,6 @@ var _EmojiUploadPicker = _interopRequireDefault(require("./EmojiUploadPicker"));
21
21
  var _TonePreviewButton = _interopRequireDefault(require("./TonePreviewButton"));
22
22
  var _ToneSelector = _interopRequireDefault(require("./ToneSelector"));
23
23
  var _ProductivityColorSelector = _interopRequireWildcard(require("./ProductivityColorSelector"));
24
- var _Popup = _interopRequireDefault(require("./Popup"));
25
24
  var _EmojiPickerListSearch = require("../picker/EmojiPickerListSearch");
26
25
  var _i18n = require("../i18n");
27
26
  var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
@@ -30,7 +29,6 @@ var _setSkinToneAriaLabelText = require("./setSkinToneAriaLabelText");
30
29
  var _styles = require("./styles");
31
30
  var _constants = require("../../util/constants");
32
31
  var _compiled = require("@atlaskit/primitives/compiled");
33
- var _constants2 = require("@atlaskit/theme/constants");
34
32
  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); }
35
33
  var isRefreshEmojiPickerEnabled = function isRefreshEmojiPickerEnabled() {
36
34
  if (!_featureGateJsClient.default.initializeCompleted()) {
@@ -49,6 +47,11 @@ var addCustomEmojiButton = null;
49
47
  var emojiActionsWrapper = null;
50
48
  var emojiToneSelectorContainer = null;
51
49
  var productivityColorPopup = null;
50
+ var productivityColorPopupAnchor = null;
51
+
52
+ // Matches the ADS tooltip layer so the selector sits above picker content.
53
+ var productivityColorPopupZIndex = 9999;
54
+ var productivityColorPopupPosition = null;
52
55
  var previewFooter = null;
53
56
  var previewFooterNew = null;
54
57
  var atlassianSubcategoriesWithProductivityColorSelector = ['Objects', 'Productivity', 'Logos'];
@@ -112,7 +115,7 @@ var AddOwnEmoji = exports.AddOwnEmoji = function AddOwnEmoji(props) {
112
115
  var onOpenUpload = props.onOpenUpload,
113
116
  uploadEnabled = props.uploadEnabled;
114
117
  var handleOpenUpload = (0, _react.useCallback)(function (event) {
115
- if ((0, _platformFeatureFlags.fg)('platform_emoji_keep_picker_open_on_upload')) {
118
+ if ((0, _platformFeatureFlags.fg)('platform_emoji_keep_picker_open_on_upload') || isRefreshEmojiPickerEnabled()) {
116
119
  event.preventDefault();
117
120
  event.stopPropagation();
118
121
  }
@@ -210,18 +213,9 @@ var TonesWrapper = function TonesWrapper(props) {
210
213
  }
211
214
  return /*#__PURE__*/React.createElement("div", {
212
215
  className: (0, _runtime.ax)(["_16jlkb7n _1o9zkb7n _i0dlf1ug _ca0q1skh _u5f319bv _n3td1crf _19bvidpf _1e0c1txw _1bahesu3"])
213
- }, showToneSelector && tonePreviewButtonRef.current && /*#__PURE__*/React.createElement(_Popup.default, {
214
- target: tonePreviewButtonRef.current,
215
- relativePosition: "below",
216
- horizontalAlign: "end-to-start",
217
- offsetY: 4,
218
- zIndex: _constants2.layers.tooltip()
219
- }, /*#__PURE__*/React.createElement(ProductivityColorPopupContent, {
220
- colorPreviewEmojis: productivityColorPreviewEmojis,
221
- focusSelectedColorOnMount: focusSelectedProductivityColorOnMount,
222
- selectedColor: selectedProductivityColor,
223
- onColorSelected: onProductivityColorSelectedHandler
224
- })), /*#__PURE__*/React.createElement(_TonePreviewButton.default, {
216
+ }, /*#__PURE__*/React.createElement("div", {
217
+ className: (0, _runtime.ax)(["_kqswh2mm _1e0c116y"])
218
+ }, /*#__PURE__*/React.createElement(_TonePreviewButton.default, {
225
219
  ref: tonePreviewButtonRef,
226
220
  ariaControls: _ProductivityColorSelector.productivityColorSelectorId,
227
221
  ariaExpanded: showToneSelector,
@@ -230,7 +224,14 @@ var TonesWrapper = function TonesWrapper(props) {
230
224
  onKeyDown: onProductivityColorPreviewKeyDown,
231
225
  onSelected: onProductivityColorToggle,
232
226
  ariaLabelText: formatMessage(_i18n.messages.emojiSelectColorButtonAriaLabelText)
233
- }));
227
+ }), showToneSelector && /*#__PURE__*/React.createElement("div", {
228
+ className: (0, _runtime.ax)(["_kqswstnw _154i15iq _1xi2idpf _1pbydx66"])
229
+ }, /*#__PURE__*/React.createElement(ProductivityColorPopupContent, {
230
+ colorPreviewEmojis: productivityColorPreviewEmojis,
231
+ focusSelectedColorOnMount: focusSelectedProductivityColorOnMount,
232
+ selectedColor: selectedProductivityColor,
233
+ onColorSelected: onProductivityColorSelectedHandler
234
+ }))));
234
235
  }
235
236
  if (!toneEmoji) {
236
237
  return null;
@@ -56,7 +56,13 @@ var EmojiDeletePreview = /*#__PURE__*/function (_Component) {
56
56
  var _this;
57
57
  (0, _classCallCheck2.default)(this, EmojiDeletePreview);
58
58
  _this = _callSuper(this, EmojiDeletePreview, [props]);
59
- (0, _defineProperty2.default)(_this, "onSubmit", function () {
59
+ (0, _defineProperty2.default)(_this, "stopClickPropagationForRefreshEmojiPicker", function (event) {
60
+ if (isRefreshEmojiPickerEnabled()) {
61
+ event === null || event === void 0 || event.stopPropagation();
62
+ }
63
+ });
64
+ (0, _defineProperty2.default)(_this, "onSubmit", function (event) {
65
+ _this.stopClickPropagationForRefreshEmojiPicker(event);
60
66
  var _this$props = _this.props,
61
67
  emoji = _this$props.emoji,
62
68
  onDeleteEmoji = _this$props.onDeleteEmoji,
@@ -77,7 +83,8 @@ var EmojiDeletePreview = /*#__PURE__*/function (_Component) {
77
83
  });
78
84
  }
79
85
  });
80
- (0, _defineProperty2.default)(_this, "onCancel", function () {
86
+ (0, _defineProperty2.default)(_this, "onCancel", function (event) {
87
+ _this.stopClickPropagationForRefreshEmojiPicker(event);
81
88
  _this.props.onCloseDelete();
82
89
  });
83
90
  _this.state = {
@@ -409,7 +409,7 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
409
409
  }
410
410
  }, [cancelChooseFile, errorOnUpload, onFileLoad]);
411
411
  var cancelUpload = (0, _react.useCallback)(function (event) {
412
- if ((0, _platformFeatureFlags.fg)('platform_emoji_keep_picker_open_on_upload')) {
412
+ if ((0, _platformFeatureFlags.fg)('platform_emoji_keep_picker_open_on_upload') || isRefreshEmojiPickerEnabled()) {
413
413
  event === null || event === void 0 || event.preventDefault();
414
414
  event === null || event === void 0 || event.stopPropagation();
415
415
  }
@@ -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.7.2"
23
+ packageVersion: "71.7.4"
24
24
  }, attributes)
25
25
  };
26
26
  };
@@ -4,11 +4,21 @@ import * as React from 'react';
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
5
  import { Fragment, useCallback } from 'react';
6
6
  import { fg } from '@atlaskit/platform-feature-flags';
7
+ import FeatureGates from '@atlaskit/feature-gate-js-client/feature-gates';
7
8
  import { FormattedMessage } from 'react-intl';
8
9
  import { messages } from '../i18n';
9
10
  import Button from '@atlaskit/button/new';
10
11
  export const emojiActionsTestId = 'emoji-actions';
11
12
  export const uploadEmojiTestId = 'upload-emoji';
13
+ const isRefreshEmojiPickerEnabled = () => {
14
+ if (!FeatureGates.initializeCompleted()) {
15
+ return false;
16
+ }
17
+
18
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
19
+ const isEnabled = FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false);
20
+ return isEnabled;
21
+ };
12
22
  const addCustomEmoji = null;
13
23
 
14
24
  // Generic Type for the wrapped functional component
@@ -19,7 +29,7 @@ export const AddOwnEmoji = props => {
19
29
  uploadEnabled
20
30
  } = props;
21
31
  const handleOpenUpload = useCallback(event => {
22
- if (fg('platform_emoji_keep_picker_open_on_upload')) {
32
+ if (fg('platform_emoji_keep_picker_open_on_upload') || isRefreshEmojiPickerEnabled()) {
23
33
  event.preventDefault();
24
34
  event.stopPropagation();
25
35
  }
@@ -1,7 +1,8 @@
1
1
 
2
2
  ._19itia51{border:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
3
3
  ._2rkofajl{border-radius:var(--ds-radius-small,3px)}
4
- ._n7zl1uh4{border-bottom:var(--ds-border-width-selected,2px) solid var(--ds-border,#0b120e24)}._16jlidpf{flex-grow:0}
4
+ ._n7zl1uh4{border-bottom:var(--ds-border-width-selected,2px) solid var(--ds-border,#0b120e24)}._154i15iq{top:calc(100% + var(--ds-space-050, 4px))}
5
+ ._16jlidpf{flex-grow:0}
5
6
  ._16jlkb7n{flex-grow:1}
6
7
  ._16qs130s{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #1e1f2126,0 0 1px #1e1f214f)}
7
8
  ._16qsjgpa{box-shadow:0 1px 1px 0 var(--ds-border,#0b120e24)}
@@ -10,10 +11,13 @@
10
11
  ._19bv12x7{padding-left:var(--ds-space-075,6px)}
11
12
  ._19bvidpf{padding-left:0}
12
13
  ._1bahesu3{justify-content:flex-end}
14
+ ._1e0c116y{display:inline-flex}
13
15
  ._1e0c1txw{display:flex}
14
16
  ._1o9zidpf{flex-shrink:0}
15
17
  ._1o9zkb7n{flex-shrink:1}
18
+ ._1pbydx66{z-index:9999}
16
19
  ._1wpz1h6o{align-self:center}
20
+ ._1xi2idpf{right:0}
17
21
  ._2hwx1i6y{margin-right:var(--ds-space-negative-025,-2px)}
18
22
  ._4cvr1h6o{align-items:center}
19
23
  ._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
@@ -21,6 +25,8 @@
21
25
  ._ca0q1skh{padding-top:11px}
22
26
  ._i0dl1wug{flex-basis:auto}
23
27
  ._i0dlf1ug{flex-basis:0%}
28
+ ._kqswh2mm{position:relative}
29
+ ._kqswstnw{position:absolute}
24
30
  ._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
25
31
  ._n3td1crf{padding-bottom:9pt}
26
32
  ._otyr19bv{margin-bottom:10px}
@@ -12,7 +12,6 @@ import EmojiUploadPicker from './EmojiUploadPicker';
12
12
  import TonePreviewButton from './TonePreviewButton';
13
13
  import ToneSelector from './ToneSelector';
14
14
  import ProductivityColorSelector, { productivityColorSelectorId } from './ProductivityColorSelector';
15
- import Popup from './Popup';
16
15
  import { EmojiPickerListSearch } from '../picker/EmojiPickerListSearch';
17
16
  import { messages } from '../i18n';
18
17
  import AkButton from '@atlaskit/button/standard-button';
@@ -21,7 +20,6 @@ import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
21
20
  import { emojiPickerAddEmoji } from './styles';
22
21
  import { DEFAULT_TONE } from '../../util/constants';
23
22
  import { Box } from '@atlaskit/primitives/compiled';
24
- import { layers } from '@atlaskit/theme/constants';
25
23
  const isRefreshEmojiPickerEnabled = () => {
26
24
  if (!FeatureGates.initializeCompleted()) {
27
25
  return false;
@@ -39,6 +37,11 @@ const addCustomEmojiButton = null;
39
37
  const emojiActionsWrapper = null;
40
38
  const emojiToneSelectorContainer = null;
41
39
  const productivityColorPopup = null;
40
+ const productivityColorPopupAnchor = null;
41
+
42
+ // Matches the ADS tooltip layer so the selector sits above picker content.
43
+ const productivityColorPopupZIndex = 9999;
44
+ const productivityColorPopupPosition = null;
42
45
  const previewFooter = null;
43
46
  const previewFooterNew = null;
44
47
  const atlassianSubcategoriesWithProductivityColorSelector = ['Objects', 'Productivity', 'Logos'];
@@ -103,7 +106,7 @@ export const AddOwnEmoji = props => {
103
106
  uploadEnabled
104
107
  } = props;
105
108
  const handleOpenUpload = useCallback(event => {
106
- if (fg('platform_emoji_keep_picker_open_on_upload')) {
109
+ if (fg('platform_emoji_keep_picker_open_on_upload') || isRefreshEmojiPickerEnabled()) {
107
110
  event.preventDefault();
108
111
  event.stopPropagation();
109
112
  }
@@ -200,18 +203,9 @@ const TonesWrapper = props => {
200
203
  }
201
204
  return /*#__PURE__*/React.createElement("div", {
202
205
  className: ax(["_16jlkb7n _1o9zkb7n _i0dlf1ug _ca0q1skh _u5f319bv _n3td1crf _19bvidpf _1e0c1txw _1bahesu3"])
203
- }, showToneSelector && tonePreviewButtonRef.current && /*#__PURE__*/React.createElement(Popup, {
204
- target: tonePreviewButtonRef.current,
205
- relativePosition: "below",
206
- horizontalAlign: "end-to-start",
207
- offsetY: 4,
208
- zIndex: layers.tooltip()
209
- }, /*#__PURE__*/React.createElement(ProductivityColorPopupContent, {
210
- colorPreviewEmojis: productivityColorPreviewEmojis,
211
- focusSelectedColorOnMount: focusSelectedProductivityColorOnMount,
212
- selectedColor: selectedProductivityColor,
213
- onColorSelected: onProductivityColorSelectedHandler
214
- })), /*#__PURE__*/React.createElement(TonePreviewButton, {
206
+ }, /*#__PURE__*/React.createElement("div", {
207
+ className: ax(["_kqswh2mm _1e0c116y"])
208
+ }, /*#__PURE__*/React.createElement(TonePreviewButton, {
215
209
  ref: tonePreviewButtonRef,
216
210
  ariaControls: productivityColorSelectorId,
217
211
  ariaExpanded: showToneSelector,
@@ -220,7 +214,14 @@ const TonesWrapper = props => {
220
214
  onKeyDown: onProductivityColorPreviewKeyDown,
221
215
  onSelected: onProductivityColorToggle,
222
216
  ariaLabelText: formatMessage(messages.emojiSelectColorButtonAriaLabelText)
223
- }));
217
+ }), showToneSelector && /*#__PURE__*/React.createElement("div", {
218
+ className: ax(["_kqswstnw _154i15iq _1xi2idpf _1pbydx66"])
219
+ }, /*#__PURE__*/React.createElement(ProductivityColorPopupContent, {
220
+ colorPreviewEmojis: productivityColorPreviewEmojis,
221
+ focusSelectedColorOnMount: focusSelectedProductivityColorOnMount,
222
+ selectedColor: selectedProductivityColor,
223
+ onColorSelected: onProductivityColorSelectedHandler
224
+ }))));
224
225
  }
225
226
  if (!toneEmoji) {
226
227
  return null;
@@ -38,7 +38,13 @@ const deleteEmojiLabelId = 'fabric.emoji.delete.label.id';
38
38
  class EmojiDeletePreview extends Component {
39
39
  constructor(props) {
40
40
  super(props);
41
- _defineProperty(this, "onSubmit", () => {
41
+ _defineProperty(this, "stopClickPropagationForRefreshEmojiPicker", event => {
42
+ if (isRefreshEmojiPickerEnabled()) {
43
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
44
+ }
45
+ });
46
+ _defineProperty(this, "onSubmit", event => {
47
+ this.stopClickPropagationForRefreshEmojiPicker(event);
42
48
  const {
43
49
  emoji,
44
50
  onDeleteEmoji,
@@ -60,7 +66,8 @@ class EmojiDeletePreview extends Component {
60
66
  });
61
67
  }
62
68
  });
63
- _defineProperty(this, "onCancel", () => {
69
+ _defineProperty(this, "onCancel", event => {
70
+ this.stopClickPropagationForRefreshEmojiPicker(event);
64
71
  this.props.onCloseDelete();
65
72
  });
66
73
  this.state = {
@@ -360,7 +360,7 @@ const EmojiUploadPicker = props => {
360
360
  }
361
361
  }, [cancelChooseFile, errorOnUpload, onFileLoad]);
362
362
  const cancelUpload = useCallback(event => {
363
- if (fg('platform_emoji_keep_picker_open_on_upload')) {
363
+ if (fg('platform_emoji_keep_picker_open_on_upload') || isRefreshEmojiPickerEnabled()) {
364
364
  event === null || event === void 0 ? void 0 : event.preventDefault();
365
365
  event === null || event === void 0 ? void 0 : event.stopPropagation();
366
366
  }
@@ -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.7.2",
12
+ packageVersion: "71.7.4",
13
13
  ...attributes
14
14
  }
15
15
  });
@@ -4,11 +4,21 @@ import * as React from 'react';
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
5
  import { Fragment, useCallback } from 'react';
6
6
  import { fg } from '@atlaskit/platform-feature-flags';
7
+ import FeatureGates from '@atlaskit/feature-gate-js-client/feature-gates';
7
8
  import { FormattedMessage } from 'react-intl';
8
9
  import { messages } from '../i18n';
9
10
  import Button from '@atlaskit/button/new';
10
11
  export var emojiActionsTestId = 'emoji-actions';
11
12
  export var uploadEmojiTestId = 'upload-emoji';
13
+ var isRefreshEmojiPickerEnabled = function isRefreshEmojiPickerEnabled() {
14
+ if (!FeatureGates.initializeCompleted()) {
15
+ return false;
16
+ }
17
+
18
+ // eslint-disable-next-line @atlaskit/platform/use-recommended-utils
19
+ var isEnabled = FeatureGates.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false);
20
+ return isEnabled;
21
+ };
12
22
  var addCustomEmoji = null;
13
23
 
14
24
  // Generic Type for the wrapped functional component
@@ -17,7 +27,7 @@ export var AddOwnEmoji = function AddOwnEmoji(props) {
17
27
  var onOpenUpload = props.onOpenUpload,
18
28
  uploadEnabled = props.uploadEnabled;
19
29
  var handleOpenUpload = useCallback(function (event) {
20
- if (fg('platform_emoji_keep_picker_open_on_upload')) {
30
+ if (fg('platform_emoji_keep_picker_open_on_upload') || isRefreshEmojiPickerEnabled()) {
21
31
  event.preventDefault();
22
32
  event.stopPropagation();
23
33
  }
@@ -1,7 +1,8 @@
1
1
 
2
2
  ._19itia51{border:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
3
3
  ._2rkofajl{border-radius:var(--ds-radius-small,3px)}
4
- ._n7zl1uh4{border-bottom:var(--ds-border-width-selected,2px) solid var(--ds-border,#0b120e24)}._16jlidpf{flex-grow:0}
4
+ ._n7zl1uh4{border-bottom:var(--ds-border-width-selected,2px) solid var(--ds-border,#0b120e24)}._154i15iq{top:calc(100% + var(--ds-space-050, 4px))}
5
+ ._16jlidpf{flex-grow:0}
5
6
  ._16jlkb7n{flex-grow:1}
6
7
  ._16qs130s{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #1e1f2126,0 0 1px #1e1f214f)}
7
8
  ._16qsjgpa{box-shadow:0 1px 1px 0 var(--ds-border,#0b120e24)}
@@ -10,10 +11,13 @@
10
11
  ._19bv12x7{padding-left:var(--ds-space-075,6px)}
11
12
  ._19bvidpf{padding-left:0}
12
13
  ._1bahesu3{justify-content:flex-end}
14
+ ._1e0c116y{display:inline-flex}
13
15
  ._1e0c1txw{display:flex}
14
16
  ._1o9zidpf{flex-shrink:0}
15
17
  ._1o9zkb7n{flex-shrink:1}
18
+ ._1pbydx66{z-index:9999}
16
19
  ._1wpz1h6o{align-self:center}
20
+ ._1xi2idpf{right:0}
17
21
  ._2hwx1i6y{margin-right:var(--ds-space-negative-025,-2px)}
18
22
  ._4cvr1h6o{align-items:center}
19
23
  ._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
@@ -21,6 +25,8 @@
21
25
  ._ca0q1skh{padding-top:11px}
22
26
  ._i0dl1wug{flex-basis:auto}
23
27
  ._i0dlf1ug{flex-basis:0%}
28
+ ._kqswh2mm{position:relative}
29
+ ._kqswstnw{position:absolute}
24
30
  ._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
25
31
  ._n3td1crf{padding-bottom:9pt}
26
32
  ._otyr19bv{margin-bottom:10px}
@@ -13,7 +13,6 @@ import EmojiUploadPicker from './EmojiUploadPicker';
13
13
  import TonePreviewButton from './TonePreviewButton';
14
14
  import ToneSelector from './ToneSelector';
15
15
  import ProductivityColorSelector, { productivityColorSelectorId } from './ProductivityColorSelector';
16
- import Popup from './Popup';
17
16
  import { EmojiPickerListSearch } from '../picker/EmojiPickerListSearch';
18
17
  import { messages } from '../i18n';
19
18
  import AkButton from '@atlaskit/button/standard-button';
@@ -22,7 +21,6 @@ import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
22
21
  import { emojiPickerAddEmoji } from './styles';
23
22
  import { DEFAULT_TONE } from '../../util/constants';
24
23
  import { Box } from '@atlaskit/primitives/compiled';
25
- import { layers } from '@atlaskit/theme/constants';
26
24
  var isRefreshEmojiPickerEnabled = function isRefreshEmojiPickerEnabled() {
27
25
  if (!FeatureGates.initializeCompleted()) {
28
26
  return false;
@@ -40,6 +38,11 @@ var addCustomEmojiButton = null;
40
38
  var emojiActionsWrapper = null;
41
39
  var emojiToneSelectorContainer = null;
42
40
  var productivityColorPopup = null;
41
+ var productivityColorPopupAnchor = null;
42
+
43
+ // Matches the ADS tooltip layer so the selector sits above picker content.
44
+ var productivityColorPopupZIndex = 9999;
45
+ var productivityColorPopupPosition = null;
43
46
  var previewFooter = null;
44
47
  var previewFooterNew = null;
45
48
  var atlassianSubcategoriesWithProductivityColorSelector = ['Objects', 'Productivity', 'Logos'];
@@ -103,7 +106,7 @@ export var AddOwnEmoji = function AddOwnEmoji(props) {
103
106
  var onOpenUpload = props.onOpenUpload,
104
107
  uploadEnabled = props.uploadEnabled;
105
108
  var handleOpenUpload = useCallback(function (event) {
106
- if (fg('platform_emoji_keep_picker_open_on_upload')) {
109
+ if (fg('platform_emoji_keep_picker_open_on_upload') || isRefreshEmojiPickerEnabled()) {
107
110
  event.preventDefault();
108
111
  event.stopPropagation();
109
112
  }
@@ -201,18 +204,9 @@ var TonesWrapper = function TonesWrapper(props) {
201
204
  }
202
205
  return /*#__PURE__*/React.createElement("div", {
203
206
  className: ax(["_16jlkb7n _1o9zkb7n _i0dlf1ug _ca0q1skh _u5f319bv _n3td1crf _19bvidpf _1e0c1txw _1bahesu3"])
204
- }, showToneSelector && tonePreviewButtonRef.current && /*#__PURE__*/React.createElement(Popup, {
205
- target: tonePreviewButtonRef.current,
206
- relativePosition: "below",
207
- horizontalAlign: "end-to-start",
208
- offsetY: 4,
209
- zIndex: layers.tooltip()
210
- }, /*#__PURE__*/React.createElement(ProductivityColorPopupContent, {
211
- colorPreviewEmojis: productivityColorPreviewEmojis,
212
- focusSelectedColorOnMount: focusSelectedProductivityColorOnMount,
213
- selectedColor: selectedProductivityColor,
214
- onColorSelected: onProductivityColorSelectedHandler
215
- })), /*#__PURE__*/React.createElement(TonePreviewButton, {
207
+ }, /*#__PURE__*/React.createElement("div", {
208
+ className: ax(["_kqswh2mm _1e0c116y"])
209
+ }, /*#__PURE__*/React.createElement(TonePreviewButton, {
216
210
  ref: tonePreviewButtonRef,
217
211
  ariaControls: productivityColorSelectorId,
218
212
  ariaExpanded: showToneSelector,
@@ -221,7 +215,14 @@ var TonesWrapper = function TonesWrapper(props) {
221
215
  onKeyDown: onProductivityColorPreviewKeyDown,
222
216
  onSelected: onProductivityColorToggle,
223
217
  ariaLabelText: formatMessage(messages.emojiSelectColorButtonAriaLabelText)
224
- }));
218
+ }), showToneSelector && /*#__PURE__*/React.createElement("div", {
219
+ className: ax(["_kqswstnw _154i15iq _1xi2idpf _1pbydx66"])
220
+ }, /*#__PURE__*/React.createElement(ProductivityColorPopupContent, {
221
+ colorPreviewEmojis: productivityColorPreviewEmojis,
222
+ focusSelectedColorOnMount: focusSelectedProductivityColorOnMount,
223
+ selectedColor: selectedProductivityColor,
224
+ onColorSelected: onProductivityColorSelectedHandler
225
+ }))));
225
226
  }
226
227
  if (!toneEmoji) {
227
228
  return null;
@@ -47,7 +47,13 @@ var EmojiDeletePreview = /*#__PURE__*/function (_Component) {
47
47
  var _this;
48
48
  _classCallCheck(this, EmojiDeletePreview);
49
49
  _this = _callSuper(this, EmojiDeletePreview, [props]);
50
- _defineProperty(_this, "onSubmit", function () {
50
+ _defineProperty(_this, "stopClickPropagationForRefreshEmojiPicker", function (event) {
51
+ if (isRefreshEmojiPickerEnabled()) {
52
+ event === null || event === void 0 || event.stopPropagation();
53
+ }
54
+ });
55
+ _defineProperty(_this, "onSubmit", function (event) {
56
+ _this.stopClickPropagationForRefreshEmojiPicker(event);
51
57
  var _this$props = _this.props,
52
58
  emoji = _this$props.emoji,
53
59
  onDeleteEmoji = _this$props.onDeleteEmoji,
@@ -68,7 +74,8 @@ var EmojiDeletePreview = /*#__PURE__*/function (_Component) {
68
74
  });
69
75
  }
70
76
  });
71
- _defineProperty(_this, "onCancel", function () {
77
+ _defineProperty(_this, "onCancel", function (event) {
78
+ _this.stopClickPropagationForRefreshEmojiPicker(event);
72
79
  _this.props.onCloseDelete();
73
80
  });
74
81
  _this.state = {
@@ -401,7 +401,7 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
401
401
  }
402
402
  }, [cancelChooseFile, errorOnUpload, onFileLoad]);
403
403
  var cancelUpload = useCallback(function (event) {
404
- if (fg('platform_emoji_keep_picker_open_on_upload')) {
404
+ if (fg('platform_emoji_keep_picker_open_on_upload') || isRefreshEmojiPickerEnabled()) {
405
405
  event === null || event === void 0 || event.preventDefault();
406
406
  event === null || event === void 0 || event.stopPropagation();
407
407
  }
@@ -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.7.2"
17
+ packageVersion: "71.7.4"
18
18
  }, attributes)
19
19
  };
20
20
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "71.7.3",
3
+ "version": "71.7.5",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -30,7 +30,7 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@atlaskit/afm-i18n-platform-elements-emoji": "2.168.0",
33
- "@atlaskit/analytics-next": "^12.1.0",
33
+ "@atlaskit/analytics-next": "^12.2.0",
34
34
  "@atlaskit/browser-apis": "^1.1.0",
35
35
  "@atlaskit/button": "^24.3.0",
36
36
  "@atlaskit/css": "^1.0.0",
@@ -51,7 +51,7 @@
51
51
  "@atlaskit/textfield": "^9.1.0",
52
52
  "@atlaskit/theme": "^26.1.0",
53
53
  "@atlaskit/tmp-editor-statsig": "^120.1.0",
54
- "@atlaskit/tokens": "^15.3.0",
54
+ "@atlaskit/tokens": "^15.4.0",
55
55
  "@atlaskit/tooltip": "^23.1.0",
56
56
  "@atlaskit/ufo": "^1.0.0",
57
57
  "@atlaskit/util-service-support": "^7.1.0",