[WEB-5600] chore: project identifier char limit updated and table layout enhancements (#8263)

This commit is contained in:
Anmol Singh Bhatia
2025-12-08 20:00:54 +05:30
committed by GitHub
parent 7659997b53
commit f0bc2bd3bd
23 changed files with 116 additions and 109 deletions
@@ -239,11 +239,6 @@ const IssueRowDetails = observer(function IssueRowDetails(props: IssueRowDetails
const canSelectIssues = !disableUserActions && !selectionHelpers.isSelectionDisabled;
//TODO: add better logic. This is to have a min width for ID/Key based on the length of project identifier
const keyMinWidth = displayProperties?.key
? (getProjectIdentifierById(issueDetail.project_id)?.length ?? 0 + 5) * 7
: 0;
const workItemLink = generateWorkItemLink({
workspaceSlug: workspaceSlug?.toString(),
projectId: issueDetail?.project_id,
@@ -255,11 +250,12 @@ const IssueRowDetails = observer(function IssueRowDetails(props: IssueRowDetails
return (
<>
{/* Single sticky column containing both identifier and workitem */}
<td
id={`issue-${issueId}`}
ref={cellRef}
tabIndex={0}
className="relative md:sticky left-0 z-10 group/list-block bg-custom-background-100 min-w-60 max-w-[30vw]"
className="relative md:sticky left-0 z-10 group/list-block bg-custom-background-100"
>
<ControlLink
href={workItemLink}
@@ -278,7 +274,29 @@ const IssueRowDetails = observer(function IssueRowDetails(props: IssueRowDetails
}
)}
>
<div className="flex items-center gap-0.5 min-w-min py-2">
{/* Identifier section - conditionally rendered */}
{displayProperties?.key && (
<div className="flex-shrink-0 flex items-center h-full min-w-24">
<div className="relative flex cursor-pointer items-center text-xs hover:text-custom-text-100">
{issueDetail.project_id && (
<IssueIdentifier
issueId={issueDetail.id}
projectId={issueDetail.project_id}
textContainerClassName="text-sm md:text-xs text-custom-text-300"
displayProperties={displayProperties}
/>
)}
</div>
</div>
)}
{/* Workitem section */}
<div
className={cn("flex items-center gap-0.5 py-2 flex-grow", {
"min-w-[360px]": !displayProperties?.key,
"min-w-60": displayProperties?.key,
})}
>
{/* select checkbox */}
{projectId && canSelectIssues && (
<Tooltip
@@ -311,21 +329,6 @@ const IssueRowDetails = observer(function IssueRowDetails(props: IssueRowDetails
{/* sub issues indentation */}
{nestingLevel !== 0 && <div style={{ width: subIssueIndentation }} />}
{(displayProperties?.key || displayProperties?.issue_type) && (
<div className="relative flex cursor-pointer items-center text-center text-xs hover:text-custom-text-100">
<p className={`flex font-medium leading-7`} style={{ minWidth: `${keyMinWidth}px` }}>
{issueDetail.project_id && (
<IssueIdentifier
issueId={issueDetail.id}
projectId={issueDetail.project_id}
textContainerClassName="text-sm md:text-xs text-custom-text-300"
displayProperties={displayProperties}
/>
)}
</p>
</div>
)}
{/* sub-issues chevron */}
<div className="grid place-items-center size-4">
{subIssuesCount > 0 && !isEpic && (
@@ -343,31 +346,31 @@ const IssueRowDetails = observer(function IssueRowDetails(props: IssueRowDetails
</button>
)}
</div>
</div>
<div className="flex items-center gap-2 justify-between h-full w-full truncate my-auto">
<div className="w-full line-clamp-1 text-sm text-custom-text-100">
<div className="w-full overflow-hidden">
<Tooltip tooltipContent={issueDetail.name} isMobile={isMobile}>
<div
className="h-full w-full cursor-pointer truncate pr-4 text-left text-[0.825rem] text-custom-text-100 focus:outline-none"
tabIndex={-1}
>
{issueDetail.name}
</div>
</Tooltip>
<div className="flex items-center gap-2 justify-between h-full w-full truncate my-auto">
<div className="w-full line-clamp-1 text-sm text-custom-text-100">
<div className="w-full overflow-hidden">
<Tooltip tooltipContent={issueDetail.name} isMobile={isMobile}>
<div
className="h-full w-full cursor-pointer truncate pr-4 text-left text-[0.825rem] text-custom-text-100 focus:outline-none"
tabIndex={-1}
>
{issueDetail.name}
</div>
</Tooltip>
</div>
</div>
<div
className={`opacity-0 group-hover:opacity-100 transition-opacity ${isMenuActive ? "!opacity-100" : ""}`}
onClick={(e) => e.stopPropagation()}
>
{quickActions({
issue: issueDetail,
parentRef: cellRef,
customActionButton,
portalElement: portalElement.current,
})}
</div>
</div>
<div
className={`hidden group-hover:block ${isMenuActive ? "!block" : ""}`}
onClick={(e) => e.stopPropagation()}
>
{quickActions({
issue: issueDetail,
parentRef: cellRef,
customActionButton,
portalElement: portalElement.current,
})}
</div>
</div>
</Row>
@@ -5,7 +5,6 @@ import { SPREADSHEET_SELECT_GROUP } from "@plane/constants";
// ui
import type { IIssueDisplayFilterOptions, IIssueDisplayProperties } from "@plane/types";
// components
import { Row } from "@plane/ui";
import { cn } from "@plane/utils";
import { MultipleSelectGroupAction } from "@/components/core/multiple-select";
// hooks
@@ -44,27 +43,31 @@ export const SpreadsheetHeader = observer(function SpreadsheetHeader(props: Prop
return (
<thead className="sticky top-0 left-0 z-[12] border-b-[0.5px] border-custom-border-100">
<tr>
{/* Single header column containing both identifier and workitem */}
<th
className="group/list-header sticky min-w-60 left-0 z-[15] h-11 flex items-center gap-1 bg-custom-background-90 text-sm font-medium before:absolute before:h-full before:right-0 before:border-custom-border-100"
className="group/list-header md:sticky min-w-60 left-0 z-[15] h-11 bg-custom-background-90 text-sm font-medium border-r-[0.5px] border-custom-border-100"
tabIndex={-1}
>
<Row>
{canSelectIssues && (
<div className="flex-shrink-0 flex items-center w-3.5 mr-1 absolute left-1 py-[11px]">
<MultipleSelectGroupAction
className={cn(
"size-3.5 opacity-0 pointer-events-none group-hover/list-header:opacity-100 group-hover/list-header:pointer-events-auto !outline-none",
{
"opacity-100 pointer-events-auto": !isGroupSelectionEmpty,
}
)}
groupID={SPREADSHEET_SELECT_GROUP}
selectionHelpers={selectionHelpers}
/>
</div>
)}
<span className="flex h-full w-full flex-grow items-center py-2.5">{`${isEpic ? "Epics" : "Work items"}`}</span>
</Row>
<div className="flex items-center gap-2 h-full w-full px-page-x">
{/* Workitem header section */}
<div className="flex items-center gap-1 flex-grow h-full py-2.5 min-w-80">
{canSelectIssues && (
<div className="flex-shrink-0 flex items-center w-3.5 mr-1">
<MultipleSelectGroupAction
className={cn(
"size-3.5 opacity-0 pointer-events-none group-hover/list-header:opacity-100 group-hover/list-header:pointer-events-auto !outline-none",
{
"opacity-100 pointer-events-auto": !isGroupSelectionEmpty,
}
)}
groupID={SPREADSHEET_SELECT_GROUP}
selectionHelpers={selectionHelpers}
/>
</div>
)}
<span className="text-sm font-medium">{`${isEpic ? "Epics" : "Work items"}`}</span>
</div>
</div>
</th>
{spreadsheetColumnsList.map((property) => (
@@ -39,7 +39,7 @@ function ProjectCommonAttributes(props: Props) {
return;
}
if (e.target.value === "") setValue("identifier", "");
else setValue("identifier", projectIdentifierSanitizer(e.target.value).substring(0, 5));
else setValue("identifier", projectIdentifierSanitizer(e.target.value).substring(0, 10));
onChange(e);
handleFormOnChange?.();
};
@@ -91,11 +91,11 @@ function ProjectCommonAttributes(props: Props) {
/^[ÇŞĞIİÖÜA-Z0-9]+$/.test(value.toUpperCase()) || t("only_alphanumeric_non_latin_characters_allowed"),
minLength: {
value: 1,
message: t("project_id_must_be_at_least_1_character"),
message: t("project_id_min_char"),
},
maxLength: {
value: 5,
message: t("project_id_must_be_at_most_5_characters"),
value: 10,
message: t("project_id_max_char"),
},
}}
render={({ field: { value, onChange } }) => (
+3 -3
View File
@@ -185,7 +185,7 @@ export function ProjectDetailsForm(props: IProjectDetailsForm) {
if (project.identifier !== formData.identifier)
await projectService
.checkProjectIdentifierAvailability(workspaceSlug as string, payload.identifier ?? "")
.checkProjectIdentifierAvailability(workspaceSlug, payload.identifier ?? "")
.then(async (res) => {
if (res.exists) setError("identifier", { message: t("common.identifier_already_exists") });
else await handleUpdateChange(payload);
@@ -338,7 +338,7 @@ export function ProjectDetailsForm(props: IProjectDetailsForm) {
message: t("project_id_min_char"),
},
maxLength: {
value: 5,
value: 10,
message: t("project_id_max_char"),
},
}}
@@ -359,7 +359,7 @@ export function ProjectDetailsForm(props: IProjectDetailsForm) {
/>
<Tooltip
isMobile={isMobile}
tooltipContent="Helps you identify work items in the project uniquely. Max 5 characters."
tooltipContent={t("project_id_tooltip_content")}
className="text-sm"
position="right-start"
>
+2 -2
View File
@@ -337,13 +337,13 @@ export default {
project_id_must_be_at_least_1_character: "ID projektu musí mít alespoň 1 znak",
project_id_must_be_at_most_5_characters: "ID projektu může mít maximálně 5 znaků",
project_id: "ID projektu",
project_id_tooltip_content: "Pomáhá jednoznačně identifikovat pracovní položky v projektu. Max. 5 znaků.",
project_id_tooltip_content: "Pomáhá jednoznačně identifikovat pracovní položky v projektu. Max. 10 znaků.",
description_placeholder: "Popis",
only_alphanumeric_non_latin_characters_allowed: "Jsou povoleny pouze alfanumerické a nelatinské znaky.",
project_id_is_required: "ID projektu je povinné",
project_id_allowed_char: "Jsou povoleny pouze alfanumerické a nelatinské znaky.",
project_id_min_char: "ID projektu musí mít alespoň 1 znak",
project_id_max_char: "ID projektu může mít maximálně 5 znaků",
project_id_max_char: "ID projektu může mít maximálně 10 znaků",
project_description_placeholder: "Zadejte popis projektu",
select_network: "Vybrat síť",
lead: "Vedoucí",
+2 -2
View File
@@ -344,13 +344,13 @@ export default {
project_id_must_be_at_least_1_character: "Projekt-ID muss mindestens 1 Zeichen lang sein",
project_id_must_be_at_most_5_characters: "Projekt-ID darf maximal 5 Zeichen lang sein",
project_id: "Projekt-ID",
project_id_tooltip_content: "Hilft, Arbeitselemente im Projekt eindeutig zu identifizieren. Max. 5 Zeichen.",
project_id_tooltip_content: "Hilft, Arbeitselemente im Projekt eindeutig zu identifizieren. Max. 10 Zeichen.",
description_placeholder: "Beschreibung",
only_alphanumeric_non_latin_characters_allowed: "Es sind nur alphanumerische und nicht-lateinische Zeichen erlaubt.",
project_id_is_required: "Projekt-ID ist erforderlich",
project_id_allowed_char: "Es sind nur alphanumerische und nicht-lateinische Zeichen erlaubt.",
project_id_min_char: "Projekt-ID muss mindestens 1 Zeichen lang sein",
project_id_max_char: "Projekt-ID darf maximal 5 Zeichen lang sein",
project_id_max_char: "Projekt-ID darf maximal 10 Zeichen lang sein",
project_description_placeholder: "Geben Sie eine Projektbeschreibung ein",
select_network: "Netzwerk auswählen",
lead: "Leitung",
+2 -2
View File
@@ -172,13 +172,13 @@ export default {
project_id_must_be_at_least_1_character: "Project ID must at least be of 1 character",
project_id_must_be_at_most_5_characters: "Project ID must at most be of 5 characters",
project_id: "Project ID",
project_id_tooltip_content: "Helps you identify work items in the project uniquely. Max 5 characters.",
project_id_tooltip_content: "Helps you identify work items in the project uniquely. Max 10 characters.",
description_placeholder: "Description",
only_alphanumeric_non_latin_characters_allowed: "Only Alphanumeric & Non-latin characters are allowed.",
project_id_is_required: "Project ID is required",
project_id_allowed_char: "Only Alphanumeric & Non-latin characters are allowed.",
project_id_min_char: "Project ID must at least be of 1 character",
project_id_max_char: "Project ID must at most be of 5 characters",
project_id_max_char: "Project ID must at most be of 10 characters",
project_description_placeholder: "Enter project description",
select_network: "Select network",
lead: "Lead",
+2 -2
View File
@@ -345,13 +345,13 @@ export default {
project_id_must_be_at_most_5_characters: "El ID del proyecto debe tener como máximo 5 caracteres",
project_id: "ID del proyecto",
project_id_tooltip_content:
"Te ayuda a identificar elementos de trabajo en el proyecto de manera única. Máximo 5 caracteres.",
"Te ayuda a identificar elementos de trabajo en el proyecto de manera única. Máximo 10 caracteres.",
description_placeholder: "Descripción",
only_alphanumeric_non_latin_characters_allowed: "Solo se permiten caracteres alfanuméricos y no latinos.",
project_id_is_required: "El ID del proyecto es requerido",
project_id_allowed_char: "Solo se permiten caracteres alfanuméricos y no latinos.",
project_id_min_char: "El ID del proyecto debe tener al menos 1 carácter",
project_id_max_char: "El ID del proyecto debe tener como máximo 5 caracteres",
project_id_max_char: "El ID del proyecto debe tener como máximo 10 caracteres",
project_description_placeholder: "Ingresa la descripción del proyecto",
select_network: "Seleccionar red",
lead: "Líder",
+2 -2
View File
@@ -341,13 +341,13 @@ export default {
project_id_must_be_at_most_5_characters: "LID du projet doit comporter au plus 5 caractères",
project_id: "ID du projet",
project_id_tooltip_content:
"Vous aide à identifier de manière unique les éléments de travail dans le projet. Maximum 5 caractères.",
"Vous aide à identifier de manière unique les éléments de travail dans le projet. Maximum 10 caractères.",
description_placeholder: "Description",
only_alphanumeric_non_latin_characters_allowed: "Seuls les caractères alphanumériques et non latins sont autorisés.",
project_id_is_required: "LID du projet est requis",
project_id_allowed_char: "Seuls les caractères alphanumériques et non latins sont autorisés.",
project_id_min_char: "LID du projet doit comporter au moins 1 caractère",
project_id_max_char: "LID du projet doit comporter au plus 5 caractères",
project_id_max_char: "L'ID du projet doit comporter au plus 10 caractères",
project_description_placeholder: "Entrez la description du projet",
select_network: "Sélectionner le réseau",
lead: "Responsable",
+2 -2
View File
@@ -340,13 +340,13 @@ export default {
project_id_must_be_at_most_5_characters: "ID proyek maksimal 5 karakter",
project_id: "ID proyek",
project_id_tooltip_content:
"Membantu Anda mengidentifikasi item kerja dalam proyek secara unik. Maksimal 5 karakter.",
"Membantu Anda mengidentifikasi item kerja dalam proyek secara unik. Maksimal 10 karakter.",
description_placeholder: "Deskripsi",
only_alphanumeric_non_latin_characters_allowed: "Hanya karakter alfanumerik & Non-latin yang diizinkan.",
project_id_is_required: "ID proyek diperlukan",
project_id_allowed_char: "Hanya karakter alfanumerik & Non-latin yang diizinkan.",
project_id_min_char: "ID proyek harus minimal 1 karakter",
project_id_max_char: "ID proyek maksimal 5 karakter",
project_id_max_char: "ID proyek maksimal 10 karakter",
project_description_placeholder: "Masukkan deskripsi proyek",
select_network: "Pilih jaringan",
lead: "Pemimpin",
+2 -2
View File
@@ -340,13 +340,13 @@ export default {
project_id_must_be_at_most_5_characters: "L'ID del progetto deve contenere al massimo 5 caratteri",
project_id: "ID del progetto",
project_id_tooltip_content:
"Ti aiuta a identificare in modo univoco gli elementi di lavoro nel progetto. Massimo 5 caratteri.",
"Ti aiuta a identificare in modo univoco gli elementi di lavoro nel progetto. Massimo 10 caratteri.",
description_placeholder: "Descrizione",
only_alphanumeric_non_latin_characters_allowed: "Sono ammessi solo caratteri alfanumerici e non latini.",
project_id_is_required: "L'ID del progetto è obbligatorio",
project_id_allowed_char: "Sono ammessi solo caratteri alfanumerici e non latini.",
project_id_min_char: "L'ID del progetto deve contenere almeno 1 carattere",
project_id_max_char: "L'ID del progetto deve contenere al massimo 5 caratteri",
project_id_max_char: "L'ID del progetto deve contenere al massimo 10 caratteri",
project_description_placeholder: "Inserisci la descrizione del progetto",
select_network: "Seleziona rete",
lead: "Responsabile",
+2 -2
View File
@@ -335,13 +335,13 @@ export default {
project_id_must_be_at_least_1_character: "プロジェクトIDは最低1文字必要です",
project_id_must_be_at_most_5_characters: "プロジェクトIDは最大5文字までです",
project_id: "プロジェクトID",
project_id_tooltip_content: "プロジェクト内の作業項目を一意に識別するのに役立ちます。最大5文字。",
project_id_tooltip_content: "プロジェクト内の作業項目を一意に識別するのに役立ちます。最大10文字。",
description_placeholder: "説明",
only_alphanumeric_non_latin_characters_allowed: "英数字と非ラテン文字のみ使用できます。",
project_id_is_required: "プロジェクトIDは必須です",
project_id_allowed_char: "英数字と非ラテン文字のみ使用できます。",
project_id_min_char: "プロジェクトIDは最低1文字必要です",
project_id_max_char: "プロジェクトIDは最大5文字までです",
project_id_max_char: "プロジェクトIDは最大10文字までです",
project_description_placeholder: "プロジェクトの説明を入力",
select_network: "ネットワークを選択",
lead: "リード",
+2 -2
View File
@@ -332,13 +332,13 @@ export default {
project_id_must_be_at_least_1_character: "프로젝트 ID는 최소 1자 이상이어야 합니다",
project_id_must_be_at_most_5_characters: "프로젝트 ID는 최대 5자 이하여야 합니다",
project_id: "프로젝트 ID",
project_id_tooltip_content: "작업 항목을 고유하게 식별하는 데 도움이 됩니다. 최대 5자.",
project_id_tooltip_content: "작업 항목을 고유하게 식별하는 데 도움이 됩니다. 최대 10자.",
description_placeholder: "설명",
only_alphanumeric_non_latin_characters_allowed: "영숫자 및 비라틴 문자만 허용됩니다.",
project_id_is_required: "프로젝트 ID가 필요합니다",
project_id_allowed_char: "영숫자 및 비라틴 문자만 허용됩니다.",
project_id_min_char: "프로젝트 ID는 최소 1자 이상이어야 합니다",
project_id_max_char: "프로젝트 ID는 최대 5자 이하여야 합니다",
project_id_max_char: "프로젝트 ID는 최대 10자 이하여야 합니다",
project_description_placeholder: "프로젝트 설명 입력",
select_network: "네트워크 선택",
lead: "리드",
+2 -2
View File
@@ -335,13 +335,13 @@ export default {
project_id_must_be_at_least_1_character: "ID projektu musi mieć co najmniej 1 znak",
project_id_must_be_at_most_5_characters: "ID projektu może mieć maksymalnie 5 znaków",
project_id: "ID projektu",
project_id_tooltip_content: "Pomaga jednoznacznie identyfikować elementy pracy w projekcie. Max. 5 znaków.",
project_id_tooltip_content: "Pomaga jednoznacznie identyfikować elementy pracy w projekcie. Max. 10 znaków.",
description_placeholder: "Opis",
only_alphanumeric_non_latin_characters_allowed: "Dozwolone są tylko znaki alfanumeryczne i nielatynowskie.",
project_id_is_required: "ID projektu jest wymagane",
project_id_allowed_char: "Dozwolone są tylko znaki alfanumeryczne i nielatynowskie.",
project_id_min_char: "ID projektu musi mieć co najmniej 1 znak",
project_id_max_char: "ID projektu może mieć maksymalnie 5 znaków",
project_id_max_char: "ID projektu może mieć maksymalnie 10 znaków",
project_description_placeholder: "Wpisz opis projektu",
select_network: "Wybierz sieć",
lead: "Lead",
@@ -340,13 +340,13 @@ export default {
project_id_must_be_at_most_5_characters: "O ID do projeto deve ter no máximo 5 caracteres",
project_id: "ID do projeto",
project_id_tooltip_content:
"Ajuda você a identificar itens de trabalho no projeto de forma exclusiva. Máximo de 5 caracteres.",
"Ajuda você a identificar itens de trabalho no projeto de forma exclusiva. Máximo de 10 caracteres.",
description_placeholder: "Descrição",
only_alphanumeric_non_latin_characters_allowed: "Apenas caracteres alfanuméricos e não latinos são permitidos.",
project_id_is_required: "O ID do projeto é obrigatório",
project_id_allowed_char: "Apenas caracteres alfanuméricos e não latinos são permitidos.",
project_id_min_char: "O ID do projeto deve ter pelo menos 1 caractere",
project_id_max_char: "O ID do projeto deve ter no máximo 5 caracteres",
project_id_max_char: "O ID do projeto deve ter no máximo 10 caracteres",
project_description_placeholder: "Insira a descrição do projeto",
select_network: "Selecione a rede",
lead: "Líder",
+2 -2
View File
@@ -338,13 +338,13 @@ export default {
project_id_must_be_at_least_1_character: "ID-ul proiectului trebuie să conțină cel puțin 1 caracter",
project_id_must_be_at_most_5_characters: "ID-ul proiectului trebuie să conțină cel mult 5 caractere",
project_id: "ID-ul Proiectului",
project_id_tooltip_content: "Te ajută să identifici unic activitățile din proiect. Maxim 5 caractere.",
project_id_tooltip_content: "Te ajută să identifici unic activitățile din proiect. Maxim 10 caractere.",
description_placeholder: "Descriere",
only_alphanumeric_non_latin_characters_allowed: "Sunt permise doar caractere alfanumerice și non-latine.",
project_id_is_required: "ID-ul proiectului este obligatoriu",
project_id_allowed_char: "Sunt permise doar caractere alfanumerice și non-latine.",
project_id_min_char: "ID-ul proiectului trebuie să aibă cel puțin 1 caracter",
project_id_max_char: "ID-ul proiectului trebuie să aibă cel mult 5 caractere",
project_id_max_char: "ID-ul proiectului trebuie să aibă cel mult 10 caractere",
project_description_placeholder: "Introdu descrierea proiectului",
select_network: "Selectează rețeaua",
lead: "Lider",
+2 -2
View File
@@ -335,13 +335,13 @@ export default {
project_id_must_be_at_least_1_character: "ID проекта должен содержать минимум 1 символ",
project_id_must_be_at_most_5_characters: "ID проекта должен содержать максимум 5 символов",
project_id: "ID проекта",
project_id_tooltip_content: "Помогает идентифицировать рабочие элементы в проекте. Макс. 5 символов.",
project_id_tooltip_content: "Помогает идентифицировать рабочие элементы в проекте. Макс. 10 символов.",
description_placeholder: "Описание",
only_alphanumeric_non_latin_characters_allowed: "Допускаются только буквенно-цифровые и нелатинские символы.",
project_id_is_required: "Требуется ID проекта",
project_id_allowed_char: "Допускаются только буквенно-цифровые и нелатинские символы.",
project_id_min_char: "ID проекта должен содержать минимум 1 символ",
project_id_max_char: "ID проекта должен содержать максимум 5 символов",
project_id_max_char: "ID проекта должен содержать максимум 10 символов",
project_description_placeholder: "Введите описание проекта",
select_network: "Выбрать сеть",
lead: "Руководитель",
+2 -2
View File
@@ -337,13 +337,13 @@ export default {
project_id_must_be_at_least_1_character: "ID projektu musí mať aspoň 1 znak",
project_id_must_be_at_most_5_characters: "ID projektu môže mať maximálne 5 znakov",
project_id: "ID projektu",
project_id_tooltip_content: "Pomáha jednoznačne identifikovať pracovné položky v projekte. Max. 5 znakov.",
project_id_tooltip_content: "Pomáha jednoznačne identifikovať pracovné položky v projekte. Max. 10 znakov.",
description_placeholder: "Popis",
only_alphanumeric_non_latin_characters_allowed: "Sú povolené iba alfanumerické a nelatinské znaky.",
project_id_is_required: "ID projektu je povinné",
project_id_allowed_char: "Sú povolené iba alfanumerické a nelatinské znaky.",
project_id_min_char: "ID projektu musí mať aspoň 1 znak",
project_id_max_char: "ID projektu môže mať maximálne 5 znakov",
project_id_max_char: "ID projektu môže mať maximálne 10 znakov",
project_description_placeholder: "Zadajte popis projektu",
select_network: "Vybrať sieť",
lead: "Vedúci",
@@ -337,13 +337,14 @@ export default {
project_id_must_be_at_least_1_character: "Proje ID en az 1 karakter olmalı",
project_id_must_be_at_most_5_characters: "Proje ID en fazla 5 karakter olmalı",
project_id: "Proje ID",
project_id_tooltip_content: "Projedeki iş öğelerini benzersiz şekilde tanımlamanıza yardımcı olur. Maks. 5 karakter.",
project_id_tooltip_content:
"Projedeki iş öğelerini benzersiz şekilde tanımlamanıza yardımcı olur. Maks. 10 karakter.",
description_placeholder: "Açıklama",
only_alphanumeric_non_latin_characters_allowed: "Yalnızca alfasayısal ve Latin olmayan karakterlere izin verilir.",
project_id_is_required: "Proje ID gereklidir",
project_id_allowed_char: "Yalnızca alfasayısal ve Latin olmayan karakterlere izin verilir.",
project_id_min_char: "Proje ID en az 1 karakter olmalı",
project_id_max_char: "Proje ID en fazla 5 karakter olmalı",
project_id_max_char: "Proje ID en fazla 10 karakter olmalı",
project_description_placeholder: "Proje açıklamasını girin",
select_network: "Ağ seç",
lead: "Lider",
+2 -2
View File
@@ -337,13 +337,13 @@ export default {
project_id_must_be_at_least_1_character: "Ідентифікатор проєкту має містити принаймні 1 символ",
project_id_must_be_at_most_5_characters: "Ідентифікатор проєкту може містити максимум 5 символів",
project_id: "ID проєкту",
project_id_tooltip_content: "Допомагає унікально ідентифікувати робочі одиниці в проєкті. Макс. 5 символів.",
project_id_tooltip_content: "Допомагає унікально ідентифікувати робочі одиниці в проєкті. Макс. 10 символів.",
description_placeholder: "Опис",
only_alphanumeric_non_latin_characters_allowed: "Дозволені лише алфанумеричні та нелатинські символи.",
project_id_is_required: "ID проєкту є обов’язковим",
project_id_allowed_char: "Дозволені лише алфанумеричні та нелатинські символи.",
project_id_min_char: "ID проєкту має містити принаймні 1 символ",
project_id_max_char: "ID проєкту може містити максимум 5 символів",
project_id_max_char: "ID проєкту може містити максимум 10 символів",
project_description_placeholder: "Введіть опис проєкту",
select_network: "Вибрати мережу",
lead: "Керівник",
@@ -338,13 +338,13 @@ export default {
project_id_must_be_at_least_1_character: "ID dự án phải có ít nhất 1 ký tự",
project_id_must_be_at_most_5_characters: "ID dự án chỉ được tối đa 5 ký tự",
project_id: "ID dự án",
project_id_tooltip_content: "Giúp xác định duy nhất mục công việc trong dự án của bạn. Tối đa 5 ký tự.",
project_id_tooltip_content: "Giúp xác định duy nhất mục công việc trong dự án của bạn. Tối đa 10 ký tự.",
description_placeholder: "Mô tả",
only_alphanumeric_non_latin_characters_allowed: "Chỉ cho phép các ký tự chữ số và không phải Latin.",
project_id_is_required: "ID dự án là bắt buộc",
project_id_allowed_char: "Chỉ cho phép các ký tự chữ số và không phải Latin.",
project_id_min_char: "ID dự án phải có ít nhất 1 ký tự",
project_id_max_char: "ID dự án chỉ được tối đa 5 ký tự",
project_id_max_char: "ID dự án chỉ được tối đa 10 ký tự",
project_description_placeholder: "Nhập mô tả dự án",
select_network: "Chọn mạng",
lead: "Người phụ trách",
@@ -328,13 +328,13 @@ export default {
project_id_must_be_at_least_1_character: "项目ID至少需要1个字符",
project_id_must_be_at_most_5_characters: "项目ID最多只能有5个字符",
project_id: "项目ID",
project_id_tooltip_content: "帮助您唯一标识项目中的工作项。最多5个字符。",
project_id_tooltip_content: "帮助您唯一标识项目中的工作项。最多10个字符。",
description_placeholder: "描述",
only_alphanumeric_non_latin_characters_allowed: "仅允许字母数字和非拉丁字符。",
project_id_is_required: "项目ID为必填项",
project_id_allowed_char: "仅允许字母数字和非拉丁字符。",
project_id_min_char: "项目ID至少需要1个字符",
project_id_max_char: "项目ID最多只能有5个字符",
project_id_max_char: "项目ID最多只能有10个字符",
project_description_placeholder: "输入项目描述",
select_network: "选择网络",
lead: "负责人",
@@ -327,13 +327,13 @@ export default {
project_id_must_be_at_least_1_character: "專案 ID 至少必須有 1 個字元",
project_id_must_be_at_most_5_characters: "專案 ID 最多只能有 5 個字元",
project_id: "專案 ID",
project_id_tooltip_content: "協助您唯一識別專案中的工作事項。最多 5 個字元。",
project_id_tooltip_content: "協助您唯一識別專案中的工作事項。最多 10 個字元。",
description_placeholder: "描述",
only_alphanumeric_non_latin_characters_allowed: "僅允許英數字元和非拉丁字元。",
project_id_is_required: "專案 ID 為必填",
project_id_allowed_char: "僅允許英數字元和非拉丁字元。",
project_id_min_char: "專案 ID 至少必須有 1 個字元",
project_id_max_char: "專案 ID 最多只能有 5 個字元",
project_id_max_char: "專案 ID 最多只能有 10 個字元",
project_description_placeholder: "輸入專案描述",
select_network: "選擇網路",
lead: "負責人",