🐛(frontend) fix callout emoji list
Removing explicit categories prop from EmojiPicker to let emoji-mart manage categories and avoid mismatch causing runtime error with locales.
This commit is contained in:
@@ -25,6 +25,10 @@ and this project adheres to
|
|||||||
- #1341
|
- #1341
|
||||||
- ♻️(tilt) use helm dev-backend chart
|
- ♻️(tilt) use helm dev-backend chart
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- 🐛(frontend) fix callout emoji list #1366
|
||||||
|
|
||||||
## [3.6.0] - 2025-09-04
|
## [3.6.0] - 2025-09-04
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -703,8 +703,20 @@ test.describe('Doc Editor', () => {
|
|||||||
const emojiButton = calloutBlock.getByRole('button');
|
const emojiButton = calloutBlock.getByRole('button');
|
||||||
await expect(emojiButton).toHaveText('💡');
|
await expect(emojiButton).toHaveText('💡');
|
||||||
await emojiButton.click();
|
await emojiButton.click();
|
||||||
await page.locator('button[aria-label="⚠️"]').click();
|
// Group smiley
|
||||||
await expect(emojiButton).toHaveText('⚠️');
|
await expect(page.getByRole('button', { name: '🤠' })).toBeVisible();
|
||||||
|
// Group animals
|
||||||
|
await page.getByText('Animals & Nature').scrollIntoViewIfNeeded();
|
||||||
|
await expect(page.getByRole('button', { name: '🦆' })).toBeVisible();
|
||||||
|
// Group travel
|
||||||
|
await page.getByText('Travel & Places').scrollIntoViewIfNeeded();
|
||||||
|
await expect(page.getByRole('button', { name: '🚝' })).toBeVisible();
|
||||||
|
// Group objects
|
||||||
|
await page.getByText('Objects').scrollIntoViewIfNeeded();
|
||||||
|
await expect(page.getByRole('button', { name: '🪇' })).toBeVisible();
|
||||||
|
// Group symbol
|
||||||
|
await page.getByText('Symbols').scrollIntoViewIfNeeded();
|
||||||
|
await expect(page.getByRole('button', { name: '🛃' })).toBeVisible();
|
||||||
|
|
||||||
await page.locator('.bn-side-menu > button').last().click();
|
await page.locator('.bn-side-menu > button').last().click();
|
||||||
await page.locator('.mantine-Menu-dropdown > button').last().click();
|
await page.locator('.mantine-Menu-dropdown > button').last().click();
|
||||||
|
|||||||
@@ -7,14 +7,12 @@ import { Box } from '@/components';
|
|||||||
|
|
||||||
interface EmojiPickerProps {
|
interface EmojiPickerProps {
|
||||||
emojiData: EmojiMartData;
|
emojiData: EmojiMartData;
|
||||||
categories: string[];
|
|
||||||
onClickOutside: () => void;
|
onClickOutside: () => void;
|
||||||
onEmojiSelect: ({ native }: { native: string }) => void;
|
onEmojiSelect: ({ native }: { native: string }) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const EmojiPicker = ({
|
export const EmojiPicker = ({
|
||||||
emojiData,
|
emojiData,
|
||||||
categories,
|
|
||||||
onClickOutside,
|
onClickOutside,
|
||||||
onEmojiSelect,
|
onEmojiSelect,
|
||||||
}: EmojiPickerProps) => {
|
}: EmojiPickerProps) => {
|
||||||
@@ -24,7 +22,6 @@ export const EmojiPicker = ({
|
|||||||
<Box $position="absolute" $zIndex={1000} $margin="2rem 0 0 0">
|
<Box $position="absolute" $zIndex={1000} $margin="2rem 0 0 0">
|
||||||
<Picker
|
<Picker
|
||||||
data={emojiData}
|
data={emojiData}
|
||||||
categories={categories}
|
|
||||||
locale={i18n.resolvedLanguage}
|
locale={i18n.resolvedLanguage}
|
||||||
navPosition="none"
|
navPosition="none"
|
||||||
onClickOutside={onClickOutside}
|
onClickOutside={onClickOutside}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { Box, BoxButton, Icon } from '@/components';
|
|||||||
import { DocsBlockNoteEditor } from '../../types';
|
import { DocsBlockNoteEditor } from '../../types';
|
||||||
import { EmojiPicker } from '../EmojiPicker';
|
import { EmojiPicker } from '../EmojiPicker';
|
||||||
|
|
||||||
import InitEmojiCallout from './initEmojiCallout';
|
import emojidata from './initEmojiCallout';
|
||||||
|
|
||||||
export const CalloutBlock = createReactBlockSpec(
|
export const CalloutBlock = createReactBlockSpec(
|
||||||
{
|
{
|
||||||
@@ -79,8 +79,7 @@ export const CalloutBlock = createReactBlockSpec(
|
|||||||
|
|
||||||
{openEmojiPicker && (
|
{openEmojiPicker && (
|
||||||
<EmojiPicker
|
<EmojiPicker
|
||||||
emojiData={InitEmojiCallout.emojidata}
|
emojiData={emojidata}
|
||||||
categories={InitEmojiCallout.calloutCategories}
|
|
||||||
onClickOutside={onClickOutside}
|
onClickOutside={onClickOutside}
|
||||||
onEmojiSelect={onEmojiSelect}
|
onEmojiSelect={onEmojiSelect}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -56,21 +56,4 @@ if (!emojidata.categories.some((c) => c.id === CALLOUT_ID)) {
|
|||||||
|
|
||||||
void init({ data: emojidata });
|
void init({ data: emojidata });
|
||||||
|
|
||||||
const calloutCategories = [
|
export default emojidata;
|
||||||
'callout',
|
|
||||||
'people',
|
|
||||||
'nature',
|
|
||||||
'foods',
|
|
||||||
'activity',
|
|
||||||
'places',
|
|
||||||
'flags',
|
|
||||||
'objects',
|
|
||||||
'symbols',
|
|
||||||
];
|
|
||||||
|
|
||||||
const calloutEmojiData = {
|
|
||||||
emojidata,
|
|
||||||
calloutCategories,
|
|
||||||
};
|
|
||||||
|
|
||||||
export default calloutEmojiData;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user