UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: настройки проекта, модалки и drag-and-drop канон
This commit is contained in:
@@ -916,8 +916,11 @@ export default {
|
||||
priority: "{entity} Priority",
|
||||
all: "All {entity}",
|
||||
drop_here_to_move: "Drop here to move the {entity}",
|
||||
drop_here_to_delete: "Drop here to delete the {entity}",
|
||||
delete: {
|
||||
label: "Delete {entity}",
|
||||
confirmation:
|
||||
"Are you sure you want to delete {entity} {identifier}? All related data will be permanently removed and this action cannot be undone.",
|
||||
success: "{entity} deleted successfully",
|
||||
failed: "{entity} delete failed",
|
||||
},
|
||||
@@ -1865,7 +1868,9 @@ export default {
|
||||
members: {
|
||||
label: "Members",
|
||||
project_lead: "Project lead",
|
||||
project_lead_description: "Choose the project lead.",
|
||||
default_assignee: "Default assignee",
|
||||
default_assignee_description: "Choose the default assignee for the project.",
|
||||
guest_super_permissions: {
|
||||
title: "Grant view access to all work items for guest users:",
|
||||
sub_heading: "This will allow guests to have view access to all the project work items.",
|
||||
@@ -1908,6 +1913,9 @@ export default {
|
||||
label: "Estimates",
|
||||
title: "Enable estimates for my project",
|
||||
enable_description: "They help you in communicating complexity and workload of the team.",
|
||||
list_heading: "Estimate list",
|
||||
archived_heading: "Archived estimates",
|
||||
archived_description: "These are estimates from earlier project versions that are not currently in use. Read more",
|
||||
no_estimate: "No estimate",
|
||||
new: "New estimate system",
|
||||
create: {
|
||||
|
||||
@@ -1072,8 +1072,11 @@ export default {
|
||||
priority: "Приоритет {entity}",
|
||||
all: "Все {entity}",
|
||||
drop_here_to_move: "Переместите {entity} сюда",
|
||||
drop_here_to_delete: "Перетащите сюда, чтобы удалить {entity}",
|
||||
delete: {
|
||||
label: "Удалить {entity}",
|
||||
confirmation:
|
||||
"Вы уверены, что хотите удалить {entity} {identifier}? Все связанные данные будут удалены без возможности восстановления.",
|
||||
success: "{entity} успешно удалён",
|
||||
failed: "Ошибка удаления {entity}",
|
||||
},
|
||||
@@ -2024,7 +2027,9 @@ export default {
|
||||
members: {
|
||||
label: "Участники",
|
||||
project_lead: "Руководитель проекта",
|
||||
project_lead_description: "Выберите руководителя проекта.",
|
||||
default_assignee: "Ответственный по умолчанию",
|
||||
default_assignee_description: "Выберите ответственного по умолчанию для проекта.",
|
||||
guest_super_permissions: {
|
||||
title: "Дать гостям доступ на просмотр всех рабочих элементов:",
|
||||
sub_heading: "Гости смогут просматривать все рабочие элементы проекта",
|
||||
@@ -2067,6 +2072,9 @@ export default {
|
||||
label: "Оценки",
|
||||
title: "Включить оценки для моего проекта",
|
||||
enable_description: "Они помогают вам в общении о сложности и рабочей нагрузке команды.",
|
||||
list_heading: "Список оценок",
|
||||
archived_heading: "Архивные оценки",
|
||||
archived_description: "Это оценки из предыдущих версий проекта, которые сейчас не используются. Подробнее о них",
|
||||
no_estimate: "Без оценки",
|
||||
new: "Новая система оценок",
|
||||
create: {
|
||||
|
||||
@@ -202,10 +202,10 @@ function CustomMenu(props: ICustomMenuDropdownProps) {
|
||||
className={cn(
|
||||
"nodedc-glass-modal nodedc-glass-popup-surface my-1 min-w-[13rem] overflow-y-auto rounded-[1.25rem] border-0 px-2 py-2.5 text-12 whitespace-nowrap shadow-none outline-none",
|
||||
{
|
||||
"max-h-60": maxHeight === "lg",
|
||||
"max-h-48": maxHeight === "md",
|
||||
"max-h-36": maxHeight === "rg",
|
||||
"max-h-28": maxHeight === "sm",
|
||||
"max-h-[min(85vh,40rem)]": maxHeight === "lg",
|
||||
"max-h-[min(70vh,24rem)]": maxHeight === "md",
|
||||
"max-h-[min(55vh,18rem)]": maxHeight === "rg",
|
||||
"max-h-[min(40vh,12rem)]": maxHeight === "sm",
|
||||
},
|
||||
optionsClassName
|
||||
)}
|
||||
|
||||
@@ -122,7 +122,7 @@ function CustomSelect(props: ICustomSelectProps) {
|
||||
<Combobox.Options data-prevent-outside-click>
|
||||
<div
|
||||
className={cn(
|
||||
"z-30 my-1 min-w-48 overflow-y-scroll rounded-md border-[0.5px] border-subtle-1 bg-surface-1 px-2 py-2.5 text-11 whitespace-nowrap focus:outline-none",
|
||||
"nodedc-dropdown-surface z-30 my-1 min-w-48 overflow-y-scroll whitespace-nowrap focus:outline-none",
|
||||
optionsClassName
|
||||
)}
|
||||
ref={setPopperElement}
|
||||
@@ -166,9 +166,9 @@ function Option(props: ICustomSelectItemProps) {
|
||||
value={value}
|
||||
className={({ active }) =>
|
||||
cn(
|
||||
"flex cursor-pointer items-center justify-between gap-2 truncate rounded-sm px-1 py-1.5 text-secondary select-none",
|
||||
"nodedc-dropdown-option cursor-pointer text-secondary",
|
||||
{
|
||||
"bg-layer-transparent-hover": active,
|
||||
"bg-white/6": active,
|
||||
},
|
||||
className
|
||||
)
|
||||
|
||||
@@ -75,8 +75,14 @@ export function AlertModalCore(props: Props) {
|
||||
const Icon = VARIANT_ICONS[variant];
|
||||
|
||||
return (
|
||||
<ModalCore isOpen={isOpen} handleClose={handleClose} position={position} width={width}>
|
||||
<div className="flex flex-col items-center gap-4 p-5 sm:flex-row sm:items-start">
|
||||
<ModalCore
|
||||
isOpen={isOpen}
|
||||
handleClose={handleClose}
|
||||
position={position}
|
||||
width={width}
|
||||
className="transition-[width] ease-linear"
|
||||
>
|
||||
<div className="flex flex-col items-center gap-4 px-6 pt-6 pb-5 sm:flex-row sm:items-start">
|
||||
{!hideIcon && (
|
||||
<span
|
||||
className={cn(
|
||||
@@ -88,15 +94,24 @@ export function AlertModalCore(props: Props) {
|
||||
</span>
|
||||
)}
|
||||
<div className="text-center sm:text-left">
|
||||
<h3 className="text-16 font-medium">{title}</h3>
|
||||
<h3 className="text-18 font-medium text-secondary">{title}</h3>
|
||||
<p className="mt-1 text-13 text-secondary">{content}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col-reverse gap-2 border-t-[0.5px] border-subtle px-5 py-4 sm:flex-row sm:justify-end">
|
||||
<Button variant="secondary" onClick={handleClose}>
|
||||
<div className="flex flex-col-reverse gap-3 border-t border-subtle/70 px-6 py-4 sm:flex-row sm:justify-end">
|
||||
<Button variant="secondary" onClick={handleClose} className="nodedc-modal-secondary-button min-w-[8.25rem]">
|
||||
{secondaryButtonText}
|
||||
</Button>
|
||||
<Button variant={BUTTON_VARIANTS[variant]} tabIndex={1} onClick={handleSubmit} loading={isSubmitting}>
|
||||
<Button
|
||||
variant={BUTTON_VARIANTS[variant]}
|
||||
tabIndex={1}
|
||||
onClick={handleSubmit}
|
||||
loading={isSubmitting}
|
||||
className={cn("min-w-[8.25rem]", {
|
||||
"nodedc-modal-danger-button": variant === "danger",
|
||||
"nodedc-modal-primary-button": variant === "primary",
|
||||
})}
|
||||
>
|
||||
{isSubmitting ? primaryButtonText.loading : primaryButtonText.default}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user