@atlaskit/reactions 21.4.0 → 21.6.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 +28 -0
- package/MockReactionsClient/package.json +7 -0
- package/dist/cjs/MockReactionsClient.js +276 -0
- package/dist/cjs/analytics/analytics.js +141 -0
- package/dist/cjs/analytics/index.js +4 -134
- package/dist/cjs/client/ReactionServiceClient.js +29 -6
- package/dist/cjs/components/{Counter.js → Counter/Counter.js} +32 -39
- package/dist/cjs/components/Counter/index.js +36 -0
- package/dist/cjs/components/Counter/styles.js +33 -0
- package/dist/cjs/components/EmojiButton/EmojiButton.js +58 -0
- package/dist/cjs/components/EmojiButton/index.js +19 -0
- package/dist/cjs/components/EmojiButton/styles.js +25 -0
- package/dist/cjs/components/FlashAnimation/FlashAnimation.js +42 -0
- package/dist/cjs/components/FlashAnimation/index.js +19 -0
- package/dist/cjs/components/{FlashAnimation.js → FlashAnimation/styles.js} +7 -26
- package/dist/cjs/components/Reaction/Reaction.js +163 -0
- package/dist/cjs/components/Reaction/index.js +19 -0
- package/dist/cjs/components/Reaction/styles.js +70 -0
- package/dist/cjs/components/ReactionPicker/ReactionPicker.js +272 -0
- package/dist/cjs/components/ReactionPicker/index.js +19 -0
- package/dist/cjs/components/ReactionPicker/styles.js +37 -0
- package/dist/cjs/components/ReactionTooltip/ReactionTooltip.js +71 -0
- package/dist/cjs/components/ReactionTooltip/index.js +19 -0
- package/dist/cjs/components/ReactionTooltip/styles.js +46 -0
- package/dist/cjs/components/Reactions/Reactions.js +200 -0
- package/dist/cjs/components/Reactions/index.js +25 -0
- package/dist/cjs/components/Reactions/styles.js +29 -0
- package/dist/cjs/components/Selector/Selector.js +132 -0
- package/dist/cjs/components/Selector/index.js +30 -0
- package/dist/cjs/components/Selector/styles.js +56 -0
- package/dist/cjs/components/ShowMore/ShowMore.js +71 -0
- package/dist/cjs/components/ShowMore/index.js +19 -0
- package/dist/cjs/components/ShowMore/styles.js +44 -0
- package/dist/cjs/components/Trigger/Trigger.js +59 -0
- package/dist/cjs/components/Trigger/index.js +13 -0
- package/dist/cjs/components/Trigger/styles.js +46 -0
- package/dist/cjs/components/{UfoErrorBoundary.js → UfoErrorBoundary/UfoErrorBoundary.js} +3 -0
- package/dist/cjs/components/UfoErrorBoundary/index.js +13 -0
- package/dist/cjs/containers/ConnectedReactionPicker/ConnectedReactionPicker.js +62 -0
- package/dist/cjs/containers/ConnectedReactionPicker/index.js +13 -0
- package/dist/cjs/containers/ConnectedReactionsView/ConnectedReactionsView.js +258 -0
- package/dist/cjs/containers/ConnectedReactionsView/index.js +13 -0
- package/dist/cjs/containers/index.js +23 -13
- package/dist/cjs/hooks/index.js +13 -0
- package/dist/cjs/hooks/useClickAway.js +35 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/shared/constants.js +44 -0
- package/dist/cjs/{components → shared}/i18n.js +1 -1
- package/dist/cjs/shared/index.js +24 -0
- package/dist/cjs/shared/utils.js +54 -0
- package/dist/cjs/store/{ReactionsStore.js → MemoryReactionsStore.js} +41 -18
- package/dist/cjs/store/ReactionConsumer.js +43 -15
- package/dist/cjs/store/index.js +8 -2
- package/dist/cjs/store/utils.js +4 -10
- package/dist/cjs/{client/ReactionClient.js → types/client.js} +0 -0
- package/dist/cjs/types/index.js +2 -2
- package/dist/cjs/types/reaction.js +43 -0
- package/dist/cjs/types/{DetailedReaction.js → store.js} +0 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/MockReactionsClient.js +126 -0
- package/dist/es2019/analytics/analytics.js +64 -0
- package/dist/es2019/analytics/index.js +3 -65
- package/dist/es2019/analytics/ufo.js +0 -1
- package/dist/es2019/client/ReactionServiceClient.js +31 -6
- package/dist/es2019/components/{Counter.js → Counter/Counter.js} +26 -31
- package/dist/es2019/components/Counter/index.js +3 -0
- package/dist/es2019/components/Counter/styles.js +20 -0
- package/dist/es2019/components/EmojiButton/EmojiButton.js +35 -0
- package/dist/es2019/components/EmojiButton/index.js +1 -0
- package/dist/es2019/components/EmojiButton/styles.js +16 -0
- package/dist/es2019/components/FlashAnimation/FlashAnimation.js +18 -0
- package/dist/es2019/components/FlashAnimation/index.js +1 -0
- package/dist/es2019/components/{FlashAnimation.js → FlashAnimation/styles.js} +6 -17
- package/dist/es2019/components/Reaction/Reaction.js +104 -0
- package/dist/es2019/components/Reaction/index.js +1 -0
- package/dist/es2019/components/Reaction/styles.js +55 -0
- package/dist/es2019/components/ReactionPicker/ReactionPicker.js +208 -0
- package/dist/es2019/components/ReactionPicker/index.js +1 -0
- package/dist/es2019/components/ReactionPicker/styles.js +23 -0
- package/dist/es2019/components/ReactionTooltip/ReactionTooltip.js +46 -0
- package/dist/es2019/components/ReactionTooltip/index.js +1 -0
- package/dist/es2019/components/ReactionTooltip/styles.js +32 -0
- package/dist/es2019/components/Reactions/Reactions.js +156 -0
- package/dist/es2019/components/Reactions/index.js +1 -0
- package/dist/es2019/components/Reactions/styles.js +19 -0
- package/dist/es2019/components/Selector/Selector.js +98 -0
- package/dist/es2019/components/Selector/index.js +3 -0
- package/dist/es2019/components/Selector/styles.js +39 -0
- package/dist/es2019/components/ShowMore/ShowMore.js +43 -0
- package/dist/es2019/components/ShowMore/index.js +1 -0
- package/dist/es2019/components/ShowMore/styles.js +30 -0
- package/dist/es2019/components/{Trigger.js → Trigger/Trigger.js} +15 -20
- package/dist/es2019/components/Trigger/index.js +1 -0
- package/dist/es2019/components/Trigger/styles.js +24 -0
- package/dist/es2019/components/{UfoErrorBoundary.js → UfoErrorBoundary/UfoErrorBoundary.js} +4 -0
- package/dist/es2019/components/UfoErrorBoundary/index.js +1 -0
- package/dist/es2019/containers/ConnectedReactionPicker/ConnectedReactionPicker.js +27 -0
- package/dist/es2019/containers/ConnectedReactionPicker/index.js +1 -0
- package/dist/es2019/containers/ConnectedReactionsView/ConnectedReactionsView.js +166 -0
- package/dist/es2019/containers/ConnectedReactionsView/index.js +1 -0
- package/dist/es2019/containers/index.js +2 -2
- package/dist/es2019/hooks/index.js +1 -0
- package/dist/es2019/hooks/useClickAway.js +27 -0
- package/dist/es2019/index.js +3 -1
- package/dist/es2019/shared/constants.js +32 -0
- package/dist/es2019/{components → shared}/i18n.js +1 -1
- package/dist/es2019/shared/index.js +6 -0
- package/dist/es2019/shared/utils.js +35 -0
- package/dist/es2019/store/{ReactionsStore.js → MemoryReactionsStore.js} +40 -14
- package/dist/es2019/store/ReactionConsumer.js +18 -12
- package/dist/es2019/store/index.js +1 -1
- package/dist/es2019/store/utils.js +8 -4
- package/dist/es2019/{client/ReactionClient.js → types/client.js} +0 -0
- package/dist/es2019/types/index.js +1 -1
- package/dist/es2019/types/reaction.js +34 -0
- package/dist/es2019/types/{DetailedReaction.js → store.js} +0 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/MockReactionsClient.js +257 -0
- package/dist/esm/analytics/analytics.js +99 -0
- package/dist/esm/analytics/index.js +3 -99
- package/dist/esm/analytics/ufo.js +0 -1
- package/dist/esm/client/ReactionServiceClient.js +30 -6
- package/dist/esm/components/{Counter.js → Counter/Counter.js} +26 -31
- package/dist/esm/components/Counter/index.js +3 -0
- package/dist/esm/components/Counter/styles.js +20 -0
- package/dist/esm/components/EmojiButton/EmojiButton.js +35 -0
- package/dist/esm/components/EmojiButton/index.js +1 -0
- package/dist/esm/components/EmojiButton/styles.js +16 -0
- package/dist/esm/components/FlashAnimation/FlashAnimation.js +20 -0
- package/dist/esm/components/FlashAnimation/index.js +1 -0
- package/dist/esm/components/{FlashAnimation.js → FlashAnimation/styles.js} +6 -19
- package/dist/esm/components/Reaction/Reaction.js +131 -0
- package/dist/esm/components/Reaction/index.js +1 -0
- package/dist/esm/components/Reaction/styles.js +55 -0
- package/dist/esm/components/ReactionPicker/ReactionPicker.js +243 -0
- package/dist/esm/components/ReactionPicker/index.js +1 -0
- package/dist/esm/components/ReactionPicker/styles.js +23 -0
- package/dist/esm/components/ReactionTooltip/ReactionTooltip.js +46 -0
- package/dist/esm/components/ReactionTooltip/index.js +1 -0
- package/dist/esm/components/ReactionTooltip/styles.js +32 -0
- package/dist/esm/components/Reactions/Reactions.js +166 -0
- package/dist/esm/components/Reactions/index.js +1 -0
- package/dist/esm/components/Reactions/styles.js +19 -0
- package/dist/esm/components/Selector/Selector.js +107 -0
- package/dist/esm/components/Selector/index.js +3 -0
- package/dist/esm/components/Selector/styles.js +41 -0
- package/dist/esm/components/ShowMore/ShowMore.js +46 -0
- package/dist/esm/components/ShowMore/index.js +1 -0
- package/dist/esm/components/ShowMore/styles.js +30 -0
- package/dist/esm/components/{Trigger.js → Trigger/Trigger.js} +15 -20
- package/dist/esm/components/Trigger/index.js +1 -0
- package/dist/esm/components/Trigger/styles.js +31 -0
- package/dist/esm/components/{UfoErrorBoundary.js → UfoErrorBoundary/UfoErrorBoundary.js} +4 -0
- package/dist/esm/components/UfoErrorBoundary/index.js +1 -0
- package/dist/esm/containers/ConnectedReactionPicker/ConnectedReactionPicker.js +46 -0
- package/dist/esm/containers/ConnectedReactionPicker/index.js +1 -0
- package/dist/esm/containers/ConnectedReactionsView/ConnectedReactionsView.js +227 -0
- package/dist/esm/containers/ConnectedReactionsView/index.js +1 -0
- package/dist/esm/containers/index.js +2 -2
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/useClickAway.js +28 -0
- package/dist/esm/index.js +3 -1
- package/dist/esm/shared/constants.js +34 -0
- package/dist/esm/{components → shared}/i18n.js +1 -1
- package/dist/esm/shared/index.js +6 -0
- package/dist/esm/shared/utils.js +41 -0
- package/dist/esm/store/{ReactionsStore.js → MemoryReactionsStore.js} +40 -17
- package/dist/esm/store/ReactionConsumer.js +42 -15
- package/dist/esm/store/index.js +1 -1
- package/dist/esm/store/utils.js +8 -4
- package/dist/{es2019/types/ReactionSource.js → esm/types/client.js} +0 -0
- package/dist/esm/types/index.js +1 -1
- package/dist/esm/types/reaction.js +34 -0
- package/dist/{es2019/types/ReactionSummary.js → esm/types/store.js} +0 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/MockReactionsClient.d.ts +20 -0
- package/dist/types/analytics/analytics.d.ts +96 -0
- package/dist/types/analytics/index.d.ts +1 -96
- package/dist/types/client/ReactionServiceClient.d.ts +27 -10
- package/dist/types/client/index.d.ts +0 -1
- package/dist/types/components/Counter/Counter.d.ts +40 -0
- package/dist/types/components/Counter/index.d.ts +3 -0
- package/dist/types/components/Counter/styles.d.ts +3 -0
- package/dist/types/components/EmojiButton/EmojiButton.d.ts +22 -0
- package/dist/types/components/EmojiButton/index.d.ts +2 -0
- package/dist/types/components/EmojiButton/styles.d.ts +1 -0
- package/dist/types/components/FlashAnimation/FlashAnimation.d.ts +20 -0
- package/dist/types/components/FlashAnimation/index.d.ts +2 -0
- package/dist/types/components/FlashAnimation/styles.d.ts +3 -0
- package/dist/types/components/Reaction/Reaction.d.ts +38 -0
- package/dist/types/components/Reaction/index.d.ts +2 -0
- package/dist/types/components/Reaction/styles.d.ts +10 -0
- package/dist/types/components/ReactionPicker/ReactionPicker.d.ts +53 -0
- package/dist/types/components/ReactionPicker/index.d.ts +2 -0
- package/dist/types/components/ReactionPicker/styles.d.ts +3 -0
- package/dist/types/components/ReactionTooltip/ReactionTooltip.d.ts +22 -0
- package/dist/types/components/ReactionTooltip/index.d.ts +2 -0
- package/dist/types/components/ReactionTooltip/styles.d.ts +4 -0
- package/dist/types/components/Reactions/Reactions.d.ts +64 -0
- package/dist/types/components/Reactions/index.d.ts +2 -0
- package/dist/types/components/Reactions/styles.d.ts +2 -0
- package/dist/types/components/Selector/Selector.d.ts +34 -0
- package/dist/types/components/Selector/index.d.ts +3 -0
- package/dist/types/components/Selector/styles.d.ts +10 -0
- package/dist/types/components/ShowMore/ShowMore.d.ts +34 -0
- package/dist/types/components/ShowMore/index.d.ts +2 -0
- package/dist/types/components/ShowMore/styles.d.ts +3 -0
- package/dist/types/components/Trigger/Trigger.d.ts +23 -0
- package/dist/types/components/Trigger/index.d.ts +2 -0
- package/dist/types/components/Trigger/styles.d.ts +5 -0
- package/dist/types/components/UfoErrorBoundary/UfoErrorBoundary.d.ts +16 -0
- package/dist/types/components/UfoErrorBoundary/index.d.ts +2 -0
- package/dist/types/components/index.d.ts +4 -1
- package/dist/types/containers/ConnectedReactionPicker/ConnectedReactionPicker.d.ts +27 -0
- package/dist/types/containers/ConnectedReactionPicker/index.d.ts +2 -0
- package/dist/types/containers/ConnectedReactionsView/ConnectedReactionsView.d.ts +52 -0
- package/dist/types/containers/ConnectedReactionsView/index.d.ts +2 -0
- package/dist/types/containers/index.d.ts +2 -2
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useClickAway.d.ts +8 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/shared/constants.d.ts +13 -0
- package/dist/types/{components → shared}/i18n.d.ts +0 -0
- package/dist/types/shared/index.d.ts +3 -0
- package/dist/types/shared/utils.d.ts +11 -0
- package/dist/types/store/{ReactionsStore.d.ts → MemoryReactionsStore.d.ts} +23 -26
- package/dist/types/store/ReactionConsumer.d.ts +47 -19
- package/dist/types/store/index.d.ts +2 -2
- package/dist/types/store/utils.d.ts +3 -7
- package/dist/types/types/Actions.d.ts +20 -4
- package/dist/types/types/User.d.ts +6 -0
- package/dist/types/types/client.d.ts +38 -0
- package/dist/types/types/index.d.ts +5 -7
- package/dist/types/types/reaction.d.ts +82 -0
- package/dist/types/types/store.d.ts +63 -0
- package/docs/0-intro.tsx +118 -27
- package/docs/1-connected-reaction-picker.tsx +133 -0
- package/docs/2-connected-reactions-view.tsx +130 -0
- package/docs/3-reactions-store.tsx +71 -0
- package/docs/4-reaction-service-client.tsx +42 -0
- package/extract-react-type/ConnectedReactionPicker.ts +6 -0
- package/extract-react-type/ConnectedReactionsView.ts +6 -0
- package/extract-react-type/Reaction.ts +6 -0
- package/extract-react-type/Reactions.ts +6 -0
- package/extract-react-type/actions.ts +6 -0
- package/extract-react-type/reactionClient.ts +6 -0
- package/extract-react-type/reactionsStore.ts +6 -0
- package/package.json +24 -7
- package/dist/cjs/client/MockReactionsClient.js +0 -183
- package/dist/cjs/components/EmojiButton.js +0 -100
- package/dist/cjs/components/Reaction.js +0 -226
- package/dist/cjs/components/ReactionPicker.js +0 -289
- package/dist/cjs/components/ReactionTooltip.js +0 -82
- package/dist/cjs/components/Reactions.js +0 -194
- package/dist/cjs/components/Selector.js +0 -189
- package/dist/cjs/components/ShowMore.js +0 -119
- package/dist/cjs/components/Trigger.js +0 -58
- package/dist/cjs/components/utils.js +0 -28
- package/dist/cjs/containers/ConnectedReactionPicker.js +0 -44
- package/dist/cjs/containers/ConnectedReactionsView.js +0 -139
- package/dist/cjs/types/ReactionSource.js +0 -5
- package/dist/cjs/types/ReactionStatus.js +0 -15
- package/dist/cjs/types/ReactionSummary.js +0 -5
- package/dist/cjs/types/Reactions.js +0 -5
- package/dist/cjs/types/ReactionsState.js +0 -5
- package/dist/es2019/client/MockReactionsClient.js +0 -123
- package/dist/es2019/components/EmojiButton.js +0 -50
- package/dist/es2019/components/Reaction.js +0 -180
- package/dist/es2019/components/ReactionPicker.js +0 -239
- package/dist/es2019/components/ReactionTooltip.js +0 -66
- package/dist/es2019/components/Reactions.js +0 -150
- package/dist/es2019/components/Selector.js +0 -127
- package/dist/es2019/components/ShowMore.js +0 -71
- package/dist/es2019/components/utils.js +0 -13
- package/dist/es2019/containers/ConnectedReactionPicker.js +0 -27
- package/dist/es2019/containers/ConnectedReactionsView.js +0 -118
- package/dist/es2019/types/ReactionStatus.js +0 -8
- package/dist/es2019/types/Reactions.js +0 -1
- package/dist/es2019/types/ReactionsState.js +0 -1
- package/dist/esm/client/MockReactionsClient.js +0 -164
- package/dist/esm/client/ReactionClient.js +0 -1
- package/dist/esm/components/EmojiButton.js +0 -77
- package/dist/esm/components/Reaction.js +0 -204
- package/dist/esm/components/ReactionPicker.js +0 -266
- package/dist/esm/components/ReactionTooltip.js +0 -63
- package/dist/esm/components/Reactions.js +0 -180
- package/dist/esm/components/Selector.js +0 -160
- package/dist/esm/components/ShowMore.js +0 -95
- package/dist/esm/components/utils.js +0 -15
- package/dist/esm/containers/ConnectedReactionPicker.js +0 -29
- package/dist/esm/containers/ConnectedReactionsView.js +0 -116
- package/dist/esm/types/DetailedReaction.js +0 -1
- package/dist/esm/types/ReactionSource.js +0 -1
- package/dist/esm/types/ReactionStatus.js +0 -8
- package/dist/esm/types/ReactionSummary.js +0 -1
- package/dist/esm/types/Reactions.js +0 -1
- package/dist/esm/types/ReactionsState.js +0 -1
- package/dist/types/client/MockReactionsClient.d.ts +0 -28
- package/dist/types/client/ReactionClient.d.ts +0 -25
- package/dist/types/components/Counter.d.ts +0 -14
- package/dist/types/components/EmojiButton.d.ts +0 -12
- package/dist/types/components/FlashAnimation.d.ts +0 -13
- package/dist/types/components/Reaction.d.ts +0 -25
- package/dist/types/components/ReactionPicker.d.ts +0 -39
- package/dist/types/components/ReactionTooltip.d.ts +0 -9
- package/dist/types/components/Reactions.d.ts +0 -49
- package/dist/types/components/Selector.d.ts +0 -27
- package/dist/types/components/ShowMore.d.ts +0 -21
- package/dist/types/components/Trigger.d.ts +0 -7
- package/dist/types/components/UfoErrorBoundary.d.ts +0 -9
- package/dist/types/components/utils.d.ts +0 -4
- package/dist/types/containers/ConnectedReactionPicker.d.ts +0 -10
- package/dist/types/containers/ConnectedReactionsView.d.ts +0 -19
- package/dist/types/types/DetailedReaction.d.ts +0 -7
- package/dist/types/types/ReactionSource.d.ts +0 -1
- package/dist/types/types/ReactionStatus.d.ts +0 -6
- package/dist/types/types/ReactionSummary.d.ts +0 -10
- package/dist/types/types/Reactions.d.ts +0 -4
- package/dist/types/types/ReactionsState.d.ts +0 -17
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { jsx } from '@emotion/core';
|
|
4
|
+
import { ResourcedEmoji } from '@atlaskit/emoji';
|
|
5
|
+
import { utils } from '../../shared';
|
|
6
|
+
import * as styles from './styles';
|
|
7
|
+
export var RENDER_BUTTON_TESTID = 'button-emoji-id';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* custom button to render the custom emoji selector inside the reaction picker
|
|
11
|
+
*/
|
|
12
|
+
export var EmojiButton = function EmojiButton(_ref) {
|
|
13
|
+
var emojiId = _ref.emojiId,
|
|
14
|
+
onClick = _ref.onClick,
|
|
15
|
+
emojiProvider = _ref.emojiProvider;
|
|
16
|
+
|
|
17
|
+
var onButtonClick = function onButtonClick(event) {
|
|
18
|
+
event.preventDefault();
|
|
19
|
+
|
|
20
|
+
if (onClick && utils.isLeftClick(event)) {
|
|
21
|
+
onClick(emojiId, undefined, event);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
return jsx("button", {
|
|
26
|
+
"data-testid": RENDER_BUTTON_TESTID,
|
|
27
|
+
onClick: onButtonClick,
|
|
28
|
+
title: emojiId.shortName,
|
|
29
|
+
type: "button",
|
|
30
|
+
css: styles.emojiButtonStyle
|
|
31
|
+
}, jsx(ResourcedEmoji, {
|
|
32
|
+
emojiProvider: emojiProvider,
|
|
33
|
+
emojiId: emojiId
|
|
34
|
+
}));
|
|
35
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { EmojiButton, RENDER_BUTTON_TESTID } from './EmojiButton';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { css } from '@emotion/core';
|
|
3
|
+
export var emojiButtonStyle = css({
|
|
4
|
+
outline: 'none',
|
|
5
|
+
display: 'flex',
|
|
6
|
+
backgroundColor: 'transparent',
|
|
7
|
+
border: 0,
|
|
8
|
+
borderRadius: '5px',
|
|
9
|
+
cursor: 'pointer',
|
|
10
|
+
margin: '0',
|
|
11
|
+
padding: '10px 8px',
|
|
12
|
+
'&:hover > span': {
|
|
13
|
+
transition: 'transform cubic-bezier(0.23, 1, 0.32, 1) 200ms',
|
|
14
|
+
transform: 'scale(1.33)'
|
|
15
|
+
}
|
|
16
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { jsx } from '@emotion/core';
|
|
4
|
+
import * as styles from './styles';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Test id for wrapper FlashAnimation div
|
|
8
|
+
*/
|
|
9
|
+
export var RENDER_FLASHANIMATION_TESTID = 'flash-animation';
|
|
10
|
+
/**
|
|
11
|
+
* Flash animation background component. See Reaction component for usage.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export var FlashAnimation = function FlashAnimation(props) {
|
|
15
|
+
return jsx("div", {
|
|
16
|
+
className: props.className,
|
|
17
|
+
css: [styles.containerStyle, props.flash && styles.flashStyle],
|
|
18
|
+
"data-testid": RENDER_FLASHANIMATION_TESTID
|
|
19
|
+
}, props.children);
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { FlashAnimation, RENDER_FLASHANIMATION_TESTID } from './FlashAnimation';
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
|
-
import {
|
|
2
|
+
import { css, keyframes } from '@emotion/core';
|
|
3
3
|
import { B75, B300 } from '@atlaskit/theme/colors';
|
|
4
4
|
import { token } from '@atlaskit/tokens';
|
|
5
|
-
import React from 'react';
|
|
6
|
-
export var flashAnimationTestId = 'flash-animation';
|
|
7
|
-
var containerStyle = css({
|
|
8
|
-
width: '100%',
|
|
9
|
-
height: '100%'
|
|
10
|
-
});
|
|
11
5
|
var flashTime = 700;
|
|
12
6
|
export var flashAnimation = keyframes({
|
|
13
7
|
'0%': {
|
|
@@ -26,17 +20,10 @@ export var flashAnimation = keyframes({
|
|
|
26
20
|
borderColor: token('color.border.selected', B300)
|
|
27
21
|
}
|
|
28
22
|
});
|
|
23
|
+
export var containerStyle = css({
|
|
24
|
+
width: '100%',
|
|
25
|
+
height: '100%'
|
|
26
|
+
});
|
|
29
27
|
export var flashStyle = css({
|
|
30
28
|
animation: "".concat(flashAnimation, " ").concat(flashTime, "ms ease-in-out")
|
|
31
|
-
});
|
|
32
|
-
/**
|
|
33
|
-
* Flash animation background component. See Reaction component for usage.
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
export var FlashAnimation = function FlashAnimation(props) {
|
|
37
|
-
return jsx("div", {
|
|
38
|
-
className: props.className,
|
|
39
|
-
css: [containerStyle, props.flash && flashStyle],
|
|
40
|
-
"data-testid": flashAnimationTestId
|
|
41
|
-
}, props.children);
|
|
42
|
-
};
|
|
29
|
+
});
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
|
+
|
|
5
|
+
/** @jsx jsx */
|
|
6
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
7
|
+
import { jsx } from '@emotion/core';
|
|
8
|
+
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
9
|
+
import { ResourcedEmoji } from '@atlaskit/emoji';
|
|
10
|
+
import { Analytics } from '../../analytics';
|
|
11
|
+
import { Counter } from '../Counter';
|
|
12
|
+
import { FlashAnimation } from '../FlashAnimation';
|
|
13
|
+
import { ReactionTooltip } from '../ReactionTooltip';
|
|
14
|
+
import { utils } from '../../shared';
|
|
15
|
+
import * as styles from './styles';
|
|
16
|
+
/**
|
|
17
|
+
* Test id for Reaction item wrapper div
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export var RENDER_REACTION_TESTID = 'render_reaction_wrapper';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Render an emoji reaction button
|
|
24
|
+
*/
|
|
25
|
+
export var Reaction = function Reaction(_ref) {
|
|
26
|
+
var emojiProvider = _ref.emojiProvider,
|
|
27
|
+
onClick = _ref.onClick,
|
|
28
|
+
reaction = _ref.reaction,
|
|
29
|
+
onMouseEnter = _ref.onMouseEnter,
|
|
30
|
+
className = _ref.className,
|
|
31
|
+
_ref$flash = _ref.flash,
|
|
32
|
+
flash = _ref$flash === void 0 ? false : _ref$flash;
|
|
33
|
+
var emojiId = {
|
|
34
|
+
id: reaction.emojiId,
|
|
35
|
+
shortName: ''
|
|
36
|
+
};
|
|
37
|
+
var hoverStart = useRef();
|
|
38
|
+
|
|
39
|
+
var _useAnalyticsEvents = useAnalyticsEvents(),
|
|
40
|
+
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
|
|
41
|
+
|
|
42
|
+
var _useState = useState(),
|
|
43
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
44
|
+
emojiName = _useState2[0],
|
|
45
|
+
setEmojiName = _useState2[1]; // TODO: Extract the flow to a custom hook to retrieve emoji detailed description from an id using a custom hook. This will benefit a better optimization instead of the emojiProvider resolving everytime.
|
|
46
|
+
// Also optimize in future version to fetch in batch several emojiIds
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
useEffect(function () {
|
|
50
|
+
_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
51
|
+
var emojiResource, foundEmoji;
|
|
52
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
53
|
+
while (1) {
|
|
54
|
+
switch (_context.prev = _context.next) {
|
|
55
|
+
case 0:
|
|
56
|
+
_context.next = 2;
|
|
57
|
+
return Promise.resolve(emojiProvider);
|
|
58
|
+
|
|
59
|
+
case 2:
|
|
60
|
+
emojiResource = _context.sent;
|
|
61
|
+
_context.next = 5;
|
|
62
|
+
return emojiResource.findByEmojiId({
|
|
63
|
+
shortName: '',
|
|
64
|
+
id: reaction.emojiId
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
case 5:
|
|
68
|
+
foundEmoji = _context.sent;
|
|
69
|
+
|
|
70
|
+
if (foundEmoji) {
|
|
71
|
+
setEmojiName(foundEmoji.name);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
case 7:
|
|
75
|
+
case "end":
|
|
76
|
+
return _context.stop();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}, _callee);
|
|
80
|
+
}))();
|
|
81
|
+
}, [emojiProvider, reaction.emojiId]);
|
|
82
|
+
var handleMouseUp = useCallback(function (event) {
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
|
|
85
|
+
if (utils.isLeftClick(event)) {
|
|
86
|
+
var reacted = reaction.reacted,
|
|
87
|
+
_emojiId = reaction.emojiId;
|
|
88
|
+
Analytics.createAndFireSafe(createAnalyticsEvent, Analytics.createReactionClickedEvent, !reacted, _emojiId);
|
|
89
|
+
onClick(reaction.emojiId, event);
|
|
90
|
+
}
|
|
91
|
+
}, [createAnalyticsEvent, reaction, onClick]);
|
|
92
|
+
var handleMouseEnter = useCallback(function (event) {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
|
|
95
|
+
if (!reaction.users || !reaction.users.length) {
|
|
96
|
+
hoverStart.current = Date.now();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Analytics.createAndFireSafe(createAnalyticsEvent, Analytics.createReactionHoveredEvent, hoverStart.current);
|
|
100
|
+
|
|
101
|
+
if (onMouseEnter) {
|
|
102
|
+
onMouseEnter(reaction, event);
|
|
103
|
+
}
|
|
104
|
+
}, [createAnalyticsEvent, reaction, onMouseEnter]);
|
|
105
|
+
return jsx(ReactionTooltip, {
|
|
106
|
+
emojiName: emojiName,
|
|
107
|
+
reaction: reaction
|
|
108
|
+
}, jsx("button", {
|
|
109
|
+
className: className,
|
|
110
|
+
css: [styles.reactionStyle, reaction.reacted && styles.reactedStyle],
|
|
111
|
+
title: reaction.emojiId,
|
|
112
|
+
type: "button",
|
|
113
|
+
"data-testid": RENDER_REACTION_TESTID,
|
|
114
|
+
onMouseUp: handleMouseUp,
|
|
115
|
+
onMouseEnter: handleMouseEnter
|
|
116
|
+
}, jsx(FlashAnimation, {
|
|
117
|
+
flash: flash,
|
|
118
|
+
css: styles.flashStyle
|
|
119
|
+
}, jsx("div", {
|
|
120
|
+
css: [styles.emojiStyle, reaction.count === 0 && {
|
|
121
|
+
padding: '4px 2px 4px 10px'
|
|
122
|
+
}]
|
|
123
|
+
}, jsx(ResourcedEmoji, {
|
|
124
|
+
emojiProvider: emojiProvider,
|
|
125
|
+
emojiId: emojiId,
|
|
126
|
+
fitToHeight: 16
|
|
127
|
+
})), jsx(Counter, {
|
|
128
|
+
value: reaction.count,
|
|
129
|
+
highlight: reaction.reacted
|
|
130
|
+
}))));
|
|
131
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Reaction, RENDER_REACTION_TESTID } from './Reaction';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { css } from '@emotion/core';
|
|
3
|
+
import { B50, B75, B300, N20, N40, N400 } from '@atlaskit/theme/colors';
|
|
4
|
+
import { token } from '@atlaskit/tokens';
|
|
5
|
+
/**
|
|
6
|
+
* Default styling px height for an emoji reaction
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
var akHeight = 24;
|
|
10
|
+
/**
|
|
11
|
+
* Styling Note:
|
|
12
|
+
* Padding and line height are set within the child components
|
|
13
|
+
* of FlashAnimation b/c it otherwise throws off the flash styling
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export var emojiStyle = css({
|
|
17
|
+
transformOrigin: 'center center 0',
|
|
18
|
+
lineHeight: '12px',
|
|
19
|
+
padding: '4px 4px 4px 8px'
|
|
20
|
+
});
|
|
21
|
+
export var reactionStyle = css({
|
|
22
|
+
outline: 'none',
|
|
23
|
+
display: 'flex',
|
|
24
|
+
flexDirection: 'row',
|
|
25
|
+
alignItems: 'flex-start',
|
|
26
|
+
minWidth: '36px',
|
|
27
|
+
height: "".concat(akHeight, "px"),
|
|
28
|
+
background: 'transparent',
|
|
29
|
+
border: "1px solid ".concat(token('color.border', N40)),
|
|
30
|
+
boxSizing: 'border-box',
|
|
31
|
+
borderRadius: '20px',
|
|
32
|
+
color: "".concat(token('color.text.subtle', N400)),
|
|
33
|
+
cursor: 'pointer',
|
|
34
|
+
margin: 0,
|
|
35
|
+
padding: 0,
|
|
36
|
+
transition: '200ms ease-in-out',
|
|
37
|
+
'&:hover': {
|
|
38
|
+
background: "".concat(token('color.background.neutral.subtle.hovered', N20))
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
export var reactedStyle = css({
|
|
42
|
+
backgroundColor: token('color.background.selected', B50),
|
|
43
|
+
borderColor: token('color.border.selected', B300),
|
|
44
|
+
'&:hover': {
|
|
45
|
+
background: "".concat(token('color.background.selected.hovered', B75))
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
export var flashHeight = akHeight - 2; // height without the 1px border
|
|
49
|
+
|
|
50
|
+
export var flashStyle = css({
|
|
51
|
+
display: 'flex',
|
|
52
|
+
flexDirection: 'row',
|
|
53
|
+
borderRadius: '10px',
|
|
54
|
+
height: "".concat(flashHeight, "px")
|
|
55
|
+
});
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
|
+
|
|
5
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
6
|
+
|
|
7
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
8
|
+
|
|
9
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
|
+
|
|
11
|
+
/** @jsx jsx */
|
|
12
|
+
import React, { Fragment, useCallback, useRef, useState } from 'react';
|
|
13
|
+
import { jsx } from '@emotion/core';
|
|
14
|
+
import { EmojiPicker } from '@atlaskit/emoji/picker';
|
|
15
|
+
import { Manager, Popper, Reference } from '@atlaskit/popper';
|
|
16
|
+
import { layers } from '@atlaskit/theme/constants';
|
|
17
|
+
import { Selector } from '../Selector';
|
|
18
|
+
import { Trigger } from '../Trigger';
|
|
19
|
+
import { UFO } from '../../analytics';
|
|
20
|
+
import { useClickAway } from '../../hooks';
|
|
21
|
+
import * as styles from './styles';
|
|
22
|
+
/**
|
|
23
|
+
* Test id for wrapper ReactionPicker div
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
export var RENDER_REACTIONPICKER_TESTID = 'reactionPicker-testid';
|
|
27
|
+
var popperModifiers = [
|
|
28
|
+
/**
|
|
29
|
+
Removing this applyStyle modifier as it throws client errors ref:
|
|
30
|
+
https://popper.js.org/docs/v1/#modifiers
|
|
31
|
+
https://popper.js.org/docs/v1/#modifiers..applyStyle
|
|
32
|
+
{ name: 'applyStyle', enabled: false },
|
|
33
|
+
*/
|
|
34
|
+
{
|
|
35
|
+
name: 'hide',
|
|
36
|
+
enabled: false
|
|
37
|
+
}, {
|
|
38
|
+
name: 'offset',
|
|
39
|
+
enabled: true,
|
|
40
|
+
options: {
|
|
41
|
+
offset: [0, 0]
|
|
42
|
+
}
|
|
43
|
+
}, {
|
|
44
|
+
name: 'flip',
|
|
45
|
+
enabled: true,
|
|
46
|
+
options: {
|
|
47
|
+
flipVariations: true,
|
|
48
|
+
boundariesElement: 'scrollParent'
|
|
49
|
+
}
|
|
50
|
+
}, {
|
|
51
|
+
name: 'preventOverflow',
|
|
52
|
+
enabled: true
|
|
53
|
+
}];
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Picker component for adding reactions
|
|
57
|
+
*/
|
|
58
|
+
export var ReactionPicker = /*#__PURE__*/React.memo(function (props) {
|
|
59
|
+
var miniMode = props.miniMode,
|
|
60
|
+
className = props.className,
|
|
61
|
+
emojiProvider = props.emojiProvider,
|
|
62
|
+
onSelection = props.onSelection,
|
|
63
|
+
allowAllEmojis = props.allowAllEmojis,
|
|
64
|
+
disabled = props.disabled,
|
|
65
|
+
pickerQuickReactionEmojiIds = props.pickerQuickReactionEmojiIds,
|
|
66
|
+
onShowMore = props.onShowMore,
|
|
67
|
+
onOpen = props.onOpen,
|
|
68
|
+
onCancel = props.onCancel;
|
|
69
|
+
/**
|
|
70
|
+
* Container <div /> reference (used by custom hook to detect click outside)
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
var wrapperRef = useRef(null);
|
|
74
|
+
/**
|
|
75
|
+
* a function you can ask Popper to recompute your tooltip's position. It will directly call the Popper#update method
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
var updatePopper = useRef(function () {
|
|
79
|
+
return Promise.resolve();
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
var _useState = useState({
|
|
83
|
+
/**
|
|
84
|
+
* Show the picker floating panel
|
|
85
|
+
*/
|
|
86
|
+
isOpen: false,
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Show the full custom emoji list picker or the default list of emojis
|
|
90
|
+
*/
|
|
91
|
+
showFullPicker: !!allowAllEmojis && Array.isArray(pickerQuickReactionEmojiIds) && pickerQuickReactionEmojiIds.length === 0
|
|
92
|
+
}),
|
|
93
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
94
|
+
settings = _useState2[0],
|
|
95
|
+
setSettings = _useState2[1];
|
|
96
|
+
/**
|
|
97
|
+
* Custom hook triggers when user clicks outside the reactions picker
|
|
98
|
+
*/
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
useClickAway(wrapperRef, function () {
|
|
102
|
+
if (onCancel) {
|
|
103
|
+
onCancel();
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
close();
|
|
107
|
+
});
|
|
108
|
+
/**
|
|
109
|
+
* Event callback when the picker is closed
|
|
110
|
+
* @param _id Optional id if an emoji button was selected or undefineed if was clicked outside the picker
|
|
111
|
+
*/
|
|
112
|
+
|
|
113
|
+
var close = useCallback(function (_id) {
|
|
114
|
+
setSettings({
|
|
115
|
+
isOpen: false,
|
|
116
|
+
showFullPicker: !!allowAllEmojis && Array.isArray(pickerQuickReactionEmojiIds) && pickerQuickReactionEmojiIds.length === 0
|
|
117
|
+
}); // ufo abort reaction experience
|
|
118
|
+
|
|
119
|
+
UFO.PickerRender.abort({
|
|
120
|
+
metadata: {
|
|
121
|
+
emojiId: _id,
|
|
122
|
+
source: 'Reaction-Picker',
|
|
123
|
+
reason: 'close dialog'
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}, [allowAllEmojis, pickerQuickReactionEmojiIds]);
|
|
127
|
+
/**
|
|
128
|
+
* Event handle rwhen selecting to show the custom emoji icons picker
|
|
129
|
+
* @param e event param
|
|
130
|
+
*/
|
|
131
|
+
|
|
132
|
+
var onSelectMoreClick = useCallback( /*#__PURE__*/function () {
|
|
133
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(e) {
|
|
134
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
135
|
+
while (1) {
|
|
136
|
+
switch (_context.prev = _context.next) {
|
|
137
|
+
case 0:
|
|
138
|
+
e.preventDefault();
|
|
139
|
+
_context.next = 3;
|
|
140
|
+
return updatePopper.current();
|
|
141
|
+
|
|
142
|
+
case 3:
|
|
143
|
+
// Update popper position
|
|
144
|
+
setSettings({
|
|
145
|
+
isOpen: true,
|
|
146
|
+
showFullPicker: true
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
if (onShowMore) {
|
|
150
|
+
onShowMore();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
case 5:
|
|
154
|
+
case "end":
|
|
155
|
+
return _context.stop();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}, _callee);
|
|
159
|
+
}));
|
|
160
|
+
|
|
161
|
+
return function (_x) {
|
|
162
|
+
return _ref.apply(this, arguments);
|
|
163
|
+
};
|
|
164
|
+
}(), [onShowMore]);
|
|
165
|
+
/**
|
|
166
|
+
* Event callback when an emoji icon is selected
|
|
167
|
+
* @param item selected item
|
|
168
|
+
*/
|
|
169
|
+
|
|
170
|
+
var onEmojiSelected = useCallback(function (item) {
|
|
171
|
+
// no emoji was selected
|
|
172
|
+
if (!item.id) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
onSelection(item.id, settings.showFullPicker ? 'emojiPicker' : 'quickSelector');
|
|
177
|
+
close(item.id);
|
|
178
|
+
}, [close, onSelection, settings.showFullPicker]);
|
|
179
|
+
/**
|
|
180
|
+
* Event handler when the emoji icon to open the custom picker is selected
|
|
181
|
+
*/
|
|
182
|
+
|
|
183
|
+
var onTriggerClick = function onTriggerClick() {
|
|
184
|
+
// ufo start reactions picker open experience
|
|
185
|
+
UFO.PickerRender.start();
|
|
186
|
+
setSettings({
|
|
187
|
+
isOpen: !settings.isOpen,
|
|
188
|
+
showFullPicker: !!allowAllEmojis && Array.isArray(pickerQuickReactionEmojiIds) && pickerQuickReactionEmojiIds.length === 0
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
if (onOpen) {
|
|
192
|
+
onOpen();
|
|
193
|
+
} // ufo reactions picker opened success
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
UFO.PickerRender.success();
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
var wrapperClassName = " ".concat(settings.isOpen ? 'isOpen' : '', " ").concat(miniMode ? 'miniMode' : '', " ").concat(className);
|
|
200
|
+
return jsx("div", {
|
|
201
|
+
className: wrapperClassName,
|
|
202
|
+
css: styles.pickerStyle,
|
|
203
|
+
ref: wrapperRef,
|
|
204
|
+
"data-testid": RENDER_REACTIONPICKER_TESTID
|
|
205
|
+
}, jsx(Manager, null, jsx(Reference, null, function (_ref2) {
|
|
206
|
+
var popperRef = _ref2.ref;
|
|
207
|
+
return (// Render a button to open the <Selector /> panel
|
|
208
|
+
jsx(Trigger, {
|
|
209
|
+
ref: popperRef,
|
|
210
|
+
onClick: onTriggerClick,
|
|
211
|
+
miniMode: miniMode,
|
|
212
|
+
disabled: disabled
|
|
213
|
+
})
|
|
214
|
+
);
|
|
215
|
+
}), jsx(Popper, {
|
|
216
|
+
placement: "bottom-start",
|
|
217
|
+
modifiers: popperModifiers
|
|
218
|
+
}, function (_ref3) {
|
|
219
|
+
var ref = _ref3.ref,
|
|
220
|
+
style = _ref3.style,
|
|
221
|
+
update = _ref3.update;
|
|
222
|
+
updatePopper.current = update;
|
|
223
|
+
return jsx(Fragment, null, settings.isOpen && jsx("div", {
|
|
224
|
+
style: _objectSpread({
|
|
225
|
+
zIndex: layers.layer()
|
|
226
|
+
}, style),
|
|
227
|
+
ref: ref
|
|
228
|
+
}, jsx("div", {
|
|
229
|
+
css: styles.popupStyle
|
|
230
|
+
}, settings.showFullPicker ? jsx(EmojiPicker, {
|
|
231
|
+
emojiProvider: emojiProvider,
|
|
232
|
+
onSelection: onEmojiSelected
|
|
233
|
+
}) : jsx("div", {
|
|
234
|
+
css: styles.contentStyle
|
|
235
|
+
}, jsx(Selector, {
|
|
236
|
+
emojiProvider: emojiProvider,
|
|
237
|
+
onSelection: onEmojiSelected,
|
|
238
|
+
showMore: allowAllEmojis,
|
|
239
|
+
onMoreClick: onSelectMoreClick,
|
|
240
|
+
pickerQuickReactionEmojiIds: pickerQuickReactionEmojiIds
|
|
241
|
+
})))));
|
|
242
|
+
})));
|
|
243
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ReactionPicker, RENDER_REACTIONPICKER_TESTID } from './ReactionPicker';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { css } from '@emotion/core';
|
|
3
|
+
import { borderRadius } from '@atlaskit/theme/constants';
|
|
4
|
+
import { N0, N50A, N60A } from '@atlaskit/theme/colors';
|
|
5
|
+
import { token } from '@atlaskit/tokens';
|
|
6
|
+
export var pickerStyle = css({
|
|
7
|
+
verticalAlign: 'middle',
|
|
8
|
+
'&.miniMode': {
|
|
9
|
+
display: 'inline-block',
|
|
10
|
+
marginRight: '4px'
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
export var contentStyle = css({
|
|
14
|
+
display: 'flex'
|
|
15
|
+
});
|
|
16
|
+
export var popupStyle = css({
|
|
17
|
+
background: token('elevation.surface.overlay', N0),
|
|
18
|
+
borderRadius: "".concat(borderRadius(), "px"),
|
|
19
|
+
boxShadow: token('elevation.shadow.overlay', "0 4px 8px -2px ".concat(N50A, ", 0 0 1px ").concat(N60A)),
|
|
20
|
+
'&> div': {
|
|
21
|
+
boxShadow: undefined
|
|
22
|
+
}
|
|
23
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
|
|
3
|
+
/** @jsx jsx */
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { jsx } from '@emotion/core';
|
|
6
|
+
import Tooltip from '@atlaskit/tooltip';
|
|
7
|
+
import { FormattedMessage } from 'react-intl-next';
|
|
8
|
+
import { constants, i18n } from '../../shared';
|
|
9
|
+
import * as styles from './styles';
|
|
10
|
+
/**
|
|
11
|
+
* Test id for wrapper ReactionTooltip div
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export var RENDER_REACTIONTOOLTIP_TESTID = 'render-reactionTooltip';
|
|
15
|
+
export var ReactionTooltip = function ReactionTooltip(_ref) {
|
|
16
|
+
var emojiName = _ref.emojiName,
|
|
17
|
+
children = _ref.children,
|
|
18
|
+
_ref$maxReactions = _ref.maxReactions,
|
|
19
|
+
maxReactions = _ref$maxReactions === void 0 ? constants.TOOLTIP_USERS_LIMIT : _ref$maxReactions,
|
|
20
|
+
_ref$reaction$users = _ref.reaction.users,
|
|
21
|
+
users = _ref$reaction$users === void 0 ? [] : _ref$reaction$users;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Render list of users in the tooltip box
|
|
25
|
+
*/
|
|
26
|
+
var content = !users || users.length === 0 ? null : jsx("div", {
|
|
27
|
+
css: styles.tooltipStyle
|
|
28
|
+
}, jsx("ul", null, emojiName ? jsx("li", {
|
|
29
|
+
css: styles.emojiNameStyle
|
|
30
|
+
}, emojiName) : null, users.slice(0, maxReactions).map(function (user, index) {
|
|
31
|
+
return jsx("li", {
|
|
32
|
+
key: index
|
|
33
|
+
}, user.displayName);
|
|
34
|
+
}), users.length > maxReactions ? jsx("li", {
|
|
35
|
+
css: styles.footerStyle
|
|
36
|
+
}, jsx(FormattedMessage, _extends({}, i18n.messages.otherUsers, {
|
|
37
|
+
values: {
|
|
38
|
+
count: users.length - maxReactions
|
|
39
|
+
}
|
|
40
|
+
}))) : null));
|
|
41
|
+
return jsx(Tooltip, {
|
|
42
|
+
content: content,
|
|
43
|
+
position: "bottom",
|
|
44
|
+
"data-testid": RENDER_REACTIONTOOLTIP_TESTID
|
|
45
|
+
}, React.Children.only(children));
|
|
46
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ReactionTooltip, RENDER_REACTIONTOOLTIP_TESTID } from './ReactionTooltip';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { css } from '@emotion/core';
|
|
3
|
+
import { token } from '@atlaskit/tokens';
|
|
4
|
+
import { N90 } from '@atlaskit/theme/colors';
|
|
5
|
+
export var verticalMargin = 5;
|
|
6
|
+
export var tooltipStyle = css({
|
|
7
|
+
maxWidth: '150px',
|
|
8
|
+
textOverflow: 'ellipsis',
|
|
9
|
+
whiteSpace: 'nowrap',
|
|
10
|
+
overflow: 'hidden',
|
|
11
|
+
marginBottom: verticalMargin,
|
|
12
|
+
ul: {
|
|
13
|
+
listStyle: 'none',
|
|
14
|
+
margin: 0,
|
|
15
|
+
padding: 0,
|
|
16
|
+
textAlign: 'left'
|
|
17
|
+
},
|
|
18
|
+
li: {
|
|
19
|
+
overflow: 'hidden',
|
|
20
|
+
textOverflow: 'ellipsis',
|
|
21
|
+
marginTop: verticalMargin
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
export var emojiNameStyle = css({
|
|
25
|
+
textTransform: 'capitalize',
|
|
26
|
+
color: token('color.text.inverse', N90),
|
|
27
|
+
fontWeight: 600
|
|
28
|
+
});
|
|
29
|
+
export var footerStyle = css({
|
|
30
|
+
color: token('color.text.inverse', N90),
|
|
31
|
+
fontWeight: 300
|
|
32
|
+
});
|