@atlaskit/emoji 64.2.1 → 64.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 +15 -0
- package/dist/cjs/api/media/SiteEmojiResource.js +10 -2
- package/dist/cjs/components/common/CachingEmoji.js +6 -8
- package/dist/cjs/components/common/DeleteButton.js +9 -13
- package/dist/cjs/components/common/Emoji.js +18 -36
- package/dist/cjs/components/common/EmojiActions.js +26 -31
- package/dist/cjs/components/common/EmojiButton.js +7 -7
- package/dist/cjs/components/common/EmojiDeletePreview.js +20 -26
- package/dist/cjs/components/common/EmojiErrorMessage.js +10 -14
- package/dist/cjs/components/common/EmojiPlaceholder.js +5 -12
- package/dist/cjs/components/common/EmojiPreview.js +20 -40
- package/dist/cjs/components/common/EmojiPreviewComponent.js +34 -0
- package/dist/cjs/components/common/EmojiUploadPicker.js +26 -24
- package/dist/cjs/components/common/EmojiUploadPreview.js +22 -28
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +17 -12
- package/dist/cjs/components/common/RetryableButton.js +12 -18
- package/dist/cjs/components/common/Scrollable.js +5 -10
- package/dist/cjs/components/common/styles.js +210 -266
- package/dist/cjs/components/picker/CategorySelector.js +13 -12
- package/dist/cjs/components/picker/EmojiPicker.js +6 -6
- package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +8 -14
- package/dist/cjs/components/picker/EmojiPickerComponent.js +24 -28
- package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +8 -12
- package/dist/cjs/components/picker/EmojiPickerFooter.js +8 -14
- package/dist/cjs/components/picker/EmojiPickerList.js +28 -9
- package/dist/cjs/components/picker/EmojiPickerListSearch.js +10 -8
- package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +9 -15
- package/dist/cjs/components/picker/styles.js +113 -161
- package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +23 -24
- package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +10 -13
- package/dist/cjs/components/typeahead/EmojiTypeAheadList.js +17 -22
- package/dist/cjs/components/typeahead/styles.js +17 -19
- package/dist/cjs/components/uploader/EmojiUploadComponent.js +10 -16
- package/dist/cjs/components/uploader/styles.js +4 -4
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/media/SiteEmojiResource.js +10 -2
- package/dist/es2019/components/common/CachingEmoji.js +5 -7
- package/dist/es2019/components/common/DeleteButton.js +8 -6
- package/dist/es2019/components/common/Emoji.js +19 -34
- package/dist/es2019/components/common/EmojiActions.js +26 -24
- package/dist/es2019/components/common/EmojiButton.js +6 -6
- package/dist/es2019/components/common/EmojiDeletePreview.js +20 -20
- package/dist/es2019/components/common/EmojiErrorMessage.js +9 -8
- package/dist/es2019/components/common/EmojiPlaceholder.js +5 -8
- package/dist/es2019/components/common/EmojiPreview.js +19 -35
- package/dist/es2019/components/common/EmojiPreviewComponent.js +21 -0
- package/dist/es2019/components/common/EmojiUploadPicker.js +25 -22
- package/dist/es2019/components/common/EmojiUploadPreview.js +22 -22
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +16 -11
- package/dist/es2019/components/common/RetryableButton.js +10 -11
- package/dist/es2019/components/common/Scrollable.js +6 -10
- package/dist/es2019/components/common/styles.js +195 -262
- package/dist/es2019/components/picker/CategorySelector.js +15 -12
- package/dist/es2019/components/picker/EmojiPicker.js +7 -5
- package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +8 -8
- package/dist/es2019/components/picker/EmojiPickerComponent.js +24 -19
- package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +8 -7
- package/dist/es2019/components/picker/EmojiPickerFooter.js +8 -8
- package/dist/es2019/components/picker/EmojiPickerList.js +28 -8
- package/dist/es2019/components/picker/EmojiPickerListSearch.js +11 -8
- package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +10 -8
- package/dist/es2019/components/picker/styles.js +112 -160
- package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +22 -16
- package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +12 -13
- package/dist/es2019/components/typeahead/EmojiTypeAheadList.js +18 -19
- package/dist/es2019/components/typeahead/styles.js +14 -15
- package/dist/es2019/components/uploader/EmojiUploadComponent.js +10 -9
- package/dist/es2019/components/uploader/styles.js +4 -4
- package/dist/es2019/index.js +2 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/media/SiteEmojiResource.js +10 -2
- package/dist/esm/components/common/CachingEmoji.js +5 -7
- package/dist/esm/components/common/DeleteButton.js +8 -6
- package/dist/esm/components/common/Emoji.js +18 -27
- package/dist/esm/components/common/EmojiActions.js +26 -25
- package/dist/esm/components/common/EmojiButton.js +6 -6
- package/dist/esm/components/common/EmojiDeletePreview.js +19 -20
- package/dist/esm/components/common/EmojiErrorMessage.js +9 -8
- package/dist/esm/components/common/EmojiPlaceholder.js +5 -8
- package/dist/esm/components/common/EmojiPreview.js +19 -33
- package/dist/esm/components/common/EmojiPreviewComponent.js +20 -0
- package/dist/esm/components/common/EmojiUploadPicker.js +27 -25
- package/dist/esm/components/common/EmojiUploadPreview.js +21 -22
- package/dist/esm/components/common/ResourcedEmojiComponent.js +16 -10
- package/dist/esm/components/common/RetryableButton.js +11 -12
- package/dist/esm/components/common/Scrollable.js +6 -10
- package/dist/esm/components/common/styles.js +192 -242
- package/dist/esm/components/picker/CategorySelector.js +14 -12
- package/dist/esm/components/picker/EmojiPicker.js +6 -5
- package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +8 -8
- package/dist/esm/components/picker/EmojiPickerComponent.js +24 -19
- package/dist/esm/components/picker/EmojiPickerEmojiRow.js +8 -7
- package/dist/esm/components/picker/EmojiPickerFooter.js +8 -8
- package/dist/esm/components/picker/EmojiPickerList.js +29 -8
- package/dist/esm/components/picker/EmojiPickerListSearch.js +10 -8
- package/dist/esm/components/picker/EmojiPickerVirtualItems.js +9 -8
- package/dist/esm/components/picker/styles.js +108 -149
- package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +22 -16
- package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +11 -13
- package/dist/esm/components/typeahead/EmojiTypeAheadList.js +17 -19
- package/dist/esm/components/typeahead/styles.js +14 -14
- package/dist/esm/components/uploader/EmojiUploadComponent.js +9 -9
- package/dist/esm/components/uploader/styles.js +4 -4
- package/dist/esm/index.js +2 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/components/common/CachingEmoji.d.ts +8 -6
- package/dist/types/components/common/EmojiActions.d.ts +2 -3
- package/dist/types/components/common/EmojiDeletePreview.d.ts +3 -3
- package/dist/types/components/common/EmojiErrorMessage.d.ts +2 -1
- package/dist/types/components/common/EmojiPreview.d.ts +2 -3
- package/dist/types/components/common/EmojiPreviewComponent.d.ts +7 -0
- package/dist/types/components/common/EmojiUploadPreview.d.ts +3 -3
- package/dist/types/components/common/ResourcedEmojiComponent.d.ts +6 -0
- package/dist/types/components/common/RetryableButton.d.ts +0 -2
- package/dist/types/components/common/styles.d.ts +44 -44
- package/dist/types/components/picker/EmojiPicker.d.ts +2 -3
- package/dist/types/components/picker/EmojiPickerComponent.d.ts +6 -0
- package/dist/types/components/picker/EmojiPickerList.d.ts +10 -0
- package/dist/types/components/picker/styles.d.ts +17 -18
- package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +6 -0
- package/dist/types/components/typeahead/styles.d.ts +8 -7
- package/dist/types/components/uploader/styles.d.ts +2 -2
- package/dist/types/index.d.ts +1 -1
- package/package.json +8 -9
- package/dist/cjs/components/picker/EmojiPickerPreview.js +0 -87
- package/dist/cjs/context/EmojiContext.js +0 -11
- package/dist/cjs/context/EmojiContextProvider.js +0 -22
- package/dist/es2019/components/picker/EmojiPickerPreview.js +0 -43
- package/dist/es2019/context/EmojiContext.js +0 -2
- package/dist/es2019/context/EmojiContextProvider.js +0 -10
- package/dist/esm/components/picker/EmojiPickerPreview.js +0 -67
- package/dist/esm/context/EmojiContext.js +0 -2
- package/dist/esm/context/EmojiContextProvider.js +0 -9
- package/dist/types/components/picker/EmojiPickerPreview.d.ts +0 -9
- package/dist/types/context/EmojiContext.d.ts +0 -4
- package/dist/types/context/EmojiContextProvider.d.ts +0 -7
|
@@ -1,24 +1,25 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { jsx } from '@emotion/core';
|
|
1
3
|
import ErrorIcon from '@atlaskit/icon/glyph/error';
|
|
2
|
-
import React from 'react';
|
|
3
4
|
import { PureComponent } from 'react';
|
|
4
5
|
import Tooltip from '@atlaskit/tooltip';
|
|
5
6
|
export default class EmojiErrorMessage extends PureComponent {
|
|
6
7
|
renderWithTooltip() {
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
},
|
|
8
|
+
return jsx("div", {
|
|
9
|
+
css: this.props.messageStyles
|
|
10
|
+
}, jsx(Tooltip, {
|
|
10
11
|
content: this.props.message,
|
|
11
12
|
position: "top"
|
|
12
|
-
},
|
|
13
|
+
}, jsx(ErrorIcon, {
|
|
13
14
|
label: "Error",
|
|
14
15
|
size: "medium"
|
|
15
16
|
})));
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
renderInline() {
|
|
19
|
-
return
|
|
20
|
-
|
|
21
|
-
},
|
|
20
|
+
return jsx("div", {
|
|
21
|
+
css: this.props.messageStyles
|
|
22
|
+
}, jsx(ErrorIcon, {
|
|
22
23
|
label: "Error",
|
|
23
24
|
size: "small"
|
|
24
25
|
}), " ", this.props.message);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { jsx } from '@emotion/core';
|
|
3
3
|
import { placeholder, placeholderContainer } from './styles';
|
|
4
4
|
import { defaultEmojiHeight } from '../../util/constants';
|
|
5
5
|
import { isImageRepresentation, isMediaRepresentation } from '../../util/type-helpers';
|
|
@@ -31,13 +31,10 @@ const EmojiPlaceholder = props => {
|
|
|
31
31
|
width: `${width}px`,
|
|
32
32
|
height: `${height}px`
|
|
33
33
|
};
|
|
34
|
-
|
|
35
|
-
[placeholder]: true,
|
|
36
|
-
[placeholderContainer]: true
|
|
37
|
-
};
|
|
38
|
-
return /*#__PURE__*/React.createElement("span", {
|
|
34
|
+
return jsx("span", {
|
|
39
35
|
"aria-label": shortName,
|
|
40
|
-
className:
|
|
36
|
+
className: placeholder,
|
|
37
|
+
css: placeholderContainer,
|
|
41
38
|
style: style,
|
|
42
39
|
title: showTooltip ? shortName : ''
|
|
43
40
|
});
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
|
|
3
|
+
/** @jsx jsx */
|
|
4
|
+
import { jsx } from '@emotion/core';
|
|
2
5
|
import AkButton from '@atlaskit/button/standard-button';
|
|
3
6
|
import AddIcon from '@atlaskit/icon/glyph/add';
|
|
4
|
-
import classNames from 'classnames';
|
|
5
|
-
import React from 'react';
|
|
6
7
|
import { PureComponent } from 'react';
|
|
7
8
|
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
8
|
-
import CachingEmoji from '../../components/common/CachingEmoji';
|
|
9
9
|
import EmojiButton from '../../components/common/EmojiButton';
|
|
10
10
|
import { messages } from '../i18n';
|
|
11
|
-
import * as styles from './styles';
|
|
12
11
|
import ToneSelector from './ToneSelector';
|
|
13
12
|
import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
|
|
13
|
+
import { addCustomEmoji, addCustomEmojiButton, emojiPickerAddEmoji, emojiPreview, toneSelectorContainer } from './styles';
|
|
14
|
+
import { EmojiPreviewComponent } from './EmojiPreviewComponent';
|
|
14
15
|
export class EmojiPreview extends PureComponent {
|
|
15
16
|
constructor(...args) {
|
|
16
17
|
super(...args);
|
|
@@ -73,13 +74,13 @@ export class EmojiPreview extends PureComponent {
|
|
|
73
74
|
previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
return
|
|
77
|
-
className:
|
|
78
|
-
}, this.state.selectingTone &&
|
|
77
|
+
return jsx("div", {
|
|
78
|
+
className: toneSelectorContainer
|
|
79
|
+
}, this.state.selectingTone && jsx(ToneSelector, {
|
|
79
80
|
emoji: toneEmoji,
|
|
80
81
|
onToneSelected: this.onToneSelected,
|
|
81
82
|
previewEmojiId: previewEmoji.id
|
|
82
|
-
}),
|
|
83
|
+
}), jsx(EmojiButton, {
|
|
83
84
|
ariaExpanded: this.state.selectingTone,
|
|
84
85
|
emoji: previewEmoji,
|
|
85
86
|
selectOnHover: true,
|
|
@@ -103,26 +104,9 @@ export class EmojiPreview extends PureComponent {
|
|
|
103
104
|
return null;
|
|
104
105
|
}
|
|
105
106
|
|
|
106
|
-
|
|
107
|
-
[styles.preview]: true
|
|
108
|
-
});
|
|
109
|
-
const previewTextClasses = classNames({
|
|
110
|
-
[styles.previewText]: true,
|
|
111
|
-
[styles.previewSingleLine]: !emoji.name
|
|
112
|
-
});
|
|
113
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
114
|
-
className: previewClasses
|
|
115
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
116
|
-
className: styles.previewImg
|
|
117
|
-
}, /*#__PURE__*/React.createElement(CachingEmoji, {
|
|
107
|
+
return jsx(EmojiPreviewComponent, {
|
|
118
108
|
emoji: emoji
|
|
119
|
-
})
|
|
120
|
-
className: previewTextClasses
|
|
121
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
122
|
-
className: styles.name
|
|
123
|
-
}, emoji.name), /*#__PURE__*/React.createElement("span", {
|
|
124
|
-
className: styles.shortName
|
|
125
|
-
}, emoji.shortName)));
|
|
109
|
+
});
|
|
126
110
|
} // note: emoji-picker-add-emoji className is used by pollinator synthetic checks
|
|
127
111
|
|
|
128
112
|
|
|
@@ -143,23 +127,23 @@ export class EmojiPreview extends PureComponent {
|
|
|
143
127
|
return null;
|
|
144
128
|
}
|
|
145
129
|
|
|
146
|
-
return
|
|
147
|
-
|
|
148
|
-
},
|
|
130
|
+
return jsx("div", {
|
|
131
|
+
css: addCustomEmoji
|
|
132
|
+
}, jsx(FormattedMessage, messages.addCustomEmojiLabel, label => jsx(AkButton, {
|
|
149
133
|
onClick: onOpenUpload,
|
|
150
|
-
iconBefore:
|
|
134
|
+
iconBefore: jsx(AddIcon, {
|
|
151
135
|
label: formatMessage(messages.addCustomEmojiLabel),
|
|
152
136
|
size: "small"
|
|
153
137
|
}),
|
|
154
138
|
appearance: "subtle",
|
|
155
|
-
|
|
139
|
+
css: addCustomEmojiButton,
|
|
140
|
+
className: emojiPickerAddEmoji
|
|
156
141
|
}, label)));
|
|
157
142
|
}
|
|
158
143
|
|
|
159
144
|
render() {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
className: sectionClasses,
|
|
145
|
+
return jsx("div", {
|
|
146
|
+
css: emojiPreview,
|
|
163
147
|
onMouseLeave: this.onMouseLeave
|
|
164
148
|
}, this.renderAddOwnEmoji(), this.renderEmojiPreview(), this.renderTones());
|
|
165
149
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { jsx } from '@emotion/core';
|
|
3
|
+
import CachingEmoji from './CachingEmoji';
|
|
4
|
+
import { emojiName, emojiShortName, preview, previewImg, previewText } from './styles';
|
|
5
|
+
export const EmojiPreviewComponent = ({
|
|
6
|
+
emoji
|
|
7
|
+
}) => {
|
|
8
|
+
return jsx("div", {
|
|
9
|
+
css: preview
|
|
10
|
+
}, jsx("span", {
|
|
11
|
+
css: previewImg
|
|
12
|
+
}, jsx(CachingEmoji, {
|
|
13
|
+
emoji: emoji
|
|
14
|
+
})), jsx("div", {
|
|
15
|
+
css: previewText
|
|
16
|
+
}, emoji.name && jsx("div", {
|
|
17
|
+
css: emojiName
|
|
18
|
+
}, emoji.name), jsx("div", {
|
|
19
|
+
css: emojiShortName
|
|
20
|
+
}, emoji.shortName)));
|
|
21
|
+
};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
/** @jsx jsx */
|
|
4
|
+
import { jsx } from '@emotion/core';
|
|
5
|
+
import React, { Fragment } from 'react';
|
|
3
6
|
import { PureComponent } from 'react';
|
|
4
7
|
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
5
8
|
import TextField from '@atlaskit/textfield';
|
|
@@ -10,7 +13,7 @@ import EmojiErrorMessage from './EmojiErrorMessage';
|
|
|
10
13
|
import EmojiUploadPreview from './EmojiUploadPreview';
|
|
11
14
|
import FileChooser from './FileChooser';
|
|
12
15
|
import { UploadStatus } from './internal-types';
|
|
13
|
-
import
|
|
16
|
+
import { emojiChooseFileErrorMessage, emojiUpload, emojiUploadBottom, uploadChooseFileBrowse, uploadChooseFileEmojiName, uploadChooseFileMessage, uploadChooseFileRow } from './styles';
|
|
14
17
|
const disallowedReplacementsMap = new Map([[':', ''], ['!', ''], ['@', ''], ['#', ''], ['%', ''], ['^', ''], ['&', ''], ['*', ''], ['(', ''], [')', ''], [' ', '_']]);
|
|
15
18
|
|
|
16
19
|
const sanitizeName = name => {
|
|
@@ -54,15 +57,15 @@ class ChooseEmojiFile extends PureComponent {
|
|
|
54
57
|
const disableChooser = !name;
|
|
55
58
|
const fileChooserButtonDescriptionId = 'choose.emoji.file.button.screen.reader.description.id'; // Note: FileChooser.accept does not work in Electron due to a bug: https://product-fabric.atlassian.net/browse/FS-1626
|
|
56
59
|
|
|
57
|
-
return
|
|
58
|
-
|
|
59
|
-
},
|
|
60
|
-
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
},
|
|
60
|
+
return jsx("div", {
|
|
61
|
+
css: emojiUpload
|
|
62
|
+
}, jsx("div", {
|
|
63
|
+
css: uploadChooseFileMessage
|
|
64
|
+
}, jsx(FormattedMessage, messages.addCustomEmojiLabel, message => jsx("h5", null, message))), jsx("div", {
|
|
65
|
+
css: uploadChooseFileRow
|
|
66
|
+
}, jsx("span", {
|
|
67
|
+
css: uploadChooseFileEmojiName
|
|
68
|
+
}, jsx(TextField, {
|
|
66
69
|
placeholder: formatMessage(messages.emojiPlaceholder),
|
|
67
70
|
"aria-label": formatMessage(messages.emojiNameAriaLabel),
|
|
68
71
|
maxLength: maxNameLength,
|
|
@@ -71,22 +74,22 @@ class ChooseEmojiFile extends PureComponent {
|
|
|
71
74
|
value: name,
|
|
72
75
|
isCompact: true,
|
|
73
76
|
autoFocus: true
|
|
74
|
-
})),
|
|
75
|
-
|
|
76
|
-
},
|
|
77
|
+
})), jsx("span", {
|
|
78
|
+
css: uploadChooseFileBrowse
|
|
79
|
+
}, jsx(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, screenReaderDescription => jsx(Fragment, null, jsx("span", {
|
|
77
80
|
hidden: true,
|
|
78
81
|
id: fileChooserButtonDescriptionId
|
|
79
|
-
}, screenReaderDescription),
|
|
82
|
+
}, screenReaderDescription), jsx(FileChooser, {
|
|
80
83
|
label: formatMessage(messages.emojiChooseFileTitle),
|
|
81
84
|
onChange: onChooseFile,
|
|
82
85
|
onClick: onClick,
|
|
83
86
|
accept: "image/png,image/jpeg,image/gif",
|
|
84
87
|
ariaDescribedBy: fileChooserButtonDescriptionId,
|
|
85
88
|
isDisabled: disableChooser
|
|
86
|
-
}))))),
|
|
87
|
-
|
|
88
|
-
}, !errorMessage ?
|
|
89
|
-
|
|
89
|
+
}))))), jsx("div", {
|
|
90
|
+
css: emojiUploadBottom
|
|
91
|
+
}, !errorMessage ? jsx("p", null, jsx(FormattedMessage, messages.emojiImageRequirements)) : jsx(EmojiErrorMessage, {
|
|
92
|
+
messageStyles: emojiChooseFileErrorMessage,
|
|
90
93
|
message: errorMessage
|
|
91
94
|
})));
|
|
92
95
|
}
|
|
@@ -269,7 +272,7 @@ export class EmojiUploadPicker extends PureComponent {
|
|
|
269
272
|
};
|
|
270
273
|
|
|
271
274
|
if (name && previewImage) {
|
|
272
|
-
return
|
|
275
|
+
return jsx(EmojiUploadPreview, {
|
|
273
276
|
errorMessage: errorMessage,
|
|
274
277
|
name: name,
|
|
275
278
|
onAddEmoji: this.onAddEmoji,
|
|
@@ -279,13 +282,13 @@ export class EmojiUploadPicker extends PureComponent {
|
|
|
279
282
|
});
|
|
280
283
|
}
|
|
281
284
|
|
|
282
|
-
return
|
|
285
|
+
return jsx(ChooseEmojiFile, {
|
|
283
286
|
name: name,
|
|
284
287
|
onChooseFile: this.onChooseFile,
|
|
285
288
|
onClick: this.props.onFileChooserClicked,
|
|
286
289
|
onNameChange: this.onNameChange,
|
|
287
290
|
onUploadCancelled: cancelUpload,
|
|
288
|
-
errorMessage: chooseEmojiErrorMessage ?
|
|
291
|
+
errorMessage: chooseEmojiErrorMessage ? jsx(FormattedMessage, chooseEmojiErrorMessage) : undefined,
|
|
289
292
|
intl: intl
|
|
290
293
|
});
|
|
291
294
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
|
|
3
|
+
/** @jsx jsx */
|
|
4
|
+
import { jsx } from '@emotion/core';
|
|
2
5
|
import AkButton from '@atlaskit/button/custom-theme-button';
|
|
3
|
-
import React from 'react';
|
|
4
6
|
import { PureComponent } from 'react';
|
|
5
7
|
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
6
8
|
import { customCategory } from '../../util/constants';
|
|
@@ -9,7 +11,7 @@ import Emoji from './Emoji';
|
|
|
9
11
|
import EmojiErrorMessage from './EmojiErrorMessage';
|
|
10
12
|
import { UploadStatus } from './internal-types';
|
|
11
13
|
import RetryableButton from './RetryableButton';
|
|
12
|
-
import
|
|
14
|
+
import { bigEmojiPreview, cancelButton, emojiPreviewErrorMessage, uploadAddRow, uploadPreview, uploadPreviewFooter, uploadPreviewText } from './styles';
|
|
13
15
|
|
|
14
16
|
class EmojiUploadPreview extends PureComponent {
|
|
15
17
|
render() {
|
|
@@ -39,44 +41,42 @@ class EmojiUploadPreview extends PureComponent {
|
|
|
39
41
|
},
|
|
40
42
|
searchable: true
|
|
41
43
|
};
|
|
42
|
-
emojiComponent =
|
|
44
|
+
emojiComponent = jsx(Emoji, {
|
|
43
45
|
emoji: emoji
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
const uploading = uploadStatus === UploadStatus.Uploading;
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
},
|
|
50
|
+
return jsx("div", {
|
|
51
|
+
css: uploadPreviewFooter
|
|
52
|
+
}, jsx("div", {
|
|
53
|
+
css: uploadPreview
|
|
54
|
+
}, jsx("div", {
|
|
55
|
+
css: uploadPreviewText
|
|
56
|
+
}, jsx("h5", null, jsx(FormattedMessage, messages.emojiPreviewTitle)), jsx(FormattedMessage, _extends({}, messages.emojiPreview, {
|
|
55
57
|
values: {
|
|
56
58
|
emoji: emojiComponent
|
|
57
59
|
}
|
|
58
|
-
}))),
|
|
59
|
-
|
|
60
|
-
}, emojiComponent)),
|
|
61
|
-
|
|
62
|
-
}, !uploading && errorMessage ?
|
|
63
|
-
|
|
60
|
+
}))), jsx("div", {
|
|
61
|
+
css: bigEmojiPreview
|
|
62
|
+
}, emojiComponent)), jsx("div", {
|
|
63
|
+
css: uploadAddRow
|
|
64
|
+
}, !uploading && errorMessage ? jsx(EmojiErrorMessage, {
|
|
65
|
+
messageStyles: emojiPreviewErrorMessage,
|
|
64
66
|
message: errorMessage,
|
|
65
67
|
tooltip: true
|
|
66
|
-
}) : null,
|
|
67
|
-
className: styles.uploadEmojiButton,
|
|
68
|
-
retryClassName: styles.uploadRetryButton,
|
|
68
|
+
}) : null, jsx(RetryableButton, {
|
|
69
69
|
label: formatMessage(messages.addEmojiLabel),
|
|
70
70
|
onSubmit: onAddEmoji,
|
|
71
71
|
appearance: "primary",
|
|
72
72
|
loading: uploading,
|
|
73
73
|
error: !!errorMessage
|
|
74
|
-
}),
|
|
74
|
+
}), jsx(AkButton, {
|
|
75
75
|
onClick: onUploadCancelled,
|
|
76
76
|
appearance: "subtle",
|
|
77
77
|
isDisabled: uploading,
|
|
78
|
-
|
|
79
|
-
},
|
|
78
|
+
css: cancelButton
|
|
79
|
+
}, jsx(FormattedMessage, messages.cancelLabel))));
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { Component } from 'react';
|
|
4
5
|
import { defaultEmojiHeight } from '../../util/constants';
|
|
5
6
|
import { isPromise } from '../../util/type-helpers';
|
|
6
7
|
import CachingEmoji from './CachingEmoji';
|
|
7
8
|
import EmojiPlaceholder from './EmojiPlaceholder';
|
|
8
|
-
import { EmojiContextProvider } from '../../context/EmojiContextProvider';
|
|
9
9
|
import { sampledUfoRenderedEmoji } from '../../util/analytics';
|
|
10
10
|
export default class ResourcedEmojiComponent extends Component {
|
|
11
11
|
constructor(props) {
|
|
@@ -19,6 +19,14 @@ export default class ResourcedEmojiComponent extends Component {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
getChildContext() {
|
|
23
|
+
return {
|
|
24
|
+
emoji: {
|
|
25
|
+
emojiProvider: this.props.emojiProvider
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
22
30
|
refreshEmoji(emojiProvider, emojiId) {
|
|
23
31
|
const foundEmoji = emojiProvider.findByEmojiId(emojiId);
|
|
24
32
|
|
|
@@ -118,18 +126,15 @@ export default class ResourcedEmojiComponent extends Component {
|
|
|
118
126
|
id,
|
|
119
127
|
fallback
|
|
120
128
|
} = this.props.emojiId;
|
|
121
|
-
|
|
122
|
-
emoji: {
|
|
123
|
-
emojiProvider: this.props.emojiProvider
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
return /*#__PURE__*/React.createElement(EmojiContextProvider, {
|
|
127
|
-
emojiContextValue: emojiContextValue
|
|
128
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
129
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
129
130
|
"data-emoji-id": id,
|
|
130
131
|
"data-emoji-short-name": shortName,
|
|
131
132
|
"data-emoji-text": fallback || shortName
|
|
132
|
-
}, element)
|
|
133
|
+
}, element);
|
|
133
134
|
}
|
|
134
135
|
|
|
135
|
-
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
_defineProperty(ResourcedEmojiComponent, "childContextTypes", {
|
|
139
|
+
emoji: PropTypes.object
|
|
140
|
+
});
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { jsx } from '@emotion/core';
|
|
1
3
|
import AkButton from '@atlaskit/button/custom-theme-button';
|
|
2
4
|
import Spinner from '@atlaskit/spinner';
|
|
3
|
-
import React from 'react';
|
|
4
5
|
import { Component } from 'react';
|
|
5
6
|
import { FormattedMessage } from 'react-intl-next';
|
|
6
7
|
import { messages } from '../i18n';
|
|
7
|
-
import
|
|
8
|
+
import { buttonSpinner, uploadEmojiButton, uploadRetryButton } from './styles';
|
|
8
9
|
export default class RetryableButton extends Component {
|
|
9
10
|
constructor(props) {
|
|
10
11
|
super(props);
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
renderLoading() {
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
},
|
|
15
|
+
return jsx("span", {
|
|
16
|
+
css: buttonSpinner
|
|
17
|
+
}, jsx(Spinner, null));
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
renderRetry() {
|
|
20
21
|
const {
|
|
21
22
|
loading,
|
|
22
|
-
retryClassName,
|
|
23
23
|
onSubmit
|
|
24
24
|
} = this.props;
|
|
25
|
-
return loading ? this.renderLoading() :
|
|
26
|
-
|
|
25
|
+
return loading ? this.renderLoading() : jsx(FormattedMessage, messages.retryLabel, retryLabel => jsx(AkButton, {
|
|
26
|
+
css: uploadRetryButton,
|
|
27
27
|
appearance: "warning",
|
|
28
28
|
onClick: onSubmit
|
|
29
29
|
}, retryLabel));
|
|
@@ -33,13 +33,12 @@ export default class RetryableButton extends Component {
|
|
|
33
33
|
const {
|
|
34
34
|
loading,
|
|
35
35
|
error,
|
|
36
|
-
className,
|
|
37
36
|
appearance,
|
|
38
37
|
onSubmit,
|
|
39
38
|
label
|
|
40
39
|
} = this.props;
|
|
41
|
-
return error ? this.renderRetry() : loading ? this.renderLoading() :
|
|
42
|
-
|
|
40
|
+
return error ? this.renderRetry() : loading ? this.renderLoading() : jsx(AkButton, {
|
|
41
|
+
css: uploadEmojiButton,
|
|
43
42
|
appearance: appearance,
|
|
44
43
|
onClick: onSubmit
|
|
45
44
|
}, label);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
// FIXME - FAB-1732 looking at making a shared component for this
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
/** @jsx jsx */
|
|
5
|
+
import { jsx } from '@emotion/core';
|
|
5
6
|
import { PureComponent } from 'react';
|
|
6
7
|
import { findDOMNode } from 'react-dom';
|
|
7
8
|
import * as styles from './styles';
|
|
@@ -59,17 +60,12 @@ export default class Scrollable extends PureComponent {
|
|
|
59
60
|
maxHeight,
|
|
60
61
|
onMouseLeave
|
|
61
62
|
} = this.props;
|
|
62
|
-
const scrollableClasses = ['emoji-scrollable', styles.emojiScrollable];
|
|
63
|
-
|
|
64
|
-
if (className) {
|
|
65
|
-
scrollableClasses.push(className);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
63
|
const style = maxHeight ? {
|
|
69
64
|
maxHeight
|
|
70
65
|
} : {};
|
|
71
|
-
return
|
|
72
|
-
className:
|
|
66
|
+
return jsx("div", {
|
|
67
|
+
className: `emoji-scrollable ${className}`,
|
|
68
|
+
css: styles.emojiScrollable,
|
|
73
69
|
onMouseLeave: onMouseLeave,
|
|
74
70
|
onScroll: this.handleScroll,
|
|
75
71
|
ref: this.handleRef,
|