mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-16 13:40:24 +02:00
add localization to drag/ctx preview
This commit is contained in:
@@ -137,7 +137,8 @@
|
|||||||
"explicit": "explicit",
|
"explicit": "explicit",
|
||||||
"clean": "clean",
|
"clean": "clean",
|
||||||
"gridRows": "grid rows",
|
"gridRows": "grid rows",
|
||||||
"tableColumns": "table columns"
|
"tableColumns": "table columns",
|
||||||
|
"itemsMore": "{{count}} more"
|
||||||
},
|
},
|
||||||
"entity": {
|
"entity": {
|
||||||
"album_one": "album",
|
"album_one": "album",
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
import { memo } from 'react';
|
import { memo } from 'react';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
|
|
||||||
import styles from './context-menu-preview.module.css';
|
import styles from './context-menu-preview.module.css';
|
||||||
|
|
||||||
import { Icon } from '/@/shared/components/icon/icon';
|
import { Icon } from '/@/shared/components/icon/icon';
|
||||||
|
import { Text } from '/@/shared/components/text/text';
|
||||||
import { LibraryItem } from '/@/shared/types/domain-types';
|
import { LibraryItem } from '/@/shared/types/domain-types';
|
||||||
|
|
||||||
interface ContextMenuPreviewProps {
|
interface ContextMenuPreviewProps {
|
||||||
@@ -32,6 +34,7 @@ const getItemImage = (item: unknown): null | string => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const ContextMenuPreview = memo(({ items, itemType }: ContextMenuPreviewProps) => {
|
export const ContextMenuPreview = memo(({ items, itemType }: ContextMenuPreviewProps) => {
|
||||||
|
const { t } = useTranslation();
|
||||||
const itemCount = items.length;
|
const itemCount = items.length;
|
||||||
const firstItem = items[0];
|
const firstItem = items[0];
|
||||||
const itemName = firstItem ? getItemName(firstItem) : 'Item';
|
const itemName = firstItem ? getItemName(firstItem) : 'Item';
|
||||||
@@ -68,8 +71,14 @@ export const ContextMenuPreview = memo(({ items, itemType }: ContextMenuPreviewP
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className={styles.textContainer}>
|
<div className={styles.textContainer}>
|
||||||
<div className={styles.name}>{itemName}</div>
|
<Text className={styles.name} isNoSelect>
|
||||||
{isMultiple && <div className={styles.count}>+{itemCount - 1} more</div>}
|
{itemName}
|
||||||
|
</Text>
|
||||||
|
{isMultiple && (
|
||||||
|
<Text className={styles.count} isNoSelect>
|
||||||
|
+{t('common.itemsMore', { count: itemCount - 1 })}
|
||||||
|
</Text>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -101,6 +101,7 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: var(--theme-spacing-xs);
|
gap: var(--theme-spacing-xs);
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { memo } from 'react';
|
import { memo } from 'react';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
|
|
||||||
import styles from './drag-preview.module.css';
|
import styles from './drag-preview.module.css';
|
||||||
|
|
||||||
@@ -33,6 +34,7 @@ const getItemImage = (item: unknown): null | string => {
|
|||||||
|
|
||||||
export const DragPreview = memo(({ data }: DragPreviewProps) => {
|
export const DragPreview = memo(({ data }: DragPreviewProps) => {
|
||||||
const items = data.item || [];
|
const items = data.item || [];
|
||||||
|
const { t } = useTranslation();
|
||||||
const itemCount = items.length;
|
const itemCount = items.length;
|
||||||
const firstItem = items[0];
|
const firstItem = items[0];
|
||||||
const itemName = firstItem ? getItemName(firstItem) : 'Item';
|
const itemName = firstItem ? getItemName(firstItem) : 'Item';
|
||||||
@@ -66,7 +68,11 @@ export const DragPreview = memo(({ data }: DragPreviewProps) => {
|
|||||||
)}
|
)}
|
||||||
<div className={styles['text-container']}>
|
<div className={styles['text-container']}>
|
||||||
<div className={styles.name}>{itemName}</div>
|
<div className={styles.name}>{itemName}</div>
|
||||||
{isMultiple && <div className={styles.count}>+{itemCount - 1} more</div>}
|
{isMultiple && (
|
||||||
|
<div className={styles.count}>
|
||||||
|
+{t('common.itemsMore', { count: itemCount - 1 })}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user