@atlaskit/emoji 70.13.0 → 70.14.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 +9 -0
- package/afm-cc/tsconfig.json +3 -0
- package/afm-products/tsconfig.json +3 -0
- package/dist/cjs/components/common/FileChooser.js +24 -1
- package/dist/cjs/components/i18n.js +10 -0
- package/dist/cjs/components/picker/EmojiPickerComponent.compiled.css +3 -0
- package/dist/cjs/components/picker/EmojiPickerComponent.js +20 -6
- package/dist/cjs/components/picker/EmojiPickerList.js +31 -10
- package/dist/cjs/components/picker/EmojiPickerNoResults.compiled.css +12 -0
- package/dist/cjs/components/picker/EmojiPickerNoResults.js +47 -0
- package/dist/cjs/components/picker/EmojiPickerSizes.js +2 -0
- package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +15 -1
- package/dist/cjs/components/picker/assets/spot/search-no-result/SearchNoResultDark.js +40 -0
- package/dist/cjs/components/picker/assets/spot/search-no-result/SearchNoResultLight.js +43 -0
- package/dist/cjs/util/analytics/analytics.js +1 -1
- package/dist/es2019/components/common/FileChooser.js +22 -1
- package/dist/es2019/components/i18n.js +10 -0
- package/dist/es2019/components/picker/EmojiPickerComponent.compiled.css +3 -0
- package/dist/es2019/components/picker/EmojiPickerComponent.js +20 -6
- package/dist/es2019/components/picker/EmojiPickerList.js +33 -11
- package/dist/es2019/components/picker/EmojiPickerNoResults.compiled.css +12 -0
- package/dist/es2019/components/picker/EmojiPickerNoResults.js +38 -0
- package/dist/es2019/components/picker/EmojiPickerSizes.js +2 -0
- package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +7 -0
- package/dist/es2019/components/picker/assets/spot/search-no-result/SearchNoResultDark.js +31 -0
- package/dist/es2019/components/picker/assets/spot/search-no-result/SearchNoResultLight.js +34 -0
- package/dist/es2019/util/analytics/analytics.js +1 -1
- package/dist/esm/components/common/FileChooser.js +24 -1
- package/dist/esm/components/i18n.js +10 -0
- package/dist/esm/components/picker/EmojiPickerComponent.compiled.css +3 -0
- package/dist/esm/components/picker/EmojiPickerComponent.js +20 -6
- package/dist/esm/components/picker/EmojiPickerList.js +32 -11
- package/dist/esm/components/picker/EmojiPickerNoResults.compiled.css +12 -0
- package/dist/esm/components/picker/EmojiPickerNoResults.js +38 -0
- package/dist/esm/components/picker/EmojiPickerSizes.js +2 -0
- package/dist/esm/components/picker/EmojiPickerVirtualItems.js +14 -0
- package/dist/esm/components/picker/assets/spot/search-no-result/SearchNoResultDark.js +33 -0
- package/dist/esm/components/picker/assets/spot/search-no-result/SearchNoResultLight.js +36 -0
- package/dist/esm/util/analytics/analytics.js +1 -1
- package/dist/types/components/i18n.d.ts +10 -0
- package/dist/types/components/picker/EmojiPickerNoResults.d.ts +7 -0
- package/dist/types/components/picker/EmojiPickerSizes.d.ts +1 -0
- package/dist/types/components/picker/EmojiPickerVirtualItems.d.ts +6 -1
- package/dist/types/components/picker/assets/spot/search-no-result/SearchNoResultDark.d.ts +2 -0
- package/dist/types/components/picker/assets/spot/search-no-result/SearchNoResultLight.d.ts +2 -0
- package/dist/types-ts4.5/components/i18n.d.ts +10 -0
- package/dist/types-ts4.5/components/picker/EmojiPickerNoResults.d.ts +7 -0
- package/dist/types-ts4.5/components/picker/EmojiPickerSizes.d.ts +1 -0
- package/dist/types-ts4.5/components/picker/EmojiPickerVirtualItems.d.ts +6 -1
- package/dist/types-ts4.5/components/picker/assets/spot/search-no-result/SearchNoResultDark.d.ts +2 -0
- package/dist/types-ts4.5/components/picker/assets/spot/search-no-result/SearchNoResultLight.d.ts +2 -0
- package/package.json +2 -1
|
@@ -60,6 +60,12 @@ const withoutPreviewHeight = {
|
|
|
60
60
|
medium: "_4t3iixjv _1tke5x59",
|
|
61
61
|
large: "_4t3i1ckg _1tke1pna"
|
|
62
62
|
};
|
|
63
|
+
const emojiPickerHeightNoResults = 354;
|
|
64
|
+
const withNoResultsRefreshHeight = {
|
|
65
|
+
small: "_4t3i1j8x _1tkegx0z",
|
|
66
|
+
medium: "_4t3iihnn _1tke5x59",
|
|
67
|
+
large: "_4t3i19lm _1tke1pna"
|
|
68
|
+
};
|
|
63
69
|
const FREQUENTLY_USED_MAX = 16;
|
|
64
70
|
const EmojiPickerComponent = ({
|
|
65
71
|
onSelection,
|
|
@@ -92,6 +98,7 @@ const EmojiPickerComponent = ({
|
|
|
92
98
|
const emojiPickerList = useMemo(() => /*#__PURE__*/createRef(), []);
|
|
93
99
|
const openTime = useRef(0);
|
|
94
100
|
const isMounting = useRef(true);
|
|
101
|
+
const lastNonSearchCategory = useRef(activeCategory);
|
|
95
102
|
const previousEmojiProvider = useRef(emojiProvider);
|
|
96
103
|
const isProgrammaticScroll = useRef(false);
|
|
97
104
|
const pickerRef = useRef(null);
|
|
@@ -133,8 +140,11 @@ const EmojiPickerComponent = ({
|
|
|
133
140
|
}
|
|
134
141
|
if (activeCategory !== category) {
|
|
135
142
|
setActiveCategory(category);
|
|
143
|
+
if (!query && fg('platform_emoji_picker_refresh')) {
|
|
144
|
+
lastNonSearchCategory.current = category;
|
|
145
|
+
}
|
|
136
146
|
}
|
|
137
|
-
}, [activeCategory, uploading, emojiToDelete]);
|
|
147
|
+
}, [activeCategory, uploading, emojiToDelete, query]);
|
|
138
148
|
const calculateElapsedTime = () => {
|
|
139
149
|
return Date.now() - openTime.current;
|
|
140
150
|
};
|
|
@@ -347,6 +357,10 @@ const EmojiPickerComponent = ({
|
|
|
347
357
|
source: SearchSourceTypes.PICKER
|
|
348
358
|
};
|
|
349
359
|
if (searchQuery !== query) {
|
|
360
|
+
// Capture the active category before entering search so we can keep it highlighted
|
|
361
|
+
if (!query && searchQuery && fg('platform_emoji_picker_refresh')) {
|
|
362
|
+
lastNonSearchCategory.current = activeCategory;
|
|
363
|
+
}
|
|
350
364
|
setQuery(searchQuery);
|
|
351
365
|
}
|
|
352
366
|
updateEmojis(searchQuery, options);
|
|
@@ -354,7 +368,7 @@ const EmojiPickerComponent = ({
|
|
|
354
368
|
// scroll to top when search, which is search results section
|
|
355
369
|
scrollToTopOfList();
|
|
356
370
|
}
|
|
357
|
-
}, [query, filteredEmojis, selectedTone, updateEmojis, scrollToTopOfList]);
|
|
371
|
+
}, [activeCategory, query, filteredEmojis, selectedTone, updateEmojis, scrollToTopOfList]);
|
|
358
372
|
|
|
359
373
|
// When the upload screen is open, intercept any file drag at the window level so it
|
|
360
374
|
// cannot reach underlying page drop handlers (e.g. the Confluence editor).
|
|
@@ -547,7 +561,7 @@ const EmojiPickerComponent = ({
|
|
|
547
561
|
role: "dialog",
|
|
548
562
|
"aria-label": formatMessage(messages.emojiPickerTitle),
|
|
549
563
|
"aria-modal": true,
|
|
550
|
-
className: ax([fg('platform_emoji_picker_refresh') ? "_19itahnd _2rko1mok _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iaq3k _1bsb1edt _1ul91edt _c71l1y6z _kqswh2mm" : "_19itahnd _2rkofajl _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iaq3k _1bsb1edt _1ul91edt _c71l1y6z _kqswh2mm", !!emojiToDelete && fg('platform_emoji_picker_refresh') ? withDeleteRefreshHeight[size] : uploading && fg('platform_emoji_picker_refresh') ? withUploadRefreshHeight[size] : showPreview ? withPreviewHeight[size] : withoutPreviewHeight[size]])
|
|
564
|
+
className: ax([fg('platform_emoji_picker_refresh') ? "_19itahnd _2rko1mok _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iaq3k _1bsb1edt _1ul91edt _c71l1y6z _kqswh2mm" : "_19itahnd _2rkofajl _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iaq3k _1bsb1edt _1ul91edt _c71l1y6z _kqswh2mm", !!emojiToDelete && fg('platform_emoji_picker_refresh') ? withDeleteRefreshHeight[size] : uploading && fg('platform_emoji_picker_refresh') ? withUploadRefreshHeight[size] : query && filteredEmojis.length === 0 && fg('platform_emoji_picker_refresh') ? withNoResultsRefreshHeight[size] : showPreview ? withPreviewHeight[size] : withoutPreviewHeight[size]])
|
|
551
565
|
}, /*#__PURE__*/React.createElement("div", {
|
|
552
566
|
role: "presentation",
|
|
553
567
|
onKeyPress: suppressKeyPress,
|
|
@@ -588,7 +602,7 @@ const EmojiPickerComponent = ({
|
|
|
588
602
|
onOpenUpload: onOpenUpload,
|
|
589
603
|
size: size,
|
|
590
604
|
activeCategoryId: activeCategory
|
|
591
|
-
}), showPreview && !(emojiToDelete && fg('platform_emoji_picker_refresh')) && /*#__PURE__*/React.createElement(EmojiPickerFooter, {
|
|
605
|
+
}), showPreview && !(emojiToDelete && fg('platform_emoji_picker_refresh')) && !(query && filteredEmojis.length === 0 && fg('platform_emoji_picker_refresh')) && /*#__PURE__*/React.createElement(EmojiPickerFooter, {
|
|
592
606
|
selectedEmoji: selectedEmoji,
|
|
593
607
|
uploadEnabled: isUploadSupported && !uploading,
|
|
594
608
|
onOpenUpload: onOpenUpload
|
|
@@ -603,7 +617,7 @@ const EmojiPickerComponent = ({
|
|
|
603
617
|
onKeyPress: suppressKeyPress,
|
|
604
618
|
onKeyUp: suppressKeyPress,
|
|
605
619
|
onKeyDown: suppressKeyPress,
|
|
606
|
-
className: ax([fg('platform_emoji_picker_refresh') ? "_19itahnd _2rko1mok _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iaq3k _1bsb1edt _1ul91edt _c71l1y6z _kqswh2mm" : "_19itahnd _2rkofajl _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iaq3k _1bsb1edt _1ul91edt _c71l1y6z _kqswh2mm", !!emojiToDelete && fg('platform_emoji_picker_refresh') ? withDeleteRefreshHeight[size] : uploading && fg('platform_emoji_picker_refresh') ? withUploadRefreshHeight[size] : showPreview ? withPreviewHeight[size] : withoutPreviewHeight[size]])
|
|
620
|
+
className: ax([fg('platform_emoji_picker_refresh') ? "_19itahnd _2rko1mok _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iaq3k _1bsb1edt _1ul91edt _c71l1y6z _kqswh2mm" : "_19itahnd _2rkofajl _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iaq3k _1bsb1edt _1ul91edt _c71l1y6z _kqswh2mm", !!emojiToDelete && fg('platform_emoji_picker_refresh') ? withDeleteRefreshHeight[size] : uploading && fg('platform_emoji_picker_refresh') ? withUploadRefreshHeight[size] : query && filteredEmojis.length === 0 && fg('platform_emoji_picker_refresh') ? withNoResultsRefreshHeight[size] : showPreview ? withPreviewHeight[size] : withoutPreviewHeight[size]])
|
|
607
621
|
}, /*#__PURE__*/React.createElement(CategorySelector, {
|
|
608
622
|
activeCategoryId: (uploading || emojiToDelete) && fg('platform_emoji_picker_refresh') ? null : activeCategory,
|
|
609
623
|
dynamicCategories: dynamicCategories,
|
|
@@ -638,7 +652,7 @@ const EmojiPickerComponent = ({
|
|
|
638
652
|
onOpenUpload: onOpenUpload,
|
|
639
653
|
size: size,
|
|
640
654
|
activeCategoryId: activeCategory
|
|
641
|
-
}), showPreview && !(emojiToDelete && fg('platform_emoji_picker_refresh')) && /*#__PURE__*/React.createElement(EmojiPickerFooter, {
|
|
655
|
+
}), showPreview && !(emojiToDelete && fg('platform_emoji_picker_refresh')) && !(query && filteredEmojis.length === 0 && fg('platform_emoji_picker_refresh')) && /*#__PURE__*/React.createElement(EmojiPickerFooter, {
|
|
642
656
|
selectedEmoji: selectedEmoji,
|
|
643
657
|
uploadEnabled: isUploadSupported && !uploading,
|
|
644
658
|
onOpenUpload: onOpenUpload
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
+
import { useIntl } from 'react-intl';
|
|
1
2
|
import React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
2
3
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
import { customCategory, defaultEmojiPickerSize, frequentCategory, searchCategory, userCustomTitle, yourUploadsCategory } from '../../util/constants';
|
|
4
5
|
import { CategoryDescriptionMap, CategoryDescriptionMapNew } from './categories';
|
|
5
6
|
import CategoryTracker from './CategoryTracker';
|
|
6
7
|
import { sizes } from './EmojiPickerSizes';
|
|
7
|
-
import { CategoryHeadingItem, EmojisRowItem, LoadingItem, virtualItemRenderer } from './EmojiPickerVirtualItems';
|
|
8
|
+
import { CategoryHeadingItem, EmojisRowItem, LoadingItem, NoResultsItem, virtualItemRenderer } from './EmojiPickerVirtualItems';
|
|
8
9
|
import EmojiActions from '../common/EmojiActions';
|
|
9
10
|
import { emojiPickerHeightOffset, scrollToRow } from './utils';
|
|
10
11
|
import { VirtualList } from './VirtualList';
|
|
11
12
|
import { EmojiPickerListContextProvider } from '../../context/EmojiPickerListContext';
|
|
12
13
|
import EmojiPickerTabPanel from './EmojiPickerTabPanel';
|
|
14
|
+
import { messages } from '../i18n';
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* Test id for wrapper Emoji Picker List div
|
|
@@ -52,6 +54,9 @@ export const EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef((pro
|
|
|
52
54
|
onOpenUpload,
|
|
53
55
|
activeCategoryId
|
|
54
56
|
} = props;
|
|
57
|
+
const {
|
|
58
|
+
formatMessage
|
|
59
|
+
} = useIntl();
|
|
55
60
|
const listRef = useRef(null);
|
|
56
61
|
const [allEmojiGroups, setAllEmojiGroups] = useState([]);
|
|
57
62
|
const [virtualItems, setVirtualItems] = useState([]);
|
|
@@ -153,14 +158,27 @@ export const EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef((pro
|
|
|
153
158
|
items.push(new LoadingItem());
|
|
154
159
|
} else {
|
|
155
160
|
if (query) {
|
|
156
|
-
const search = CategoryDescriptionMap.SEARCH;
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
const search = fg('platform_emoji_picker_refresh') ? CategoryDescriptionMapNew.SEARCH : CategoryDescriptionMap.SEARCH;
|
|
162
|
+
if (emojis.length === 0 && fg('platform_emoji_picker_refresh')) {
|
|
163
|
+
// Show a "No results" category heading, then a no-results illustration below it
|
|
164
|
+
items.push(new CategoryHeadingItem({
|
|
165
|
+
id: searchCategory,
|
|
166
|
+
title: formatMessage(messages.emojiPickerNoResults),
|
|
167
|
+
className: categoryClassname
|
|
168
|
+
}));
|
|
169
|
+
items.push(new NoResultsItem({
|
|
170
|
+
onOpenUpload,
|
|
171
|
+
uploadEnabled
|
|
172
|
+
}));
|
|
173
|
+
} else {
|
|
174
|
+
// Only a single "result" category
|
|
175
|
+
items = [...items, ...buildVirtualItemFromGroup({
|
|
176
|
+
category: searchCategory,
|
|
177
|
+
title: search.name,
|
|
178
|
+
emojis,
|
|
179
|
+
order: search.order
|
|
180
|
+
})];
|
|
181
|
+
}
|
|
164
182
|
} else {
|
|
165
183
|
// Group by category
|
|
166
184
|
|
|
@@ -185,7 +203,7 @@ export const EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef((pro
|
|
|
185
203
|
}
|
|
186
204
|
}
|
|
187
205
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
188
|
-
}, [allEmojiGroups, loading, query, emojis]);
|
|
206
|
+
}, [allEmojiGroups, loading, query, emojis, onOpenUpload, uploadEnabled, formatMessage]);
|
|
189
207
|
const findCategoryToActivate = row => {
|
|
190
208
|
let category = null;
|
|
191
209
|
if (row instanceof CategoryHeadingItem) {
|
|
@@ -294,8 +312,12 @@ export const EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef((pro
|
|
|
294
312
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
295
313
|
}, [virtualItems, categoriesChanged]);
|
|
296
314
|
const virtualListHeight = useMemo(() => {
|
|
315
|
+
if (query && emojis.length === 0 && fg('platform_emoji_picker_refresh')) {
|
|
316
|
+
// No-results state: expand the list height to fit heading + illustration without scrolling
|
|
317
|
+
return sizes.categoryHeadingHeight + sizes.noResultsHeight + emojiPickerHeightOffset(size);
|
|
318
|
+
}
|
|
297
319
|
return fg('platform_emoji_picker_refresh') ? sizes.listHeightNew + emojiPickerHeightOffset(size) : sizes.listHeight + emojiPickerHeightOffset(size);
|
|
298
|
-
}, [size]);
|
|
320
|
+
}, [size, query, emojis.length]);
|
|
299
321
|
return /*#__PURE__*/React.createElement(EmojiPickerTabPanel, {
|
|
300
322
|
showSearchResults: !!query
|
|
301
323
|
}, /*#__PURE__*/React.createElement(EmojiActions, {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
._zulppxbi{gap:var(--ds-space-200,1pc)}._19bvpxbi{padding-left:var(--ds-space-200,1pc)}
|
|
3
|
+
._1bah1h6o{justify-content:center}
|
|
4
|
+
._1bsb1osq{width:100%}
|
|
5
|
+
._1e0c1txw{display:flex}
|
|
6
|
+
._2lx21bp4{flex-direction:column}
|
|
7
|
+
._4cvr1h6o{align-items:center}
|
|
8
|
+
._ca0q1ejb{padding-top:var(--ds-space-300,24px)}
|
|
9
|
+
._n3td1ejb{padding-bottom:var(--ds-space-300,24px)}
|
|
10
|
+
._u5f3pxbi{padding-right:var(--ds-space-200,1pc)}
|
|
11
|
+
._vchhusvi{box-sizing:border-box}
|
|
12
|
+
._y3gn1h6o{text-align:center}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* EmojiPickerNoResults.tsx generated by @compiled/babel-plugin v0.39.1 */
|
|
2
|
+
import "./EmojiPickerNoResults.compiled.css";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { ax, ix } from "@compiled/react/runtime";
|
|
5
|
+
import { useCallback } from 'react';
|
|
6
|
+
import { useThemeObserver } from '@atlaskit/tokens';
|
|
7
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
8
|
+
import { FormattedMessage } from 'react-intl';
|
|
9
|
+
import AkButton from '@atlaskit/button/standard-button';
|
|
10
|
+
import { messages } from '../i18n';
|
|
11
|
+
import SearchNoResultDark from './assets/spot/search-no-result/SearchNoResultDark';
|
|
12
|
+
import SearchNoResultLight from './assets/spot/search-no-result/SearchNoResultLight';
|
|
13
|
+
const noResultsContainer = null;
|
|
14
|
+
export const RENDER_EMOJI_PICKER_NO_RESULTS_TESTID = 'render-emoji-picker-no-results';
|
|
15
|
+
const EmojiPickerNoResults = ({
|
|
16
|
+
onOpenUpload,
|
|
17
|
+
uploadEnabled
|
|
18
|
+
}) => {
|
|
19
|
+
const {
|
|
20
|
+
colorMode
|
|
21
|
+
} = useThemeObserver();
|
|
22
|
+
const handleOpenUpload = useCallback(event => {
|
|
23
|
+
if (fg('platform_emoji_keep_picker_open_on_upload')) {
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
event.stopPropagation();
|
|
26
|
+
}
|
|
27
|
+
onOpenUpload();
|
|
28
|
+
}, [onOpenUpload]);
|
|
29
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
30
|
+
"data-testid": RENDER_EMOJI_PICKER_NO_RESULTS_TESTID,
|
|
31
|
+
className: ax(["_zulppxbi _1e0c1txw _2lx21bp4 _4cvr1h6o _1bah1h6o _ca0q1ejb _u5f3pxbi _n3td1ejb _19bvpxbi _y3gn1h6o _1bsb1osq _vchhusvi"])
|
|
32
|
+
}, colorMode === 'dark' ? /*#__PURE__*/React.createElement(SearchNoResultDark, null) : /*#__PURE__*/React.createElement(SearchNoResultLight, null), uploadEnabled && /*#__PURE__*/React.createElement(FormattedMessage, messages.emojiPickerAddCustomEmoji, label => /*#__PURE__*/React.createElement(AkButton, {
|
|
33
|
+
onClick: handleOpenUpload,
|
|
34
|
+
appearance: "default",
|
|
35
|
+
tabIndex: 0
|
|
36
|
+
}, label)));
|
|
37
|
+
};
|
|
38
|
+
export default EmojiPickerNoResults;
|
|
@@ -13,6 +13,8 @@ export const sizes = {
|
|
|
13
13
|
// 32px height
|
|
14
14
|
loadingRowHeight: 150,
|
|
15
15
|
// Fills remaining space without scrolling when loading.
|
|
16
|
+
noResultsHeight: 300,
|
|
17
|
+
// illustration (200px) + button + padding + gap
|
|
16
18
|
uploadActionHeight: 40,
|
|
17
19
|
// 40px height
|
|
18
20
|
emojiPerRow: 8
|
|
@@ -7,6 +7,7 @@ import { ax, ix } from "@compiled/react/runtime";
|
|
|
7
7
|
import Spinner from '@atlaskit/spinner';
|
|
8
8
|
import EmojiPickerCategoryHeading from './EmojiPickerCategoryHeading';
|
|
9
9
|
import EmojiPickerEmojiRow from './EmojiPickerEmojiRow';
|
|
10
|
+
import EmojiPickerNoResults from './EmojiPickerNoResults';
|
|
10
11
|
import { sizes } from './EmojiPickerSizes';
|
|
11
12
|
const emojiPickerSpinner = null;
|
|
12
13
|
export class AbstractItem {
|
|
@@ -39,6 +40,12 @@ export class CategoryHeadingItem extends AbstractItem {
|
|
|
39
40
|
_defineProperty(this, "renderItem", () => /*#__PURE__*/React.createElement(EmojiPickerCategoryHeading, this.props));
|
|
40
41
|
}
|
|
41
42
|
}
|
|
43
|
+
export class NoResultsItem extends AbstractItem {
|
|
44
|
+
constructor(props) {
|
|
45
|
+
super(props, sizes.noResultsHeight);
|
|
46
|
+
_defineProperty(this, "renderItem", () => /*#__PURE__*/React.createElement(EmojiPickerNoResults, this.props));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
42
49
|
export const virtualItemRenderer = (rows, context) => {
|
|
43
50
|
const {
|
|
44
51
|
index,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
const SearchNoResultDark = () => /*#__PURE__*/React.createElement("svg", {
|
|
3
|
+
width: "200",
|
|
4
|
+
height: "200",
|
|
5
|
+
viewBox: "0 0 275 275",
|
|
6
|
+
fill: "none",
|
|
7
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
8
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
9
|
+
d: "M191.87 88.6702C189.59 84.3102 186.8 79.9902 183.57 75.8102C180.3 71.5802 176.77 67.7402 173.07 64.4102C151.47 44.9002 123.96 41.9102 97.58 56.2202C93.31 58.5402 89.09 61.3002 85.04 64.4402C80.83 67.6902 76.96 71.2302 73.51 74.9502C53.12 96.9602 49.08 124.3 62.42 149.98C64.72 154.4 67.54 158.79 70.81 163.02C74.04 167.2 77.53 170.98 81.18 174.28C93.68 185.57 108.23 191.29 123.43 191.29C134.33 191.29 145.56 188.35 156.61 182.41C161.07 180.01 165.47 177.15 169.68 173.89C173.74 170.75 177.47 167.36 180.79 163.82C201.31 141.86 205.35 114.47 191.87 88.6802V88.6702ZM161.31 163.04C157.7 165.83 153.94 168.29 150.14 170.33C128.76 181.81 107.54 179.6 90.38 164.1C87.33 161.34 84.4 158.16 81.66 154.62C78.89 151.03 76.5 147.34 74.58 143.65C63.91 123.12 67.1 102.02 83.56 84.2502C86.49 81.0802 89.81 78.0602 93.42 75.2702C96.89 72.5802 100.49 70.2302 104.12 68.2602C113.08 63.4002 122.03 60.9802 130.69 60.9802C142.58 60.9802 153.9 65.5402 163.89 74.5702C166.98 77.3602 169.96 80.6002 172.73 84.1902C175.46 87.7302 177.82 91.3702 179.72 95.0102C190.49 115.63 187.32 136.74 170.77 154.45C167.96 157.46 164.77 160.35 161.29 163.04H161.31Z",
|
|
10
|
+
fill: "#4B4D51"
|
|
11
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
12
|
+
d: "M179.96 171C176.42 166.07 172.62 166.1 168.91 168.97C165.43 171.66 164.5 175.3 168.21 180.09L172.45 185.57L184.2 176.48L179.96 171Z",
|
|
13
|
+
fill: "#4B4D51"
|
|
14
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
15
|
+
d: "M187.155 174.199L169.513 187.839L202.665 230.717L220.307 217.077L187.155 174.199Z",
|
|
16
|
+
fill: "#4B4D51"
|
|
17
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
18
|
+
d: "M184.32 176.391L172.35 185.646L183.593 200.186L195.562 190.932L184.32 176.391Z",
|
|
19
|
+
fill: "#7E8188"
|
|
20
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
21
|
+
fillRule: "evenodd",
|
|
22
|
+
clipRule: "evenodd",
|
|
23
|
+
d: "M157.715 95.8255L103.735 149.805L96.6643 142.734L150.644 88.7544L157.715 95.8255Z",
|
|
24
|
+
fill: "#4B4D51"
|
|
25
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
26
|
+
fillRule: "evenodd",
|
|
27
|
+
clipRule: "evenodd",
|
|
28
|
+
d: "M150.644 149.805L96.6643 95.8255L103.735 88.7544L157.715 142.734L150.644 149.805Z",
|
|
29
|
+
fill: "#4B4D51"
|
|
30
|
+
}));
|
|
31
|
+
export default SearchNoResultDark;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
const SearchNoResultLight = () => /*#__PURE__*/React.createElement("svg", {
|
|
3
|
+
width: "200",
|
|
4
|
+
height: "200",
|
|
5
|
+
viewBox: "0 0 275 275",
|
|
6
|
+
fill: "none",
|
|
7
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
8
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
9
|
+
d: "M185.8 91.8398C183.73 87.8698 181.19 83.9198 178.16 79.9998C175.09 76.0298 171.85 72.5298 168.49 69.4898C148.48 51.4098 123.89 49.7498 100.86 62.2398C96.93 64.3698 93.05 66.9098 89.24 69.8498C85.27 72.9198 81.7 76.1798 78.54 79.5898C60.71 98.8298 56.14 123 68.5 146.8C70.59 150.82 73.16 154.83 76.23 158.81C79.26 162.73 82.45 166.18 85.77 169.18C105.65 187.13 130.22 188.8 153.36 176.36C157.46 174.16 161.51 171.53 165.48 168.46C169.29 165.52 172.72 162.39 175.77 159.13C193.68 139.96 198.25 115.7 185.78 91.8398H185.8Z",
|
|
10
|
+
fill: "white"
|
|
11
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
12
|
+
d: "M123.44 191.28C108.24 191.28 93.7 185.56 81.19 174.27C77.54 170.97 74.05 167.18 70.82 163.01C67.55 158.78 64.72 154.39 62.43 149.97C49.09 124.3 53.13 96.9499 73.52 74.9399C76.97 71.2199 80.85 67.6799 85.05 64.4299C89.1 61.2999 93.32 58.5299 97.59 56.2099C123.97 41.8999 151.49 44.8899 173.08 64.3999C176.77 67.7399 180.3 71.5699 183.58 75.7999C186.81 79.9699 189.6 84.2999 191.88 88.6599C205.36 114.45 201.32 141.84 180.8 163.8C177.49 167.35 173.75 170.74 169.69 173.87C165.48 177.12 161.08 179.99 156.62 182.39C145.57 188.33 134.33 191.27 123.44 191.27V191.28ZM130.69 60.9799C122.04 60.9799 113.08 63.3899 104.12 68.2599C100.5 70.2299 96.9 72.5899 93.42 75.2699C89.81 78.0599 86.49 81.0799 83.56 84.2499C67.1 102.02 63.91 123.11 74.58 143.65C76.5 147.34 78.88 151.04 81.66 154.62C84.39 158.15 87.32 161.34 90.38 164.1C107.54 179.6 128.76 181.81 150.14 170.33C153.94 168.29 157.7 165.84 161.31 163.04C164.79 160.35 167.97 157.46 170.79 154.45C187.34 136.74 190.51 115.63 179.74 95.0099C177.84 91.3699 175.48 87.7199 172.75 84.1899C169.97 80.5999 167 77.3599 163.91 74.5699C153.91 65.5399 142.59 60.9799 130.71 60.9799H130.69Z",
|
|
13
|
+
fill: "#DDDEE1"
|
|
14
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
15
|
+
d: "M179.96 171C176.42 166.07 172.62 166.1 168.91 168.97C165.43 171.66 164.5 175.3 168.21 180.09L172.45 185.57L184.2 176.48L179.96 171Z",
|
|
16
|
+
fill: "#DDDEE1"
|
|
17
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
18
|
+
d: "M187.155 174.199L169.513 187.839L202.665 230.717L220.307 217.077L187.155 174.199Z",
|
|
19
|
+
fill: "#DDDEE1"
|
|
20
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
21
|
+
d: "M184.32 176.391L172.35 185.646L183.593 200.186L195.562 190.932L184.32 176.391Z",
|
|
22
|
+
fill: "#B7B9BE"
|
|
23
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
24
|
+
fillRule: "evenodd",
|
|
25
|
+
clipRule: "evenodd",
|
|
26
|
+
d: "M157.715 95.8255L103.735 149.805L96.6643 142.734L150.644 88.7544L157.715 95.8255Z",
|
|
27
|
+
fill: "#DDDEE1"
|
|
28
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
29
|
+
fillRule: "evenodd",
|
|
30
|
+
clipRule: "evenodd",
|
|
31
|
+
d: "M150.644 149.805L96.6643 95.8255L103.735 88.7544L157.715 142.734L150.644 149.805Z",
|
|
32
|
+
fill: "#DDDEE1"
|
|
33
|
+
}));
|
|
34
|
+
export default SearchNoResultLight;
|
|
@@ -11,6 +11,9 @@ import { containsFiles, getFiles } from '@atlaskit/pragmatic-drag-and-drop/exter
|
|
|
11
11
|
export var chooseFileButtonTestId = 'choose-file-button';
|
|
12
12
|
export var fileUploadInputTestId = 'file-upload';
|
|
13
13
|
export var dropzoneTestId = 'file-dropzone';
|
|
14
|
+
var hasFilesInTransfer = function hasFilesInTransfer(dataTransfer) {
|
|
15
|
+
return !!(dataTransfer !== null && dataTransfer !== void 0 && dataTransfer.types) && Array.from(dataTransfer.types).includes('Files');
|
|
16
|
+
};
|
|
14
17
|
var dropzone = null;
|
|
15
18
|
var dropzoneActive = null;
|
|
16
19
|
var previewImageStyles = null;
|
|
@@ -62,7 +65,21 @@ var FileChooser = function FileChooser(props) {
|
|
|
62
65
|
if (!element || !fg('platform_emoji_picker_refresh')) {
|
|
63
66
|
return;
|
|
64
67
|
}
|
|
65
|
-
|
|
68
|
+
var suppressNativeFileDrop = function suppressNativeFileDrop(event) {
|
|
69
|
+
if (!hasFilesInTransfer(event.dataTransfer)) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
event.preventDefault();
|
|
73
|
+
event.stopPropagation();
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// eslint-disable-next-line @atlaskit/design-system/no-direct-use-of-web-platform-drag-and-drop
|
|
77
|
+
element.addEventListener('dragenter', suppressNativeFileDrop);
|
|
78
|
+
// eslint-disable-next-line @atlaskit/design-system/no-direct-use-of-web-platform-drag-and-drop
|
|
79
|
+
element.addEventListener('dragover', suppressNativeFileDrop);
|
|
80
|
+
// eslint-disable-next-line @atlaskit/design-system/no-direct-use-of-web-platform-drag-and-drop
|
|
81
|
+
element.addEventListener('drop', suppressNativeFileDrop);
|
|
82
|
+
var cleanupDropTarget = dropTargetForExternal({
|
|
66
83
|
element: element,
|
|
67
84
|
canDrop: containsFiles,
|
|
68
85
|
onDragEnter: function onDragEnter() {
|
|
@@ -84,6 +101,12 @@ var FileChooser = function FileChooser(props) {
|
|
|
84
101
|
}
|
|
85
102
|
}
|
|
86
103
|
});
|
|
104
|
+
return function () {
|
|
105
|
+
element.removeEventListener('dragenter', suppressNativeFileDrop);
|
|
106
|
+
element.removeEventListener('dragover', suppressNativeFileDrop);
|
|
107
|
+
element.removeEventListener('drop', suppressNativeFileDrop);
|
|
108
|
+
cleanupDropTarget();
|
|
109
|
+
};
|
|
87
110
|
}, [isDropDisabled, handleFileDrop]);
|
|
88
111
|
var hiddenInput = /*#__PURE__*/React.createElement("input", {
|
|
89
112
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
@@ -225,6 +225,16 @@ export var messages = defineMessages({
|
|
|
225
225
|
defaultMessage: 'An emoji with this name exists already',
|
|
226
226
|
description: 'Error message shown when the user tries to upload an emoji with a name that already exists in the custom emoji set'
|
|
227
227
|
},
|
|
228
|
+
emojiPickerNoResults: {
|
|
229
|
+
id: 'fabric.emoji.picker.no.results',
|
|
230
|
+
defaultMessage: 'No results',
|
|
231
|
+
description: 'Heading shown in the emoji picker when a search query returns no matching emojis.'
|
|
232
|
+
},
|
|
233
|
+
emojiPickerAddCustomEmoji: {
|
|
234
|
+
id: 'fabric.emoji.picker.add.custom.emoji',
|
|
235
|
+
defaultMessage: 'Add custom emoji',
|
|
236
|
+
description: 'Label for the button shown in the emoji picker no-results screen that opens the custom emoji upload panel.'
|
|
237
|
+
},
|
|
228
238
|
emojiPickerTitle: {
|
|
229
239
|
id: 'fabric.emoji.picker',
|
|
230
240
|
defaultMessage: 'Emoji picker',
|
|
@@ -21,13 +21,16 @@
|
|
|
21
21
|
._1xi2idpf{right:0}
|
|
22
22
|
._2lx21bp4{flex-direction:column}
|
|
23
23
|
._4t3i1784{height:470px}
|
|
24
|
+
._4t3i19lm{height:514px}
|
|
24
25
|
._4t3i1ckg{height:455px}
|
|
25
26
|
._4t3i1dsu{height:419px}
|
|
27
|
+
._4t3i1j8x{height:354px}
|
|
26
28
|
._4t3i1sa4{height:390px}
|
|
27
29
|
._4t3i2300{height:429px}
|
|
28
30
|
._4t3i50k7{height:499px}
|
|
29
31
|
._4t3iaq3k{height:295px}
|
|
30
32
|
._4t3ibqjm{height:310px}
|
|
33
|
+
._4t3iihnn{height:434px}
|
|
31
34
|
._4t3iixjv{height:375px}
|
|
32
35
|
._4t3iqbeb{height:339px}
|
|
33
36
|
._4t3iuxo9{height:var(--_19dn98e)}
|
|
@@ -67,6 +67,12 @@ var withoutPreviewHeight = {
|
|
|
67
67
|
medium: "_4t3iixjv _1tke5x59",
|
|
68
68
|
large: "_4t3i1ckg _1tke1pna"
|
|
69
69
|
};
|
|
70
|
+
var emojiPickerHeightNoResults = 354;
|
|
71
|
+
var withNoResultsRefreshHeight = {
|
|
72
|
+
small: "_4t3i1j8x _1tkegx0z",
|
|
73
|
+
medium: "_4t3iihnn _1tke5x59",
|
|
74
|
+
large: "_4t3i19lm _1tke1pna"
|
|
75
|
+
};
|
|
70
76
|
var FREQUENTLY_USED_MAX = 16;
|
|
71
77
|
var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
72
78
|
var onSelection = _ref.onSelection,
|
|
@@ -141,6 +147,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
141
147
|
}, []);
|
|
142
148
|
var openTime = useRef(0);
|
|
143
149
|
var isMounting = useRef(true);
|
|
150
|
+
var lastNonSearchCategory = useRef(activeCategory);
|
|
144
151
|
var previousEmojiProvider = useRef(emojiProvider);
|
|
145
152
|
var isProgrammaticScroll = useRef(false);
|
|
146
153
|
var pickerRef = useRef(null);
|
|
@@ -182,8 +189,11 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
182
189
|
}
|
|
183
190
|
if (activeCategory !== category) {
|
|
184
191
|
setActiveCategory(category);
|
|
192
|
+
if (!query && fg('platform_emoji_picker_refresh')) {
|
|
193
|
+
lastNonSearchCategory.current = category;
|
|
194
|
+
}
|
|
185
195
|
}
|
|
186
|
-
}, [activeCategory, uploading, emojiToDelete]);
|
|
196
|
+
}, [activeCategory, uploading, emojiToDelete, query]);
|
|
187
197
|
var calculateElapsedTime = function calculateElapsedTime() {
|
|
188
198
|
return Date.now() - openTime.current;
|
|
189
199
|
};
|
|
@@ -400,6 +410,10 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
400
410
|
source: SearchSourceTypes.PICKER
|
|
401
411
|
};
|
|
402
412
|
if (searchQuery !== query) {
|
|
413
|
+
// Capture the active category before entering search so we can keep it highlighted
|
|
414
|
+
if (!query && searchQuery && fg('platform_emoji_picker_refresh')) {
|
|
415
|
+
lastNonSearchCategory.current = activeCategory;
|
|
416
|
+
}
|
|
403
417
|
setQuery(searchQuery);
|
|
404
418
|
}
|
|
405
419
|
updateEmojis(searchQuery, options);
|
|
@@ -407,7 +421,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
407
421
|
// scroll to top when search, which is search results section
|
|
408
422
|
scrollToTopOfList();
|
|
409
423
|
}
|
|
410
|
-
}, [query, filteredEmojis, selectedTone, updateEmojis, scrollToTopOfList]);
|
|
424
|
+
}, [activeCategory, query, filteredEmojis, selectedTone, updateEmojis, scrollToTopOfList]);
|
|
411
425
|
|
|
412
426
|
// When the upload screen is open, intercept any file drag at the window level so it
|
|
413
427
|
// cannot reach underlying page drop handlers (e.g. the Confluence editor).
|
|
@@ -628,7 +642,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
628
642
|
role: "dialog",
|
|
629
643
|
"aria-label": formatMessage(messages.emojiPickerTitle),
|
|
630
644
|
"aria-modal": true,
|
|
631
|
-
className: ax([fg('platform_emoji_picker_refresh') ? "_19itahnd _2rko1mok _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iuxo9 _1bsb10mj _1ul910mj _c71l1y6z _kqswh2mm" : "_19itahnd _2rkofajl _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iuxo9 _1bsb10mj _1ul910mj _c71l1y6z _kqswh2mm", !!emojiToDelete && fg('platform_emoji_picker_refresh') ? withDeleteRefreshHeight[size] : uploading && fg('platform_emoji_picker_refresh') ? withUploadRefreshHeight[size] : showPreview ? withPreviewHeight[size] : withoutPreviewHeight[size]]),
|
|
645
|
+
className: ax([fg('platform_emoji_picker_refresh') ? "_19itahnd _2rko1mok _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iuxo9 _1bsb10mj _1ul910mj _c71l1y6z _kqswh2mm" : "_19itahnd _2rkofajl _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iuxo9 _1bsb10mj _1ul910mj _c71l1y6z _kqswh2mm", !!emojiToDelete && fg('platform_emoji_picker_refresh') ? withDeleteRefreshHeight[size] : uploading && fg('platform_emoji_picker_refresh') ? withUploadRefreshHeight[size] : query && filteredEmojis.length === 0 && fg('platform_emoji_picker_refresh') ? withNoResultsRefreshHeight[size] : showPreview ? withPreviewHeight[size] : withoutPreviewHeight[size]]),
|
|
632
646
|
style: {
|
|
633
647
|
"--_19dn98e": ix("".concat(emojiPickerHeight, "px")),
|
|
634
648
|
"--_gsvyy7": ix("".concat(emojiPickerWidth, "px"))
|
|
@@ -673,7 +687,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
673
687
|
onOpenUpload: onOpenUpload,
|
|
674
688
|
size: size,
|
|
675
689
|
activeCategoryId: activeCategory
|
|
676
|
-
}), showPreview && !(emojiToDelete && fg('platform_emoji_picker_refresh')) && /*#__PURE__*/React.createElement(EmojiPickerFooter, {
|
|
690
|
+
}), showPreview && !(emojiToDelete && fg('platform_emoji_picker_refresh')) && !(query && filteredEmojis.length === 0 && fg('platform_emoji_picker_refresh')) && /*#__PURE__*/React.createElement(EmojiPickerFooter, {
|
|
677
691
|
selectedEmoji: selectedEmoji,
|
|
678
692
|
uploadEnabled: isUploadSupported && !uploading,
|
|
679
693
|
onOpenUpload: onOpenUpload
|
|
@@ -688,7 +702,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
688
702
|
onKeyPress: suppressKeyPress,
|
|
689
703
|
onKeyUp: suppressKeyPress,
|
|
690
704
|
onKeyDown: suppressKeyPress,
|
|
691
|
-
className: ax([fg('platform_emoji_picker_refresh') ? "_19itahnd _2rko1mok _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iuxo9 _1bsb10mj _1ul910mj _c71l1y6z _kqswh2mm" : "_19itahnd _2rkofajl _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iuxo9 _1bsb10mj _1ul910mj _c71l1y6z _kqswh2mm", !!emojiToDelete && fg('platform_emoji_picker_refresh') ? withDeleteRefreshHeight[size] : uploading && fg('platform_emoji_picker_refresh') ? withUploadRefreshHeight[size] : showPreview ? withPreviewHeight[size] : withoutPreviewHeight[size]]),
|
|
705
|
+
className: ax([fg('platform_emoji_picker_refresh') ? "_19itahnd _2rko1mok _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iuxo9 _1bsb10mj _1ul910mj _c71l1y6z _kqswh2mm" : "_19itahnd _2rkofajl _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qs130s _4t3iuxo9 _1bsb10mj _1ul910mj _c71l1y6z _kqswh2mm", !!emojiToDelete && fg('platform_emoji_picker_refresh') ? withDeleteRefreshHeight[size] : uploading && fg('platform_emoji_picker_refresh') ? withUploadRefreshHeight[size] : query && filteredEmojis.length === 0 && fg('platform_emoji_picker_refresh') ? withNoResultsRefreshHeight[size] : showPreview ? withPreviewHeight[size] : withoutPreviewHeight[size]]),
|
|
692
706
|
style: {
|
|
693
707
|
"--_19dn98e": ix("".concat(emojiPickerHeight, "px")),
|
|
694
708
|
"--_gsvyy7": ix("".concat(emojiPickerWidth, "px"))
|
|
@@ -727,7 +741,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
727
741
|
onOpenUpload: onOpenUpload,
|
|
728
742
|
size: size,
|
|
729
743
|
activeCategoryId: activeCategory
|
|
730
|
-
}), showPreview && !(emojiToDelete && fg('platform_emoji_picker_refresh')) && /*#__PURE__*/React.createElement(EmojiPickerFooter, {
|
|
744
|
+
}), showPreview && !(emojiToDelete && fg('platform_emoji_picker_refresh')) && !(query && filteredEmojis.length === 0 && fg('platform_emoji_picker_refresh')) && /*#__PURE__*/React.createElement(EmojiPickerFooter, {
|
|
731
745
|
selectedEmoji: selectedEmoji,
|
|
732
746
|
uploadEnabled: isUploadSupported && !uploading,
|
|
733
747
|
onOpenUpload: onOpenUpload
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import { useIntl } from 'react-intl';
|
|
3
4
|
import React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
4
5
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
5
6
|
import { customCategory, defaultEmojiPickerSize, frequentCategory, searchCategory, userCustomTitle, yourUploadsCategory } from '../../util/constants';
|
|
6
7
|
import { CategoryDescriptionMap, CategoryDescriptionMapNew } from './categories';
|
|
7
8
|
import CategoryTracker from './CategoryTracker';
|
|
8
9
|
import { sizes } from './EmojiPickerSizes';
|
|
9
|
-
import { CategoryHeadingItem, EmojisRowItem, LoadingItem, virtualItemRenderer } from './EmojiPickerVirtualItems';
|
|
10
|
+
import { CategoryHeadingItem, EmojisRowItem, LoadingItem, NoResultsItem, virtualItemRenderer } from './EmojiPickerVirtualItems';
|
|
10
11
|
import EmojiActions from '../common/EmojiActions';
|
|
11
12
|
import { emojiPickerHeightOffset, scrollToRow as _scrollToRow } from './utils';
|
|
12
13
|
import { VirtualList } from './VirtualList';
|
|
13
14
|
import { EmojiPickerListContextProvider } from '../../context/EmojiPickerListContext';
|
|
14
15
|
import EmojiPickerTabPanel from './EmojiPickerTabPanel';
|
|
16
|
+
import { messages } from '../i18n';
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
19
|
* Test id for wrapper Emoji Picker List div
|
|
@@ -60,6 +62,8 @@ export var EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef(functi
|
|
|
60
62
|
onFileChooserClicked = props.onFileChooserClicked,
|
|
61
63
|
onOpenUpload = props.onOpenUpload,
|
|
62
64
|
activeCategoryId = props.activeCategoryId;
|
|
65
|
+
var _useIntl = useIntl(),
|
|
66
|
+
formatMessage = _useIntl.formatMessage;
|
|
63
67
|
var listRef = useRef(null);
|
|
64
68
|
var _useState = useState([]),
|
|
65
69
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -177,14 +181,27 @@ export var EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef(functi
|
|
|
177
181
|
items.push(new LoadingItem());
|
|
178
182
|
} else {
|
|
179
183
|
if (query) {
|
|
180
|
-
var search = CategoryDescriptionMap.SEARCH;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
184
|
+
var search = fg('platform_emoji_picker_refresh') ? CategoryDescriptionMapNew.SEARCH : CategoryDescriptionMap.SEARCH;
|
|
185
|
+
if (emojis.length === 0 && fg('platform_emoji_picker_refresh')) {
|
|
186
|
+
// Show a "No results" category heading, then a no-results illustration below it
|
|
187
|
+
items.push(new CategoryHeadingItem({
|
|
188
|
+
id: searchCategory,
|
|
189
|
+
title: formatMessage(messages.emojiPickerNoResults),
|
|
190
|
+
className: categoryClassname
|
|
191
|
+
}));
|
|
192
|
+
items.push(new NoResultsItem({
|
|
193
|
+
onOpenUpload: onOpenUpload,
|
|
194
|
+
uploadEnabled: uploadEnabled
|
|
195
|
+
}));
|
|
196
|
+
} else {
|
|
197
|
+
// Only a single "result" category
|
|
198
|
+
items = [].concat(_toConsumableArray(items), _toConsumableArray(buildVirtualItemFromGroup({
|
|
199
|
+
category: searchCategory,
|
|
200
|
+
title: search.name,
|
|
201
|
+
emojis: emojis,
|
|
202
|
+
order: search.order
|
|
203
|
+
})));
|
|
204
|
+
}
|
|
188
205
|
} else {
|
|
189
206
|
// Group by category
|
|
190
207
|
|
|
@@ -209,7 +226,7 @@ export var EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef(functi
|
|
|
209
226
|
}
|
|
210
227
|
}
|
|
211
228
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
212
|
-
}, [allEmojiGroups, loading, query, emojis]);
|
|
229
|
+
}, [allEmojiGroups, loading, query, emojis, onOpenUpload, uploadEnabled, formatMessage]);
|
|
213
230
|
var findCategoryToActivate = function findCategoryToActivate(row) {
|
|
214
231
|
var category = null;
|
|
215
232
|
if (row instanceof CategoryHeadingItem) {
|
|
@@ -319,8 +336,12 @@ export var EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef(functi
|
|
|
319
336
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
320
337
|
}, [virtualItems, categoriesChanged]);
|
|
321
338
|
var virtualListHeight = useMemo(function () {
|
|
339
|
+
if (query && emojis.length === 0 && fg('platform_emoji_picker_refresh')) {
|
|
340
|
+
// No-results state: expand the list height to fit heading + illustration without scrolling
|
|
341
|
+
return sizes.categoryHeadingHeight + sizes.noResultsHeight + emojiPickerHeightOffset(size);
|
|
342
|
+
}
|
|
322
343
|
return fg('platform_emoji_picker_refresh') ? sizes.listHeightNew + emojiPickerHeightOffset(size) : sizes.listHeight + emojiPickerHeightOffset(size);
|
|
323
|
-
}, [size]);
|
|
344
|
+
}, [size, query, emojis.length]);
|
|
324
345
|
return /*#__PURE__*/React.createElement(EmojiPickerTabPanel, {
|
|
325
346
|
showSearchResults: !!query
|
|
326
347
|
}, /*#__PURE__*/React.createElement(EmojiActions, {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
._zulppxbi{gap:var(--ds-space-200,1pc)}._19bvpxbi{padding-left:var(--ds-space-200,1pc)}
|
|
3
|
+
._1bah1h6o{justify-content:center}
|
|
4
|
+
._1bsb1osq{width:100%}
|
|
5
|
+
._1e0c1txw{display:flex}
|
|
6
|
+
._2lx21bp4{flex-direction:column}
|
|
7
|
+
._4cvr1h6o{align-items:center}
|
|
8
|
+
._ca0q1ejb{padding-top:var(--ds-space-300,24px)}
|
|
9
|
+
._n3td1ejb{padding-bottom:var(--ds-space-300,24px)}
|
|
10
|
+
._u5f3pxbi{padding-right:var(--ds-space-200,1pc)}
|
|
11
|
+
._vchhusvi{box-sizing:border-box}
|
|
12
|
+
._y3gn1h6o{text-align:center}
|