@atlaskit/reactions 21.6.2 → 21.7.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 +16 -0
- package/dist/cjs/MockReactionsClient.js +3 -1
- package/dist/cjs/components/EmojiButton/EmojiButton.js +6 -1
- package/dist/cjs/components/Reaction/Reaction.js +8 -5
- package/dist/cjs/components/ReactionPicker/ReactionPicker.js +39 -49
- package/dist/cjs/components/ReactionPicker/styles.js +3 -1
- package/dist/cjs/components/Reactions/Reactions.js +33 -38
- package/dist/cjs/components/Reactions/index.js +0 -6
- package/dist/cjs/components/ShowMore/ShowMore.js +1 -1
- package/dist/cjs/components/Trigger/Trigger.js +21 -7
- package/dist/cjs/components/Trigger/index.js +6 -0
- package/dist/cjs/components/Trigger/styles.js +10 -4
- package/dist/cjs/hooks/useClickAway.js +5 -3
- package/dist/cjs/shared/i18n.js +10 -0
- package/dist/cjs/types/reaction.js +5 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/MockReactionsClient.js +1 -1
- package/dist/es2019/components/EmojiButton/EmojiButton.js +6 -2
- package/dist/es2019/components/Reaction/Reaction.js +8 -6
- package/dist/es2019/components/ReactionPicker/ReactionPicker.js +21 -8
- package/dist/es2019/components/ReactionPicker/styles.js +3 -1
- package/dist/es2019/components/Reactions/Reactions.js +32 -33
- package/dist/es2019/components/Reactions/index.js +1 -1
- package/dist/es2019/components/ShowMore/ShowMore.js +1 -1
- package/dist/es2019/components/Trigger/Trigger.js +17 -5
- package/dist/es2019/components/Trigger/index.js +1 -1
- package/dist/es2019/components/Trigger/styles.js +10 -5
- package/dist/es2019/hooks/useClickAway.js +5 -4
- package/dist/es2019/shared/i18n.js +10 -0
- package/dist/es2019/types/reaction.js +5 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/MockReactionsClient.js +1 -3
- package/dist/esm/components/EmojiButton/EmojiButton.js +6 -2
- package/dist/esm/components/Reaction/Reaction.js +8 -6
- package/dist/esm/components/ReactionPicker/ReactionPicker.js +38 -49
- package/dist/esm/components/ReactionPicker/styles.js +3 -1
- package/dist/esm/components/Reactions/Reactions.js +30 -33
- package/dist/esm/components/Reactions/index.js +1 -1
- package/dist/esm/components/ShowMore/ShowMore.js +1 -1
- package/dist/esm/components/Trigger/Trigger.js +18 -6
- package/dist/esm/components/Trigger/index.js +1 -1
- package/dist/esm/components/Trigger/styles.js +11 -5
- package/dist/esm/hooks/useClickAway.js +5 -3
- package/dist/esm/shared/i18n.js +10 -0
- package/dist/esm/types/reaction.js +5 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/MockReactionsClient.d.ts +3 -0
- package/dist/types/components/FlashAnimation/styles.d.ts +3 -1
- package/dist/types/components/ReactionPicker/ReactionPicker.d.ts +2 -5
- package/dist/types/components/Reactions/Reactions.d.ts +7 -15
- package/dist/types/components/Reactions/index.d.ts +1 -1
- package/dist/types/components/Selector/Selector.d.ts +1 -1
- package/dist/types/components/Selector/styles.d.ts +3 -1
- package/dist/types/components/Trigger/Trigger.d.ts +9 -1
- package/dist/types/components/Trigger/index.d.ts +1 -1
- package/dist/types/containers/ConnectedReactionsView/ConnectedReactionsView.d.ts +1 -1
- package/dist/types/hooks/useClickAway.d.ts +2 -1
- package/dist/types/shared/i18n.d.ts +10 -0
- package/dist/types/types/Actions.d.ts +2 -2
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/reaction.d.ts +19 -1
- package/dist/types-ts4.0/MockReactionsClient.d.ts +3 -0
- package/dist/types-ts4.0/components/FlashAnimation/styles.d.ts +3 -1
- package/dist/types-ts4.0/components/ReactionPicker/ReactionPicker.d.ts +2 -5
- package/dist/types-ts4.0/components/Reactions/Reactions.d.ts +7 -15
- package/dist/types-ts4.0/components/Reactions/index.d.ts +1 -1
- package/dist/types-ts4.0/components/Selector/Selector.d.ts +1 -1
- package/dist/types-ts4.0/components/Selector/styles.d.ts +3 -1
- package/dist/types-ts4.0/components/Trigger/Trigger.d.ts +9 -1
- package/dist/types-ts4.0/components/Trigger/index.d.ts +1 -1
- package/dist/types-ts4.0/containers/ConnectedReactionsView/ConnectedReactionsView.d.ts +1 -1
- package/dist/types-ts4.0/hooks/useClickAway.d.ts +2 -1
- package/dist/types-ts4.0/shared/i18n.d.ts +10 -0
- package/dist/types-ts4.0/types/Actions.d.ts +2 -2
- package/dist/types-ts4.0/types/index.d.ts +1 -1
- package/dist/types-ts4.0/types/reaction.d.ts +19 -1
- package/package.json +6 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atlaskit/reactions
|
|
2
2
|
|
|
3
|
+
## 21.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`e2635f36d53`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e2635f36d53) - Adds new optional prop to <ReactionPicker /> component to setup the content for the tooltip on the add new reaction element
|
|
8
|
+
[ux] This adds a border around the Add reaction button according with new design requirements
|
|
9
|
+
- [`ce1ceee9114`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ce1ceee9114) - Refactor props of <Reactions /> component to better infer types from quickReactionEmojiIds to quickReactionEmojis
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`4b6f775e6c0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/4b6f775e6c0) - update reaction picker position at the edge of window
|
|
14
|
+
- [`b2be1d1c8d2`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b2be1d1c8d2) - removing title of reaction buttons
|
|
15
|
+
- [`458aabb9add`](https://bitbucket.org/atlassian/atlassian-frontend/commits/458aabb9add) - Remove tooltip when reactions are disabled
|
|
16
|
+
- [`a62cf3c2b49`](https://bitbucket.org/atlassian/atlassian-frontend/commits/a62cf3c2b49) - fix emoji upload in reaction picker
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
|
|
3
19
|
## 21.6.2
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.getUser = exports.getReactionSummary = exports.containerAri = exports.ari = exports.MockReactionsClient = void 0;
|
|
8
|
+
exports.mockData = exports.getUser = exports.getReactionSummary = exports.containerAri = exports.ari = exports.MockReactionsClient = void 0;
|
|
9
9
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
|
@@ -61,6 +61,8 @@ var mockData = (0, _defineProperty2.default)({}, getReactionKey(containerAri, ar
|
|
|
61
61
|
* Mocked version of the client to fetch user information
|
|
62
62
|
*/
|
|
63
63
|
|
|
64
|
+
exports.mockData = mockData;
|
|
65
|
+
|
|
64
66
|
var MockReactionsClient = /*#__PURE__*/function () {
|
|
65
67
|
function MockReactionsClient() {
|
|
66
68
|
var _this = this;
|
|
@@ -11,6 +11,8 @@ exports.RENDER_BUTTON_TESTID = exports.EmojiButton = void 0;
|
|
|
11
11
|
|
|
12
12
|
var _react = _interopRequireDefault(require("react"));
|
|
13
13
|
|
|
14
|
+
var _reactIntlNext = require("react-intl-next");
|
|
15
|
+
|
|
14
16
|
var _core = require("@emotion/core");
|
|
15
17
|
|
|
16
18
|
var _emoji = require("@atlaskit/emoji");
|
|
@@ -43,10 +45,13 @@ var EmojiButton = function EmojiButton(_ref) {
|
|
|
43
45
|
}
|
|
44
46
|
};
|
|
45
47
|
|
|
48
|
+
var intl = (0, _reactIntlNext.useIntl)();
|
|
46
49
|
return (0, _core.jsx)("button", {
|
|
47
50
|
"data-testid": RENDER_BUTTON_TESTID,
|
|
48
51
|
onClick: onButtonClick,
|
|
49
|
-
|
|
52
|
+
"aria-label": intl.formatMessage(_shared.i18n.messages.reactWithEmoji, {
|
|
53
|
+
emoji: emojiId.shortName
|
|
54
|
+
}),
|
|
50
55
|
type: "button",
|
|
51
56
|
css: styles.emojiButtonStyle
|
|
52
57
|
}, (0, _core.jsx)(_emoji.ResourcedEmoji, {
|
|
@@ -17,6 +17,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
17
17
|
|
|
18
18
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
19
|
|
|
20
|
+
var _reactIntlNext = require("react-intl-next");
|
|
21
|
+
|
|
20
22
|
var _core = require("@emotion/core");
|
|
21
23
|
|
|
22
24
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
@@ -87,10 +89,7 @@ var Reaction = function Reaction(_ref) {
|
|
|
87
89
|
case 2:
|
|
88
90
|
emojiResource = _context.sent;
|
|
89
91
|
_context.next = 5;
|
|
90
|
-
return emojiResource.
|
|
91
|
-
shortName: '',
|
|
92
|
-
id: reaction.emojiId
|
|
93
|
-
});
|
|
92
|
+
return emojiResource.findById(reaction.emojiId);
|
|
94
93
|
|
|
95
94
|
case 5:
|
|
96
95
|
foundEmoji = _context.sent;
|
|
@@ -132,14 +131,18 @@ var Reaction = function Reaction(_ref) {
|
|
|
132
131
|
onMouseEnter(reaction, event);
|
|
133
132
|
}
|
|
134
133
|
}, [createAnalyticsEvent, reaction, onMouseEnter]);
|
|
134
|
+
var intl = (0, _reactIntlNext.useIntl)();
|
|
135
135
|
return (0, _core.jsx)(_ReactionTooltip.ReactionTooltip, {
|
|
136
136
|
emojiName: emojiName,
|
|
137
137
|
reaction: reaction
|
|
138
138
|
}, (0, _core.jsx)("button", {
|
|
139
139
|
className: className,
|
|
140
140
|
css: [styles.reactionStyle, reaction.reacted && styles.reactedStyle],
|
|
141
|
-
|
|
141
|
+
"aria-label": intl.formatMessage(_shared.i18n.messages.reactWithEmoji, {
|
|
142
|
+
emoji: emojiName
|
|
143
|
+
}),
|
|
142
144
|
type: "button",
|
|
145
|
+
"data-emoji-id": reaction.emojiId,
|
|
143
146
|
"data-testid": RENDER_REACTION_TESTID,
|
|
144
147
|
onMouseUp: handleMouseUp,
|
|
145
148
|
onMouseEnter: handleMouseEnter
|
|
@@ -9,18 +9,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.ReactionPicker = exports.RENDER_REACTIONPICKER_TESTID = void 0;
|
|
11
11
|
|
|
12
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
-
|
|
14
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
13
|
|
|
16
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
-
|
|
18
14
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
19
15
|
|
|
20
16
|
var _react = _interopRequireWildcard(require("react"));
|
|
21
17
|
|
|
22
18
|
var _core = require("@emotion/core");
|
|
23
19
|
|
|
20
|
+
var _reactIntlNext = require("react-intl-next");
|
|
21
|
+
|
|
24
22
|
var _picker = require("@atlaskit/emoji/picker");
|
|
25
23
|
|
|
26
24
|
var _popper = require("@atlaskit/popper");
|
|
@@ -33,6 +31,8 @@ var _Trigger = require("../Trigger");
|
|
|
33
31
|
|
|
34
32
|
var _analytics = require("../../analytics");
|
|
35
33
|
|
|
34
|
+
var _shared = require("../../shared");
|
|
35
|
+
|
|
36
36
|
var _hooks = require("../../hooks");
|
|
37
37
|
|
|
38
38
|
var styles = _interopRequireWildcard(require("./styles"));
|
|
@@ -91,7 +91,9 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
91
91
|
pickerQuickReactionEmojiIds = props.pickerQuickReactionEmojiIds,
|
|
92
92
|
onShowMore = props.onShowMore,
|
|
93
93
|
onOpen = props.onOpen,
|
|
94
|
-
onCancel = props.onCancel
|
|
94
|
+
onCancel = props.onCancel,
|
|
95
|
+
_props$tooltipContent = props.tooltipContent,
|
|
96
|
+
tooltipContent = _props$tooltipContent === void 0 ? (0, _core.jsx)(_reactIntlNext.FormattedMessage, _shared.i18n.messages.addReaction) : _props$tooltipContent;
|
|
95
97
|
/**
|
|
96
98
|
* Container <div /> reference (used by custom hook to detect click outside)
|
|
97
99
|
*/
|
|
@@ -101,9 +103,7 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
101
103
|
* a function you can ask Popper to recompute your tooltip's position. It will directly call the Popper#update method
|
|
102
104
|
*/
|
|
103
105
|
|
|
104
|
-
var updatePopper = (0, _react.useRef)(
|
|
105
|
-
return Promise.resolve();
|
|
106
|
-
});
|
|
106
|
+
var updatePopper = (0, _react.useRef)();
|
|
107
107
|
|
|
108
108
|
var _useState = (0, _react.useState)({
|
|
109
109
|
/**
|
|
@@ -130,7 +130,7 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
close();
|
|
133
|
-
});
|
|
133
|
+
}, 'click', true);
|
|
134
134
|
/**
|
|
135
135
|
* Event callback when the picker is closed
|
|
136
136
|
* @param _id Optional id if an emoji button was selected or undefineed if was clicked outside the picker
|
|
@@ -155,39 +155,17 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
155
155
|
* @param e event param
|
|
156
156
|
*/
|
|
157
157
|
|
|
158
|
-
var onSelectMoreClick = (0, _react.useCallback)(
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
// Update popper position
|
|
170
|
-
setSettings({
|
|
171
|
-
isOpen: true,
|
|
172
|
-
showFullPicker: true
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
if (onShowMore) {
|
|
176
|
-
onShowMore();
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
case 5:
|
|
180
|
-
case "end":
|
|
181
|
-
return _context.stop();
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}, _callee);
|
|
185
|
-
}));
|
|
186
|
-
|
|
187
|
-
return function (_x) {
|
|
188
|
-
return _ref.apply(this, arguments);
|
|
189
|
-
};
|
|
190
|
-
}(), [onShowMore]);
|
|
158
|
+
var onSelectMoreClick = (0, _react.useCallback)(function (e) {
|
|
159
|
+
e.preventDefault();
|
|
160
|
+
setSettings({
|
|
161
|
+
isOpen: true,
|
|
162
|
+
showFullPicker: true
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
if (onShowMore) {
|
|
166
|
+
onShowMore();
|
|
167
|
+
}
|
|
168
|
+
}, [onShowMore]);
|
|
191
169
|
/**
|
|
192
170
|
* Event callback when an emoji icon is selected
|
|
193
171
|
* @param item selected item
|
|
@@ -222,30 +200,42 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
222
200
|
|
|
223
201
|
_analytics.UFO.PickerRender.success();
|
|
224
202
|
};
|
|
203
|
+
/**
|
|
204
|
+
* When picker is opened, re-calculate the picker position
|
|
205
|
+
*/
|
|
225
206
|
|
|
207
|
+
|
|
208
|
+
(0, _react.useEffect)(function () {
|
|
209
|
+
if (settings.isOpen) {
|
|
210
|
+
if (updatePopper.current) {
|
|
211
|
+
updatePopper.current();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}, [settings]);
|
|
226
215
|
var wrapperClassName = " ".concat(settings.isOpen ? 'isOpen' : '', " ").concat(miniMode ? 'miniMode' : '', " ").concat(className);
|
|
227
216
|
return (0, _core.jsx)("div", {
|
|
228
217
|
className: wrapperClassName,
|
|
229
218
|
css: styles.pickerStyle,
|
|
230
219
|
ref: wrapperRef,
|
|
231
220
|
"data-testid": RENDER_REACTIONPICKER_TESTID
|
|
232
|
-
}, (0, _core.jsx)(_popper.Manager, null, (0, _core.jsx)(_popper.Reference, null, function (
|
|
233
|
-
var popperRef =
|
|
221
|
+
}, (0, _core.jsx)(_popper.Manager, null, (0, _core.jsx)(_popper.Reference, null, function (_ref) {
|
|
222
|
+
var popperRef = _ref.ref;
|
|
234
223
|
return (// Render a button to open the <Selector /> panel
|
|
235
224
|
(0, _core.jsx)(_Trigger.Trigger, {
|
|
236
225
|
ref: popperRef,
|
|
237
226
|
onClick: onTriggerClick,
|
|
238
227
|
miniMode: miniMode,
|
|
239
|
-
disabled: disabled
|
|
228
|
+
disabled: disabled,
|
|
229
|
+
tooltipContent: tooltipContent
|
|
240
230
|
})
|
|
241
231
|
);
|
|
242
232
|
}), (0, _core.jsx)(_popper.Popper, {
|
|
243
233
|
placement: "bottom-start",
|
|
244
234
|
modifiers: popperModifiers
|
|
245
|
-
}, function (
|
|
246
|
-
var ref =
|
|
247
|
-
style =
|
|
248
|
-
update =
|
|
235
|
+
}, function (_ref2) {
|
|
236
|
+
var ref = _ref2.ref,
|
|
237
|
+
style = _ref2.style,
|
|
238
|
+
update = _ref2.update;
|
|
249
239
|
updatePopper.current = update;
|
|
250
240
|
return (0, _core.jsx)(_react.Fragment, null, settings.isOpen && (0, _core.jsx)("div", {
|
|
251
241
|
style: _objectSpread({
|
|
@@ -31,7 +31,9 @@ var popupStyle = (0, _core.css)({
|
|
|
31
31
|
borderRadius: "".concat((0, _constants.borderRadius)(), "px"),
|
|
32
32
|
boxShadow: (0, _tokens.token)('elevation.shadow.overlay', "0 4px 8px -2px ".concat(_colors.N50A, ", 0 0 1px ").concat(_colors.N60A)),
|
|
33
33
|
'&> div': {
|
|
34
|
-
boxShadow: undefined
|
|
34
|
+
boxShadow: undefined,
|
|
35
|
+
marginTop: '4px',
|
|
36
|
+
marginBottom: '4px'
|
|
35
37
|
}
|
|
36
38
|
});
|
|
37
39
|
exports.popupStyle = popupStyle;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
4
|
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
exports.Reactions = exports.
|
|
8
|
+
exports.Reactions = exports.RENDER_REACTIONS_TESTID = void 0;
|
|
9
|
+
exports.getTooltip = getTooltip;
|
|
11
10
|
|
|
12
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
12
|
|
|
@@ -15,8 +14,6 @@ var _core = require("@emotion/core");
|
|
|
15
14
|
|
|
16
15
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
17
16
|
|
|
18
|
-
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
19
|
-
|
|
20
17
|
var _reactIntlNext = require("react-intl-next");
|
|
21
18
|
|
|
22
19
|
var _analytics = require("../../analytics");
|
|
@@ -41,26 +38,40 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
41
38
|
* Test id for wrapper Reactions div
|
|
42
39
|
*/
|
|
43
40
|
var RENDER_REACTIONS_TESTID = 'render-reactions';
|
|
41
|
+
exports.RENDER_REACTIONS_TESTID = RENDER_REACTIONS_TESTID;
|
|
42
|
+
|
|
44
43
|
/**
|
|
45
|
-
*
|
|
44
|
+
* Get content of the tooltip
|
|
46
45
|
*/
|
|
46
|
+
function getTooltip(status, errorMessage) {
|
|
47
|
+
switch (status) {
|
|
48
|
+
case _types.ReactionStatus.error:
|
|
49
|
+
return errorMessage || (0, _core.jsx)(_reactIntlNext.FormattedMessage, _shared.i18n.messages.unexpectedError);
|
|
50
|
+
// When reaction is not available don't show any tooltip (e.g. Archive page in Confluence)
|
|
47
51
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
case _types.ReactionStatus.disabled:
|
|
53
|
+
return null;
|
|
54
|
+
|
|
55
|
+
case _types.ReactionStatus.notLoaded:
|
|
56
|
+
case _types.ReactionStatus.loading:
|
|
57
|
+
return (0, _core.jsx)(_reactIntlNext.FormattedMessage, _shared.i18n.messages.loadingReactions);
|
|
51
58
|
|
|
59
|
+
case _types.ReactionStatus.ready:
|
|
60
|
+
return (0, _core.jsx)(_reactIntlNext.FormattedMessage, _shared.i18n.messages.addReaction);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
52
63
|
/**
|
|
53
64
|
* Renders list of reactions
|
|
54
65
|
*/
|
|
66
|
+
|
|
67
|
+
|
|
55
68
|
var Reactions = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
56
69
|
var _ref$flash = _ref.flash,
|
|
57
70
|
flash = _ref$flash === void 0 ? {} : _ref$flash,
|
|
58
71
|
status = _ref.status,
|
|
59
72
|
errorMessage = _ref.errorMessage,
|
|
60
73
|
loadReaction = _ref.loadReaction,
|
|
61
|
-
|
|
62
|
-
containerAri = _ref.containerAri,
|
|
63
|
-
ari = _ref.ari,
|
|
74
|
+
quickReactionEmojis = _ref.quickReactionEmojis,
|
|
64
75
|
pickerQuickReactionEmojiIds = _ref.pickerQuickReactionEmojiIds,
|
|
65
76
|
onReactionHover = _ref.onReactionHover,
|
|
66
77
|
onSelection = _ref.onSelection,
|
|
@@ -92,23 +103,6 @@ var Reactions = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
|
92
103
|
renderTime.current = undefined;
|
|
93
104
|
}
|
|
94
105
|
}, [createAnalyticsEvent, status]);
|
|
95
|
-
/**
|
|
96
|
-
* Get content of the tooltip
|
|
97
|
-
*/
|
|
98
|
-
|
|
99
|
-
var getTooltip = function getTooltip() {
|
|
100
|
-
switch (status) {
|
|
101
|
-
case _types.ReactionStatus.error:
|
|
102
|
-
return errorMessage || (0, _core.jsx)(_reactIntlNext.FormattedMessage, _shared.i18n.messages.unexpectedError);
|
|
103
|
-
|
|
104
|
-
case _types.ReactionStatus.loading:
|
|
105
|
-
case _types.ReactionStatus.notLoaded:
|
|
106
|
-
return (0, _core.jsx)(_reactIntlNext.FormattedMessage, _shared.i18n.messages.loadingReactions);
|
|
107
|
-
|
|
108
|
-
default:
|
|
109
|
-
return undefined;
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
106
|
|
|
113
107
|
var handleReactionMouseEnter = function handleReactionMouseEnter(summary) {
|
|
114
108
|
if (onReactionHover) {
|
|
@@ -147,12 +141,15 @@ var Reactions = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
|
147
141
|
/**
|
|
148
142
|
* If reactions not empty, don't show quick reactions Pre defined emoji or if its empty => return the current list of reactions
|
|
149
143
|
*/
|
|
150
|
-
if (reactions.length > 0 || !
|
|
144
|
+
if (reactions.length > 0 || !quickReactionEmojis) {
|
|
151
145
|
return reactions;
|
|
152
146
|
} // add any missing default reactions
|
|
153
147
|
|
|
154
148
|
|
|
155
|
-
var
|
|
149
|
+
var ari = quickReactionEmojis.ari,
|
|
150
|
+
containerAri = quickReactionEmojis.containerAri,
|
|
151
|
+
emojiIds = quickReactionEmojis.emojiIds;
|
|
152
|
+
var items = emojiIds.filter(function (emojiId) {
|
|
156
153
|
return !reactions.some(function (reaction) {
|
|
157
154
|
return reaction.emojiId === emojiId;
|
|
158
155
|
});
|
|
@@ -166,7 +163,7 @@ var Reactions = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
|
166
163
|
};
|
|
167
164
|
});
|
|
168
165
|
return reactions.concat(items);
|
|
169
|
-
}, [
|
|
166
|
+
}, [quickReactionEmojis, reactions]);
|
|
170
167
|
return (0, _core.jsx)("div", {
|
|
171
168
|
css: styles.wrapperStyle,
|
|
172
169
|
"data-testid": RENDER_REACTIONS_TESTID
|
|
@@ -180,10 +177,7 @@ var Reactions = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
|
180
177
|
onMouseEnter: handleReactionMouseEnter,
|
|
181
178
|
flash: flash[reaction.emojiId]
|
|
182
179
|
});
|
|
183
|
-
}), (0, _core.jsx)(
|
|
184
|
-
testId: RENDER_TOOLTIP_TESTID,
|
|
185
|
-
content: getTooltip()
|
|
186
|
-
}, (0, _core.jsx)(_ReactionPicker.ReactionPicker, {
|
|
180
|
+
}), (0, _core.jsx)(_ReactionPicker.ReactionPicker, {
|
|
187
181
|
css: styles.reactionStyle,
|
|
188
182
|
emojiProvider: emojiProvider,
|
|
189
183
|
miniMode: true,
|
|
@@ -193,8 +187,9 @@ var Reactions = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
|
193
187
|
onSelection: handleOnSelection,
|
|
194
188
|
onOpen: handlePickerOpen,
|
|
195
189
|
onCancel: handleOnCancel,
|
|
196
|
-
onShowMore: handleOnMore
|
|
197
|
-
|
|
190
|
+
onShowMore: handleOnMore,
|
|
191
|
+
tooltipContent: getTooltip(status, errorMessage)
|
|
192
|
+
}));
|
|
198
193
|
});
|
|
199
194
|
|
|
200
195
|
exports.Reactions = Reactions;
|
|
@@ -9,12 +9,6 @@ Object.defineProperty(exports, "RENDER_REACTIONS_TESTID", {
|
|
|
9
9
|
return _Reactions.RENDER_REACTIONS_TESTID;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "RENDER_TOOLTIP_TESTID", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function get() {
|
|
15
|
-
return _Reactions.RENDER_TOOLTIP_TESTID;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
12
|
Object.defineProperty(exports, "Reactions", {
|
|
19
13
|
enumerable: true,
|
|
20
14
|
get: function get() {
|
|
@@ -57,7 +57,7 @@ var ShowMore = function ShowMore(_ref) {
|
|
|
57
57
|
}, (0, _core.jsx)("button", {
|
|
58
58
|
className: className.button,
|
|
59
59
|
css: [styles.moreButtonStyle, buttonStyle],
|
|
60
|
-
|
|
60
|
+
"aria-label": _shared.i18n.messages.moreEmoji.defaultMessage,
|
|
61
61
|
type: "button",
|
|
62
62
|
style: style.button,
|
|
63
63
|
onMouseDown: onClick,
|
|
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.Trigger = void 0;
|
|
10
|
+
exports.Trigger = exports.RENDER_TOOLTIP_TRIGGER_TESTID = void 0;
|
|
11
11
|
|
|
12
12
|
var _react = _interopRequireDefault(require("react"));
|
|
13
13
|
|
|
@@ -15,6 +15,8 @@ var _core = require("@emotion/core");
|
|
|
15
15
|
|
|
16
16
|
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
17
17
|
|
|
18
|
+
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
19
|
+
|
|
18
20
|
var _emojiAdd = _interopRequireDefault(require("@atlaskit/icon/glyph/emoji-add"));
|
|
19
21
|
|
|
20
22
|
var styles = _interopRequireWildcard(require("./styles"));
|
|
@@ -26,20 +28,32 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
26
28
|
/** @jsx jsx */
|
|
27
29
|
|
|
28
30
|
/**
|
|
29
|
-
*
|
|
31
|
+
* Test id for the tooltip
|
|
32
|
+
*/
|
|
33
|
+
var RENDER_TOOLTIP_TRIGGER_TESTID = 'render-tooltip-trigger';
|
|
34
|
+
exports.RENDER_TOOLTIP_TRIGGER_TESTID = RENDER_TOOLTIP_TRIGGER_TESTID;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Render an emoji button to open the reactions select picker
|
|
30
38
|
*/
|
|
31
39
|
var Trigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
32
|
-
var
|
|
40
|
+
var onClick = props.onClick,
|
|
41
|
+
miniMode = props.miniMode,
|
|
42
|
+
tooltipContent = props.tooltipContent,
|
|
33
43
|
_props$disabled = props.disabled,
|
|
34
44
|
disabled = _props$disabled === void 0 ? false : _props$disabled;
|
|
35
45
|
|
|
36
46
|
var handleMouseDown = function handleMouseDown(e, analyticsEvent) {
|
|
37
|
-
if (
|
|
38
|
-
|
|
47
|
+
if (onClick && !disabled) {
|
|
48
|
+
onClick(e, analyticsEvent);
|
|
39
49
|
}
|
|
40
50
|
};
|
|
41
51
|
|
|
42
|
-
return (0, _core.jsx)(
|
|
52
|
+
return (0, _core.jsx)(_tooltip.default, {
|
|
53
|
+
testId: RENDER_TOOLTIP_TRIGGER_TESTID,
|
|
54
|
+
content: tooltipContent,
|
|
55
|
+
position: "top"
|
|
56
|
+
}, (0, _core.jsx)(_standardButton.default, {
|
|
43
57
|
css: styles.triggerStyle({
|
|
44
58
|
miniMode: miniMode,
|
|
45
59
|
disabled: disabled
|
|
@@ -53,7 +67,7 @@ var Trigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
53
67
|
}),
|
|
54
68
|
spacing: "none",
|
|
55
69
|
ref: ref
|
|
56
|
-
});
|
|
70
|
+
}));
|
|
57
71
|
});
|
|
58
72
|
|
|
59
73
|
exports.Trigger = Trigger;
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "RENDER_TOOLTIP_TRIGGER_TESTID", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _Trigger.RENDER_TOOLTIP_TRIGGER_TESTID;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "Trigger", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function get() {
|
|
@@ -27,19 +27,25 @@ var triggerStyle = function triggerStyle(_ref) {
|
|
|
27
27
|
miniMode = _ref$miniMode === void 0 ? false : _ref$miniMode,
|
|
28
28
|
_ref$disabled = _ref.disabled,
|
|
29
29
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
30
|
-
return (0, _core.css)(_objectSpread(_objectSpread({
|
|
31
|
-
|
|
30
|
+
return (0, _core.css)(_objectSpread(_objectSpread(_objectSpread({
|
|
31
|
+
minWidth: '32px',
|
|
32
32
|
height: '32px',
|
|
33
33
|
display: 'flex',
|
|
34
34
|
justifyContent: 'center',
|
|
35
35
|
alignItems: 'center',
|
|
36
36
|
lineHeight: '16px'
|
|
37
37
|
}, miniMode && {
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
height: '24px',
|
|
39
|
+
padding: 0,
|
|
40
|
+
border: "1px solid ".concat((0, _tokens.token)('color.border', _colors.N40)),
|
|
41
|
+
borderRadius: '20px'
|
|
40
42
|
}), disabled && {
|
|
41
43
|
color: DISABLED_BUTTON_COLOR,
|
|
42
44
|
cursor: 'not-allowed'
|
|
45
|
+
}), {}, {
|
|
46
|
+
'&:hover': {
|
|
47
|
+
background: "".concat((0, _tokens.token)('color.background.neutral.subtle.hovered', _colors.N20))
|
|
48
|
+
}
|
|
43
49
|
}));
|
|
44
50
|
};
|
|
45
51
|
|
|
@@ -12,9 +12,11 @@ var _react = require("react");
|
|
|
12
12
|
* @param ref ref object to an html element
|
|
13
13
|
* @param callback event callback when detected a click outside the ref object
|
|
14
14
|
* @param type (Optional) type of event to listen to. @default click
|
|
15
|
+
* @param useCapture (Optional) use capture phase of event. @default false
|
|
15
16
|
*/
|
|
16
17
|
function useClickAway(ref, callback) {
|
|
17
18
|
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'click';
|
|
19
|
+
var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
18
20
|
(0, _react.useEffect)(function () {
|
|
19
21
|
/**
|
|
20
22
|
* Alert if clicked on outside of element
|
|
@@ -26,10 +28,10 @@ function useClickAway(ref, callback) {
|
|
|
26
28
|
} // Bind the event listener
|
|
27
29
|
|
|
28
30
|
|
|
29
|
-
document.addEventListener(type, handleClickOutside);
|
|
31
|
+
document.addEventListener(type, handleClickOutside, useCapture);
|
|
30
32
|
return function () {
|
|
31
33
|
// Unbind the event listener on clean up
|
|
32
|
-
document.removeEventListener(type, handleClickOutside);
|
|
34
|
+
document.removeEventListener(type, handleClickOutside, useCapture);
|
|
33
35
|
};
|
|
34
|
-
}, [ref, callback, type]);
|
|
36
|
+
}, [ref, callback, type, useCapture]);
|
|
35
37
|
}
|
package/dist/cjs/shared/i18n.js
CHANGED
|
@@ -8,6 +8,11 @@ exports.messages = void 0;
|
|
|
8
8
|
var _reactIntlNext = require("react-intl-next");
|
|
9
9
|
|
|
10
10
|
var messages = (0, _reactIntlNext.defineMessages)({
|
|
11
|
+
addReaction: {
|
|
12
|
+
id: 'fabric.reactions.add',
|
|
13
|
+
defaultMessage: 'Add reaction',
|
|
14
|
+
description: 'Message for add reaction button'
|
|
15
|
+
},
|
|
11
16
|
loadingReactions: {
|
|
12
17
|
id: 'fabric.reactions.loading',
|
|
13
18
|
defaultMessage: 'Loading...',
|
|
@@ -18,6 +23,11 @@ var messages = (0, _reactIntlNext.defineMessages)({
|
|
|
18
23
|
defaultMessage: 'More emojis',
|
|
19
24
|
description: 'Tooltip of the "show more" button in the quick reaction selector. The full emoji selector is displayed when the user clicks on it.'
|
|
20
25
|
},
|
|
26
|
+
reactWithEmoji: {
|
|
27
|
+
id: 'fabric.reactions.reactwithemoji',
|
|
28
|
+
defaultMessage: 'React with {emoji} emoji',
|
|
29
|
+
description: 'Aria label on reaction button'
|
|
30
|
+
},
|
|
21
31
|
unexpectedError: {
|
|
22
32
|
id: 'fabric.reactions.error.unexpected',
|
|
23
33
|
defaultMessage: 'Reactions are temporarily unavailable',
|
|
@@ -13,6 +13,10 @@ exports.ReactionStatus = void 0;
|
|
|
13
13
|
* MetaData for Reaction object
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Metadata for composing a summary of emojis that will be shown in the the primary view even if the reaction count is zero
|
|
18
|
+
*/
|
|
19
|
+
|
|
16
20
|
/**
|
|
17
21
|
* Event handler for when the user clicks on the reaction
|
|
18
22
|
* @param id give id for the emoji
|
|
@@ -40,4 +44,5 @@ exports.ReactionStatus = ReactionStatus;
|
|
|
40
44
|
ReactionStatus["loading"] = "LOADING";
|
|
41
45
|
ReactionStatus["error"] = "ERROR";
|
|
42
46
|
ReactionStatus["notLoaded"] = "NOT_LOADED";
|
|
47
|
+
ReactionStatus["disabled"] = "DISABLED";
|
|
43
48
|
})(ReactionStatus || (exports.ReactionStatus = ReactionStatus = {}));
|
package/dist/cjs/version.json
CHANGED
|
@@ -21,7 +21,7 @@ const getReactionKey = (containerAri, ari) => {
|
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
const defaultUsers = [getUser('oscar', 'Oscar Wallhult'), getUser('julien', 'Julien Michel Hoarau'), getUser('craig', 'Craig Petchell'), getUser('jerome', 'Jerome Touffe-Blin'), getUser('esoares', 'Eduardo Soares'), getUser('lpereira', 'Luiz Pereira'), getUser('pcurren', 'Paul Curren'), getUser('ttjandra', 'Tara Tjandra'), getUser('severington', 'Ste Everington'), getUser('sguillope', 'Sylvain Guillope'), getUser('alunnon', 'Alex Lunnon')];
|
|
24
|
-
const mockData = {
|
|
24
|
+
export const mockData = {
|
|
25
25
|
[getReactionKey(containerAri, ari)]: [getReactionSummary(':fire:', 1, true), getReactionSummary(':thumbsup:', 999, false), getReactionSummary(':astonished:', 9, false), getReactionSummary(':heart:', 99, false)]
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { useIntl } from 'react-intl-next';
|
|
3
4
|
import { jsx } from '@emotion/core';
|
|
4
5
|
import { ResourcedEmoji } from '@atlaskit/emoji';
|
|
5
|
-
import { utils } from '../../shared';
|
|
6
|
+
import { i18n, utils } from '../../shared';
|
|
6
7
|
import * as styles from './styles';
|
|
7
8
|
export const RENDER_BUTTON_TESTID = 'button-emoji-id';
|
|
8
9
|
|
|
@@ -22,10 +23,13 @@ export const EmojiButton = ({
|
|
|
22
23
|
}
|
|
23
24
|
};
|
|
24
25
|
|
|
26
|
+
const intl = useIntl();
|
|
25
27
|
return jsx("button", {
|
|
26
28
|
"data-testid": RENDER_BUTTON_TESTID,
|
|
27
29
|
onClick: onButtonClick,
|
|
28
|
-
|
|
30
|
+
"aria-label": intl.formatMessage(i18n.messages.reactWithEmoji, {
|
|
31
|
+
emoji: emojiId.shortName
|
|
32
|
+
}),
|
|
29
33
|
type: "button",
|
|
30
34
|
css: styles.emojiButtonStyle
|
|
31
35
|
}, jsx(ResourcedEmoji, {
|