@atlaskit/emoji 67.5.2 → 67.5.3

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 67.5.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`aa456f60b3d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/aa456f60b3d) - [ux] [ECA11Y-31] Refactored Upload own emoji component accessibility
8
+
3
9
  ## 67.5.2
4
10
 
5
11
  ### Patch Changes
@@ -5,11 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.emojiErrorScreenreaderTestId = exports.emojiErrorMessageTooltipTestId = exports.emojiErrorMessageTestId = exports.emojiErrorIconTestId = exports.default = void 0;
8
- var _react = require("react");
9
- var _react2 = require("@emotion/react");
8
+ var _react = require("@emotion/react");
10
9
  var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
11
10
  var _error = _interopRequireDefault(require("@atlaskit/icon/glyph/error"));
12
- var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
13
11
  var _reactIntlNext = require("react-intl-next");
14
12
  var _i18n = require("../i18n");
15
13
  /** @jsx jsx */
@@ -28,29 +26,25 @@ var EmojiErrorMessage = function EmojiErrorMessage(props) {
28
26
  tooltip = props.tooltip;
29
27
  var _useIntl = (0, _reactIntlNext.useIntl)(),
30
28
  formatMessage = _useIntl.formatMessage;
31
- var visualContent = tooltip ? (0, _react2.jsx)("div", {
29
+ var visualContent = tooltip ? (0, _react.jsx)("div", {
32
30
  css: messageStyles,
33
31
  "data-testid": emojiErrorMessageTestId
34
- }, (0, _react2.jsx)(_tooltip.default, {
32
+ }, (0, _react.jsx)(_tooltip.default, {
35
33
  content: message,
36
34
  position: "top",
37
35
  testId: emojiErrorMessageTooltipTestId
38
- }, (0, _react2.jsx)(_error.default, {
36
+ }, (0, _react.jsx)(_error.default, {
39
37
  label: formatMessage(_i18n.messages.error),
40
38
  size: "medium",
41
39
  testId: emojiErrorIconTestId
42
- }))) : (0, _react2.jsx)("div", {
40
+ }))) : (0, _react.jsx)("div", {
43
41
  css: messageStyles,
44
42
  "data-testid": emojiErrorMessageTestId
45
- }, (0, _react2.jsx)(_error.default, {
43
+ }, (0, _react.jsx)(_error.default, {
46
44
  label: formatMessage(_i18n.messages.error),
47
45
  size: "small"
48
46
  }), message);
49
- return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_visuallyHidden.default, {
50
- id: emojiErrorScreenreaderTestId
51
- }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.error, function (errMsg) {
52
- return (0, _react2.jsx)("span", null, errMsg, " ", message, ".");
53
- })), visualContent);
47
+ return visualContent;
54
48
  };
55
49
  var _default = EmojiErrorMessage;
56
50
  exports.default = _default;
@@ -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 = _interopRequireWildcard(require("./EmojiErrorMessage"));
22
+ var _EmojiErrorMessage = _interopRequireDefault(require("./EmojiErrorMessage"));
23
23
  var _EmojiUploadPreview = _interopRequireDefault(require("./EmojiUploadPreview"));
24
24
  var _FileChooser = _interopRequireDefault(require("./FileChooser"));
25
25
  var _internalTypes = require("./internal-types");
@@ -34,7 +34,6 @@ 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';
38
37
  var disallowedReplacementsMap = new Map([[':', ''], ['!', ''], ['@', ''], ['#', ''], ['%', ''], ['^', ''], ['&', ''], ['*', ''], ['(', ''], [')', ''], [' ', '_']]);
39
38
  var sanitizeName = function sanitizeName(name) {
40
39
  // prevent / replace certain characters, allow others
@@ -117,24 +116,18 @@ var ChooseEmojiFile = /*#__PURE__*/(0, _react.memo)(function (props) {
117
116
  "aria-required": true
118
117
  })), (0, _react2.jsx)("span", {
119
118
  css: _styles.uploadChooseFileBrowse
120
- }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.emojiChooseFileScreenReaderDescription, function (screenReaderDescription) {
121
- return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)("span", {
122
- hidden: true,
123
- id: fileChooserButtonDescriptionId
124
- }, screenReaderDescription), (0, _react2.jsx)("span", {
125
- hidden: true,
126
- id: addCustomEmojiChooseFileScreenreaderId
127
- }, emojiChooseFileTitle), (0, _react2.jsx)(_FileChooser.default, {
119
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.emojiChooseFileScreenReaderDescription, function () {
120
+ return (0, _react2.jsx)(_FileChooser.default, {
128
121
  label: emojiChooseFileTitle,
129
122
  onChange: onChooseFile,
130
123
  onClick: onClick,
131
124
  accept: "image/png,image/jpeg,image/gif",
132
125
  ariaDescribedBy: fileChooserButtonDescriptionId,
133
- ariaLabelledBy: "".concat(_EmojiErrorMessage.emojiErrorScreenreaderTestId, " ").concat(addCustomEmojiChooseFileScreenreaderId),
134
126
  isDisabled: disableChooser
135
- }));
127
+ });
136
128
  }))), (0, _react2.jsx)("div", {
137
- css: _styles.emojiUploadBottom
129
+ css: _styles.emojiUploadBottom,
130
+ id: fileChooserButtonDescriptionId
138
131
  }, !errorMessage ? (0, _react2.jsx)("p", null, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.emojiImageRequirements)) : (0, _react2.jsx)(_EmojiErrorMessage.default, {
139
132
  messageStyles: _styles.emojiChooseFileErrorMessage,
140
133
  message: errorMessage
@@ -17,7 +17,6 @@ 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,
21
20
  isDisabled = props.isDisabled,
22
21
  label = props.label,
23
22
  onChange = props.onChange,
@@ -39,7 +38,6 @@ var FileChooser = function FileChooser(props) {
39
38
  onClick: handleOnChooseFile,
40
39
  isDisabled: isDisabled,
41
40
  "aria-describedby": ariaDescribedBy,
42
- "aria-labelledby": ariaLabelledBy,
43
41
  testId: chooseFileButtonTestId,
44
42
  ref: fileButtonRef
45
43
  }, label), /*#__PURE__*/_react.default.createElement("input", {
@@ -20,7 +20,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
20
20
  actionSubjectId: actionSubjectId,
21
21
  attributes: _objectSpread({
22
22
  packageName: "@atlaskit/emoji",
23
- packageVersion: "67.5.2"
23
+ packageVersion: "67.5.3"
24
24
  }, attributes)
25
25
  };
26
26
  };
@@ -1,10 +1,9 @@
1
1
  /** @jsx jsx */
2
- import { Fragment } from 'react';
2
+
3
3
  import { jsx } from '@emotion/react';
4
4
  import Tooltip from '@atlaskit/tooltip';
5
5
  import ErrorIcon from '@atlaskit/icon/glyph/error';
6
- import VisuallyHidden from '@atlaskit/visually-hidden';
7
- import { FormattedMessage, useIntl } from 'react-intl-next';
6
+ import { useIntl } from 'react-intl-next';
8
7
  import { messages } from '../i18n';
9
8
  export const emojiErrorScreenreaderTestId = 'emoji-error-screenreader-message';
10
9
  export const emojiErrorMessageTestId = 'emoji-error-message';
@@ -37,8 +36,6 @@ const EmojiErrorMessage = props => {
37
36
  label: formatMessage(messages.error),
38
37
  size: "small"
39
38
  }), message);
40
- return jsx(Fragment, null, jsx(VisuallyHidden, {
41
- id: emojiErrorScreenreaderTestId
42
- }, jsx(FormattedMessage, messages.error, errMsg => jsx("span", null, errMsg, " ", message, "."))), visualContent);
39
+ return visualContent;
43
40
  };
44
41
  export default EmojiErrorMessage;
@@ -1,5 +1,5 @@
1
1
  /** @jsx jsx */
2
- import { Fragment, useEffect, useLayoutEffect, useState, useRef, memo, useCallback } from 'react';
2
+ import { useEffect, useLayoutEffect, useState, useRef, memo, useCallback } from 'react';
3
3
  import { jsx } from '@emotion/react';
4
4
  import { FormattedMessage, injectIntl } from 'react-intl-next';
5
5
  import TextField from '@atlaskit/textfield';
@@ -9,7 +9,7 @@ import FocusLock from 'react-focus-lock';
9
9
  import * as ImageUtil from '../../util/image';
10
10
  import debug from '../../util/logger';
11
11
  import { messages } from '../i18n';
12
- import EmojiErrorMessage, { emojiErrorScreenreaderTestId } from './EmojiErrorMessage';
12
+ import EmojiErrorMessage from './EmojiErrorMessage';
13
13
  import EmojiUploadPreview from './EmojiUploadPreview';
14
14
  import FileChooser from './FileChooser';
15
15
  import { UploadStatus } from './internal-types';
@@ -17,7 +17,6 @@ import { closeEmojiUploadButton, emojiChooseFileErrorMessage, emojiUpload, emoji
17
17
  export const uploadEmojiNameInputTestId = 'upload-emoji-name-input';
18
18
  export const uploadEmojiComponentTestId = 'upload-emoji-component';
19
19
  export const cancelEmojiUploadPickerTestId = 'cancel-emoji-upload-picker';
20
- const addCustomEmojiChooseFileScreenreaderId = 'fabric.emoji.choose.file.label.id';
21
20
  const disallowedReplacementsMap = new Map([[':', ''], ['!', ''], ['@', ''], ['#', ''], ['%', ''], ['^', ''], ['&', ''], ['*', ''], ['(', ''], [')', ''], [' ', '_']]);
22
21
  const sanitizeName = name => {
23
22
  // prevent / replace certain characters, allow others
@@ -103,22 +102,16 @@ const ChooseEmojiFile = /*#__PURE__*/memo(props => {
103
102
  "aria-required": true
104
103
  })), jsx("span", {
105
104
  css: uploadChooseFileBrowse
106
- }, jsx(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, screenReaderDescription => jsx(Fragment, null, jsx("span", {
107
- hidden: true,
108
- id: fileChooserButtonDescriptionId
109
- }, screenReaderDescription), jsx("span", {
110
- hidden: true,
111
- id: addCustomEmojiChooseFileScreenreaderId
112
- }, emojiChooseFileTitle), jsx(FileChooser, {
105
+ }, jsx(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, () => jsx(FileChooser, {
113
106
  label: emojiChooseFileTitle,
114
107
  onChange: onChooseFile,
115
108
  onClick: onClick,
116
109
  accept: "image/png,image/jpeg,image/gif",
117
110
  ariaDescribedBy: fileChooserButtonDescriptionId,
118
- ariaLabelledBy: `${emojiErrorScreenreaderTestId} ${addCustomEmojiChooseFileScreenreaderId}`,
119
111
  isDisabled: disableChooser
120
- }))))), jsx("div", {
121
- css: emojiUploadBottom
112
+ })))), jsx("div", {
113
+ css: emojiUploadBottom,
114
+ id: fileChooserButtonDescriptionId
122
115
  }, !errorMessage ? jsx("p", null, jsx(FormattedMessage, messages.emojiImageRequirements)) : jsx(EmojiErrorMessage, {
123
116
  messageStyles: emojiChooseFileErrorMessage,
124
117
  message: errorMessage
@@ -6,7 +6,6 @@ const FileChooser = props => {
6
6
  const {
7
7
  accept,
8
8
  ariaDescribedBy,
9
- ariaLabelledBy,
10
9
  isDisabled,
11
10
  label,
12
11
  onChange,
@@ -29,7 +28,6 @@ const FileChooser = props => {
29
28
  onClick: handleOnChooseFile,
30
29
  isDisabled: isDisabled,
31
30
  "aria-describedby": ariaDescribedBy,
32
- "aria-labelledby": ariaLabelledBy,
33
31
  testId: chooseFileButtonTestId,
34
32
  ref: fileButtonRef
35
33
  }, label), /*#__PURE__*/React.createElement("input", {
@@ -7,7 +7,7 @@ const createEvent = (eventType, action, actionSubject, actionSubjectId, attribut
7
7
  actionSubjectId,
8
8
  attributes: {
9
9
  packageName: "@atlaskit/emoji",
10
- packageVersion: "67.5.2",
10
+ packageVersion: "67.5.3",
11
11
  ...attributes
12
12
  }
13
13
  });
@@ -1,10 +1,9 @@
1
1
  /** @jsx jsx */
2
- import { Fragment } from 'react';
2
+
3
3
  import { jsx } from '@emotion/react';
4
4
  import Tooltip from '@atlaskit/tooltip';
5
5
  import ErrorIcon from '@atlaskit/icon/glyph/error';
6
- import VisuallyHidden from '@atlaskit/visually-hidden';
7
- import { FormattedMessage, useIntl } from 'react-intl-next';
6
+ import { useIntl } from 'react-intl-next';
8
7
  import { messages } from '../i18n';
9
8
  export var emojiErrorScreenreaderTestId = 'emoji-error-screenreader-message';
10
9
  export var emojiErrorMessageTestId = 'emoji-error-message';
@@ -34,10 +33,6 @@ var EmojiErrorMessage = function EmojiErrorMessage(props) {
34
33
  label: formatMessage(messages.error),
35
34
  size: "small"
36
35
  }), message);
37
- return jsx(Fragment, null, jsx(VisuallyHidden, {
38
- id: emojiErrorScreenreaderTestId
39
- }, jsx(FormattedMessage, messages.error, function (errMsg) {
40
- return jsx("span", null, errMsg, " ", message, ".");
41
- })), visualContent);
36
+ return visualContent;
42
37
  };
43
38
  export default EmojiErrorMessage;
@@ -2,7 +2,7 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
4
  /** @jsx jsx */
5
- import { Fragment, useEffect, useLayoutEffect, useState, useRef, memo, useCallback } from 'react';
5
+ import { useEffect, useLayoutEffect, useState, useRef, memo, useCallback } from 'react';
6
6
  import { jsx } from '@emotion/react';
7
7
  import { FormattedMessage, injectIntl } from 'react-intl-next';
8
8
  import TextField from '@atlaskit/textfield';
@@ -12,7 +12,7 @@ import FocusLock from 'react-focus-lock';
12
12
  import * as ImageUtil from '../../util/image';
13
13
  import debug from '../../util/logger';
14
14
  import { messages } from '../i18n';
15
- import EmojiErrorMessage, { emojiErrorScreenreaderTestId } from './EmojiErrorMessage';
15
+ import EmojiErrorMessage from './EmojiErrorMessage';
16
16
  import EmojiUploadPreview from './EmojiUploadPreview';
17
17
  import FileChooser from './FileChooser';
18
18
  import { UploadStatus } from './internal-types';
@@ -20,7 +20,6 @@ import { closeEmojiUploadButton, emojiChooseFileErrorMessage, emojiUpload, emoji
20
20
  export var uploadEmojiNameInputTestId = 'upload-emoji-name-input';
21
21
  export var uploadEmojiComponentTestId = 'upload-emoji-component';
22
22
  export var cancelEmojiUploadPickerTestId = 'cancel-emoji-upload-picker';
23
- var addCustomEmojiChooseFileScreenreaderId = 'fabric.emoji.choose.file.label.id';
24
23
  var disallowedReplacementsMap = new Map([[':', ''], ['!', ''], ['@', ''], ['#', ''], ['%', ''], ['^', ''], ['&', ''], ['*', ''], ['(', ''], [')', ''], [' ', '_']]);
25
24
  var sanitizeName = function sanitizeName(name) {
26
25
  // prevent / replace certain characters, allow others
@@ -103,24 +102,18 @@ var ChooseEmojiFile = /*#__PURE__*/memo(function (props) {
103
102
  "aria-required": true
104
103
  })), jsx("span", {
105
104
  css: uploadChooseFileBrowse
106
- }, jsx(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, function (screenReaderDescription) {
107
- return jsx(Fragment, null, jsx("span", {
108
- hidden: true,
109
- id: fileChooserButtonDescriptionId
110
- }, screenReaderDescription), jsx("span", {
111
- hidden: true,
112
- id: addCustomEmojiChooseFileScreenreaderId
113
- }, emojiChooseFileTitle), jsx(FileChooser, {
105
+ }, jsx(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, function () {
106
+ return jsx(FileChooser, {
114
107
  label: emojiChooseFileTitle,
115
108
  onChange: onChooseFile,
116
109
  onClick: onClick,
117
110
  accept: "image/png,image/jpeg,image/gif",
118
111
  ariaDescribedBy: fileChooserButtonDescriptionId,
119
- ariaLabelledBy: "".concat(emojiErrorScreenreaderTestId, " ").concat(addCustomEmojiChooseFileScreenreaderId),
120
112
  isDisabled: disableChooser
121
- }));
113
+ });
122
114
  }))), jsx("div", {
123
- css: emojiUploadBottom
115
+ css: emojiUploadBottom,
116
+ id: fileChooserButtonDescriptionId
124
117
  }, !errorMessage ? jsx("p", null, jsx(FormattedMessage, messages.emojiImageRequirements)) : jsx(EmojiErrorMessage, {
125
118
  messageStyles: emojiChooseFileErrorMessage,
126
119
  message: errorMessage
@@ -5,7 +5,6 @@ export var fileUploadInputTestId = 'file-upload';
5
5
  var FileChooser = function FileChooser(props) {
6
6
  var accept = props.accept,
7
7
  ariaDescribedBy = props.ariaDescribedBy,
8
- ariaLabelledBy = props.ariaLabelledBy,
9
8
  isDisabled = props.isDisabled,
10
9
  label = props.label,
11
10
  onChange = props.onChange,
@@ -27,7 +26,6 @@ var FileChooser = function FileChooser(props) {
27
26
  onClick: handleOnChooseFile,
28
27
  isDisabled: isDisabled,
29
28
  "aria-describedby": ariaDescribedBy,
30
- "aria-labelledby": ariaLabelledBy,
31
29
  testId: chooseFileButtonTestId,
32
30
  ref: fileButtonRef
33
31
  }, label), /*#__PURE__*/React.createElement("input", {
@@ -12,7 +12,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
12
12
  actionSubjectId: actionSubjectId,
13
13
  attributes: _objectSpread({
14
14
  packageName: "@atlaskit/emoji",
15
- packageVersion: "67.5.2"
15
+ packageVersion: "67.5.3"
16
16
  }, attributes)
17
17
  };
18
18
  };
@@ -1,7 +1,6 @@
1
1
  import { FC, ChangeEventHandler } from 'react';
2
2
  export interface Props {
3
3
  label: string;
4
- ariaLabelledBy?: string;
5
4
  ariaDescribedBy?: string;
6
5
  onChange?: ChangeEventHandler<any>;
7
6
  onClick?: () => void;
@@ -1,7 +1,6 @@
1
1
  import { FC, ChangeEventHandler } from 'react';
2
2
  export interface Props {
3
3
  label: string;
4
- ariaLabelledBy?: string;
5
4
  ariaDescribedBy?: string;
6
5
  onChange?: ChangeEventHandler<any>;
7
6
  onClick?: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "67.5.2",
3
+ "version": "67.5.3",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -40,7 +40,7 @@
40
40
  "@atlaskit/spinner": "^15.5.0",
41
41
  "@atlaskit/textfield": "^5.6.0",
42
42
  "@atlaskit/theme": "^12.6.0",
43
- "@atlaskit/tokens": "^1.22.0",
43
+ "@atlaskit/tokens": "^1.24.0",
44
44
  "@atlaskit/tooltip": "^17.8.0",
45
45
  "@atlaskit/ufo": "^0.2.0",
46
46
  "@atlaskit/util-service-support": "^6.2.0",