@atlaskit/emoji 67.2.0 → 67.3.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 +20 -0
- package/dist/cjs/api/EmojiResource.js +6 -0
- package/dist/cjs/components/common/DeletableEmojiTooltipContent.js +34 -0
- package/dist/cjs/components/common/DeleteButton.js +2 -1
- package/dist/cjs/components/common/Emoji.js +94 -81
- package/dist/cjs/components/common/EmojiActions.js +8 -6
- package/dist/cjs/components/common/EmojiDeletePreview.js +19 -6
- package/dist/cjs/components/common/EmojiErrorMessage.js +13 -5
- package/dist/cjs/components/common/EmojiRadioButton.js +1 -0
- package/dist/cjs/components/common/EmojiUploadPicker.js +30 -29
- package/dist/cjs/components/common/EmojiUploadPreview.js +12 -5
- package/dist/cjs/components/common/FileChooser.js +7 -1
- package/dist/cjs/components/common/ResourcedEmoji.js +5 -3
- package/dist/cjs/components/common/RetryableButton.js +9 -3
- package/dist/cjs/components/common/ToolTipContentWithKeymap.js +25 -0
- package/dist/cjs/components/common/styles.js +45 -19
- package/dist/cjs/components/i18n.js +17 -2
- package/dist/cjs/components/picker/CategorySelector.js +2 -1
- package/dist/cjs/components/picker/CategoryTracker.js +5 -0
- package/dist/cjs/components/picker/EmojiPickerComponent.js +12 -6
- package/dist/cjs/components/picker/EmojiPickerList.js +49 -8
- package/dist/cjs/components/picker/EmojiPickerListSearch.js +4 -1
- package/dist/cjs/components/picker/VirtualList.js +8 -3
- package/dist/cjs/{util → hooks}/useInView.js +3 -2
- package/dist/cjs/util/browser-support.js +11 -3
- package/dist/cjs/util/constants.js +4 -1
- package/dist/cjs/util/keymaps.js +55 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/EmojiResource.js +6 -0
- package/dist/es2019/components/common/DeletableEmojiTooltipContent.js +27 -0
- package/dist/es2019/components/common/DeleteButton.js +2 -1
- package/dist/es2019/components/common/Emoji.js +90 -72
- package/dist/es2019/components/common/EmojiActions.js +9 -7
- package/dist/es2019/components/common/EmojiDeletePreview.js +17 -7
- package/dist/es2019/components/common/EmojiErrorMessage.js +10 -4
- package/dist/es2019/components/common/EmojiRadioButton.js +1 -0
- package/dist/es2019/components/common/EmojiUploadPicker.js +32 -27
- package/dist/es2019/components/common/EmojiUploadPreview.js +9 -5
- package/dist/es2019/components/common/FileChooser.js +7 -1
- package/dist/es2019/components/common/ResourcedEmoji.js +5 -3
- package/dist/es2019/components/common/RetryableButton.js +9 -3
- package/dist/es2019/components/common/ToolTipContentWithKeymap.js +15 -0
- package/dist/es2019/components/common/styles.js +39 -15
- package/dist/es2019/components/i18n.js +17 -2
- package/dist/es2019/components/picker/CategorySelector.js +2 -1
- package/dist/es2019/components/picker/CategoryTracker.js +3 -0
- package/dist/es2019/components/picker/EmojiPickerComponent.js +12 -6
- package/dist/es2019/components/picker/EmojiPickerList.js +48 -8
- package/dist/es2019/components/picker/EmojiPickerListSearch.js +3 -1
- package/dist/es2019/components/picker/VirtualList.js +7 -3
- package/dist/es2019/{util → hooks}/useInView.js +2 -2
- package/dist/es2019/util/browser-support.js +9 -1
- package/dist/es2019/util/constants.js +2 -0
- package/dist/es2019/util/keymaps.js +43 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/EmojiResource.js +6 -0
- package/dist/esm/components/common/DeletableEmojiTooltipContent.js +25 -0
- package/dist/esm/components/common/DeleteButton.js +2 -1
- package/dist/esm/components/common/Emoji.js +94 -82
- package/dist/esm/components/common/EmojiActions.js +9 -7
- package/dist/esm/components/common/EmojiDeletePreview.js +17 -7
- package/dist/esm/components/common/EmojiErrorMessage.js +11 -4
- package/dist/esm/components/common/EmojiRadioButton.js +1 -0
- package/dist/esm/components/common/EmojiUploadPicker.js +32 -31
- package/dist/esm/components/common/EmojiUploadPreview.js +9 -5
- package/dist/esm/components/common/FileChooser.js +7 -1
- package/dist/esm/components/common/ResourcedEmoji.js +5 -3
- package/dist/esm/components/common/RetryableButton.js +9 -3
- package/dist/esm/components/common/ToolTipContentWithKeymap.js +14 -0
- package/dist/esm/components/common/styles.js +38 -16
- package/dist/esm/components/i18n.js +17 -2
- package/dist/esm/components/picker/CategorySelector.js +2 -1
- package/dist/esm/components/picker/CategoryTracker.js +5 -0
- package/dist/esm/components/picker/EmojiPickerComponent.js +12 -6
- package/dist/esm/components/picker/EmojiPickerList.js +49 -8
- package/dist/esm/components/picker/EmojiPickerListSearch.js +4 -1
- package/dist/esm/components/picker/VirtualList.js +8 -3
- package/dist/esm/{util → hooks}/useInView.js +2 -2
- package/dist/esm/util/browser-support.js +9 -1
- package/dist/esm/util/constants.js +2 -0
- package/dist/esm/util/keymaps.js +43 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/components/common/DeletableEmojiTooltipContent.d.ts +6 -0
- package/dist/types/components/common/Emoji.d.ts +6 -0
- package/dist/types/components/common/EmojiErrorMessage.d.ts +1 -0
- package/dist/types/components/common/FileChooser.d.ts +1 -0
- package/dist/types/components/common/RetryableButton.d.ts +2 -1
- package/dist/types/components/common/ToolTipContentWithKeymap.d.ts +9 -0
- package/dist/types/components/common/styles.d.ts +6 -2
- package/dist/types/components/i18n.d.ts +15 -0
- package/dist/types/components/picker/CategoryTracker.d.ts +1 -0
- package/dist/types/components/picker/EmojiPickerList.d.ts +8 -1
- package/dist/types/components/picker/EmojiPickerListSearch.d.ts +1 -0
- package/dist/types/components/picker/VirtualList.d.ts +21 -1
- package/dist/types/types.d.ts +1 -1
- package/dist/types/util/browser-support.d.ts +6 -1
- package/dist/types/util/constants.d.ts +3 -1
- package/dist/types/util/keymaps.d.ts +14 -0
- package/dist/types/util/type-helpers.d.ts +1 -1
- package/package.json +2 -2
- package/report.api.md +16 -1
- /package/dist/types/{util → hooks}/useInView.d.ts +0 -0
|
@@ -19,7 +19,7 @@ var _reactFocusLock = _interopRequireDefault(require("react-focus-lock"));
|
|
|
19
19
|
var ImageUtil = _interopRequireWildcard(require("../../util/image"));
|
|
20
20
|
var _logger = _interopRequireDefault(require("../../util/logger"));
|
|
21
21
|
var _i18n = require("../i18n");
|
|
22
|
-
var _EmojiErrorMessage =
|
|
22
|
+
var _EmojiErrorMessage = _interopRequireWildcard(require("./EmojiErrorMessage"));
|
|
23
23
|
var _EmojiUploadPreview = _interopRequireDefault(require("./EmojiUploadPreview"));
|
|
24
24
|
var _FileChooser = _interopRequireDefault(require("./FileChooser"));
|
|
25
25
|
var _internalTypes = require("./internal-types");
|
|
@@ -34,6 +34,7 @@ var uploadEmojiComponentTestId = 'upload-emoji-component';
|
|
|
34
34
|
exports.uploadEmojiComponentTestId = uploadEmojiComponentTestId;
|
|
35
35
|
var cancelEmojiUploadPickerTestId = 'cancel-emoji-upload-picker';
|
|
36
36
|
exports.cancelEmojiUploadPickerTestId = cancelEmojiUploadPickerTestId;
|
|
37
|
+
var addCustomEmojiChooseFileScreenreaderId = 'fabric.emoji.choose.file.label.id';
|
|
37
38
|
var disallowedReplacementsMap = new Map([[':', ''], ['!', ''], ['@', ''], ['#', ''], ['%', ''], ['^', ''], ['&', ''], ['*', ''], ['(', ''], [')', ''], [' ', '_']]);
|
|
38
39
|
var sanitizeName = function sanitizeName(name) {
|
|
39
40
|
// prevent / replace certain characters, allow others
|
|
@@ -65,18 +66,12 @@ var ChooseEmojiFile = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
65
66
|
onUploadCancelled();
|
|
66
67
|
}
|
|
67
68
|
}, [onUploadCancelled]);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
69
|
+
(0, _react.useLayoutEffect)(function () {
|
|
70
|
+
requestAnimationFrame(function () {
|
|
71
|
+
var _inputRef$current;
|
|
72
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
73
|
+
});
|
|
74
74
|
}, []);
|
|
75
|
-
|
|
76
|
-
// make sure input has focus after update
|
|
77
|
-
(0, _react.useEffect)(function () {
|
|
78
|
-
window.requestAnimationFrame(setInputFocus);
|
|
79
|
-
}, [setInputFocus]);
|
|
80
75
|
var cancelLabel = formatMessage(_i18n.messages.cancelLabel);
|
|
81
76
|
var emojiPlaceholder = formatMessage(_i18n.messages.emojiPlaceholder);
|
|
82
77
|
var emojiNameAriaLabel = formatMessage(_i18n.messages.emojiNameAriaLabel);
|
|
@@ -86,11 +81,12 @@ var ChooseEmojiFile = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
86
81
|
"data-testid": uploadEmojiComponentTestId
|
|
87
82
|
}, (0, _react2.jsx)("div", {
|
|
88
83
|
css: _styles.emojiUploadTop
|
|
89
|
-
}, (0, _react2.jsx)("
|
|
90
|
-
css: _styles.uploadChooseFileMessage
|
|
91
|
-
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.addCustomEmojiLabel,
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
}, (0, _react2.jsx)("h2", {
|
|
85
|
+
css: [_styles.uploadChooseFileMessage, _styles.headingH5]
|
|
86
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.addCustomEmojiLabel), (0, _react2.jsx)("span", {
|
|
87
|
+
"aria-hidden": "true",
|
|
88
|
+
css: _styles.requiredSymbol
|
|
89
|
+
}, "*")), (0, _react2.jsx)("div", {
|
|
94
90
|
css: _styles.closeEmojiUploadButton
|
|
95
91
|
}, (0, _react2.jsx)(_standardButton.default, {
|
|
96
92
|
onClick: onUploadCancelled,
|
|
@@ -117,19 +113,24 @@ var ChooseEmojiFile = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
117
113
|
autoFocus: true,
|
|
118
114
|
testId: uploadEmojiNameInputTestId,
|
|
119
115
|
ref: inputRef,
|
|
120
|
-
id: "new-emoji-name-input"
|
|
116
|
+
id: "new-emoji-name-input",
|
|
117
|
+
"aria-required": true
|
|
121
118
|
})), (0, _react2.jsx)("span", {
|
|
122
119
|
css: _styles.uploadChooseFileBrowse
|
|
123
120
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.emojiChooseFileScreenReaderDescription, function (screenReaderDescription) {
|
|
124
121
|
return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)("span", {
|
|
125
122
|
hidden: true,
|
|
126
123
|
id: fileChooserButtonDescriptionId
|
|
127
|
-
}, screenReaderDescription), (0, _react2.jsx)(
|
|
124
|
+
}, screenReaderDescription), (0, _react2.jsx)("span", {
|
|
125
|
+
hidden: true,
|
|
126
|
+
id: addCustomEmojiChooseFileScreenreaderId
|
|
127
|
+
}, emojiChooseFileTitle), (0, _react2.jsx)(_FileChooser.default, {
|
|
128
128
|
label: emojiChooseFileTitle,
|
|
129
129
|
onChange: onChooseFile,
|
|
130
130
|
onClick: onClick,
|
|
131
131
|
accept: "image/png,image/jpeg,image/gif",
|
|
132
132
|
ariaDescribedBy: fileChooserButtonDescriptionId,
|
|
133
|
+
ariaLabelledBy: "".concat(_EmojiErrorMessage.emojiErrorScreenreaderTestId, " ").concat(addCustomEmojiChooseFileScreenreaderId),
|
|
133
134
|
isDisabled: disableChooser
|
|
134
135
|
}));
|
|
135
136
|
}))), (0, _react2.jsx)("div", {
|
|
@@ -140,7 +141,7 @@ var ChooseEmojiFile = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
140
141
|
})));
|
|
141
142
|
});
|
|
142
143
|
var EmojiUploadPicker = function EmojiUploadPicker(props) {
|
|
143
|
-
var _document$
|
|
144
|
+
var _document$activeEleme;
|
|
144
145
|
var errorMessage = props.errorMessage,
|
|
145
146
|
initialUploadName = props.initialUploadName,
|
|
146
147
|
onUploadEmoji = props.onUploadEmoji,
|
|
@@ -168,7 +169,7 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
|
|
|
168
169
|
previewImage = _useState10[0],
|
|
169
170
|
setPreviewImage = _useState10[1];
|
|
170
171
|
// document is undefined during ssr rendering and throws an error
|
|
171
|
-
var lastFocusedElementId = (0, _react.useRef)(typeof document !== 'undefined' ? (_document$
|
|
172
|
+
var lastFocusedElementId = (0, _react.useRef)(typeof document !== 'undefined' ? (_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.id : '');
|
|
172
173
|
(0, _react.useEffect)(function () {
|
|
173
174
|
if (errorMessage) {
|
|
174
175
|
setUploadStatus(_internalTypes.UploadStatus.Error);
|
|
@@ -231,7 +232,7 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
|
|
|
231
232
|
}, []);
|
|
232
233
|
var errorOnUpload = (0, _react.useCallback)(function (event) {
|
|
233
234
|
(0, _logger.default)('File load error: ', event);
|
|
234
|
-
setChooseEmojiErrorMessage(_i18n.messages.emojiUploadFailed);
|
|
235
|
+
setChooseEmojiErrorMessage((0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.emojiUploadFailed));
|
|
235
236
|
cancelChooseFile();
|
|
236
237
|
}, [cancelChooseFile]);
|
|
237
238
|
var onFileLoad = (0, _react.useCallback)(function (file) {
|
|
@@ -252,7 +253,7 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
|
|
|
252
253
|
case 7:
|
|
253
254
|
_context.prev = 7;
|
|
254
255
|
_context.t0 = _context["catch"](0);
|
|
255
|
-
setChooseEmojiErrorMessage(_i18n.messages.emojiInvalidImage);
|
|
256
|
+
setChooseEmojiErrorMessage((0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.emojiInvalidImage));
|
|
256
257
|
cancelChooseFile();
|
|
257
258
|
case 11:
|
|
258
259
|
case "end":
|
|
@@ -272,7 +273,7 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
|
|
|
272
273
|
var reader = new FileReader();
|
|
273
274
|
var file = files[0];
|
|
274
275
|
if (ImageUtil.hasFileExceededSize(file)) {
|
|
275
|
-
setChooseEmojiErrorMessage(_i18n.messages.emojiImageTooBig);
|
|
276
|
+
setChooseEmojiErrorMessage((0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.emojiImageTooBig));
|
|
276
277
|
cancelChooseFile();
|
|
277
278
|
return;
|
|
278
279
|
}
|
|
@@ -296,9 +297,9 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
|
|
|
296
297
|
}
|
|
297
298
|
}, 0, lastFocusedElementId.current);
|
|
298
299
|
}, [clearUploadPicker, onUploadCancelled]);
|
|
299
|
-
var
|
|
300
|
-
|
|
301
|
-
}
|
|
300
|
+
var onChooseFileClicked = function onChooseFileClicked() {
|
|
301
|
+
onFileChooserClicked && onFileChooserClicked();
|
|
302
|
+
};
|
|
302
303
|
return (0, _react2.jsx)(_reactFocusLock.default, {
|
|
303
304
|
noFocusGuards: true
|
|
304
305
|
}, name && previewImage ? (0, _react2.jsx)(_EmojiUploadPreview.default, {
|
|
@@ -311,10 +312,10 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
|
|
|
311
312
|
}) : (0, _react2.jsx)(ChooseEmojiFile, {
|
|
312
313
|
name: name,
|
|
313
314
|
onChooseFile: onChooseFile,
|
|
314
|
-
onClick:
|
|
315
|
+
onClick: onChooseFileClicked,
|
|
315
316
|
onNameChange: onNameChange,
|
|
316
317
|
onUploadCancelled: cancelUpload,
|
|
317
|
-
errorMessage:
|
|
318
|
+
errorMessage: chooseEmojiErrorMessage,
|
|
318
319
|
intl: intl
|
|
319
320
|
}));
|
|
320
321
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
@@ -18,18 +19,21 @@ var _reactIntlNext = require("react-intl-next");
|
|
|
18
19
|
var _constants = require("../../util/constants");
|
|
19
20
|
var _i18n = require("../i18n");
|
|
20
21
|
var _Emoji = _interopRequireDefault(require("./Emoji"));
|
|
21
|
-
var _EmojiErrorMessage =
|
|
22
|
+
var _EmojiErrorMessage = _interopRequireWildcard(require("./EmojiErrorMessage"));
|
|
22
23
|
var _internalTypes = require("./internal-types");
|
|
23
24
|
var _RetryableButton = _interopRequireDefault(require("./RetryableButton"));
|
|
24
25
|
var _styles = require("./styles");
|
|
25
26
|
var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
|
|
27
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
28
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
29
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
27
30
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
28
31
|
var uploadPreviewTestId = 'upload-preview';
|
|
29
32
|
exports.uploadPreviewTestId = uploadPreviewTestId;
|
|
30
33
|
var cancelUploadButtonTestId = 'cancel-upload-button';
|
|
31
34
|
exports.cancelUploadButtonTestId = cancelUploadButtonTestId;
|
|
32
|
-
var
|
|
35
|
+
var addEmojiPreviewDescriptionId = 'fabric.emoji.preview.description.id';
|
|
36
|
+
var addEmojiButtonLabelId = 'fabric.emoji.add.label.id';
|
|
33
37
|
var EmojiUploadPreview = /*#__PURE__*/function (_PureComponent) {
|
|
34
38
|
(0, _inherits2.default)(EmojiUploadPreview, _PureComponent);
|
|
35
39
|
var _super = _createSuper(EmojiUploadPreview);
|
|
@@ -87,18 +91,21 @@ var EmojiUploadPreview = /*#__PURE__*/function (_PureComponent) {
|
|
|
87
91
|
message: errorMessage,
|
|
88
92
|
tooltip: true
|
|
89
93
|
}) : null, !errorMessage && (0, _react2.jsx)(_visuallyHidden.default, {
|
|
90
|
-
id:
|
|
94
|
+
id: addEmojiPreviewDescriptionId
|
|
91
95
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _i18n.messages.emojiPreview, {
|
|
92
96
|
values: {
|
|
93
97
|
emoji: name
|
|
94
98
|
}
|
|
95
|
-
}))), (0, _react2.jsx)(
|
|
99
|
+
}))), (0, _react2.jsx)(_visuallyHidden.default, {
|
|
100
|
+
id: addEmojiButtonLabelId
|
|
101
|
+
}, errorMessage ? formatMessage(_i18n.messages.retryLabel) : formatMessage(_i18n.messages.addEmojiLabel)), (0, _react2.jsx)(_RetryableButton.default, {
|
|
96
102
|
label: formatMessage(_i18n.messages.addEmojiLabel),
|
|
97
103
|
onSubmit: onAddEmoji,
|
|
98
104
|
appearance: "primary",
|
|
99
105
|
loading: uploading,
|
|
100
106
|
error: !!errorMessage,
|
|
101
|
-
|
|
107
|
+
ariaDescribedBy: addEmojiPreviewDescriptionId,
|
|
108
|
+
ariaLabelledBy: "".concat(_EmojiErrorMessage.emojiErrorScreenreaderTestId, " ").concat(addEmojiButtonLabelId)
|
|
102
109
|
}), (0, _react2.jsx)(_customThemeButton.default, {
|
|
103
110
|
onClick: onUploadCancelled,
|
|
104
111
|
appearance: "subtle",
|
|
@@ -17,12 +17,15 @@ exports.fileUploadInputTestId = fileUploadInputTestId;
|
|
|
17
17
|
var FileChooser = function FileChooser(props) {
|
|
18
18
|
var accept = props.accept,
|
|
19
19
|
ariaDescribedBy = props.ariaDescribedBy,
|
|
20
|
+
ariaLabelledBy = props.ariaLabelledBy,
|
|
20
21
|
isDisabled = props.isDisabled,
|
|
21
22
|
label = props.label,
|
|
22
23
|
onChange = props.onChange,
|
|
23
24
|
onClick = props.onClick;
|
|
24
25
|
var filePickerRef = (0, _react.useRef)(null);
|
|
26
|
+
var fileButtonRef = (0, _react.useRef)(null);
|
|
25
27
|
var handleOnChooseFile = function handleOnChooseFile() {
|
|
28
|
+
var _fileButtonRef$curren;
|
|
26
29
|
if (!filePickerRef.current) {
|
|
27
30
|
return;
|
|
28
31
|
}
|
|
@@ -30,12 +33,15 @@ var FileChooser = function FileChooser(props) {
|
|
|
30
33
|
onClick();
|
|
31
34
|
}
|
|
32
35
|
filePickerRef.current.click();
|
|
36
|
+
(_fileButtonRef$curren = fileButtonRef.current) === null || _fileButtonRef$curren === void 0 ? void 0 : _fileButtonRef$curren.focus();
|
|
33
37
|
};
|
|
34
38
|
return /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_standardButton.default, {
|
|
35
39
|
onClick: handleOnChooseFile,
|
|
36
40
|
isDisabled: isDisabled,
|
|
37
41
|
"aria-describedby": ariaDescribedBy,
|
|
38
|
-
|
|
42
|
+
"aria-labelledby": ariaLabelledBy,
|
|
43
|
+
testId: chooseFileButtonTestId,
|
|
44
|
+
ref: fileButtonRef
|
|
39
45
|
}, label), /*#__PURE__*/_react.default.createElement("input", {
|
|
40
46
|
className: "emojiUploadFileInput",
|
|
41
47
|
ref: filePickerRef,
|
|
@@ -26,7 +26,8 @@ var ResourcedEmojiComponent = (0, _reactLoadable.default)({
|
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
28
|
var ResourcedEmoji = function ResourcedEmoji(props) {
|
|
29
|
-
var emojiId = props.emojiId
|
|
29
|
+
var emojiId = props.emojiId,
|
|
30
|
+
optimisticImageURL = props.optimisticImageURL;
|
|
30
31
|
(0, _react.useEffect)(function () {
|
|
31
32
|
if (!emojiId) {
|
|
32
33
|
return;
|
|
@@ -36,7 +37,8 @@ var ResourcedEmoji = function ResourcedEmoji(props) {
|
|
|
36
37
|
});
|
|
37
38
|
_analytics.ufoExperiences['emoji-rendered'].getInstance(emojiId.id || emojiId.shortName).addMetadata({
|
|
38
39
|
source: 'ResourcedEmoji',
|
|
39
|
-
emojiId: emojiId.id
|
|
40
|
+
emojiId: emojiId.id,
|
|
41
|
+
isOptimisticImageURL: !!optimisticImageURL
|
|
40
42
|
});
|
|
41
43
|
return function () {
|
|
42
44
|
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).abort({
|
|
@@ -46,7 +48,7 @@ var ResourcedEmoji = function ResourcedEmoji(props) {
|
|
|
46
48
|
}
|
|
47
49
|
});
|
|
48
50
|
};
|
|
49
|
-
}, [emojiId]);
|
|
51
|
+
}, [emojiId, optimisticImageURL]);
|
|
50
52
|
return /*#__PURE__*/_react.default.createElement(_UfoErrorBoundary.UfoErrorBoundary, {
|
|
51
53
|
experiences: [_analytics.ufoExperiences['emoji-rendered'].getInstance(props.emojiId.id || props.emojiId.shortName)]
|
|
52
54
|
}, /*#__PURE__*/_react.default.createElement(ResourcedEmojiComponent, props));
|
|
@@ -23,13 +23,17 @@ var LoadingSpinner = function LoadingSpinner() {
|
|
|
23
23
|
}, (0, _react.jsx)(_spinner.default, null));
|
|
24
24
|
};
|
|
25
25
|
var RetryButton = function RetryButton(props) {
|
|
26
|
-
var onSubmit = props.onSubmit
|
|
26
|
+
var onSubmit = props.onSubmit,
|
|
27
|
+
ariaLabelledBy = props.ariaLabelledBy,
|
|
28
|
+
ariaDescribedBy = props.ariaDescribedBy;
|
|
27
29
|
return (0, _react.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.retryLabel, function (retryLabel) {
|
|
28
30
|
return (0, _react.jsx)(_customThemeButton.default, {
|
|
29
31
|
css: _styles.uploadRetryButton,
|
|
30
32
|
appearance: "warning",
|
|
31
33
|
onClick: onSubmit,
|
|
32
34
|
testId: retryUploadButtonTestId,
|
|
35
|
+
"aria-describedby": ariaDescribedBy,
|
|
36
|
+
"aria-labelledby": ariaLabelledBy,
|
|
33
37
|
autoFocus: true
|
|
34
38
|
}, retryLabel);
|
|
35
39
|
});
|
|
@@ -38,13 +42,15 @@ var UploadButton = function UploadButton(props) {
|
|
|
38
42
|
var appearance = props.appearance,
|
|
39
43
|
onSubmit = props.onSubmit,
|
|
40
44
|
label = props.label,
|
|
41
|
-
|
|
45
|
+
ariaLabelledBy = props.ariaLabelledBy,
|
|
46
|
+
ariaDescribedBy = props.ariaDescribedBy;
|
|
42
47
|
return (0, _react.jsx)(_customThemeButton.default, {
|
|
43
48
|
css: _styles.uploadEmojiButton,
|
|
44
49
|
appearance: appearance,
|
|
45
50
|
onClick: onSubmit,
|
|
46
51
|
testId: uploadEmojiButtonTestId,
|
|
47
|
-
"aria-describedby":
|
|
52
|
+
"aria-describedby": ariaDescribedBy,
|
|
53
|
+
"aria-labelledby": ariaLabelledBy,
|
|
48
54
|
autoFocus: true
|
|
49
55
|
}, label);
|
|
50
56
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ToolTipContentWithKeymap = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _react2 = require("@emotion/react");
|
|
10
|
+
var _keymaps = require("../../util/keymaps");
|
|
11
|
+
var _styles = require("./styles");
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
/** @jsx jsx */
|
|
15
|
+
|
|
16
|
+
var ToolTipContentWithKeymap = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
17
|
+
var description = _ref.description,
|
|
18
|
+
shortcutOverride = _ref.shortcutOverride,
|
|
19
|
+
keymap = _ref.keymap;
|
|
20
|
+
var shortcut = shortcutOverride || keymap && (0, _keymaps.formatShortcut)(keymap);
|
|
21
|
+
return shortcut || description ? (0, _react2.jsx)(_react.Fragment, null, description, shortcut && description && "\xA0", shortcut && (0, _react2.jsx)("span", {
|
|
22
|
+
css: _styles.tooltipShortcutStyle
|
|
23
|
+
}, shortcut)) : null;
|
|
24
|
+
});
|
|
25
|
+
exports.ToolTipContentWithKeymap = ToolTipContentWithKeymap;
|
|
@@ -4,13 +4,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.uploadRetryButton = exports.uploadPreviewText = exports.uploadPreviewFooter = exports.uploadPreview = exports.uploadEmojiButton = exports.uploadChooseFileRow = exports.uploadChooseFileMessage = exports.uploadChooseFileEmojiName = exports.uploadChooseFileBrowse = exports.uploadAddRow = exports.submitDelete = exports.selectOnHoverStyles = exports.previewText = exports.previewImg = exports.previewButtonGroup = exports.preview = exports.placeholderContainerAnimated = exports.placeholderContainer = exports.placeholder = exports.hidden = exports.emojiUploadTop = exports.emojiUploadBottom = exports.emojiUpload = exports.emojiToneSelectorContainer = exports.
|
|
7
|
+
exports.uploadRetryButton = exports.uploadPreviewText = exports.uploadPreviewFooter = exports.uploadPreview = exports.uploadEmojiButton = exports.uploadChooseFileRow = exports.uploadChooseFileMessage = exports.uploadChooseFileEmojiName = exports.uploadChooseFileBrowse = exports.uploadAddRow = exports.tooltipShortcutStyle = exports.submitDelete = exports.selectOnHoverStyles = exports.requiredSymbol = exports.previewText = exports.previewImg = exports.previewButtonGroup = exports.preview = exports.placeholderContainerAnimated = exports.placeholderContainer = exports.placeholder = exports.hidden = exports.headingH5 = exports.emojiUploadTop = exports.emojiUploadBottom = exports.emojiUpload = exports.emojiToneSelectorContainer = exports.emojiSpriteContainer = exports.emojiSprite = exports.emojiShortName = exports.emojiScrollable = exports.emojiRadio = exports.emojiPreviewErrorMessage = exports.emojiPickerAddEmoji = exports.emojiNodeStyles = exports.emojiName = exports.emojiMainStyle = exports.emojiImageContainer = exports.emojiImage = exports.emojiDeleteErrorMessage = exports.emojiDeleteButton = exports.emojiChooseFileErrorMessage = exports.emojiButton = exports.emojiActionsWrapper = exports.deleteText = exports.deletePreview = exports.deleteFooter = exports.deleteButton = exports.deletableEmoji = exports.commonSelectedStyles = exports.closeEmojiUploadButton = exports.cancelButton = exports.buttonSpinner = exports.bigEmojiPreview = exports.addCustomEmojiButton = exports.addCustomEmoji = void 0;
|
|
8
8
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _react = require("@emotion/react");
|
|
11
11
|
var _constants = require("../../util/constants");
|
|
12
12
|
var _sharedStyles = require("../../util/shared-styles");
|
|
13
13
|
var _colors = require("@atlaskit/theme/colors");
|
|
14
|
+
var _constants2 = require("@atlaskit/theme/constants");
|
|
14
15
|
var _css, _css2, _templateObject, _span, _css3, _css6, _input;
|
|
15
16
|
var commonSelectedStyles = 'emoji-common-selected';
|
|
16
17
|
exports.commonSelectedStyles = commonSelectedStyles;
|
|
@@ -26,18 +27,16 @@ var emojiDeleteButton = 'emoji-common-deleteButton';
|
|
|
26
27
|
exports.emojiDeleteButton = emojiDeleteButton;
|
|
27
28
|
var emojiMainStyle = 'emoji-common-main-styles';
|
|
28
29
|
exports.emojiMainStyle = emojiMainStyle;
|
|
30
|
+
var deletableEmoji = 'emoji-common-deletable';
|
|
31
|
+
exports.deletableEmoji = deletableEmoji;
|
|
29
32
|
var deleteButton = (0, _react.css)({
|
|
30
33
|
// hide by default
|
|
31
34
|
visibility: 'hidden',
|
|
32
35
|
display: 'flex',
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
justifyContent: 'flex-end',
|
|
38
|
-
// vertically align button and prevent emoji offset
|
|
39
|
-
paddingTop: '4px',
|
|
40
|
-
marginBottom: '-4px'
|
|
36
|
+
position: 'absolute',
|
|
37
|
+
top: '-8px',
|
|
38
|
+
right: '-8px',
|
|
39
|
+
zIndex: 1
|
|
41
40
|
});
|
|
42
41
|
exports.deleteButton = deleteButton;
|
|
43
42
|
var emojiToneSelectorContainer = (0, _react.css)({
|
|
@@ -47,7 +46,7 @@ var emojiToneSelectorContainer = (0, _react.css)({
|
|
|
47
46
|
padding: '10px 10px 11px 0'
|
|
48
47
|
});
|
|
49
48
|
exports.emojiToneSelectorContainer = emojiToneSelectorContainer;
|
|
50
|
-
var
|
|
49
|
+
var emojiImageContainer = (0, _react.css)((_css = {
|
|
51
50
|
borderRadius: "var(--ds-radius-100, 3px)",
|
|
52
51
|
backgroundColor: 'transparent',
|
|
53
52
|
display: 'inline-block',
|
|
@@ -55,21 +54,26 @@ var emojiStyles = (0, _react.css)((_css = {
|
|
|
55
54
|
// Ensure along with vertical align middle, we don't increase the line height for p and some
|
|
56
55
|
// headings. Smaller headings get a slight increase in height, cannot add more negative margin
|
|
57
56
|
// as a "selected" emoji (e.g. in the editor) will not look good.
|
|
58
|
-
margin: '-1px 0'
|
|
57
|
+
margin: '-1px 0',
|
|
58
|
+
img: {
|
|
59
|
+
display: 'block'
|
|
60
|
+
}
|
|
59
61
|
}, (0, _defineProperty2.default)(_css, "&.".concat(commonSelectedStyles, ",&.").concat(selectOnHoverStyles, ":hover"), {
|
|
60
62
|
backgroundColor: _sharedStyles.akEmojiSelectedBackgroundColor
|
|
61
63
|
}), (0, _defineProperty2.default)(_css, "&.".concat(commonSelectedStyles, ",&.").concat(selectOnHoverStyles, ":hover .").concat(emojiDeleteButton), {
|
|
62
64
|
// show delete button on hover
|
|
63
65
|
visibility: 'visible'
|
|
64
|
-
}), (0, _defineProperty2.default)(_css, "
|
|
65
|
-
|
|
66
|
+
}), (0, _defineProperty2.default)(_css, "&.".concat(deletableEmoji), {
|
|
67
|
+
position: 'relative'
|
|
68
|
+
}), (0, _defineProperty2.default)(_css, "&.".concat(deletableEmoji, ":focus-within .").concat(emojiDeleteButton), {
|
|
69
|
+
visibility: 'visible'
|
|
66
70
|
}), (0, _defineProperty2.default)(_css, '&:focus', {
|
|
67
71
|
boxShadow: "0 0 0 2px ".concat("var(--ds-border-focused, ".concat(_colors.B100, ")")),
|
|
68
72
|
transitionDuration: '0s, 0.2s',
|
|
69
73
|
outline: 'none'
|
|
70
74
|
}), _css));
|
|
71
|
-
exports.
|
|
72
|
-
var
|
|
75
|
+
exports.emojiImageContainer = emojiImageContainer;
|
|
76
|
+
var emojiSpriteContainer = (0, _react.css)((_css2 = {
|
|
73
77
|
display: 'inline-block',
|
|
74
78
|
// Ensure along with vertical align middle, we don't increase the line height for h1..h6, and p
|
|
75
79
|
margin: '-1px 0'
|
|
@@ -86,7 +90,7 @@ var emojiContainer = (0, _react.css)((_css2 = {
|
|
|
86
90
|
transitionDuration: '0s, 0.2s',
|
|
87
91
|
outline: 'none'
|
|
88
92
|
}), _css2));
|
|
89
|
-
exports.
|
|
93
|
+
exports.emojiSpriteContainer = emojiSpriteContainer;
|
|
90
94
|
var placeholder = 'emoji-common-placeholder';
|
|
91
95
|
exports.placeholder = placeholder;
|
|
92
96
|
var placeholderContainer = (0, _react.css)({
|
|
@@ -214,12 +218,12 @@ var previewImg = (0, _react.css)((_css6 = {
|
|
|
214
218
|
display: 'inline-block',
|
|
215
219
|
flex: 'initial',
|
|
216
220
|
width: '32px'
|
|
217
|
-
}, (0, _defineProperty2.default)(_css6, "& .".concat(emojiSprite, ",
|
|
221
|
+
}, (0, _defineProperty2.default)(_css6, "& .".concat(emojiSprite, ", span[role=\"img\"]"), {
|
|
218
222
|
width: '32px',
|
|
219
223
|
height: '32px',
|
|
220
224
|
padding: 0,
|
|
221
225
|
maxHeight: 'inherit'
|
|
222
|
-
}), (0, _defineProperty2.default)(_css6, "&
|
|
226
|
+
}), (0, _defineProperty2.default)(_css6, "& span[role=\"img\"] > img", {
|
|
223
227
|
position: 'relative',
|
|
224
228
|
left: '50%',
|
|
225
229
|
top: '50%',
|
|
@@ -366,6 +370,19 @@ var deleteText = (0, _react.css)({
|
|
|
366
370
|
}
|
|
367
371
|
});
|
|
368
372
|
exports.deleteText = deleteText;
|
|
373
|
+
var headingH5 = (0, _react.css)({
|
|
374
|
+
fontSize: "var(--ds-font-size-075, 12px)",
|
|
375
|
+
fontWeight: "var(--ds-font-weight-semibold, 600)",
|
|
376
|
+
letterSpacing: '-0.003em',
|
|
377
|
+
lineHeight: "var(--ds-font-lineHeight-100, 16px)"
|
|
378
|
+
});
|
|
379
|
+
exports.headingH5 = headingH5;
|
|
380
|
+
var requiredSymbol = (0, _react.css)({
|
|
381
|
+
paddingLeft: "".concat((0, _constants2.gridSize)() / 4, "px"),
|
|
382
|
+
color: "var(--ds-text-danger, ".concat(_colors.R400, ")"),
|
|
383
|
+
fontFamily: (0, _constants2.fontFamily)()
|
|
384
|
+
});
|
|
385
|
+
exports.requiredSymbol = requiredSymbol;
|
|
369
386
|
var previewButtonGroup = (0, _react.css)({
|
|
370
387
|
display: 'flex'
|
|
371
388
|
});
|
|
@@ -446,4 +463,13 @@ var emojiActionsWrapper = (0, _react.css)({
|
|
|
446
463
|
justifyContent: 'flex-end',
|
|
447
464
|
alignItems: 'center'
|
|
448
465
|
});
|
|
449
|
-
exports.emojiActionsWrapper = emojiActionsWrapper;
|
|
466
|
+
exports.emojiActionsWrapper = emojiActionsWrapper;
|
|
467
|
+
var tooltipShortcutStyle = (0, _react.css)({
|
|
468
|
+
borderRadius: '3px',
|
|
469
|
+
backgroundColor: "var(--ds-background-inverse-subtle, ".concat(_colors.N400, ")"),
|
|
470
|
+
padding: '0 2px',
|
|
471
|
+
/* TODO: fix in develop: https://atlassian.slack.com/archives/CFG3PSQ9E/p1647395052443259?thread_ts=1647394572.556029&cid=CFG3PSQ9E */
|
|
472
|
+
/* stylelint-disable-next-line */
|
|
473
|
+
label: 'tooltip-shortcut'
|
|
474
|
+
});
|
|
475
|
+
exports.tooltipShortcutStyle = tooltipShortcutStyle;
|
|
@@ -6,6 +6,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.messages = void 0;
|
|
7
7
|
var _reactIntlNext = require("react-intl-next");
|
|
8
8
|
var messages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
+
deleteEmojiTooltip: {
|
|
10
|
+
id: 'fabric.emoji.delete.tooltip',
|
|
11
|
+
defaultMessage: 'Delete',
|
|
12
|
+
description: 'Tooltip content for delete emoji when focus on deletable emoji'
|
|
13
|
+
},
|
|
14
|
+
deleteEmojiTooltipForScreenreader: {
|
|
15
|
+
id: 'fabric.emoji.delete.screenreader.tooltip',
|
|
16
|
+
defaultMessage: 'To delete {shortName} emoji, press Backspace',
|
|
17
|
+
description: 'Tooltip content for delete emoji when focus on deletable emoji'
|
|
18
|
+
},
|
|
9
19
|
deleteEmojiTitle: {
|
|
10
20
|
id: 'fabric.emoji.delete.title',
|
|
11
21
|
defaultMessage: 'Remove emoji',
|
|
@@ -108,7 +118,7 @@ var messages = (0, _reactIntlNext.defineMessages)({
|
|
|
108
118
|
},
|
|
109
119
|
categoriesSelectorLabel: {
|
|
110
120
|
id: 'fabric.emoji.categories.label',
|
|
111
|
-
defaultMessage: 'Choose
|
|
121
|
+
defaultMessage: 'Choose an emoji category',
|
|
112
122
|
description: 'Aria label for Emoji categories selector at the top of emoji picker'
|
|
113
123
|
},
|
|
114
124
|
categoriesSearchResults: {
|
|
@@ -208,13 +218,18 @@ var messages = (0, _reactIntlNext.defineMessages)({
|
|
|
208
218
|
},
|
|
209
219
|
emojiPickerGrid: {
|
|
210
220
|
id: 'fabric.emoji.pickerlist.grid',
|
|
211
|
-
defaultMessage: '{showSearchResults, select, true{Search results} other{Emojis}}',
|
|
221
|
+
defaultMessage: '{showSearchResults, select, true{Search results} other{Emojis}}.',
|
|
212
222
|
description: "Aria label for emoji picker grid, showSearchResults is a boolean variable, message will be \"Entering Emojis table\", or \"Leaving Emojis\""
|
|
213
223
|
},
|
|
214
224
|
emojiButtonRoleDescription: {
|
|
215
225
|
id: 'fabric.emoji.emojipicker.emoi.roledescription',
|
|
216
226
|
defaultMessage: 'emoji button',
|
|
217
227
|
description: "Aria roledescription for emoji button, used in emoji picker."
|
|
228
|
+
},
|
|
229
|
+
error: {
|
|
230
|
+
id: 'fabric.emoji.emojipicker.error',
|
|
231
|
+
defaultMessage: 'Error!',
|
|
232
|
+
description: "Aria label for error icon, apperaed in emoji uploader screens and delete emoji screens of emoji picker"
|
|
218
233
|
}
|
|
219
234
|
});
|
|
220
235
|
exports.messages = messages;
|
|
@@ -76,6 +76,7 @@ var CategorySelector = function CategorySelector(props) {
|
|
|
76
76
|
return;
|
|
77
77
|
}
|
|
78
78
|
e.preventDefault();
|
|
79
|
+
e.stopPropagation();
|
|
79
80
|
var lastCategoryIndex = categories.length - 1;
|
|
80
81
|
switch (e.key) {
|
|
81
82
|
// navigate to the right category
|
|
@@ -137,7 +138,7 @@ var CategorySelector = function CategorySelector(props) {
|
|
|
137
138
|
"data-focus-index": index,
|
|
138
139
|
"aria-label": categoryName,
|
|
139
140
|
"aria-controls": currentFocus === index ? _EmojiPickerList.RENDER_EMOJI_PICKER_LIST_TESTID : undefined,
|
|
140
|
-
"aria-selected":
|
|
141
|
+
"aria-selected": categoryId === activeCategoryId,
|
|
141
142
|
css: categoryClasses,
|
|
142
143
|
disabled: disableCategories,
|
|
143
144
|
onClick: handleClick(categoryId, index),
|
|
@@ -37,6 +37,11 @@ var CategoryTracker = /*#__PURE__*/function () {
|
|
|
37
37
|
value: function getRow(category) {
|
|
38
38
|
return this.categoryToRow.get(category);
|
|
39
39
|
}
|
|
40
|
+
}, {
|
|
41
|
+
key: "getFirstCategory",
|
|
42
|
+
value: function getFirstCategory() {
|
|
43
|
+
return this.rowToCategory.get(0);
|
|
44
|
+
}
|
|
40
45
|
}]);
|
|
41
46
|
return CategoryTracker;
|
|
42
47
|
}();
|
|
@@ -163,8 +163,6 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
163
163
|
if (emojiToRender && !(0, _typeHelpers.containsEmojiId)(emojiToRender, selectedEmoji)) {
|
|
164
164
|
(0, _reactDom.unstable_batchedUpdates)(function () {
|
|
165
165
|
setSelectedEmoji(undefined);
|
|
166
|
-
// Only enable categories for full emoji list (non-search)
|
|
167
|
-
setActiveCategory(null);
|
|
168
166
|
});
|
|
169
167
|
}
|
|
170
168
|
(0, _reactDom.unstable_batchedUpdates)(function () {
|
|
@@ -333,12 +331,12 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
333
331
|
});
|
|
334
332
|
fireAnalytics((0, _analytics.uploadBeginButton)());
|
|
335
333
|
}, [emojiProvider, fireAnalytics]);
|
|
336
|
-
var scrollToUploadedEmoji = (0, _react.useCallback)(function () {
|
|
334
|
+
var scrollToUploadedEmoji = (0, _react.useCallback)(function (emojiDescription) {
|
|
337
335
|
if (emojiPickerList.current) {
|
|
338
336
|
// Wait a tick to ensure repaint and updated height for picker list
|
|
339
337
|
window.setTimeout(function () {
|
|
340
338
|
var _emojiPickerList$curr2;
|
|
341
|
-
(_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 ? void 0 : _emojiPickerList$curr2.scrollToRecentlyUploaded();
|
|
339
|
+
(_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 ? void 0 : _emojiPickerList$curr2.scrollToRecentlyUploaded(emojiDescription);
|
|
342
340
|
}, 0);
|
|
343
341
|
}
|
|
344
342
|
}, [emojiPickerList]);
|
|
@@ -355,7 +353,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
355
353
|
setSelectedEmoji(emojiDescription);
|
|
356
354
|
setUploading(false);
|
|
357
355
|
});
|
|
358
|
-
scrollToUploadedEmoji();
|
|
356
|
+
scrollToUploadedEmoji(emojiDescription);
|
|
359
357
|
};
|
|
360
358
|
(0, _UploadEmoji.uploadEmoji)(upload, emojiProvider, errorSetter, onSuccess, fireAnalytics, retry);
|
|
361
359
|
}, [emojiProvider, fireAnalytics, scrollToUploadedEmoji]);
|
|
@@ -407,6 +405,11 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
407
405
|
fireAnalytics((0, _analytics.openedPickerEvent)());
|
|
408
406
|
isMounting.current = false;
|
|
409
407
|
}
|
|
408
|
+
|
|
409
|
+
// stop all key propagation to other event listeners
|
|
410
|
+
var suppressKeyPress = function suppressKeyPress(e) {
|
|
411
|
+
e.stopPropagation();
|
|
412
|
+
};
|
|
410
413
|
(0, _react.useEffect)(function () {
|
|
411
414
|
// componentDidMount logic
|
|
412
415
|
if (!isMounted) {
|
|
@@ -461,7 +464,10 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
461
464
|
"data-emoji-picker-container": true,
|
|
462
465
|
role: "dialog",
|
|
463
466
|
"aria-label": formatMessage(_i18n.messages.emojiPickerTitle),
|
|
464
|
-
"aria-modal": true
|
|
467
|
+
"aria-modal": true,
|
|
468
|
+
onKeyPress: suppressKeyPress,
|
|
469
|
+
onKeyUp: suppressKeyPress,
|
|
470
|
+
onKeyDown: suppressKeyPress
|
|
465
471
|
}, (0, _react2.jsx)(_CategorySelector.default, {
|
|
466
472
|
activeCategoryId: activeCategory,
|
|
467
473
|
dynamicCategories: dynamicCategories,
|