UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: выравнивание верхних блоков и зазоров внешних контуров
This commit is contained in:
parent
a4e9c3751a
commit
47d379e77f
|
|
@ -78,7 +78,7 @@ export const ExternalContoursContentRoot = observer(function ExternalContoursCon
|
||||||
if (!contourRequest || !issue) return <></>;
|
if (!contourRequest || !issue) return <></>;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="relative flex h-full w-full flex-col overflow-hidden">
|
<div className="relative flex h-full w-full flex-col overflow-hidden pt-6">
|
||||||
<div className="z-[11] min-h-[52px] flex-shrink-0">
|
<div className="z-[11] min-h-[52px] flex-shrink-0">
|
||||||
<ExternalContoursIssueActionsHeader
|
<ExternalContoursIssueActionsHeader
|
||||||
setIsMobileSidebar={setIsMobileSidebar}
|
setIsMobileSidebar={setIsMobileSidebar}
|
||||||
|
|
@ -90,7 +90,7 @@ export const ExternalContoursContentRoot = observer(function ExternalContoursCon
|
||||||
hasDirectTargetAccess={hasDirectTargetAccess}
|
hasDirectTargetAccess={hasDirectTargetAccess}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<ContentWrapper className="space-y-4 px-4 py-4">
|
<ContentWrapper className="space-y-4 px-4 pb-4 pt-4">
|
||||||
<ExternalContoursIssueMainContent
|
<ExternalContoursIssueMainContent
|
||||||
workspaceSlug={workspaceSlug}
|
workspaceSlug={workspaceSlug}
|
||||||
sourceProjectId={projectId}
|
sourceProjectId={projectId}
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,8 @@ export const ProjectExternalContoursHeader = observer(function ProjectExternalCo
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Header>
|
<Header className="pt-4">
|
||||||
<Header.LeftItem>
|
<Header.LeftItem className="items-center pt-2">
|
||||||
<div className="flex flex-grow items-center gap-4">
|
<div className="flex flex-grow items-center gap-4">
|
||||||
<Breadcrumbs isLoading={currentProjectDetailsLoader === "init-loader"}>
|
<Breadcrumbs isLoading={currentProjectDetailsLoader === "init-loader"}>
|
||||||
<CommonProjectBreadcrumbs workspaceSlug={workspaceSlug?.toString()} projectId={projectId?.toString()} />
|
<CommonProjectBreadcrumbs workspaceSlug={workspaceSlug?.toString()} projectId={projectId?.toString()} />
|
||||||
|
|
@ -60,7 +60,7 @@ export const ProjectExternalContoursHeader = observer(function ProjectExternalCo
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</Header.LeftItem>
|
</Header.LeftItem>
|
||||||
<Header.RightItem>
|
<Header.RightItem className="pt-2">
|
||||||
{workspaceSlug && projectId && isAuthorized ? (
|
{workspaceSlug && projectId && isAuthorized ? (
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<ExternalContourCreateModalRoot
|
<ExternalContourCreateModalRoot
|
||||||
|
|
@ -73,7 +73,7 @@ export const ProjectExternalContoursHeader = observer(function ProjectExternalCo
|
||||||
variant="primary"
|
variant="primary"
|
||||||
size="lg"
|
size="lg"
|
||||||
onClick={() => setCreateIssueModal(true)}
|
onClick={() => setCreateIssueModal(true)}
|
||||||
className="nodedc-external-primary-button min-w-[13rem]"
|
className="nodedc-external-primary-button min-w-[14rem]"
|
||||||
>
|
>
|
||||||
{t("external_contours_page.header.add_request")}
|
{t("external_contours_page.header.add_request")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ export const ExternalContoursListItem = observer(function ExternalContoursListIt
|
||||||
const { isMobile } = usePlatformOS();
|
const { isMobile } = usePlatformOS();
|
||||||
const request = getRequestById(requestId);
|
const request = getRequestById(requestId);
|
||||||
const issue = request?.issue;
|
const issue = request?.issue;
|
||||||
|
const isActive = selectedInboxIssueId === requestId;
|
||||||
|
|
||||||
const handleIssueRedirection = (event: MouseEvent, currentIssueId: string | undefined) => {
|
const handleIssueRedirection = (event: MouseEvent, currentIssueId: string | undefined) => {
|
||||||
if (selectedInboxIssueId === currentIssueId) event.preventDefault();
|
if (selectedInboxIssueId === currentIssueId) event.preventDefault();
|
||||||
|
|
@ -52,14 +53,15 @@ export const ExternalContoursListItem = observer(function ExternalContoursListIt
|
||||||
<Link
|
<Link
|
||||||
id={`external-contour-list-item-${request.id}`}
|
id={`external-contour-list-item-${request.id}`}
|
||||||
key={`${projectId}_${request.id}`}
|
key={`${projectId}_${request.id}`}
|
||||||
|
className="block"
|
||||||
href={`/${workspaceSlug}/projects/${projectId}/external-contours?currentTab=${currentTab}&inboxIssueId=${request.id}`}
|
href={`/${workspaceSlug}/projects/${projectId}/external-contours?currentTab=${currentTab}&inboxIssueId=${request.id}`}
|
||||||
onClick={(e) => handleIssueRedirection(e, request.id)}
|
onClick={(e) => handleIssueRedirection(e, request.id)}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
data-active={selectedInboxIssueId === request.id}
|
data-active={isActive}
|
||||||
className={cn(
|
className={cn(
|
||||||
"nodedc-external-card relative flex min-h-[15rem] cursor-pointer flex-col gap-5 px-6 py-5 transition-all hover:bg-white/5",
|
"nodedc-external-card relative flex min-h-[15rem] cursor-pointer flex-col gap-5 px-6 py-5 transition-all hover:bg-white/5",
|
||||||
{ "ring-0": selectedInboxIssueId === request.id }
|
{ "ring-0": isActive }
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<div className="space-y-0.5">
|
<div className="space-y-0.5">
|
||||||
|
|
@ -72,12 +74,16 @@ export const ExternalContoursListItem = observer(function ExternalContoursListIt
|
||||||
showTooltip
|
showTooltip
|
||||||
/>
|
/>
|
||||||
<div className="min-w-0">
|
<div className="min-w-0">
|
||||||
<div className="truncate text-[15px] leading-5 font-semibold text-primary">{requesterName}</div>
|
<div
|
||||||
|
className={cn("truncate text-[15px] leading-5 font-semibold", isActive ? "text-[#0b1117]" : "text-primary")}
|
||||||
|
>
|
||||||
|
{requesterName}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex shrink-0 items-center gap-2">
|
<div className="flex shrink-0 items-center gap-2">
|
||||||
<div className="text-11 font-medium text-tertiary">
|
<div className={cn("text-11 font-medium", isActive ? "text-[#17212b]/70" : "text-tertiary")}>
|
||||||
{issue.project_detail?.identifier || "REQ"}-{issue.sequence_id}
|
{issue.project_detail?.identifier || "REQ"}-{issue.sequence_id}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
|
|
@ -91,11 +97,18 @@ export const ExternalContoursListItem = observer(function ExternalContoursListIt
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="truncate pl-10 text-[12px] font-medium leading-4 text-secondary">{contourName}</div>
|
<div className={cn("truncate pl-10 text-[12px] font-medium leading-4", isActive ? "text-[#17212b]/75" : "text-secondary")}>
|
||||||
|
{contourName}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex flex-1 items-center justify-center px-5 py-2 text-center">
|
<div className="flex flex-1 items-center justify-center px-5 py-2 text-center">
|
||||||
<h3 className="line-clamp-3 w-full max-w-[18.5rem] text-center text-16 leading-7 font-semibold text-primary">
|
<h3
|
||||||
|
className={cn(
|
||||||
|
"line-clamp-3 w-full max-w-[18.5rem] text-center text-16 leading-7 font-semibold",
|
||||||
|
isActive ? "text-[#0b1117]" : "text-primary"
|
||||||
|
)}
|
||||||
|
>
|
||||||
{issue.name}
|
{issue.name}
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -125,7 +138,12 @@ export const ExternalContoursListItem = observer(function ExternalContoursListIt
|
||||||
tooltipContent={`${renderFormattedDate(lastUpdatedAt ?? "")}`}
|
tooltipContent={`${renderFormattedDate(lastUpdatedAt ?? "")}`}
|
||||||
isMobile={isMobile}
|
isMobile={isMobile}
|
||||||
>
|
>
|
||||||
<div className="rounded-full bg-white/6 px-3 py-1.5 text-12 text-secondary">
|
<div
|
||||||
|
className={cn(
|
||||||
|
"rounded-full px-3 py-1.5 text-12",
|
||||||
|
isActive ? "bg-black/10 text-[#17212b]/80" : "bg-white/6 text-secondary"
|
||||||
|
)}
|
||||||
|
>
|
||||||
{renderFormattedDate(lastUpdatedAt ?? "")}
|
{renderFormattedDate(lastUpdatedAt ?? "")}
|
||||||
</div>
|
</div>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ export const ExternalContoursSidebar = observer(function ExternalContoursSidebar
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
) : filteredRequestIds.length > 0 ? (
|
) : filteredRequestIds.length > 0 ? (
|
||||||
<div key={resolvedTab} className="space-y-3">
|
<div key={resolvedTab} className="space-y-4 pb-1">
|
||||||
{filteredRequestIds.map((requestId) => (
|
{filteredRequestIds.map((requestId) => (
|
||||||
<ExternalContoursListItem
|
<ExternalContoursListItem
|
||||||
key={requestId}
|
key={requestId}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue