From 5f9d9c418ee92f48b2a50458b5fe1e5bd5901461 Mon Sep 17 00:00:00 2001 From: DCCONSTRUCTIONS Date: Wed, 29 Apr 2026 16:42:52 +0300 Subject: [PATCH] =?UTF-8?q?UI=20-=20=D0=9C=D0=95=D0=96=D0=9F=D0=A0=D0=9E?= =?UTF-8?q?=D0=95=D0=9A=D0=A2=D0=9D=D0=90=D0=AF=20=D0=9A=D0=9E=D0=9C=D0=9C?= =?UTF-8?q?=D0=A3=D0=9D=D0=98=D0=9A=D0=90=D0=A6=D0=98=D0=AF:=20=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=B7=D0=BE=D0=BD=D1=82=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20=D0=BC=D0=B5=D0=BD=D1=8E=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=80=D1=82=D0=BE=D1=87=D0=B5=D0=BA=20=D0=B1=D0=B5=D0=B7=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=D0=B5=D1=82=D0=BA=D0=B8=20=D0=BA=D0=B0=D0=BD=D0=B1=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/external-contours/board-item.tsx | 10 ++-- .../kanban/internal-contour-card.tsx | 12 +--- .../quick-action-dropdowns/project-issue.tsx | 58 ++++++++++++++++++- plane-src/apps/web/styles/globals.css | 31 ++++++++++ 4 files changed, 94 insertions(+), 17 deletions(-) diff --git a/plane-src/apps/web/ce/components/projects/external-contours/board-item.tsx b/plane-src/apps/web/ce/components/projects/external-contours/board-item.tsx index 5a2debc..7683d8c 100644 --- a/plane-src/apps/web/ce/components/projects/external-contours/board-item.tsx +++ b/plane-src/apps/web/ce/components/projects/external-contours/board-item.tsx @@ -330,14 +330,14 @@ export const ExternalContoursBoardItem = observer(function ExternalContoursBoard } buttonClassName="h-12 w-12" - menuClassName="min-w-[18rem]" + menuClassName="nodedc-work-item-action-menu" onOpenChange={(isOpen) => { if (isOpen) void ensureSourceOptions(); }} items={[]} menuContent={({ closeDropdown }) => ( -
-
+
+
Приоритет
@@ -358,7 +358,7 @@ export const ExternalContoursBoardItem = observer(function ExternalContoursBoard ))}
-
+
Статус
@@ -388,7 +388,7 @@ export const ExternalContoursBoardItem = observer(function ExternalContoursBoard )}
-
+
Быстрые действия
diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/kanban/internal-contour-card.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/kanban/internal-contour-card.tsx index d26d089..d9950fb 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/kanban/internal-contour-card.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/kanban/internal-contour-card.tsx @@ -96,7 +96,7 @@ export const InternalContourKanbanCard = observer(function InternalContourKanban }; const menuContentBefore = ({ closeDropdown }: { closeDropdown: () => void }) => ( <> -
+
Приоритет
{priorityOptions.map((priority) => (
- -
-
- Быстрые действия -
-
); const dateButton = ( @@ -214,7 +208,7 @@ export const InternalContourKanbanCard = observer(function InternalContourKanban issue, parentRef: cardRef, customActionButton, - menuClassName: "min-w-[18rem]", + menuClassName: "nodedc-work-item-action-menu", menuContentBefore, placement: "bottom-end", })} diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/project-issue.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/project-issue.tsx index 7b4dbbb..122d5d8 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/project-issue.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/project-issue.tsx @@ -12,7 +12,8 @@ import { useParams } from "next/navigation"; import { ARCHIVABLE_STATE_GROUPS, EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; import type { TIssue } from "@plane/types"; import { EIssuesStoreType } from "@plane/types"; -import { ActionDropdown, ContextMenu } from "@plane/ui"; +import { ActionDropdown, ContextMenu, type TContextMenuItem } from "@plane/ui"; +import { cn } from "@plane/utils"; // hooks import { useIssues } from "@/hooks/store/use-issues"; import { useProject } from "@/hooks/store/use-project"; @@ -102,6 +103,56 @@ export const ProjectIssueQuickActions = observer(function ProjectIssueQuickActio }; const MENU_ITEMS = useProjectIssueMenuItems(menuItemProps); + const shouldUseNodedcActionGrid = menuClassName?.includes("nodedc-work-item-action-menu") ?? false; + const DROPDOWN_MENU_ITEMS = shouldUseNodedcActionGrid + ? MENU_ITEMS.filter((item) => item.key !== "open-in-new-tab") + : MENU_ITEMS; + + const renderNodedcMenuItem = (item: TContextMenuItem, closeDropdown: () => void) => { + if (item.shouldRender === false) return null; + + const Icon = item.icon; + + return ( + + ); + }; + + const renderNodedcMenuContent = ({ closeDropdown }: { closeDropdown: () => void }) => ( +
+ {typeof menuContentBefore === "function" ? menuContentBefore({ closeDropdown }) : menuContentBefore} +
+
+ Быстрые действия +
+ {DROPDOWN_MENU_ITEMS.map((item) => renderNodedcMenuItem(item, closeDropdown))} +
+
+ ); const CONTEXT_MENU_ITEMS = MENU_ITEMS.map(function CONTEXT_MENU_ITEMS(item) { return { @@ -153,9 +204,10 @@ export const ProjectIssueQuickActions = observer(function ProjectIssueQuickActio diff --git a/plane-src/apps/web/styles/globals.css b/plane-src/apps/web/styles/globals.css index 72b0cff..6da5dda 100644 --- a/plane-src/apps/web/styles/globals.css +++ b/plane-src/apps/web/styles/globals.css @@ -347,6 +347,37 @@ 0 6px 18px rgba(0, 0, 0, 0.2); } + .nodedc-tall-action-menu > div { + max-height: calc(100vh - 24px) !important; + } + + .nodedc-work-item-action-menu { + width: min(calc(100vw - 24px), 46rem); + } + + .nodedc-work-item-action-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 0.5rem; + align-items: start; + } + + .nodedc-work-item-action-section { + min-width: 0; + } + + @media (max-width: 760px) { + .nodedc-work-item-action-menu { + width: min(calc(100vw - 24px), 18rem); + } + + .nodedc-work-item-action-grid { + grid-template-columns: 1fr; + max-height: calc(100vh - 24px); + overflow-y: auto; + } + } + .nodedc-bottom-dock { background: linear-gradient(180deg, rgba(255, 255, 255, 0.024) 0%, rgba(255, 255, 255, 0.008) 100%), rgba(7, 7, 10, 0.72) !important;