@atlaskit/emoji 71.0.0 → 71.0.1
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 +8 -0
- package/afm-cc/tsconfig.json +3 -0
- package/afm-products/tsconfig.json +3 -0
- package/dist/cjs/components/common/Emoji.js +2 -1
- package/dist/cjs/components/common/EmojiActions.compiled.css +8 -0
- package/dist/cjs/components/common/EmojiActions.js +69 -3
- package/dist/cjs/components/common/Popup.js +20 -5
- package/dist/cjs/components/common/ProductivityColorSelector.compiled.css +59 -0
- package/dist/cjs/components/common/ProductivityColorSelector.js +112 -0
- package/dist/cjs/components/common/TonePreviewButton.js +4 -2
- package/dist/cjs/components/i18n.js +10 -0
- package/dist/cjs/components/picker/EmojiPickerComponent.js +51 -36
- package/dist/cjs/components/picker/EmojiPickerList.js +36 -14
- package/dist/cjs/components/picker/VirtualList.js +4 -5
- package/dist/cjs/util/analytics/analytics.js +1 -1
- package/dist/cjs/util/hidden-emojis.js +33 -0
- package/dist/cjs/util/productivity-colors.js +51 -0
- package/dist/es2019/components/common/Emoji.js +2 -1
- package/dist/es2019/components/common/EmojiActions.compiled.css +8 -0
- package/dist/es2019/components/common/EmojiActions.js +67 -3
- package/dist/es2019/components/common/Popup.js +19 -5
- package/dist/es2019/components/common/ProductivityColorSelector.compiled.css +59 -0
- package/dist/es2019/components/common/ProductivityColorSelector.js +98 -0
- package/dist/es2019/components/common/TonePreviewButton.js +3 -2
- package/dist/es2019/components/i18n.js +10 -0
- package/dist/es2019/components/picker/EmojiPickerComponent.js +26 -14
- package/dist/es2019/components/picker/EmojiPickerList.js +32 -14
- package/dist/es2019/components/picker/VirtualList.js +4 -5
- package/dist/es2019/util/analytics/analytics.js +1 -1
- package/dist/es2019/util/hidden-emojis.js +25 -0
- package/dist/es2019/util/productivity-colors.js +37 -0
- package/dist/esm/components/common/Emoji.js +2 -1
- package/dist/esm/components/common/EmojiActions.compiled.css +8 -0
- package/dist/esm/components/common/EmojiActions.js +70 -4
- package/dist/esm/components/common/Popup.js +20 -5
- package/dist/esm/components/common/ProductivityColorSelector.compiled.css +59 -0
- package/dist/esm/components/common/ProductivityColorSelector.js +103 -0
- package/dist/esm/components/common/TonePreviewButton.js +4 -2
- package/dist/esm/components/i18n.js +10 -0
- package/dist/esm/components/picker/EmojiPickerComponent.js +51 -36
- package/dist/esm/components/picker/EmojiPickerList.js +36 -14
- package/dist/esm/components/picker/VirtualList.js +4 -5
- package/dist/esm/util/analytics/analytics.js +1 -1
- package/dist/esm/util/hidden-emojis.js +27 -0
- package/dist/esm/util/productivity-colors.js +45 -0
- package/dist/types/components/common/EmojiActions.d.ts +6 -0
- package/dist/types/components/common/Popup.d.ts +1 -0
- package/dist/types/components/common/ProductivityColorSelector.d.ts +17 -0
- package/dist/types/components/common/TonePreviewButton.d.ts +1 -0
- package/dist/types/components/i18n.d.ts +10 -0
- package/dist/types/components/picker/EmojiPickerList.d.ts +3 -0
- package/dist/types/types.d.ts +7 -0
- package/dist/types/util/hidden-emojis.d.ts +3 -0
- package/dist/types/util/productivity-colors.d.ts +8 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/emoji
|
|
2
2
|
|
|
3
|
+
## 71.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`371b9fd7ee6fb`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/371b9fd7ee6fb) -
|
|
8
|
+
Colour instead of skin tone picker when it is Atlassian emojis
|
|
9
|
+
- Updated dependencies
|
|
10
|
+
|
|
3
11
|
## 71.0.0
|
|
4
12
|
|
|
5
13
|
### Major Changes
|
package/afm-cc/tsconfig.json
CHANGED
|
@@ -341,6 +341,7 @@ var ImageEmoji = exports.ImageEmoji = function ImageEmoji(props) {
|
|
|
341
341
|
);
|
|
342
342
|
};
|
|
343
343
|
var EmojiNodeWrapper = exports.EmojiNodeWrapper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
344
|
+
var _emoji$name;
|
|
344
345
|
var emoji = props.emoji,
|
|
345
346
|
fitToHeight = props.fitToHeight,
|
|
346
347
|
selected = props.selected,
|
|
@@ -365,7 +366,7 @@ var EmojiNodeWrapper = exports.EmojiNodeWrapper = /*#__PURE__*/(0, _react.forwar
|
|
|
365
366
|
other = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
366
367
|
var intl = (0, _react.useContext)(_reactIntl.IntlContext);
|
|
367
368
|
var ariaLabel = intl && (0, _platformFeatureFlags.fg)('platform_change_emoji_button_label') ? intl.formatMessage(_i18n.messages.changeEmojiShortnameButtonLabel, {
|
|
368
|
-
shortName: emoji.shortName
|
|
369
|
+
shortName: (_emoji$name = emoji.name) !== null && _emoji$name !== void 0 ? _emoji$name : emoji.shortName
|
|
369
370
|
}) : editorEmoji ? undefined : emoji.shortName;
|
|
370
371
|
return /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({
|
|
371
372
|
role: editorEmoji ? undefined : shouldBeInteractive ? 'button' : ariaLabel ? 'img' : 'presentation',
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
|
|
2
|
+
._19itia51{border:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
|
|
3
|
+
._2rkofajl{border-radius:var(--ds-radius-small,3px)}
|
|
2
4
|
._n7zl1uh4{border-bottom:var(--ds-border-width-selected,2px) solid var(--ds-border,#0b120e24)}._16jlidpf{flex-grow:0}
|
|
3
5
|
._16jlkb7n{flex-grow:1}
|
|
6
|
+
._16qs130s{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #1e1f2126,0 0 1px #1e1f214f)}
|
|
4
7
|
._16qsjgpa{box-shadow:0 1px 1px 0 var(--ds-border,#0b120e24)}
|
|
5
8
|
._18u019bv{margin-left:10px}
|
|
6
9
|
._18u0r5cr{margin-left:var(--ds-space-negative-050,-4px)}
|
|
10
|
+
._19bv12x7{padding-left:var(--ds-space-075,6px)}
|
|
7
11
|
._19bvidpf{padding-left:0}
|
|
8
12
|
._1bahesu3{justify-content:flex-end}
|
|
9
13
|
._1e0c1txw{display:flex}
|
|
@@ -12,10 +16,14 @@
|
|
|
12
16
|
._1wpz1h6o{align-self:center}
|
|
13
17
|
._2hwx1i6y{margin-right:var(--ds-space-negative-025,-2px)}
|
|
14
18
|
._4cvr1h6o{align-items:center}
|
|
19
|
+
._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
|
|
20
|
+
._ca0q12x7{padding-top:var(--ds-space-075,6px)}
|
|
15
21
|
._ca0q1skh{padding-top:11px}
|
|
16
22
|
._i0dl1wug{flex-basis:auto}
|
|
17
23
|
._i0dlf1ug{flex-basis:0%}
|
|
24
|
+
._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
|
|
18
25
|
._n3td1crf{padding-bottom:9pt}
|
|
19
26
|
._otyr19bv{margin-bottom:10px}
|
|
20
27
|
._p12f3sup{max-width:285px}
|
|
28
|
+
._u5f312x7{padding-right:var(--ds-space-075,6px)}
|
|
21
29
|
._u5f319bv{padding-right:10px}
|
|
@@ -19,6 +19,8 @@ var _EmojiDeletePreview = _interopRequireDefault(require("./EmojiDeletePreview")
|
|
|
19
19
|
var _EmojiUploadPicker = _interopRequireDefault(require("./EmojiUploadPicker"));
|
|
20
20
|
var _TonePreviewButton = _interopRequireDefault(require("./TonePreviewButton"));
|
|
21
21
|
var _ToneSelector = _interopRequireDefault(require("./ToneSelector"));
|
|
22
|
+
var _ProductivityColorSelector = _interopRequireWildcard(require("./ProductivityColorSelector"));
|
|
23
|
+
var _Popup = _interopRequireDefault(require("./Popup"));
|
|
22
24
|
var _EmojiPickerListSearch = require("../picker/EmojiPickerListSearch");
|
|
23
25
|
var _i18n = require("../i18n");
|
|
24
26
|
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
@@ -36,6 +38,7 @@ var addCustomEmoji = null;
|
|
|
36
38
|
var addCustomEmojiButton = null;
|
|
37
39
|
var emojiActionsWrapper = null;
|
|
38
40
|
var emojiToneSelectorContainer = null;
|
|
41
|
+
var productivityColorPopup = null;
|
|
39
42
|
var previewFooter = null;
|
|
40
43
|
var previewFooterNew = null;
|
|
41
44
|
var emojiActionsTestId = exports.emojiActionsTestId = 'emoji-actions';
|
|
@@ -77,11 +80,17 @@ var AddOwnEmoji = exports.AddOwnEmoji = function AddOwnEmoji(props) {
|
|
|
77
80
|
})));
|
|
78
81
|
};
|
|
79
82
|
var TonesWrapper = function TonesWrapper(props) {
|
|
80
|
-
var
|
|
83
|
+
var activeCategoryId = props.activeCategoryId,
|
|
84
|
+
onProductivityColorSelected = props.onProductivityColorSelected,
|
|
85
|
+
productivityColorPreviewEmojis = props.productivityColorPreviewEmojis,
|
|
86
|
+
selectedProductivityColor = props.selectedProductivityColor,
|
|
87
|
+
toneEmoji = props.toneEmoji,
|
|
81
88
|
_props$selectedTone = props.selectedTone,
|
|
82
89
|
selectedTone = _props$selectedTone === void 0 ? _constants.DEFAULT_TONE : _props$selectedTone,
|
|
83
90
|
intl = props.intl,
|
|
91
|
+
onToneClose = props.onToneClose,
|
|
84
92
|
onToneOpen = props.onToneOpen,
|
|
93
|
+
onToneToggle = props.onToneToggle,
|
|
85
94
|
showToneSelector = props.showToneSelector;
|
|
86
95
|
var formatMessage = intl.formatMessage;
|
|
87
96
|
var tonePreviewButtonRef = (0, _react.useRef)(null);
|
|
@@ -108,6 +117,41 @@ var TonesWrapper = function TonesWrapper(props) {
|
|
|
108
117
|
onToneSelected(toneValue);
|
|
109
118
|
setFocusTonePreviewButton(true);
|
|
110
119
|
}, [props]);
|
|
120
|
+
var onProductivityColorSelectedHandler = (0, _react.useCallback)(function (color) {
|
|
121
|
+
onProductivityColorSelected === null || onProductivityColorSelected === void 0 || onProductivityColorSelected(color);
|
|
122
|
+
onToneClose();
|
|
123
|
+
setFocusTonePreviewButton(true);
|
|
124
|
+
}, [onProductivityColorSelected, onToneClose]);
|
|
125
|
+
var shouldShowProductivityColorSelector = !!(activeCategoryId === 'ATLASSIAN' && productivityColorPreviewEmojis && selectedProductivityColor && onProductivityColorSelected && _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
|
|
126
|
+
if (shouldShowProductivityColorSelector) {
|
|
127
|
+
var previewEmoji = (productivityColorPreviewEmojis === null || productivityColorPreviewEmojis === void 0 ? void 0 : productivityColorPreviewEmojis[selectedProductivityColor]) || Object.values(productivityColorPreviewEmojis || {})[0];
|
|
128
|
+
if (!previewEmoji) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
132
|
+
className: (0, _runtime.ax)(["_16jlkb7n _1o9zkb7n _i0dlf1ug _ca0q1skh _u5f319bv _n3td1crf _19bvidpf _1e0c1txw _1bahesu3"])
|
|
133
|
+
}, showToneSelector && tonePreviewButtonRef.current && /*#__PURE__*/React.createElement(_Popup.default, {
|
|
134
|
+
target: tonePreviewButtonRef.current,
|
|
135
|
+
relativePosition: "below",
|
|
136
|
+
horizontalAlign: "end-to-start",
|
|
137
|
+
offsetY: 4,
|
|
138
|
+
zIndex: 510
|
|
139
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
140
|
+
className: (0, _runtime.ax)(["_19itia51 _2rkofajl _bfhk1bhr _16qs130s _ca0q12x7 _u5f312x7 _n3td12x7 _19bv12x7"])
|
|
141
|
+
}, /*#__PURE__*/React.createElement(_ProductivityColorSelector.default, {
|
|
142
|
+
colorPreviewEmojis: productivityColorPreviewEmojis,
|
|
143
|
+
selectedColor: selectedProductivityColor,
|
|
144
|
+
onColorSelected: onProductivityColorSelectedHandler
|
|
145
|
+
}))), /*#__PURE__*/React.createElement(_TonePreviewButton.default, {
|
|
146
|
+
ref: tonePreviewButtonRef,
|
|
147
|
+
ariaControls: _ProductivityColorSelector.productivityColorSelectorId,
|
|
148
|
+
ariaExpanded: showToneSelector,
|
|
149
|
+
emoji: previewEmoji,
|
|
150
|
+
selectOnHover: true,
|
|
151
|
+
onSelected: onToneToggle,
|
|
152
|
+
ariaLabelText: formatMessage(_i18n.messages.emojiSelectColorButtonAriaLabelText)
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
111
155
|
if (!toneEmoji) {
|
|
112
156
|
return null;
|
|
113
157
|
}
|
|
@@ -156,12 +200,19 @@ var EmojiActions = exports.EmojiActions = function EmojiActions(props) {
|
|
|
156
200
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
157
201
|
showToneSelector = _useState4[0],
|
|
158
202
|
setShowToneSelector = _useState4[1];
|
|
203
|
+
var wasProductivityColorSelectorOpen = (0, _react.useRef)(false);
|
|
204
|
+
var shouldUseProductivityColorControl = !!(props.activeCategoryId === 'ATLASSIAN' && props.productivityColorPreviewEmojis && props.selectedProductivityColor && props.onProductivityColorSelected && _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false));
|
|
159
205
|
var onToneOpenHandler = (0, _react.useCallback)(function () {
|
|
160
206
|
return setShowToneSelector(true);
|
|
161
207
|
}, []);
|
|
162
208
|
var onToneCloseHandler = (0, _react.useCallback)(function () {
|
|
163
209
|
return setShowToneSelector(false);
|
|
164
210
|
}, []);
|
|
211
|
+
var onToneToggleHandler = (0, _react.useCallback)(function () {
|
|
212
|
+
setShowToneSelector(function (isOpen) {
|
|
213
|
+
return !isOpen;
|
|
214
|
+
});
|
|
215
|
+
}, []);
|
|
165
216
|
var onToneSelectedHandler = (0, _react.useCallback)(function (toneValue) {
|
|
166
217
|
setShowToneSelector(false);
|
|
167
218
|
if (onToneSelected) {
|
|
@@ -169,11 +220,24 @@ var EmojiActions = exports.EmojiActions = function EmojiActions(props) {
|
|
|
169
220
|
}
|
|
170
221
|
}, [onToneSelected]);
|
|
171
222
|
var onMouseLeaveHandler = (0, _react.useCallback)(function () {
|
|
223
|
+
if (shouldUseProductivityColorControl) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
172
226
|
if (showToneSelector && onToneSelectorCancelled) {
|
|
173
227
|
onToneSelectorCancelled();
|
|
174
228
|
}
|
|
175
229
|
setShowToneSelector(false);
|
|
176
|
-
}, [showToneSelector, onToneSelectorCancelled]);
|
|
230
|
+
}, [shouldUseProductivityColorControl, showToneSelector, onToneSelectorCancelled]);
|
|
231
|
+
(0, _react.useEffect)(function () {
|
|
232
|
+
if (shouldUseProductivityColorControl && showToneSelector) {
|
|
233
|
+
wasProductivityColorSelectorOpen.current = true;
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (!shouldUseProductivityColorControl && wasProductivityColorSelectorOpen.current) {
|
|
237
|
+
setShowToneSelector(false);
|
|
238
|
+
wasProductivityColorSelectorOpen.current = false;
|
|
239
|
+
}
|
|
240
|
+
}, [shouldUseProductivityColorControl, showToneSelector]);
|
|
177
241
|
if (uploading) {
|
|
178
242
|
return _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? /*#__PURE__*/React.createElement("div", {
|
|
179
243
|
className: (0, _runtime.ax)(["_16jlidpf _1o9zidpf _i0dl1wug"])
|
|
@@ -219,11 +283,12 @@ var EmojiActions = exports.EmojiActions = function EmojiActions(props) {
|
|
|
219
283
|
onChange: onChange,
|
|
220
284
|
query: query,
|
|
221
285
|
resultsCount: resultsCount,
|
|
222
|
-
isVisible: !showToneSelector
|
|
286
|
+
isVisible: !showToneSelector || shouldUseProductivityColorControl
|
|
223
287
|
}), /*#__PURE__*/React.createElement(TonesWrapper, (0, _extends2.default)({}, props, {
|
|
224
288
|
onToneOpen: onToneOpenHandler,
|
|
225
289
|
onToneClose: onToneCloseHandler,
|
|
226
290
|
onToneSelected: onToneSelectedHandler,
|
|
291
|
+
onToneToggle: onToneToggleHandler,
|
|
227
292
|
showToneSelector: showToneSelector
|
|
228
293
|
})))) : /*#__PURE__*/React.createElement("div", {
|
|
229
294
|
"data-testid": emojiActionsTestId,
|
|
@@ -241,6 +306,7 @@ var EmojiActions = exports.EmojiActions = function EmojiActions(props) {
|
|
|
241
306
|
onToneOpen: onToneOpenHandler,
|
|
242
307
|
onToneClose: onToneCloseHandler,
|
|
243
308
|
onToneSelected: onToneSelectedHandler,
|
|
309
|
+
onToneToggle: onToneToggleHandler,
|
|
244
310
|
showToneSelector: showToneSelector
|
|
245
311
|
}))), /*#__PURE__*/React.createElement(AddOwnEmoji, props));
|
|
246
312
|
};
|
|
@@ -20,6 +20,8 @@ var getTargetNode = function getTargetNode(target) {
|
|
|
20
20
|
var Popup = function Popup(props) {
|
|
21
21
|
var _props$relativePositi = props.relativePosition,
|
|
22
22
|
relativePosition = _props$relativePositi === void 0 ? 'auto' : _props$relativePositi,
|
|
23
|
+
_props$horizontalAlig = props.horizontalAlign,
|
|
24
|
+
horizontalAlign = _props$horizontalAlig === void 0 ? 'start' : _props$horizontalAlig,
|
|
23
25
|
_props$offsetX = props.offsetX,
|
|
24
26
|
offsetX = _props$offsetX === void 0 ? 0 : _props$offsetX,
|
|
25
27
|
_props$offsetY = props.offsetY,
|
|
@@ -33,17 +35,27 @@ var Popup = function Popup(props) {
|
|
|
33
35
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
34
36
|
debounced = _useState2[0],
|
|
35
37
|
setDebounced = _useState2[1];
|
|
38
|
+
var getLeftPosition = (0, _react.useCallback)(function (box) {
|
|
39
|
+
if (horizontalAlign === 'end-to-start') {
|
|
40
|
+
return box.left - 152;
|
|
41
|
+
}
|
|
42
|
+
if (horizontalAlign === 'end') {
|
|
43
|
+
var _popup$current;
|
|
44
|
+
return box.right - (((_popup$current = popup.current) === null || _popup$current === void 0 ? void 0 : _popup$current.offsetWidth) || 0) + (offsetX || 0);
|
|
45
|
+
}
|
|
46
|
+
return box.left + (offsetX || 0);
|
|
47
|
+
}, [horizontalAlign, offsetX]);
|
|
36
48
|
var applyBelowPosition = (0, _react.useCallback)(function () {
|
|
37
49
|
var targetNode = getTargetNode(target);
|
|
38
50
|
if (targetNode && popup.current) {
|
|
39
51
|
var box = targetNode.getBoundingClientRect();
|
|
40
52
|
var top = box.bottom + (offsetY || 0);
|
|
41
|
-
var left = box
|
|
53
|
+
var left = getLeftPosition(box);
|
|
42
54
|
popup.current.style.top = "".concat(top, "px");
|
|
43
55
|
popup.current.style.bottom = '';
|
|
44
56
|
popup.current.style.left = "".concat(left, "px");
|
|
45
57
|
}
|
|
46
|
-
}, [
|
|
58
|
+
}, [getLeftPosition, offsetY, target]);
|
|
47
59
|
var applyAbovePosition = (0, _react.useCallback)(function () {
|
|
48
60
|
if (typeof window === 'undefined') {
|
|
49
61
|
return;
|
|
@@ -52,12 +64,12 @@ var Popup = function Popup(props) {
|
|
|
52
64
|
if (targetNode && popup.current) {
|
|
53
65
|
var box = targetNode.getBoundingClientRect();
|
|
54
66
|
var bottom = window.innerHeight - box.top + (offsetY || 0);
|
|
55
|
-
var left = box
|
|
67
|
+
var left = getLeftPosition(box);
|
|
56
68
|
popup.current.style.top = '';
|
|
57
69
|
popup.current.style.bottom = "".concat(bottom, "px");
|
|
58
70
|
popup.current.style.left = "".concat(left, "px");
|
|
59
71
|
}
|
|
60
|
-
}, [
|
|
72
|
+
}, [getLeftPosition, offsetY, target]);
|
|
61
73
|
var applyAbsolutePosition = (0, _react.useCallback)(function () {
|
|
62
74
|
if (typeof window === 'undefined') {
|
|
63
75
|
return;
|
|
@@ -112,6 +124,9 @@ var Popup = function Popup(props) {
|
|
|
112
124
|
}
|
|
113
125
|
applyAbsolutePosition();
|
|
114
126
|
renderPopup();
|
|
127
|
+
if (horizontalAlign !== 'start') {
|
|
128
|
+
applyAbsolutePosition();
|
|
129
|
+
}
|
|
115
130
|
return function () {
|
|
116
131
|
if (typeof window === 'undefined') {
|
|
117
132
|
return;
|
|
@@ -122,7 +137,7 @@ var Popup = function Popup(props) {
|
|
|
122
137
|
document.body.removeChild(popup.current);
|
|
123
138
|
}
|
|
124
139
|
};
|
|
125
|
-
}, [applyAbsolutePosition, handleResize, renderPopup]);
|
|
140
|
+
}, [applyAbsolutePosition, handleResize, horizontalAlign, renderPopup]);
|
|
126
141
|
return /*#__PURE__*/_react.default.createElement("div", null);
|
|
127
142
|
};
|
|
128
143
|
var _default = exports.default = Popup;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
|
|
2
|
+
._1355fajl input+span{border-radius:var(--ds-radius-small,3px)}
|
|
3
|
+
._19itidpf{border:0}
|
|
4
|
+
._zulp1b66{gap:var(--ds-space-050,4px)}._1030zwfg input+span{height:2pc}
|
|
5
|
+
._12hvze3t input{margin-right:var(--ds-space-0,0)}
|
|
6
|
+
._12ultlke input{cursor:pointer}
|
|
7
|
+
._13yj1o36 input:focus+span{outline-width:medium}
|
|
8
|
+
._17muzwfg label{height:2pc}
|
|
9
|
+
._18m915vq{overflow-y:hidden}
|
|
10
|
+
._18u0ze3t{margin-left:var(--ds-space-0,0)}
|
|
11
|
+
._19bvidpf{padding-left:0}
|
|
12
|
+
._19pkze3t{margin-top:var(--ds-space-0,0)}
|
|
13
|
+
._1bah1h6o{justify-content:center}
|
|
14
|
+
._1bsbt94y{width:1px}
|
|
15
|
+
._1bsbzwfg{width:2pc}
|
|
16
|
+
._1e0c11p5{display:grid}
|
|
17
|
+
._1e0c1txw{display:flex}
|
|
18
|
+
._1e7sidpf input{opacity:0}
|
|
19
|
+
._1eq11h6o label{align-items:center}
|
|
20
|
+
._1nn0kb7n input{z-index:1}
|
|
21
|
+
._1p1fzwfg label{width:2pc}
|
|
22
|
+
._1pi91y54 input:focus+span{box-shadow:0 0 0 2px var(--ds-border-focused,#4688ec)}
|
|
23
|
+
._1reo15vq{overflow-x:hidden}
|
|
24
|
+
._1rgfze3t input{margin-left:var(--ds-space-0,0)}
|
|
25
|
+
._1rgq13zc input:focus+span{transition-duration:0s,.2s}
|
|
26
|
+
._1ul9idpf{min-width:0}
|
|
27
|
+
._1vzltlke label{cursor:pointer}
|
|
28
|
+
._1wqq1h6o label{justify-content:center}
|
|
29
|
+
._2hwxze3t{margin-right:var(--ds-space-0,0)}
|
|
30
|
+
._2x4gze3t input{margin-top:var(--ds-space-0,0)}
|
|
31
|
+
._2z051y6t{grid-template-rows:repeat(2,2pc)}
|
|
32
|
+
._4cvr1h6o{align-items:center}
|
|
33
|
+
._4t3it94y{height:1px}
|
|
34
|
+
._4t3izwfg{height:2pc}
|
|
35
|
+
._5hv9zwfg input{width:2pc}
|
|
36
|
+
._6rawzwfg input+span{width:2pc}
|
|
37
|
+
._6vsr1h6o input+span{justify-content:center}
|
|
38
|
+
._7kzvidpf input+span{padding-inline-end:0}
|
|
39
|
+
._8qdiidpf input+span{padding-block-start:0}
|
|
40
|
+
._ca0qidpf{padding-top:0}
|
|
41
|
+
._ecyuidpf input+span{padding-block-end:0}
|
|
42
|
+
._ev8ridpf input+span{padding-inline-start:0}
|
|
43
|
+
._hxs6glyw input:focus+span{outline-style:none}
|
|
44
|
+
._khufstnw input{position:absolute}
|
|
45
|
+
._kqswh2mm{position:relative}
|
|
46
|
+
._kqswstnw{position:absolute}
|
|
47
|
+
._n3tdidpf{padding-bottom:0}
|
|
48
|
+
._ngzz1txw input+span{display:flex}
|
|
49
|
+
._o5721q9c{white-space:nowrap}
|
|
50
|
+
._ogtohxbz{clip:rect(0 0 0 0)}
|
|
51
|
+
._otyrze3t{margin-bottom:var(--ds-space-0,0)}
|
|
52
|
+
._pytkzwfg input{height:2pc}
|
|
53
|
+
._smb7plhp input:hover+span{background-color:var(--ds-background-neutral-hovered,#0b120e24)}
|
|
54
|
+
._soq51h6o input+span{align-items:center}
|
|
55
|
+
._szw2w5lj input:checked+span{box-shadow:0 0 0 2px var(--ds-border-selected,#1868db)}
|
|
56
|
+
._tnsm1r31 input:focus+span{outline-color:currentColor}
|
|
57
|
+
._u5f3idpf{padding-right:0}
|
|
58
|
+
._x5bdze3t input{margin-bottom:var(--ds-space-0,0)}
|
|
59
|
+
._yv0e1bbt{grid-template-columns:repeat(5,2pc)}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/* ProductivityColorSelector.tsx generated by @compiled/babel-plugin v0.39.1 */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.productivityColorSelectorTestId = exports.productivityColorSelectorId = exports.default = exports.ProductivityColorSelector = void 0;
|
|
10
|
+
require("./ProductivityColorSelector.compiled.css");
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var React = _react;
|
|
13
|
+
var _runtime = require("@compiled/react/runtime");
|
|
14
|
+
var _reactIntl = require("react-intl");
|
|
15
|
+
var _radio = require("@atlaskit/radio");
|
|
16
|
+
var _productivityColors = require("../../util/productivity-colors");
|
|
17
|
+
var _i18n = require("../i18n");
|
|
18
|
+
var _Emoji = _interopRequireDefault(require("./Emoji"));
|
|
19
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
20
|
+
var productivityColorSelectorTestId = exports.productivityColorSelectorTestId = 'productivity-color-selector';
|
|
21
|
+
var productivityColorSelectorId = exports.productivityColorSelectorId = 'emoji-picker-productivity-color-selector';
|
|
22
|
+
var selectorGrid = null;
|
|
23
|
+
var visuallyHiddenLegend = null;
|
|
24
|
+
var colorOption = null;
|
|
25
|
+
var colorOptionEmoji = null;
|
|
26
|
+
var getColorLabel = function getColorLabel(color) {
|
|
27
|
+
return "".concat(color.charAt(0).toUpperCase()).concat(color.slice(1), " productivity emoji colour");
|
|
28
|
+
};
|
|
29
|
+
var ProductivityColorSelector = exports.ProductivityColorSelector = function ProductivityColorSelector(_ref) {
|
|
30
|
+
var colorPreviewEmojis = _ref.colorPreviewEmojis,
|
|
31
|
+
onColorSelected = _ref.onColorSelected,
|
|
32
|
+
selectedColor = _ref.selectedColor;
|
|
33
|
+
var intl = (0, _react.useContext)(_reactIntl.IntlContext);
|
|
34
|
+
var radioRefs = (0, _react.useRef)([]);
|
|
35
|
+
var hasFocusedSelectedColor = (0, _react.useRef)(false);
|
|
36
|
+
var availableColors = _productivityColors.productivityColors.filter(function (color) {
|
|
37
|
+
return colorPreviewEmojis[color];
|
|
38
|
+
});
|
|
39
|
+
var colorSelectorAriaLabel = intl ? intl.formatMessage(_i18n.messages.emojiSelectColorListAriaLabelText) : _i18n.messages.emojiSelectColorListAriaLabelText.defaultMessage;
|
|
40
|
+
if (!availableColors.length) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
var onArrowKey = function onArrowKey(currentIndex, direction) {
|
|
44
|
+
var _radioRefs$current$ne;
|
|
45
|
+
var nextIndex = (currentIndex + direction + availableColors.length) % availableColors.length;
|
|
46
|
+
(_radioRefs$current$ne = radioRefs.current[nextIndex]) === null || _radioRefs$current$ne === void 0 || _radioRefs$current$ne.focus();
|
|
47
|
+
};
|
|
48
|
+
var stopPickerDismissal = function stopPickerDismissal(event) {
|
|
49
|
+
event.stopPropagation();
|
|
50
|
+
};
|
|
51
|
+
return /*#__PURE__*/React.createElement("fieldset", {
|
|
52
|
+
id: productivityColorSelectorId,
|
|
53
|
+
"data-testid": productivityColorSelectorTestId,
|
|
54
|
+
className: (0, _runtime.ax)(["_19itidpf _zulp1b66 _ca0qidpf _u5f3idpf _n3tdidpf _19bvidpf _1e0c11p5 _yv0e1bbt _2z051y6t _19pkze3t _2hwxze3t _otyrze3t _18u0ze3t _1ul9idpf"])
|
|
55
|
+
}, /*#__PURE__*/React.createElement("legend", {
|
|
56
|
+
className: (0, _runtime.ax)(["_19itidpf _1reo15vq _18m915vq _ca0qidpf _u5f3idpf _n3tdidpf _19bvidpf _ogtohxbz _4t3it94y _kqswstnw _o5721q9c _1bsbt94y"])
|
|
57
|
+
}, colorSelectorAriaLabel), availableColors.map(function (color, index) {
|
|
58
|
+
var emoji = colorPreviewEmojis[color];
|
|
59
|
+
if (!emoji) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
var handleKeyDown = function handleKeyDown(event) {
|
|
63
|
+
if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {
|
|
64
|
+
event.preventDefault();
|
|
65
|
+
onArrowKey(index, -1);
|
|
66
|
+
}
|
|
67
|
+
if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
onArrowKey(index, 1);
|
|
70
|
+
}
|
|
71
|
+
if (event.key === 'Enter') {
|
|
72
|
+
event.preventDefault();
|
|
73
|
+
onColorSelected(color);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
77
|
+
key: color,
|
|
78
|
+
className: (0, _runtime.ax)(["_4t3izwfg _kqswh2mm _1bsbzwfg _1355fajl _soq51h6o _ngzz1txw _1030zwfg _6vsr1h6o _ecyuidpf _8qdiidpf _7kzvidpf _ev8ridpf _6rawzwfg _tnsm1r31 _hxs6glyw _13yj1o36 _1pi91y54 _1rgq13zc _1eq11h6o _1vzltlke _17muzwfg _1wqq1h6o _1p1fzwfg _12ultlke _pytkzwfg _2x4gze3t _12hvze3t _x5bdze3t _1rgfze3t _1e7sidpf _khufstnw _5hv9zwfg _1nn0kb7n _smb7plhp _szw2w5lj"])
|
|
79
|
+
}, /*#__PURE__*/React.createElement(_radio.Radio, {
|
|
80
|
+
ref: function ref(el) {
|
|
81
|
+
radioRefs.current[index] = el;
|
|
82
|
+
if (selectedColor === color) {
|
|
83
|
+
if (el && !hasFocusedSelectedColor.current) {
|
|
84
|
+
el.focus();
|
|
85
|
+
hasFocusedSelectedColor.current = true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
ariaLabel: getColorLabel(color),
|
|
90
|
+
name: "productivity-emoji-colour",
|
|
91
|
+
isChecked: selectedColor === color,
|
|
92
|
+
onChange: function onChange() {
|
|
93
|
+
return onColorSelected(color);
|
|
94
|
+
},
|
|
95
|
+
onClick: stopPickerDismissal,
|
|
96
|
+
onKeyDown: handleKeyDown,
|
|
97
|
+
onMouseDown: stopPickerDismissal,
|
|
98
|
+
testId: "productivity-color-".concat(color),
|
|
99
|
+
value: color,
|
|
100
|
+
label: /*#__PURE__*/React.createElement("span", {
|
|
101
|
+
className: (0, _runtime.ax)(["_4cvr1h6o _1e0c1txw _4t3izwfg _1bah1h6o _1bsbzwfg"])
|
|
102
|
+
}, /*#__PURE__*/React.createElement(_Emoji.default, {
|
|
103
|
+
emoji: emoji,
|
|
104
|
+
shouldBeInteractive: false,
|
|
105
|
+
"aria-hidden": true,
|
|
106
|
+
fitToHeight: 24
|
|
107
|
+
}))
|
|
108
|
+
}));
|
|
109
|
+
}));
|
|
110
|
+
};
|
|
111
|
+
var _default_1 = /*#__PURE__*/(0, _react.memo)(ProductivityColorSelector);
|
|
112
|
+
var _default = exports.default = _default_1;
|
|
@@ -22,6 +22,8 @@ var emojiButtonOutline = null;
|
|
|
22
22
|
var TonePreviewButton = exports.TonePreviewButton = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
23
23
|
var emoji = props.emoji,
|
|
24
24
|
selectOnHover = props.selectOnHover,
|
|
25
|
+
_props$ariaControls = props.ariaControls,
|
|
26
|
+
ariaControls = _props$ariaControls === void 0 ? 'emoji-picker-tone-selector' : _props$ariaControls,
|
|
25
27
|
ariaLabelText = props.ariaLabelText,
|
|
26
28
|
ariaExpanded = props.ariaExpanded,
|
|
27
29
|
onSelected = props.onSelected,
|
|
@@ -33,7 +35,7 @@ var TonePreviewButton = exports.TonePreviewButton = /*#__PURE__*/(0, _react.forw
|
|
|
33
35
|
onClick: onSelected,
|
|
34
36
|
"aria-label": ariaLabelText,
|
|
35
37
|
"aria-expanded": ariaExpanded,
|
|
36
|
-
"aria-controls":
|
|
38
|
+
"aria-controls": ariaControls
|
|
37
39
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
|
|
38
40
|
,
|
|
39
41
|
style: {
|
|
@@ -53,7 +55,7 @@ var TonePreviewButton = exports.TonePreviewButton = /*#__PURE__*/(0, _react.forw
|
|
|
53
55
|
onClick: onSelected,
|
|
54
56
|
"aria-label": ariaLabelText,
|
|
55
57
|
"aria-expanded": ariaExpanded,
|
|
56
|
-
"aria-controls":
|
|
58
|
+
"aria-controls": ariaControls
|
|
57
59
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
|
|
58
60
|
,
|
|
59
61
|
style: {
|
|
@@ -71,6 +71,16 @@ var messages = exports.messages = (0, _reactIntl.defineMessages)({
|
|
|
71
71
|
defaultMessage: 'Choose your skin tone, {selectedTone} selected',
|
|
72
72
|
description: 'Message indicating the purpose of the skin tone selection button and the selected tone'
|
|
73
73
|
},
|
|
74
|
+
emojiSelectColorButtonAriaLabelText: {
|
|
75
|
+
id: 'fabric.emoji.select.color.ariaLabel',
|
|
76
|
+
defaultMessage: 'Productivity emoji color selector',
|
|
77
|
+
description: 'Message indicating the purpose of the color selection button and the selected color'
|
|
78
|
+
},
|
|
79
|
+
emojiSelectColorListAriaLabelText: {
|
|
80
|
+
id: 'fabric.emoji.select.color.list.ariaLabel',
|
|
81
|
+
defaultMessage: 'Productivity emoji colour selector',
|
|
82
|
+
description: 'Message indicating the purpose of the productivity emoji color list selector'
|
|
83
|
+
},
|
|
74
84
|
emojiSelectSkinToneListAriaLabelText: {
|
|
75
85
|
id: 'fabric.emoji.select.skin.list.ariaLabel',
|
|
76
86
|
defaultMessage: 'Skin tone selector',
|