mirror of
https://github.com/plankanban/planka.git
synced 2025-12-24 17:25:00 +03:00
feat: Enhance card actions menu with separators and action bar
This commit is contained in:
@@ -114,6 +114,103 @@ const CardActionsStep = React.memo(({ cardId, defaultStep, onNameEdit, onClose }
|
||||
const [t] = useTranslation();
|
||||
const [step, openStep, handleBack] = useSteps(defaultStep || null);
|
||||
|
||||
const withActionBar = useMemo(() => {
|
||||
let menuItemsTotal = 0;
|
||||
let actionBarItemsTotal = 0;
|
||||
|
||||
if (card.type === CardTypes.PROJECT && canUseMembers) menuItemsTotal += 1;
|
||||
if (canUseLabels) menuItemsTotal += 1;
|
||||
if (card.type !== CardTypes.PROJECT && canUseMembers) menuItemsTotal += 1;
|
||||
if (card.type === CardTypes.PROJECT && canEditDueDate) menuItemsTotal += 1;
|
||||
if (card.type === CardTypes.PROJECT && canEditStopwatch) menuItemsTotal += 1;
|
||||
if (canEditName) menuItemsTotal += 1;
|
||||
if (!board.limitCardTypesToDefaultOne && canEditType) menuItemsTotal += 1;
|
||||
if (canDuplicate) menuItemsTotal += 1;
|
||||
if (canMove) menuItemsTotal += 1;
|
||||
if (prevList && canRestore) menuItemsTotal += 1;
|
||||
|
||||
if (canCopy) {
|
||||
menuItemsTotal += 1;
|
||||
actionBarItemsTotal += 1;
|
||||
}
|
||||
if (canCut) {
|
||||
menuItemsTotal += 1;
|
||||
actionBarItemsTotal += 1;
|
||||
}
|
||||
if (list.type !== ListTypes.ARCHIVE && canArchive) {
|
||||
menuItemsTotal += 1;
|
||||
actionBarItemsTotal += 1;
|
||||
}
|
||||
if (canDelete) {
|
||||
menuItemsTotal += 1;
|
||||
actionBarItemsTotal += 1;
|
||||
}
|
||||
|
||||
return menuItemsTotal > 4 && actionBarItemsTotal > 1;
|
||||
}, [
|
||||
board.limitCardTypesToDefaultOne,
|
||||
card.type,
|
||||
list.type,
|
||||
prevList,
|
||||
canEditType,
|
||||
canEditName,
|
||||
canEditDueDate,
|
||||
canEditStopwatch,
|
||||
canCopy,
|
||||
canCut,
|
||||
canDuplicate,
|
||||
canMove,
|
||||
canRestore,
|
||||
canArchive,
|
||||
canDelete,
|
||||
canUseMembers,
|
||||
canUseLabels,
|
||||
]);
|
||||
|
||||
const hasTopSection = useMemo(() => {
|
||||
return (
|
||||
(card.type === CardTypes.PROJECT && canUseMembers) ||
|
||||
canUseLabels ||
|
||||
(card.type !== CardTypes.PROJECT && canUseMembers) ||
|
||||
(card.type === CardTypes.PROJECT && canEditDueDate) ||
|
||||
(card.type === CardTypes.PROJECT && canEditStopwatch) ||
|
||||
canEditName ||
|
||||
(!board.limitCardTypesToDefaultOne && canEditType)
|
||||
);
|
||||
}, [
|
||||
board.limitCardTypesToDefaultOne,
|
||||
card.type,
|
||||
canEditType,
|
||||
canEditName,
|
||||
canEditDueDate,
|
||||
canEditStopwatch,
|
||||
canUseMembers,
|
||||
canUseLabels,
|
||||
]);
|
||||
|
||||
const hasBottomSection = useMemo(() => {
|
||||
return (
|
||||
(canCopy && !withActionBar) ||
|
||||
(canCut && !withActionBar) ||
|
||||
canDuplicate ||
|
||||
canMove ||
|
||||
(prevList && canRestore) ||
|
||||
(list.type !== ListTypes.ARCHIVE && canArchive && !withActionBar) ||
|
||||
(canDelete && !withActionBar)
|
||||
);
|
||||
}, [
|
||||
list.type,
|
||||
prevList,
|
||||
canCopy,
|
||||
canCut,
|
||||
canDuplicate,
|
||||
canMove,
|
||||
canRestore,
|
||||
canArchive,
|
||||
canDelete,
|
||||
withActionBar,
|
||||
]);
|
||||
|
||||
const handleTypeSelect = useCallback(
|
||||
(type) => {
|
||||
dispatch(
|
||||
@@ -299,22 +396,6 @@ const CardActionsStep = React.memo(({ cardId, defaultStep, onNameEdit, onClose }
|
||||
</Popup.Header>
|
||||
<Popup.Content>
|
||||
<Menu secondary vertical className={styles.menu}>
|
||||
{canEditName && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleEditNameClick}>
|
||||
<Icon name="edit outline" className={styles.menuItemIcon} />
|
||||
{t('action.editTitle', {
|
||||
context: 'title',
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{!board.limitCardTypesToDefaultOne && canEditType && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleEditTypeClick}>
|
||||
<Icon name="map outline" className={styles.menuItemIcon} />
|
||||
{t('action.editType', {
|
||||
context: 'title',
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{card.type === CardTypes.PROJECT && canUseMembers && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleMembersClick}>
|
||||
<Icon name="user outline" className={styles.menuItemIcon} />
|
||||
@@ -331,7 +412,7 @@ const CardActionsStep = React.memo(({ cardId, defaultStep, onNameEdit, onClose }
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{card.type === CardTypes.STORY && canUseMembers && (
|
||||
{card.type !== CardTypes.PROJECT && canUseMembers && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleMembersClick}>
|
||||
<Icon name="user outline" className={styles.menuItemIcon} />
|
||||
{t('common.members', {
|
||||
@@ -355,7 +436,24 @@ const CardActionsStep = React.memo(({ cardId, defaultStep, onNameEdit, onClose }
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{canCopy && (
|
||||
{canEditName && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleEditNameClick}>
|
||||
<Icon name="edit outline" className={styles.menuItemIcon} />
|
||||
{t('action.editTitle', {
|
||||
context: 'title',
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{!board.limitCardTypesToDefaultOne && canEditType && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleEditTypeClick}>
|
||||
<Icon name="map outline" className={styles.menuItemIcon} />
|
||||
{t('action.editType', {
|
||||
context: 'title',
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{hasTopSection && hasBottomSection && <hr className={styles.divider} />}
|
||||
{canCopy && !withActionBar && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleCopyClick}>
|
||||
<Icon name="copy outline" className={styles.menuItemIcon} />
|
||||
{t('action.copyCard', {
|
||||
@@ -363,7 +461,7 @@ const CardActionsStep = React.memo(({ cardId, defaultStep, onNameEdit, onClose }
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{canCut && (
|
||||
{canCut && !withActionBar && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleCutClick}>
|
||||
<Icon name="cut" className={styles.menuItemIcon} />
|
||||
{t('action.cutCard', {
|
||||
@@ -396,7 +494,7 @@ const CardActionsStep = React.memo(({ cardId, defaultStep, onNameEdit, onClose }
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{list.type !== ListTypes.ARCHIVE && canArchive && (
|
||||
{list.type !== ListTypes.ARCHIVE && canArchive && !withActionBar && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleArchiveClick}>
|
||||
<Icon name="folder open outline" className={styles.menuItemIcon} />
|
||||
{t('action.archiveCard', {
|
||||
@@ -404,7 +502,7 @@ const CardActionsStep = React.memo(({ cardId, defaultStep, onNameEdit, onClose }
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{canDelete && (
|
||||
{canDelete && !withActionBar && (
|
||||
<Menu.Item className={styles.menuItem} onClick={handleDeleteClick}>
|
||||
<Icon name="trash alternate outline" className={styles.menuItemIcon} />
|
||||
{isInTrashList
|
||||
@@ -416,6 +514,69 @@ const CardActionsStep = React.memo(({ cardId, defaultStep, onNameEdit, onClose }
|
||||
})}
|
||||
</Menu.Item>
|
||||
)}
|
||||
{withActionBar && (
|
||||
<>
|
||||
<hr className={styles.divider} />
|
||||
<div className={styles.actionBar}>
|
||||
{canCopy && (
|
||||
/* eslint-disable-next-line jsx-a11y/anchor-is-valid,
|
||||
jsx-a11y/click-events-have-key-events,
|
||||
jsx-a11y/no-static-element-interactions */
|
||||
<a className={styles.actionBarItem} onClick={handleCopyClick}>
|
||||
<Icon fitted name="copy outline" />
|
||||
<span className={styles.actionBarItemText}>
|
||||
{t('action.copy', {
|
||||
context: 'title',
|
||||
})}
|
||||
</span>
|
||||
</a>
|
||||
)}
|
||||
{canCut && (
|
||||
/* eslint-disable-next-line jsx-a11y/anchor-is-valid,
|
||||
jsx-a11y/click-events-have-key-events,
|
||||
jsx-a11y/no-static-element-interactions */
|
||||
<a className={styles.actionBarItem} onClick={handleCutClick}>
|
||||
<Icon fitted name="cut" />
|
||||
<span className={styles.actionBarItemText}>
|
||||
{t('action.cut', {
|
||||
context: 'title',
|
||||
})}
|
||||
</span>
|
||||
</a>
|
||||
)}
|
||||
{list.type !== ListTypes.ARCHIVE && canArchive && (
|
||||
/* eslint-disable-next-line jsx-a11y/anchor-is-valid,
|
||||
jsx-a11y/click-events-have-key-events,
|
||||
jsx-a11y/no-static-element-interactions */
|
||||
<a className={styles.actionBarItem} onClick={handleArchiveClick}>
|
||||
<Icon fitted name="archive" />
|
||||
<span className={styles.actionBarItemText}>
|
||||
{t('action.archive', {
|
||||
context: 'title',
|
||||
})}
|
||||
</span>
|
||||
</a>
|
||||
)}
|
||||
{canDelete && (
|
||||
/* eslint-disable-next-line jsx-a11y/anchor-is-valid,
|
||||
jsx-a11y/click-events-have-key-events,
|
||||
jsx-a11y/no-static-element-interactions */
|
||||
<a className={styles.actionBarItem} onClick={handleDeleteClick}>
|
||||
<Icon fitted name="trash alternate outline" />
|
||||
<span className={styles.actionBarItemText}>
|
||||
{isInTrashList
|
||||
? t('action.deleteForever', {
|
||||
context: 'title',
|
||||
})
|
||||
: t('action.delete', {
|
||||
context: 'title',
|
||||
})}
|
||||
</span>
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</Menu>
|
||||
</Popup.Content>
|
||||
</>
|
||||
|
||||
@@ -4,6 +4,47 @@
|
||||
*/
|
||||
|
||||
:global(#app) {
|
||||
.actionBar {
|
||||
display: flex;
|
||||
margin: -7px 0;
|
||||
}
|
||||
|
||||
.actionBarItem {
|
||||
color: rgba(0, 0, 0, 0.87);
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
font-size: 13px;
|
||||
padding: 6px;
|
||||
row-gap: 6px;
|
||||
user-select: none;
|
||||
|
||||
&:not(:last-child) {
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
color: rgba(0, 0, 0, 0.95);
|
||||
}
|
||||
}
|
||||
|
||||
.actionBarItemText {
|
||||
display: -webkit-box;
|
||||
line-clamp: 2;
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.divider {
|
||||
background: #eee;
|
||||
border: 0;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.menu {
|
||||
margin: 0 -12px -5px;
|
||||
width: calc(100% + 24px);
|
||||
|
||||
@@ -386,6 +386,7 @@ export default {
|
||||
archiveCards_title: 'أرشفة البطاقات',
|
||||
assignAsOwner: 'تعيين كمالك',
|
||||
cancel: 'إلغاء',
|
||||
copy: 'نسخ',
|
||||
copyCard_title: 'نسخ البطاقة',
|
||||
createApiKey: 'إنشاء مفتاح API',
|
||||
createBoard: 'إنشاء لوحة',
|
||||
@@ -394,6 +395,7 @@ export default {
|
||||
createLabel: 'إنشاء ملصق',
|
||||
createNewLabel: 'إنشاء ملصق جديد',
|
||||
createProject: 'إنشاء مشروع',
|
||||
cut: 'قص',
|
||||
cutCard_title: 'قص البطاقة',
|
||||
deactivateUser: 'إلغاء تفعيل المستخدم',
|
||||
deactivateUser_title: 'إلغاء تفعيل المستخدم',
|
||||
|
||||
@@ -401,6 +401,7 @@ export default {
|
||||
archiveCards_title: 'Архивиране на карти',
|
||||
assignAsOwner: 'Назначаване като собственик',
|
||||
cancel: 'Отказ',
|
||||
copy: 'Копиране',
|
||||
copyCard_title: 'Копиране на карта',
|
||||
createApiKey: 'Създаване на API ключ',
|
||||
createBoard: 'Създаване на табло',
|
||||
@@ -409,6 +410,7 @@ export default {
|
||||
createLabel: 'Създаване на етикет',
|
||||
createNewLabel: 'Създаване на нов етикет',
|
||||
createProject: 'Създаване на проект',
|
||||
cut: 'Изрязване',
|
||||
cutCard_title: 'Изрязване на карта',
|
||||
deactivateUser: 'Деактивиране на потребител',
|
||||
deactivateUser_title: 'Деактивиране на потребител',
|
||||
|
||||
@@ -403,6 +403,7 @@ export default {
|
||||
archiveCards_title: 'Arxivar targetes',
|
||||
assignAsOwner: 'Assignar com a propietari',
|
||||
cancel: 'Cancel·lar',
|
||||
copy: 'Copiar',
|
||||
copyCard_title: 'Copiar targeta',
|
||||
createApiKey: 'Crear clau API',
|
||||
createBoard: 'Crear tauler',
|
||||
@@ -411,6 +412,7 @@ export default {
|
||||
createLabel: 'Crear etiqueta',
|
||||
createNewLabel: 'Crear nova etiqueta',
|
||||
createProject: 'Crear projecte',
|
||||
cut: 'Tallar',
|
||||
cutCard_title: 'Tallar targeta',
|
||||
deactivateUser: 'Desactivar usuari',
|
||||
deactivateUser_title: 'Desactivar usuari',
|
||||
|
||||
@@ -391,6 +391,7 @@ export default {
|
||||
archiveCards_title: 'Archiv karet',
|
||||
assignAsOwner: 'Přiřadit jako vlastníka',
|
||||
cancel: 'Zrušit',
|
||||
copy: 'Kopírovat',
|
||||
copyCard_title: 'Kopírovat kartu',
|
||||
createApiKey: 'Vytvořit API klíč',
|
||||
createBoard: 'Vytvořit nástěnku',
|
||||
@@ -399,6 +400,7 @@ export default {
|
||||
createLabel: 'Vytvořit štítek',
|
||||
createNewLabel: 'Vytvořit nový štítek',
|
||||
createProject: 'Vytvořit projekt',
|
||||
cut: 'Vyjmout',
|
||||
cutCard_title: 'Vyjmout kartu',
|
||||
deactivateUser: 'Deaktivace uživatele',
|
||||
deactivateUser_title: 'Deaktivace uživatele',
|
||||
|
||||
@@ -397,6 +397,7 @@ export default {
|
||||
archiveCards_title: 'Arkivér kort',
|
||||
assignAsOwner: 'Sæt som ejer',
|
||||
cancel: 'Annuller',
|
||||
copy: 'Kopiér',
|
||||
copyCard_title: 'Kopiér kort',
|
||||
createApiKey: 'Opret API-nøgle',
|
||||
createBoard: 'Opret tavle',
|
||||
@@ -405,6 +406,7 @@ export default {
|
||||
createLabel: 'Opret label',
|
||||
createNewLabel: 'Opret ny label',
|
||||
createProject: 'Opret projekt',
|
||||
cut: 'Klip',
|
||||
cutCard_title: 'Klip kort',
|
||||
deactivateUser: 'Deaktivér bruger',
|
||||
deactivateUser_title: 'Deaktivér bruger',
|
||||
|
||||
@@ -413,6 +413,7 @@ export default {
|
||||
archiveCards_title: 'Karten archivieren',
|
||||
assignAsOwner: 'Als Eigentümer zuweisen',
|
||||
cancel: 'Abbrechen',
|
||||
copy: 'Kopieren',
|
||||
copyCard_title: 'Karte Kopieren',
|
||||
createApiKey: 'API-Schlüssel erstellen',
|
||||
createBoard: 'Arbeitsbereich erstellen',
|
||||
@@ -421,6 +422,7 @@ export default {
|
||||
createLabel: 'Label erstellen',
|
||||
createNewLabel: 'Neues Label erstellen',
|
||||
createProject: 'Projekt erstellen',
|
||||
cut: 'Ausschneiden',
|
||||
cutCard_title: 'Karte Ausschneiden',
|
||||
deactivateUser: 'Benutzer deaktivieren',
|
||||
deactivateUser_title: 'Benutzer deaktivieren',
|
||||
|
||||
@@ -417,6 +417,7 @@ export default {
|
||||
archiveCards_title: 'Αρχειοθέτηση καρτών',
|
||||
assignAsOwner: 'Ορισμός ως ιδιοκτήτης',
|
||||
cancel: 'Ακύρωση',
|
||||
copy: 'Αντιγραφή',
|
||||
copyCard_title: 'Αντιγραφή κάρτας',
|
||||
createApiKey: 'Δημιουργία κλειδιού API',
|
||||
createBoard: 'Δημιουργία πίνακα',
|
||||
@@ -425,6 +426,7 @@ export default {
|
||||
createLabel: 'Δημιουργία ετικέτας',
|
||||
createNewLabel: 'Δημιουργία νέας ετικέτας',
|
||||
createProject: 'Δημιουργία έργου',
|
||||
cut: 'Αποκοπή',
|
||||
cutCard_title: 'Αποκοπή κάρτας',
|
||||
deactivateUser: 'Απενεργοποίηση χρήστη',
|
||||
deactivateUser_title: 'Απενεργοποίηση χρήστη',
|
||||
|
||||
@@ -393,6 +393,7 @@ export default {
|
||||
archiveCards_title: 'Archive Cards',
|
||||
assignAsOwner: 'Assign as owner',
|
||||
cancel: 'Cancel',
|
||||
copy: 'Copy',
|
||||
copyCard_title: 'Copy Card',
|
||||
createApiKey: 'Create API key',
|
||||
createBoard: 'Create board',
|
||||
@@ -401,6 +402,7 @@ export default {
|
||||
createLabel: 'Create label',
|
||||
createNewLabel: 'Create new label',
|
||||
createProject: 'Create project',
|
||||
cut: 'Cut',
|
||||
cutCard_title: 'Cut Card',
|
||||
deactivateUser: 'Deactivate user',
|
||||
deactivateUser_title: 'Deactivate User',
|
||||
|
||||
@@ -388,6 +388,7 @@ export default {
|
||||
archiveCards_title: 'Archive Cards',
|
||||
assignAsOwner: 'Assign as owner',
|
||||
cancel: 'Cancel',
|
||||
copy: 'Copy',
|
||||
copyCard_title: 'Copy Card',
|
||||
createApiKey: 'Create API key',
|
||||
createBoard: 'Create board',
|
||||
@@ -396,6 +397,7 @@ export default {
|
||||
createLabel: 'Create label',
|
||||
createNewLabel: 'Create new label',
|
||||
createProject: 'Create project',
|
||||
cut: 'Cut',
|
||||
cutCard_title: 'Cut Card',
|
||||
deactivateUser: 'Deactivate user',
|
||||
deactivateUser_title: 'Deactivate User',
|
||||
|
||||
@@ -403,6 +403,7 @@ export default {
|
||||
archiveCards_title: 'Archivar tarjetas',
|
||||
assignAsOwner: 'Asignar como propietario',
|
||||
cancel: 'Cancelar',
|
||||
copy: 'Copiar',
|
||||
copyCard_title: 'Copiar tarjeta',
|
||||
createApiKey: 'Crear clave API',
|
||||
createBoard: 'Crear tablero',
|
||||
@@ -411,6 +412,7 @@ export default {
|
||||
createLabel: 'Crear etiqueta',
|
||||
createNewLabel: 'Crear nueva etiqueta',
|
||||
createProject: 'Crear proyecto',
|
||||
cut: 'Cortar',
|
||||
cutCard_title: 'Cortar tarjeta',
|
||||
deactivateUser: 'Desactivar usuario',
|
||||
deactivateUser_title: 'Desactivar usuario',
|
||||
|
||||
@@ -395,6 +395,7 @@ export default {
|
||||
archiveCards_title: 'Arhiveeri kaardid',
|
||||
assignAsOwner: 'Määra omanikuks',
|
||||
cancel: 'Tühista',
|
||||
copy: 'Kopeeri',
|
||||
copyCard_title: 'Kopeeri kaart',
|
||||
createApiKey: 'Loo API võti',
|
||||
createBoard: 'Loo tahvel',
|
||||
@@ -403,6 +404,7 @@ export default {
|
||||
createLabel: 'Loo silt',
|
||||
createNewLabel: 'Loo uus silt',
|
||||
createProject: 'Loo projekt',
|
||||
cut: 'Lõika',
|
||||
cutCard_title: 'Lõika kaart',
|
||||
deactivateUser: 'Deaktiveeri kasutaja',
|
||||
deactivateUser_title: 'Deaktiveeri kasutaja',
|
||||
|
||||
@@ -397,6 +397,7 @@ export default {
|
||||
archiveCards_title: 'آرشیو کارتها',
|
||||
assignAsOwner: 'تعیین به عنوان مالک',
|
||||
cancel: 'لغو',
|
||||
copy: 'کپی',
|
||||
copyCard_title: 'کپی کارت',
|
||||
createApiKey: 'ایجاد کلید API',
|
||||
createBoard: 'ایجاد برد',
|
||||
@@ -405,6 +406,7 @@ export default {
|
||||
createLabel: 'ایجاد برچسب',
|
||||
createNewLabel: 'ایجاد برچسب جدید',
|
||||
createProject: 'ایجاد پروژه',
|
||||
cut: 'برش',
|
||||
cutCard_title: 'برش کارت',
|
||||
deactivateUser: 'غیرفعال کردن کاربر',
|
||||
deactivateUser_title: 'غیرفعال کردن کاربر',
|
||||
|
||||
@@ -396,6 +396,7 @@ export default {
|
||||
archiveCards_title: 'Arkistoi kortit',
|
||||
assignAsOwner: 'Aseta omistajaksi',
|
||||
cancel: 'Peruuta',
|
||||
copy: 'Kopioi',
|
||||
copyCard_title: 'Kopioi kortti',
|
||||
createApiKey: 'Luo API-avain',
|
||||
createBoard: 'Luo taulu',
|
||||
@@ -404,6 +405,7 @@ export default {
|
||||
createLabel: 'Luo tunniste',
|
||||
createNewLabel: 'Luo uusi tunniste',
|
||||
createProject: 'Luo projekti',
|
||||
cut: 'Leikkaa',
|
||||
cutCard_title: 'Leikkaa kortti',
|
||||
deactivateUser: 'Poista käyttäjä käytöstä',
|
||||
deactivateUser_title: 'Poista käyttäjä käytöstä',
|
||||
|
||||
@@ -401,6 +401,7 @@ export default {
|
||||
archiveCards_title: 'Archiver les cartes',
|
||||
assignAsOwner: 'Assigner comme propriétaire',
|
||||
cancel: 'Annuler',
|
||||
copy: 'Copier',
|
||||
copyCard_title: 'Copier la carte',
|
||||
createApiKey: 'Créer une clé API',
|
||||
createBoard: 'Créer un tableau',
|
||||
@@ -409,6 +410,7 @@ export default {
|
||||
createLabel: 'Créer une étiquette',
|
||||
createNewLabel: 'Créer une nouvelle étiquette',
|
||||
createProject: 'Créer un projet',
|
||||
cut: 'Couper',
|
||||
cutCard_title: 'Couper la carte',
|
||||
deactivateUser: 'Désactiver l’utilisateur',
|
||||
deactivateUser_title: 'Désactiver l’utilisateur',
|
||||
|
||||
@@ -395,6 +395,7 @@ export default {
|
||||
archiveCards_title: 'Archív kártyák',
|
||||
assignAsOwner: 'Hozzárendelés tulajdonosnak',
|
||||
cancel: 'Mégsem',
|
||||
copy: 'Másolás',
|
||||
copyCard_title: 'Kártya másolása',
|
||||
createApiKey: 'API kulcs létrehozása',
|
||||
createBoard: 'Tábla létrehozása',
|
||||
@@ -403,6 +404,7 @@ export default {
|
||||
createLabel: 'Címke létrehozása',
|
||||
createNewLabel: 'Új címke létrehozása',
|
||||
createProject: 'Projekt létrehozása',
|
||||
cut: 'Kivágás',
|
||||
cutCard_title: 'Kártya kivágása',
|
||||
deactivateUser: 'Felhasználó inaktiválása',
|
||||
deactivateUser_title: 'Felhasználó inaktiválása',
|
||||
|
||||
@@ -396,6 +396,7 @@ export default {
|
||||
archiveCards_title: 'Arsipkan kartu',
|
||||
assignAsOwner: 'Tetapkan sebagai pemilik',
|
||||
cancel: 'Batal',
|
||||
copy: 'Salin',
|
||||
copyCard_title: 'Salin Kartu',
|
||||
createApiKey: 'Buat kunci API',
|
||||
createBoard: 'Tambah papan',
|
||||
@@ -404,6 +405,7 @@ export default {
|
||||
createLabel: 'Tambah label',
|
||||
createNewLabel: 'Tambah label baru',
|
||||
createProject: 'Tambah proyek',
|
||||
cut: 'Potong',
|
||||
cutCard_title: 'Potong Kartu',
|
||||
deactivateUser: 'Nonaktifkan pengguna',
|
||||
deactivateUser_title: 'Nonaktifkan pengguna',
|
||||
|
||||
@@ -399,6 +399,7 @@ export default {
|
||||
archiveCards_title: 'Archivia schede',
|
||||
assignAsOwner: 'Assegna come proprietario',
|
||||
cancel: 'Annulla',
|
||||
copy: 'Copia',
|
||||
copyCard_title: 'Copia scheda',
|
||||
createApiKey: 'Crea chiave API',
|
||||
createBoard: 'Crea bacheca',
|
||||
@@ -407,6 +408,7 @@ export default {
|
||||
createLabel: 'Crea etichetta',
|
||||
createNewLabel: 'Crea nuova etichetta',
|
||||
createProject: 'Crea progetto',
|
||||
cut: 'Taglia',
|
||||
cutCard_title: 'Taglia scheda',
|
||||
deactivateUser: 'Disattiva utente',
|
||||
deactivateUser_title: 'Disattiva utente',
|
||||
|
||||
@@ -393,6 +393,7 @@ export default {
|
||||
archiveCards_title: 'カードをアーカイブ',
|
||||
assignAsOwner: 'オーナーとして割り当て',
|
||||
cancel: 'キャンセル',
|
||||
copy: 'コピー',
|
||||
copyCard_title: 'カードをコピー',
|
||||
createApiKey: 'APIキーを作成',
|
||||
createBoard: 'ボードを作成',
|
||||
@@ -401,6 +402,7 @@ export default {
|
||||
createLabel: 'ラベルを作成',
|
||||
createNewLabel: '新しいラベルを作成',
|
||||
createProject: 'プロジェクトを作成',
|
||||
cut: '切り取り',
|
||||
cutCard_title: 'カードを切り取り',
|
||||
deactivateUser: 'ユーザーを非アクティブにする',
|
||||
deactivateUser_title: 'ユーザーを非アクティブにする',
|
||||
|
||||
@@ -390,6 +390,7 @@ export default {
|
||||
archiveCards_title: '카드들 보관',
|
||||
assignAsOwner: '소유자로 지정',
|
||||
cancel: '취소',
|
||||
copy: '복사',
|
||||
copyCard_title: '카드 복사',
|
||||
createApiKey: 'API 키 생성',
|
||||
createBoard: '보드 생성',
|
||||
@@ -398,6 +399,7 @@ export default {
|
||||
createLabel: '라벨 생성',
|
||||
createNewLabel: '새 라벨 생성',
|
||||
createProject: '프로젝트 생성',
|
||||
cut: '잘라내기',
|
||||
cutCard_title: '카드 잘라내기',
|
||||
deactivateUser: '사용자 비활성화',
|
||||
deactivateUser_title: '사용자 비활성화',
|
||||
|
||||
@@ -399,6 +399,7 @@ export default {
|
||||
archiveCards_title: 'Kaarten archiveren',
|
||||
assignAsOwner: 'Toewijzen als eigenaar',
|
||||
cancel: 'Annuleren',
|
||||
copy: 'Kopiëren',
|
||||
copyCard_title: 'Kaart kopiëren',
|
||||
createApiKey: 'API-sleutel aanmaken',
|
||||
createBoard: 'Bord aanmaken',
|
||||
@@ -407,6 +408,7 @@ export default {
|
||||
createLabel: 'Label aanmaken',
|
||||
createNewLabel: 'Nieuw label aanmaken',
|
||||
createProject: 'Project aanmaken',
|
||||
cut: 'Knippen',
|
||||
cutCard_title: 'Kaart knippen',
|
||||
deactivateUser: 'Gebruiker deactiveren',
|
||||
deactivateUser_title: 'Gebruiker deactiveren',
|
||||
|
||||
@@ -396,6 +396,7 @@ export default {
|
||||
archiveCards_title: 'Archiwizuj karty',
|
||||
assignAsOwner: 'Przypisz jako właściciela',
|
||||
cancel: 'Anuluj',
|
||||
copy: 'Kopiuj',
|
||||
copyCard_title: 'Kopiuj kartę',
|
||||
createApiKey: 'Utwórz klucz API',
|
||||
createBoard: 'Utwórz tablicę',
|
||||
@@ -404,6 +405,7 @@ export default {
|
||||
createLabel: 'Utwórz oznaczenie',
|
||||
createNewLabel: 'Utwórz nowe oznaczenie',
|
||||
createProject: 'Utwórz projekt',
|
||||
cut: 'Wytnij',
|
||||
cutCard_title: 'Wytnij kartę',
|
||||
deactivateUser: 'Dezaktywuj użytkownika',
|
||||
deactivateUser_title: 'Dezaktywuj użytkownika',
|
||||
|
||||
@@ -399,6 +399,7 @@ export default {
|
||||
archiveCards_title: 'Arquivar cartões',
|
||||
assignAsOwner: 'Atribuir como proprietário',
|
||||
cancel: 'Cancelar',
|
||||
copy: 'Copiar',
|
||||
copyCard_title: 'Copiar cartão',
|
||||
createApiKey: 'Criar chave API',
|
||||
createBoard: 'Criar quadro',
|
||||
@@ -407,6 +408,7 @@ export default {
|
||||
createLabel: 'Criar rótulo',
|
||||
createNewLabel: 'Criar novo rótulo',
|
||||
createProject: 'Criar projeto',
|
||||
cut: 'Cortar',
|
||||
cutCard_title: 'Cortar cartão',
|
||||
deactivateUser: 'Desativar usuário',
|
||||
deactivateUser_title: 'Desativar usuário',
|
||||
|
||||
@@ -402,6 +402,7 @@ export default {
|
||||
archiveCards_title: 'Arquivar cartões',
|
||||
assignAsOwner: 'Atribuir como proprietário',
|
||||
cancel: 'Cancelar',
|
||||
copy: 'Copiar',
|
||||
copyCard_title: 'Copiar cartão',
|
||||
createApiKey: 'Criar chave API',
|
||||
createBoard: 'Criar quadro',
|
||||
@@ -410,6 +411,7 @@ export default {
|
||||
createLabel: 'Criar etiqueta',
|
||||
createNewLabel: 'Criar nova etiqueta',
|
||||
createProject: 'Criar projeto',
|
||||
cut: 'Cortar',
|
||||
cutCard_title: 'Cortar cartão',
|
||||
deactivateUser: 'Desativar utilizador',
|
||||
deactivateUser_title: 'Desativar utilizador',
|
||||
|
||||
@@ -396,6 +396,7 @@ export default {
|
||||
archiveCards_title: 'Arhivează cardurile',
|
||||
assignAsOwner: 'Atribuie ca proprietar',
|
||||
cancel: 'Anulează',
|
||||
copy: 'Copiază',
|
||||
copyCard_title: 'Copiază cardul',
|
||||
createApiKey: 'Creează cheie API',
|
||||
createBoard: 'Creați tablă',
|
||||
@@ -404,6 +405,7 @@ export default {
|
||||
createLabel: 'Creați eticheta',
|
||||
createNewLabel: 'Creați o nouă etichetă',
|
||||
createProject: 'Creați proiect',
|
||||
cut: 'Taie',
|
||||
cutCard_title: 'Taie cardul',
|
||||
deactivateUser: 'Dezactivați utilizatorul',
|
||||
deactivateUser_title: 'Dezactivați utilizatorul',
|
||||
|
||||
@@ -398,6 +398,7 @@ export default {
|
||||
archiveCards_title: 'Архивировать карточки',
|
||||
assignAsOwner: 'Назначить владельцем',
|
||||
cancel: 'Отменить',
|
||||
copy: 'Копировать',
|
||||
copyCard_title: 'Копировать карточку',
|
||||
createApiKey: 'Создать ключ API',
|
||||
createBoard: 'Создать доску',
|
||||
@@ -406,6 +407,7 @@ export default {
|
||||
createLabel: 'Создать метку',
|
||||
createNewLabel: 'Создать новую метку',
|
||||
createProject: 'Создать проект',
|
||||
cut: 'Вырезать',
|
||||
cutCard_title: 'Вырезать карточку',
|
||||
deactivateUser: 'Деактивировать пользователя',
|
||||
deactivateUser_title: 'Деактивировать пользователя',
|
||||
|
||||
@@ -389,6 +389,7 @@ export default {
|
||||
archiveCards_title: 'Archivovať karty',
|
||||
assignAsOwner: 'Prideliť ako vlastníka',
|
||||
cancel: 'Zrušiť',
|
||||
copy: 'Kopírovať',
|
||||
copyCard_title: 'Kopírovať kartu',
|
||||
createApiKey: 'Vytvoriť API kľúč',
|
||||
createBoard: 'Vytvoriť tabuľu',
|
||||
@@ -397,6 +398,7 @@ export default {
|
||||
createLabel: 'Vytvoriť štítok',
|
||||
createNewLabel: 'Vytvoriť nový štítok',
|
||||
createProject: 'Vytvoriť projekt',
|
||||
cut: 'Vystrihnúť',
|
||||
cutCard_title: 'Vystrihnúť kartu',
|
||||
deactivateUser: 'Deaktivovať používateľa',
|
||||
deactivateUser_title: 'Deaktivovať používateľa',
|
||||
|
||||
@@ -392,6 +392,7 @@ export default {
|
||||
archiveCards_title: 'Архивирај картице',
|
||||
assignAsOwner: 'Додели као власника',
|
||||
cancel: 'Откажи',
|
||||
copy: 'Копирај',
|
||||
copyCard_title: 'Копирај картицу',
|
||||
createApiKey: 'Креирај API кључ',
|
||||
createBoard: 'Направи таблу',
|
||||
@@ -400,6 +401,7 @@ export default {
|
||||
createLabel: 'Направи ознаку',
|
||||
createNewLabel: 'Направи нову ознаку',
|
||||
createProject: 'Направи пројекат',
|
||||
cut: 'Исеци',
|
||||
cutCard_title: 'Исеци картицу',
|
||||
deactivateUser: 'Деактивирај корисника',
|
||||
deactivateUser_title: 'Деактивирај корисника',
|
||||
|
||||
@@ -394,6 +394,7 @@ export default {
|
||||
archiveCards_title: 'Arhiviraj kartice',
|
||||
assignAsOwner: 'Dodeli kao vlasnika',
|
||||
cancel: 'Otkaži',
|
||||
copy: 'Kopiraj',
|
||||
copyCard_title: 'Kopiraj karticu',
|
||||
createApiKey: 'Kreiraj API ključ',
|
||||
createBoard: 'Napravi tablu',
|
||||
@@ -402,6 +403,7 @@ export default {
|
||||
createLabel: 'Napravi oznaku',
|
||||
createNewLabel: 'Napravi novu oznaku',
|
||||
createProject: 'Napravi projekat',
|
||||
cut: 'Iseci',
|
||||
cutCard_title: 'Iseci karticu',
|
||||
deactivateUser: 'Deaktiviraj korisnika',
|
||||
deactivateUser_title: 'Deaktiviraj korisnika',
|
||||
|
||||
@@ -403,6 +403,7 @@ export default {
|
||||
archiveCards_title: 'Arkivera kort',
|
||||
assignAsOwner: 'Tilldela som ägare',
|
||||
cancel: 'Avbryt',
|
||||
copy: 'Kopiera',
|
||||
copyCard_title: 'Kopiera kort',
|
||||
createApiKey: 'Skapa API-nyckel',
|
||||
createBoard: 'Skapa tavla',
|
||||
@@ -411,6 +412,7 @@ export default {
|
||||
createLabel: 'Skapa etikett',
|
||||
createNewLabel: 'Skapa ny etikett',
|
||||
createProject: 'Skapa projekt',
|
||||
cut: 'Klipp ut',
|
||||
cutCard_title: 'Klipp ut kort',
|
||||
deactivateUser: 'Inaktivera användare',
|
||||
deactivateUser_title: 'Inaktivera användare',
|
||||
|
||||
@@ -399,6 +399,7 @@ export default {
|
||||
archiveCards_title: 'Kartları arşivle',
|
||||
assignAsOwner: 'Sahip olarak ata',
|
||||
cancel: 'İptal',
|
||||
copy: 'Kopyala',
|
||||
copyCard_title: 'Kartı kopyala',
|
||||
createApiKey: 'API anahtarı oluştur',
|
||||
createBoard: 'Pano oluştur',
|
||||
@@ -407,6 +408,7 @@ export default {
|
||||
createLabel: 'Etiket oluştur',
|
||||
createNewLabel: 'Yeni etiket oluştur',
|
||||
createProject: 'Proje oluştur',
|
||||
cut: 'Kes',
|
||||
cutCard_title: 'Kartı kes',
|
||||
deactivateUser: 'Kullanıcıyı devre dışı bırak',
|
||||
deactivateUser_title: 'Kullanıcıyı devre dışı bırak',
|
||||
|
||||
@@ -394,6 +394,7 @@ export default {
|
||||
archiveCards_title: 'Архівувати картки',
|
||||
assignAsOwner: 'Призначити власником',
|
||||
cancel: 'Скасувати',
|
||||
copy: 'Копіювати',
|
||||
copyCard_title: 'Копіювати картку',
|
||||
createApiKey: 'Створити ключ API',
|
||||
createBoard: 'Створити дошку',
|
||||
@@ -402,6 +403,7 @@ export default {
|
||||
createLabel: 'Створити мітку',
|
||||
createNewLabel: 'Створити нову мітку',
|
||||
createProject: 'Створити проект',
|
||||
cut: 'Вирізати',
|
||||
cutCard_title: 'Вирізати картку',
|
||||
deactivateUser: 'Деактивувати користувача',
|
||||
deactivateUser_title: 'Деактивувати користувача',
|
||||
|
||||
@@ -392,6 +392,7 @@ export default {
|
||||
archiveCards_title: 'Kartalarni arxivlash',
|
||||
assignAsOwner: 'Egasi sifatida tayinlash',
|
||||
cancel: 'Bekor qilish',
|
||||
copy: 'Nusxalash',
|
||||
copyCard_title: 'Kartani nusxalash',
|
||||
createApiKey: 'API kalitini yaratish',
|
||||
createBoard: 'Doska yaratish',
|
||||
@@ -400,6 +401,7 @@ export default {
|
||||
createLabel: 'Yorliq yaratish',
|
||||
createNewLabel: 'Yangi yorliq yaratish',
|
||||
createProject: 'Loyiha yaratish',
|
||||
cut: 'Kesish',
|
||||
cutCard_title: 'Kartani kesish',
|
||||
deactivateUser: 'Foydalanuvchini faolsizlantirish',
|
||||
deactivateUser_title: 'Foydalanuvchini faolsizlantirish',
|
||||
|
||||
@@ -369,6 +369,7 @@ export default {
|
||||
archiveCards_title: '归档多个卡片',
|
||||
assignAsOwner: '指定为所有者',
|
||||
cancel: '取消',
|
||||
copy: '复制',
|
||||
copyCard_title: '复制卡片',
|
||||
createApiKey: '创建API密钥',
|
||||
createBoard: '创建面板',
|
||||
@@ -377,6 +378,7 @@ export default {
|
||||
createLabel: '创建标签',
|
||||
createNewLabel: '创建新标签',
|
||||
createProject: '创建项目',
|
||||
cut: '剪切',
|
||||
cutCard_title: '剪切卡片',
|
||||
deactivateUser: '停用用户',
|
||||
deactivateUser_title: '停用用户',
|
||||
|
||||
@@ -369,6 +369,7 @@ export default {
|
||||
archiveCards_title: '封存卡片',
|
||||
assignAsOwner: '指派為擁有者',
|
||||
cancel: '取消',
|
||||
copy: '複製',
|
||||
copyCard_title: '複製卡片',
|
||||
createApiKey: '建立API金鑰',
|
||||
createBoard: '創建看板',
|
||||
@@ -377,6 +378,7 @@ export default {
|
||||
createLabel: '創建標籤',
|
||||
createNewLabel: '創建新標籤',
|
||||
createProject: '創建專案',
|
||||
cut: '剪下',
|
||||
cutCard_title: '剪下卡片',
|
||||
deactivateUser: '停用使用者',
|
||||
deactivateUser_title: '停用使用者',
|
||||
|
||||
Reference in New Issue
Block a user