@atlaskit/reactions 25.0.0 → 25.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/analytics/index.js +1 -1
  3. package/dist/cjs/components/ReactionDialog/ReactionView.js +2 -69
  4. package/dist/cjs/components/ReactionDialog/ReactionsDialog.js +11 -17
  5. package/dist/cjs/components/ReactionDialog/ReactionsDialogHeader.js +168 -94
  6. package/dist/cjs/components/ReactionDialog/ReactionsList.js +2 -1
  7. package/dist/cjs/components/ReactionSummary/ReactionSummaryView.js +16 -7
  8. package/dist/cjs/components/Reactions/Reactions.js +27 -14
  9. package/dist/cjs/index.js +6 -0
  10. package/dist/cjs/shared/i18n.js +0 -5
  11. package/dist/es2019/analytics/index.js +1 -1
  12. package/dist/es2019/components/ReactionDialog/ReactionView.js +4 -48
  13. package/dist/es2019/components/ReactionDialog/ReactionsDialog.js +11 -17
  14. package/dist/es2019/components/ReactionDialog/ReactionsDialogHeader.js +129 -68
  15. package/dist/es2019/components/ReactionDialog/ReactionsList.js +2 -1
  16. package/dist/es2019/components/ReactionSummary/ReactionSummaryView.js +17 -8
  17. package/dist/es2019/components/Reactions/Reactions.js +27 -15
  18. package/dist/es2019/index.js +1 -1
  19. package/dist/es2019/shared/i18n.js +0 -5
  20. package/dist/esm/analytics/index.js +1 -1
  21. package/dist/esm/components/ReactionDialog/ReactionView.js +4 -71
  22. package/dist/esm/components/ReactionDialog/ReactionsDialog.js +11 -17
  23. package/dist/esm/components/ReactionDialog/ReactionsDialogHeader.js +161 -83
  24. package/dist/esm/components/ReactionDialog/ReactionsList.js +2 -1
  25. package/dist/esm/components/ReactionSummary/ReactionSummaryView.js +18 -9
  26. package/dist/esm/components/Reactions/Reactions.js +29 -16
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/shared/i18n.js +0 -5
  29. package/dist/types/components/ReactionDialog/ReactionsDialog.d.ts +2 -1
  30. package/dist/types/components/ReactionDialog/ReactionsDialogHeader.d.ts +3 -2
  31. package/dist/types/components/Reactions/Reactions.d.ts +6 -1
  32. package/dist/types/containers/ConnectedReactionsView/ConnectedReactionsView.d.ts +1 -1
  33. package/dist/types/index.d.ts +1 -1
  34. package/dist/types/shared/i18n.d.ts +0 -5
  35. package/dist/types-ts4.5/components/ReactionDialog/ReactionsDialog.d.ts +2 -1
  36. package/dist/types-ts4.5/components/ReactionDialog/ReactionsDialogHeader.d.ts +3 -2
  37. package/dist/types-ts4.5/components/Reactions/Reactions.d.ts +6 -1
  38. package/dist/types-ts4.5/containers/ConnectedReactionsView/ConnectedReactionsView.d.ts +1 -1
  39. package/dist/types-ts4.5/index.d.ts +1 -1
  40. package/dist/types-ts4.5/shared/i18n.d.ts +0 -5
  41. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/reactions
2
2
 
3
+ ## 25.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#113141](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/113141)
8
+ [`2b9b00172281b`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/2b9b00172281b) -
9
+ Added new 'onlyRenderPicker' property to hide user reactions and only render picker
10
+
11
+ ## 25.1.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [#112754](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/112754)
16
+ [`281e77ddc6053`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/281e77ddc6053) -
17
+ [ux] Reactions Dialog updates - move navigation buttons next to tabs, move close handler from
18
+ footer to header, add tooltips on reaction hover, change CTA into meatball menu, remove
19
+ subheading, adjust modal body bottom padding
20
+
3
21
  ## 25.0.0
4
22
 
5
23
  ### Major Changes
@@ -11,7 +11,7 @@ var _analyticsGasTypes = require("@atlaskit/analytics-gas-types");
11
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
12
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
13
  var packageName = "@atlaskit/reactions";
14
- var packageVersion = "25.0.0";
14
+ var packageVersion = "25.2.0";
15
15
  /**
16
16
  * TODO: move to utility package?
17
17
  * A random sampling function
@@ -5,20 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.ReactionView = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
8
  var _react = require("react");
13
- var _reactIntlNext = require("react-intl-next");
14
9
  var _react2 = require("@emotion/react");
15
- var _element = require("@atlaskit/emoji/element");
16
10
  var _Avatar = _interopRequireDefault(require("@atlaskit/avatar/Avatar"));
17
11
  var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
18
12
  var _tabs = require("@atlaskit/tabs");
19
13
  var _primitives = require("@atlaskit/primitives");
20
- var _heading = _interopRequireDefault(require("@atlaskit/heading"));
21
- var _i18n = require("../../shared/i18n");
22
14
  var _styles = require("./styles");
23
15
  /**
24
16
  * @jsxRuntime classic
@@ -34,7 +26,7 @@ var profileWrapperStyle = (0, _primitives.xcss)({
34
26
  marginLeft: 'space.0'
35
27
  });
36
28
  var reactionViewStyle = (0, _primitives.xcss)({
37
- marginTop: 'space.300',
29
+ marginTop: 'space.150',
38
30
  minHeight: '300px',
39
31
  minWidth: '550px'
40
32
  });
@@ -45,52 +37,11 @@ var centerSpinnerStyle = (0, _primitives.xcss)({
45
37
  height: '100%',
46
38
  marginTop: 'space.300'
47
39
  });
48
- var headerStyle = (0, _primitives.xcss)({
49
- alignItems: 'flex-end'
50
- });
51
- var emojiSpacingStlye = (0, _primitives.xcss)({
52
- marginLeft: 'space.100'
53
- });
54
40
  var ReactionView = exports.ReactionView = function ReactionView(_ref) {
55
41
  var selectedEmojiId = _ref.selectedEmojiId,
56
42
  emojiProvider = _ref.emojiProvider,
57
43
  reaction = _ref.reaction,
58
44
  ProfileCardWrapper = _ref.ProfileCardWrapper;
59
- var _useState = (0, _react.useState)(''),
60
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
61
- emojiName = _useState2[0],
62
- setEmojiName = _useState2[1];
63
- (0, _react.useEffect)(function () {
64
- (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
65
- var provider, emoji, capitalizedName;
66
- return _regenerator.default.wrap(function _callee$(_context) {
67
- while (1) switch (_context.prev = _context.next) {
68
- case 0:
69
- _context.next = 2;
70
- return emojiProvider;
71
- case 2:
72
- provider = _context.sent;
73
- _context.next = 5;
74
- return provider.findByEmojiId({
75
- shortName: '',
76
- id: selectedEmojiId
77
- });
78
- case 5:
79
- emoji = _context.sent;
80
- if (emoji !== null && emoji !== void 0 && emoji.name) {
81
- // capitalize first letter of each string
82
- capitalizedName = emoji.name.replace(/\b\w/g, function (char) {
83
- return char.toUpperCase();
84
- });
85
- setEmojiName(capitalizedName);
86
- }
87
- case 7:
88
- case "end":
89
- return _context.stop();
90
- }
91
- }, _callee);
92
- }))();
93
- }, [emojiProvider, selectedEmojiId, reaction]);
94
45
  var alphabeticalNames = (0, _react.useMemo)(function () {
95
46
  var _reactionObj$users;
96
47
  var reactionObj = reaction;
@@ -101,25 +52,7 @@ var ReactionView = exports.ReactionView = function ReactionView(_ref) {
101
52
  return (0, _react2.jsx)(_tabs.TabPanel, null, (0, _react2.jsx)(_primitives.Flex, {
102
53
  direction: "column",
103
54
  xcss: reactionViewStyle
104
- }, (0, _react2.jsx)(_primitives.Inline, {
105
- xcss: headerStyle
106
- }, (0, _react2.jsx)(_heading.default, {
107
- size: "xsmall"
108
- }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _i18n.messages.peopleWhoReactedSubheading, {
109
- values: {
110
- emojiShortName: emojiName
111
- }
112
- }))), (0, _react2.jsx)(_primitives.Box, {
113
- as: "span",
114
- xcss: emojiSpacingStlye
115
- }, (0, _react2.jsx)(_element.ResourcedEmoji, {
116
- emojiProvider: emojiProvider,
117
- emojiId: {
118
- id: selectedEmojiId,
119
- shortName: ''
120
- },
121
- fitToHeight: 24
122
- }))), alphabeticalNames.length === 0 ?
55
+ }, alphabeticalNames.length === 0 ?
123
56
  // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
124
57
  (0, _react2.jsx)(_primitives.Box, {
125
58
  xcss: centerSpinnerStyle
@@ -8,14 +8,11 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.ReactionsDialog = exports.RENDER_MODAL_TESTID = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _react = require("react");
11
- var _reactIntlNext = require("react-intl-next");
12
11
  var _react2 = require("@emotion/react");
13
12
  var _tabs = _interopRequireDefault(require("@atlaskit/tabs"));
14
- var _new = _interopRequireDefault(require("@atlaskit/button/new"));
15
- var _primitives = require("@atlaskit/primitives");
16
13
  var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
14
+ var _primitives = require("@atlaskit/primitives");
17
15
  var _constants = require("../../shared/constants");
18
- var _i18n = require("../../shared/i18n");
19
16
  var _ReactionsList = require("./ReactionsList");
20
17
  var _ReactionsDialogHeader = require("./ReactionsDialogHeader");
21
18
  var _styles = require("./styles");
@@ -39,8 +36,8 @@ var getDimensions = function getDimensions(container) {
39
36
  scrollLeft: container === null || container === void 0 ? void 0 : container.scrollLeft
40
37
  };
41
38
  };
42
- var footerStyle = (0, _primitives.xcss)({
43
- borderTop: "2px solid ".concat("var(--ds-border, rgba(11, 18, 14, 0.14))")
39
+ var modalBodyStyle = (0, _primitives.xcss)({
40
+ marginBottom: 'space.300'
44
41
  });
45
42
  var ReactionsDialog = exports.ReactionsDialog = function ReactionsDialog(_ref) {
46
43
  var _currentReactions$;
@@ -54,7 +51,8 @@ var ReactionsDialog = exports.ReactionsDialog = function ReactionsDialog(_ref) {
54
51
  handleSelectReaction = _ref$handleSelectReac === void 0 ? function () {} : _ref$handleSelectReac,
55
52
  _ref$handlePagination = _ref.handlePaginationChange,
56
53
  handlePaginationChange = _ref$handlePagination === void 0 ? function () {} : _ref$handlePagination,
57
- ProfileCardWrapper = _ref.ProfileCardWrapper;
54
+ ProfileCardWrapper = _ref.ProfileCardWrapper,
55
+ handleReactionMouseEnter = _ref.handleReactionMouseEnter;
58
56
  var _useState = (0, _react.useState)(),
59
57
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
60
58
  elementToScroll = _useState2[0],
@@ -75,7 +73,6 @@ var ReactionsDialog = exports.ReactionsDialog = function ReactionsDialog(_ref) {
75
73
  setCurrentPage = _useState8[1];
76
74
  var reactionElementsRef = (0, _react.useRef)();
77
75
  var observerRef = (0, _react.useRef)();
78
- var intl = (0, _reactIntlNext.useIntl)();
79
76
  var isSelectedEmojiViewed = (0, _react.useRef)(false);
80
77
  var totalReactionsCount = (0, _react.useMemo)(function () {
81
78
  return reactions.reduce(function (accum, current) {
@@ -206,9 +203,11 @@ var ReactionsDialog = exports.ReactionsDialog = function ReactionsDialog(_ref) {
206
203
  handleNextPage: handleNextPage,
207
204
  currentPage: currentPage,
208
205
  emojiProvider: emojiProvider,
209
- selectedEmojiId: selectedEmojiId,
210
- currentReactions: currentReactions
211
- }), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)("div", {
206
+ currentReactions: currentReactions,
207
+ handleCloseReactionsDialog: handleCloseReactionsDialog
208
+ }), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(_primitives.Box, {
209
+ xcss: modalBodyStyle
210
+ }, (0, _react2.jsx)("div", {
212
211
  css: (0, _styles.containerStyle)(reactionsBorderWidth),
213
212
  ref: setRef
214
213
  }, (0, _react2.jsx)(_ReactionsList.ReactionsList, {
@@ -216,10 +215,5 @@ var ReactionsDialog = exports.ReactionsDialog = function ReactionsDialog(_ref) {
216
215
  reactions: currentReactions,
217
216
  emojiProvider: emojiProvider,
218
217
  ProfileCardWrapper: ProfileCardWrapper
219
- })))), (0, _react2.jsx)(_primitives.Box, {
220
- xcss: footerStyle
221
- }, (0, _react2.jsx)(_modalDialog.ModalFooter, null, (0, _react2.jsx)(_new.default, {
222
- appearance: "subtle",
223
- onClick: handleCloseReactionsDialog
224
- }, intl.formatMessage(_i18n.messages.closeReactionsDialog)))));
218
+ }))))));
225
219
  };
@@ -5,9 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.ReactionsDialogHeader = void 0;
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _react = require("react");
9
13
  var _reactIntlNext = require("react-intl-next");
10
- var _react = require("@emotion/react");
14
+ var _react2 = require("@emotion/react");
11
15
  var _tokens = require("@atlaskit/tokens");
12
16
  var _tabs = require("@atlaskit/tabs");
13
17
  var _primitives = require("@atlaskit/primitives");
@@ -17,24 +21,34 @@ var _modalDialog = require("@atlaskit/modal-dialog");
17
21
  var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
18
22
  var _chevronLeft = _interopRequireDefault(require("@atlaskit/icon/utility/chevron-left"));
19
23
  var _chevronRight = _interopRequireDefault(require("@atlaskit/icon/utility/chevron-right"));
24
+ var _close = _interopRequireDefault(require("@atlaskit/icon/core/close"));
20
25
  var _element = require("@atlaskit/emoji/element");
21
26
  var _i18n = require("../../shared/i18n");
22
27
  var _Counter = require("../Counter");
23
- /**
28
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
24
30
  * @jsxRuntime classic
25
31
  * @jsx jsx
26
- */
27
-
28
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
29
-
32
+ */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
30
33
  var REACTIONS_CONTAINER_WIDTH = 56;
31
34
  var REACTION_CONTAINER_HEIGHT = 40;
32
35
  var containerEdgeAngle = {
33
36
  rightEdge: 270,
34
37
  leftEdge: 90
35
38
  };
39
+ var leftNavigationStyle = (0, _primitives.xcss)({
40
+ marginLeft: 'space.200',
41
+ alignSelf: 'self-start',
42
+ marginTop: 'space.050'
43
+ });
44
+ var rightNavigationStyle = (0, _primitives.xcss)({
45
+ marginRight: 'space.100',
46
+ marginLeft: 'auto',
47
+ alignSelf: 'self-start',
48
+ marginTop: 'space.050'
49
+ });
36
50
  var fadedCss = function fadedCss(edge, theme) {
37
- return (0, _react.css)({
51
+ return (0, _react2.css)({
38
52
  content: '""',
39
53
  position: 'absolute',
40
54
  left: '0px',
@@ -47,7 +61,7 @@ var fadedCss = function fadedCss(edge, theme) {
47
61
  theme === 'dark' ? "linear-gradient(".concat(containerEdgeAngle[edge], "deg, rgba(34, 39, 43, 0.95) 40.23%, rgba(34, 39, 43, 0.55) 58.33%, rgba(34, 39, 43, 0) 77.49%)") : "linear-gradient(".concat(containerEdgeAngle[edge], "deg, rgba(255, 255, 255, 0.95) 40.23%, rgba(255, 255, 255, 0.55) 58.33%, rgba(255, 255, 255, 0) 77.49%)")
48
62
  });
49
63
  };
50
- var customTabListStyles = (0, _react.css)({
64
+ var customTabListStyles = (0, _react2.css)({
51
65
  overflow: 'auto',
52
66
  display: 'flex',
53
67
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
@@ -55,10 +69,12 @@ var customTabListStyles = (0, _react.css)({
55
69
  flexGrow: 1,
56
70
  // paddingInline exists to maintain styling prior to @atlaskit/tabs update that removed baked in horizontal padding
57
71
  paddingInline: "var(--ds-space-100, 8px)"
58
- }
72
+ },
73
+ width: ' 100%',
74
+ alignItems: 'flex-start'
59
75
  });
60
76
  var customTabWrapper = function customTabWrapper(theme) {
61
- return (0, _react.css)({
77
+ return (0, _react2.css)({
62
78
  flexShrink: 0,
63
79
  display: 'flex',
64
80
  flexDirection: 'column',
@@ -88,7 +104,7 @@ var customTabWrapper = function customTabWrapper(theme) {
88
104
  '&.disabled + &.disabled:after': fadedCss('leftEdge', theme)
89
105
  });
90
106
  };
91
- var firstElement = (0, _react.css)({
107
+ var firstElement = (0, _react2.css)({
92
108
  paddingLeft: "var(--ds-space-200, 16px)"
93
109
  });
94
110
  var fullWidthStyle = (0, _primitives.xcss)({
@@ -105,101 +121,159 @@ var emojiStyles = (0, _primitives.xcss)({
105
121
  var counterStyle = (0, _primitives.xcss)({
106
122
  marginTop: 'space.025'
107
123
  });
108
- var ReactionsTabs = function ReactionsTabs(_ref) {
109
- var currentReactions = _ref.currentReactions,
110
- emojiProvider = _ref.emojiProvider,
111
- selectedEmojiId = _ref.selectedEmojiId;
112
- var _useThemeObserver = (0, _tokens.useThemeObserver)(),
113
- colorMode = _useThemeObserver.colorMode;
114
- return (0, _react.jsx)("div", {
115
- css: customTabListStyles,
116
- id: "reactions-dialog-tabs-list"
117
- }, (0, _react.jsx)(_tabs.TabList, null, currentReactions.map(function (reaction, index) {
118
- var emojiId = {
119
- id: reaction.emojiId,
120
- shortName: ''
121
- };
122
- return (0, _react.jsx)("div", {
123
- // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
124
- css: [customTabWrapper(colorMode), index === 0 ? firstElement : []]
125
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
126
- ,
127
- className: "reaction-elements",
128
- key: reaction.emojiId,
129
- "data-testid": emojiId === null || emojiId === void 0 ? void 0 : emojiId.id
130
- }, (0, _react.jsx)(_tabs.Tab, null, (0, _react.jsx)(_primitives.Flex, {
131
- justifyContent: "center",
132
- alignItems: "center",
133
- direction: "row"
134
- }, (0, _react.jsx)(_primitives.Box, {
135
- xcss: emojiStyles
136
- }, (0, _react.jsx)(_element.ResourcedEmoji, {
137
- emojiProvider: emojiProvider,
138
- emojiId: emojiId,
139
- fitToHeight: 16,
140
- showTooltip: true
141
- })), (0, _react.jsx)(_primitives.Box, {
142
- xcss: counterStyle
143
- }, (0, _react.jsx)(_Counter.Counter, {
144
- value: reaction.count
145
- })))));
146
- })));
124
+ var CloseButton = function CloseButton(_ref) {
125
+ var handleCloseReactionsDialog = _ref.handleCloseReactionsDialog;
126
+ var intl = (0, _reactIntlNext.useIntl)();
127
+ return (0, _react2.jsx)(_new.IconButton, {
128
+ onClick: handleCloseReactionsDialog,
129
+ icon: _close.default,
130
+ label: intl.formatMessage(_i18n.messages.closeReactionsDialog),
131
+ appearance: "subtle",
132
+ isTooltipDisabled: false
133
+ });
134
+ };
135
+ var LeftNavigationButton = function LeftNavigationButton(_ref2) {
136
+ var handlePreviousPage = _ref2.handlePreviousPage;
137
+ var intl = (0, _reactIntlNext.useIntl)();
138
+ return (0, _react2.jsx)(_primitives.Flex, {
139
+ xcss: leftNavigationStyle
140
+ }, (0, _react2.jsx)(_new.IconButton, {
141
+ spacing: "compact",
142
+ onClick: handlePreviousPage,
143
+ icon: _chevronLeft.default,
144
+ label: intl.formatMessage(_i18n.messages.leftNavigateLabel),
145
+ isTooltipDisabled: false
146
+ }));
147
147
  };
148
- var ReactionsDialogHeader = exports.ReactionsDialogHeader = function ReactionsDialogHeader(_ref2) {
149
- var totalReactionsCount = _ref2.totalReactionsCount,
150
- handlePreviousPage = _ref2.handlePreviousPage,
151
- handleNextPage = _ref2.handleNextPage,
152
- currentPage = _ref2.currentPage,
153
- maxPages = _ref2.maxPages,
154
- currentReactions = _ref2.currentReactions,
155
- emojiProvider = _ref2.emojiProvider,
156
- selectedEmojiId = _ref2.selectedEmojiId;
148
+ var RightNavigationButton = function RightNavigationButton(_ref3) {
149
+ var handleNextPage = _ref3.handleNextPage;
150
+ var intl = (0, _reactIntlNext.useIntl)();
151
+ return (0, _react2.jsx)(_primitives.Flex, {
152
+ xcss: rightNavigationStyle
153
+ }, (0, _react2.jsx)(_new.IconButton, {
154
+ spacing: "compact",
155
+ onClick: handleNextPage,
156
+ icon: _chevronRight.default,
157
+ label: intl.formatMessage(_i18n.messages.rightNavigateLabel),
158
+ isTooltipDisabled: false
159
+ }));
160
+ };
161
+ var ReactionsDialogHeader = exports.ReactionsDialogHeader = function ReactionsDialogHeader(_ref4) {
162
+ var totalReactionsCount = _ref4.totalReactionsCount,
163
+ handlePreviousPage = _ref4.handlePreviousPage,
164
+ handleNextPage = _ref4.handleNextPage,
165
+ currentPage = _ref4.currentPage,
166
+ maxPages = _ref4.maxPages,
167
+ currentReactions = _ref4.currentReactions,
168
+ emojiProvider = _ref4.emojiProvider,
169
+ handleCloseReactionsDialog = _ref4.handleCloseReactionsDialog;
170
+ var _useState = (0, _react.useState)({}),
171
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
172
+ cache = _useState2[0],
173
+ setCache = _useState2[1];
157
174
  var _useModal = (0, _modalDialog.useModal)(),
158
175
  titleId = _useModal.titleId;
159
176
  var intl = (0, _reactIntlNext.useIntl)();
177
+ var _useThemeObserver = (0, _tokens.useThemeObserver)(),
178
+ colorMode = _useThemeObserver.colorMode;
160
179
  var isSinglePage = maxPages === 1;
161
180
  var isOnFirstPage = currentPage === 1;
162
181
  var isOnLastPage = currentPage === maxPages;
163
- return (0, _react.jsx)(_primitives.Stack, null, (0, _react.jsx)(_primitives.Flex, {
182
+ var handleHover = function handleHover(reaction) {
183
+ var emojiId = reaction.emojiId;
184
+ if (!emojiId || cache[emojiId]) {
185
+ return;
186
+ }
187
+ (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
188
+ var provider, emoji, capitalizedName;
189
+ return _regenerator.default.wrap(function _callee$(_context) {
190
+ while (1) switch (_context.prev = _context.next) {
191
+ case 0:
192
+ _context.next = 2;
193
+ return emojiProvider;
194
+ case 2:
195
+ provider = _context.sent;
196
+ _context.next = 5;
197
+ return provider.findByEmojiId({
198
+ shortName: '',
199
+ id: emojiId
200
+ });
201
+ case 5:
202
+ emoji = _context.sent;
203
+ if (emoji !== null && emoji !== void 0 && emoji.name) {
204
+ // capitalize first letter of each string
205
+ capitalizedName = emoji.name.replace(/\b\w/g, function (char) {
206
+ return char.toUpperCase();
207
+ });
208
+ setCache(function (prevCache) {
209
+ return _objectSpread(_objectSpread({}, prevCache), {}, (0, _defineProperty2.default)({}, emojiId, capitalizedName));
210
+ });
211
+ }
212
+ case 7:
213
+ case "end":
214
+ return _context.stop();
215
+ }
216
+ }, _callee);
217
+ }))();
218
+ };
219
+ return (0, _react2.jsx)(_primitives.Stack, null, (0, _react2.jsx)(_primitives.Flex, {
164
220
  direction: "row",
165
221
  justifyContent: "space-between",
166
222
  alignItems: "center",
167
223
  xcss: fullWidthStyle
168
- }, (0, _react.jsx)(_heading.default, {
224
+ }, (0, _react2.jsx)(_heading.default, {
169
225
  size: "medium",
170
226
  id: titleId
171
227
  }, intl.formatMessage(_i18n.messages.reactionsCount, {
172
228
  count: totalReactionsCount
173
- })), !isSinglePage && (0, _react.jsx)(_primitives.Flex, {
174
- alignItems: "center",
175
- gap: "space.100"
176
- }, (0, _react.jsx)(_tooltip.default, {
177
- content: intl.formatMessage(_i18n.messages.leftNavigateLabel),
178
- canAppear: function canAppear() {
179
- return !isOnFirstPage;
180
- }
181
- }, function (tooltipProps) {
182
- return (0, _react.jsx)(_new.IconButton, (0, _extends2.default)({}, tooltipProps, {
183
- isDisabled: isOnFirstPage,
184
- onClick: handlePreviousPage,
185
- icon: _chevronLeft.default,
186
- label: intl.formatMessage(_i18n.messages.leftNavigateLabel)
187
- }));
188
- }), (0, _react.jsx)(_tooltip.default, {
189
- content: intl.formatMessage(_i18n.messages.rightNavigateLabel),
190
- canAppear: function canAppear() {
191
- return !isOnLastPage;
192
- }
193
- }, function (tooltipProps) {
194
- return (0, _react.jsx)(_new.IconButton, (0, _extends2.default)({}, tooltipProps, {
195
- onClick: handleNextPage,
196
- isDisabled: isOnLastPage,
197
- icon: _chevronRight.default,
198
- label: intl.formatMessage(_i18n.messages.rightNavigateLabel)
199
- }));
200
- }))), (0, _react.jsx)(ReactionsTabs, {
201
- currentReactions: currentReactions,
202
- emojiProvider: emojiProvider,
203
- selectedEmojiId: selectedEmojiId
204
- }));
229
+ })), (0, _react2.jsx)(CloseButton, {
230
+ handleCloseReactionsDialog: handleCloseReactionsDialog
231
+ })), (0, _react2.jsx)(_primitives.Inline, null, (0, _react2.jsx)("div", {
232
+ css: customTabListStyles,
233
+ id: "reactions-dialog-tabs-list"
234
+ }, (0, _react2.jsx)(_tabs.TabList, null, !isSinglePage && !isOnFirstPage && (0, _react2.jsx)(LeftNavigationButton, {
235
+ handlePreviousPage: handlePreviousPage
236
+ }), currentReactions.map(function (reaction, index) {
237
+ var emojiId = {
238
+ id: reaction.emojiId,
239
+ shortName: ''
240
+ };
241
+ return (
242
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
243
+ (0, _react2.jsx)("div", {
244
+ // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
245
+ css: [customTabWrapper(colorMode), index === 0 ? firstElement : []]
246
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
247
+ ,
248
+ className: "reaction-elements",
249
+ key: reaction.emojiId,
250
+ "data-testid": emojiId === null || emojiId === void 0 ? void 0 : emojiId.id,
251
+ onMouseEnter: function onMouseEnter() {
252
+ return handleHover(reaction);
253
+ }
254
+ }, (0, _react2.jsx)(_tabs.Tab, null, (0, _react2.jsx)(_tooltip.default, {
255
+ content: cache[reaction.emojiId],
256
+ canAppear: function canAppear() {
257
+ return !!cache[reaction.emojiId];
258
+ }
259
+ }, (0, _react2.jsx)(_primitives.Flex, {
260
+ justifyContent: "center",
261
+ alignItems: "center",
262
+ direction: "row"
263
+ }, (0, _react2.jsx)(_primitives.Box, {
264
+ xcss: emojiStyles
265
+ }, (0, _react2.jsx)(_element.ResourcedEmoji, {
266
+ emojiProvider: emojiProvider,
267
+ emojiId: emojiId,
268
+ fitToHeight: 16,
269
+ showTooltip: true
270
+ })), (0, _react2.jsx)(_primitives.Box, {
271
+ xcss: counterStyle
272
+ }, (0, _react2.jsx)(_Counter.Counter, {
273
+ value: reaction.count
274
+ }))))))
275
+ );
276
+ }), !isSinglePage && !isOnLastPage && (0, _react2.jsx)(RightNavigationButton, {
277
+ handleNextPage: handleNextPage
278
+ })))));
205
279
  };
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ReactionsList = void 0;
7
7
  var _react = require("@emotion/react");
8
+ var _primitives = require("@atlaskit/primitives");
8
9
  var _ReactionView = require("./ReactionView");
9
10
  /**
10
11
  * @jsxRuntime classic
@@ -17,7 +18,7 @@ var ReactionsList = exports.ReactionsList = function ReactionsList(_ref) {
17
18
  selectedEmojiId = _ref.selectedEmojiId,
18
19
  emojiProvider = _ref.emojiProvider,
19
20
  ProfileCardWrapper = _ref.ProfileCardWrapper;
20
- return (0, _react.jsx)("div", null, reactions.map(function (reaction) {
21
+ return (0, _react.jsx)(_primitives.Box, null, reactions.map(function (reaction) {
21
22
  if (reaction.emojiId === selectedEmojiId) {
22
23
  return (0, _react.jsx)(_ReactionView.ReactionView, {
23
24
  key: reaction.emojiId,
@@ -14,6 +14,7 @@ var _popup = _interopRequireDefault(require("@atlaskit/popup"));
14
14
  var _primitives = require("@atlaskit/primitives");
15
15
  var _new = _interopRequireDefault(require("@atlaskit/button/new"));
16
16
  var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
17
+ var _showMoreHorizontal = _interopRequireDefault(require("@atlaskit/icon/core/show-more-horizontal"));
17
18
  var _Reaction = require("../Reaction");
18
19
  var _ReactionSummaryButton = require("./ReactionSummaryButton");
19
20
  var _i18n = require("../../shared/i18n");
@@ -27,6 +28,9 @@ var summaryPopupStyles = (0, _primitives.xcss)({
27
28
  var viewAllButtonStyling = (0, _primitives.xcss)({
28
29
  marginTop: 'space.050'
29
30
  });
31
+ var iconStyle = (0, _primitives.xcss)({
32
+ height: '20px'
33
+ });
30
34
 
31
35
  /**
32
36
  * Test id for the Reactions summary view popup
@@ -51,6 +55,7 @@ var ReactionSummaryView = exports.ReactionSummaryView = function ReactionSummary
51
55
  subtleReactionsSummaryAndPicker = _ref$subtleReactionsS === void 0 ? false : _ref$subtleReactionsS,
52
56
  handleOpenReactionsDialog = _ref.handleOpenReactionsDialog,
53
57
  allowUserDialog = _ref.allowUserDialog;
58
+ var intl = (0, _reactIntlNext.useIntl)();
54
59
  var _useState = (0, _react.useState)(false),
55
60
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
56
61
  isSummaryPopupOpen = _useState2[0],
@@ -83,9 +88,11 @@ var ReactionSummaryView = exports.ReactionSummaryView = function ReactionSummary
83
88
  });
84
89
  }), allowUserDialog && /*#__PURE__*/_react.default.createElement(_primitives.Box, {
85
90
  xcss: viewAllButtonStyling
91
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Pressable, {
92
+ backgroundColor: "color.background.neutral.subtle",
93
+ padding: "space.0"
86
94
  }, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
87
- content: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _i18n.messages.seeWhoReactedTooltip),
88
- hideTooltipOnClick: true
95
+ content: intl.formatMessage(_i18n.messages.seeWhoReactedTooltip)
89
96
  }, function (tooltipProps) {
90
97
  return /*#__PURE__*/_react.default.createElement(_new.default, (0, _extends2.default)({}, tooltipProps, {
91
98
  spacing: "compact",
@@ -93,11 +100,13 @@ var ReactionSummaryView = exports.ReactionSummaryView = function ReactionSummary
93
100
  handlePopupClose();
94
101
  handleOpenReactionsDialog === null || handleOpenReactionsDialog === void 0 || handleOpenReactionsDialog(reactions[0].emojiId);
95
102
  }
96
- }), /*#__PURE__*/_react.default.createElement(_primitives.Text, {
97
- color: "color.text.subtlest",
98
- weight: "medium"
99
- }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _i18n.messages.seeWhoReacted)));
100
- })));
103
+ }), /*#__PURE__*/_react.default.createElement(_primitives.Flex, {
104
+ alignItems: "center",
105
+ xcss: iconStyle
106
+ }, /*#__PURE__*/_react.default.createElement(_showMoreHorizontal.default, {
107
+ label: intl.formatMessage(_i18n.messages.seeWhoReacted)
108
+ })));
109
+ }))));
101
110
  },
102
111
  isOpen: isSummaryPopupOpen,
103
112
  onClose: handlePopupClose,