UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: канонизация breadcrumb и CTA на экране страниц
This commit is contained in:
parent
312fc1eca4
commit
55549219ff
|
|
@ -7,12 +7,11 @@
|
|||
import { observer } from "mobx-react";
|
||||
import { useParams } from "next/navigation";
|
||||
// plane imports
|
||||
import { EProjectFeatureKey } from "@plane/constants";
|
||||
import { PageIcon } from "@plane/propel/icons";
|
||||
import type { ICustomSearchSelectOption } from "@plane/types";
|
||||
import { Breadcrumbs, Header, BreadcrumbNavigationSearchDropdown } from "@plane/ui";
|
||||
import { getPageName } from "@plane/utils";
|
||||
// components
|
||||
import { BreadcrumbLink } from "@/components/common/breadcrumb-link";
|
||||
import { PageAccessIcon } from "@/components/common/page-access-icon";
|
||||
import { SwitcherIcon, SwitcherLabel } from "@/components/common/switcher-label";
|
||||
import { PageHeaderActions } from "@/components/pages/header/actions";
|
||||
|
|
@ -22,6 +21,7 @@ import { useProject } from "@/hooks/store/use-project";
|
|||
import { useAppRouter } from "@/hooks/use-app-router";
|
||||
// plane web imports
|
||||
import { CommonProjectBreadcrumbs } from "@/plane-web/components/breadcrumbs/common";
|
||||
import { ProjectFeatureBreadcrumb } from "@/plane-web/components/breadcrumbs/project-feature";
|
||||
import { PageDetailsHeaderExtraActions } from "@/plane-web/components/pages";
|
||||
import { EPageStoreType, usePage, usePageStore } from "@/plane-web/hooks/store";
|
||||
|
||||
|
|
@ -70,14 +70,10 @@ export const PageDetailsHeader = observer(function PageDetailsHeader() {
|
|||
<div>
|
||||
<Breadcrumbs isLoading={loader === "init-loader"}>
|
||||
<CommonProjectBreadcrumbs workspaceSlug={workspaceSlug?.toString()} projectId={projectId?.toString()} />
|
||||
<Breadcrumbs.Item
|
||||
component={
|
||||
<BreadcrumbLink
|
||||
label="Pages"
|
||||
href={`/${workspaceSlug}/projects/${projectId}/pages/`}
|
||||
icon={<PageIcon className="h-4 w-4 text-tertiary" />}
|
||||
/>
|
||||
}
|
||||
<ProjectFeatureBreadcrumb
|
||||
workspaceSlug={workspaceSlug?.toString()}
|
||||
projectId={projectId?.toString()}
|
||||
featureKey={EProjectFeatureKey.PAGES}
|
||||
/>
|
||||
|
||||
<Breadcrumbs.Item
|
||||
|
|
|
|||
|
|
@ -8,25 +8,26 @@ import { useState } from "react";
|
|||
import { observer } from "mobx-react";
|
||||
import { useParams, useRouter, useSearchParams } from "next/navigation";
|
||||
// constants
|
||||
import { EPageAccess } from "@plane/constants";
|
||||
import { EPageAccess, EProjectFeatureKey } from "@plane/constants";
|
||||
import { useTranslation } from "@plane/i18n";
|
||||
// plane types
|
||||
import { Button } from "@plane/propel/button";
|
||||
import { PageIcon } from "@plane/propel/icons";
|
||||
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
|
||||
import type { TPage } from "@plane/types";
|
||||
// plane ui
|
||||
import { Breadcrumbs, Header } from "@plane/ui";
|
||||
// helpers
|
||||
import { BreadcrumbLink } from "@/components/common/breadcrumb-link";
|
||||
// components
|
||||
import { AppHeaderPrimaryActionButton } from "@/components/core/app-header/primary-action-button";
|
||||
// hooks
|
||||
import { useProject } from "@/hooks/store/use-project";
|
||||
// plane web imports
|
||||
import { CommonProjectBreadcrumbs } from "@/plane-web/components/breadcrumbs/common";
|
||||
import { ProjectFeatureBreadcrumb } from "@/plane-web/components/breadcrumbs/project-feature";
|
||||
import { EPageStoreType, usePageStore } from "@/plane-web/hooks/store";
|
||||
|
||||
export const PagesListHeader = observer(function PagesListHeader() {
|
||||
// states
|
||||
const [isCreatingPage, setIsCreatingPage] = useState(false);
|
||||
const { t } = useTranslation();
|
||||
// router
|
||||
const router = useRouter();
|
||||
const { workspaceSlug, projectId } = useParams();
|
||||
|
|
@ -63,24 +64,19 @@ export const PagesListHeader = observer(function PagesListHeader() {
|
|||
<Header.LeftItem>
|
||||
<Breadcrumbs isLoading={loader === "init-loader"}>
|
||||
<CommonProjectBreadcrumbs workspaceSlug={workspaceSlug?.toString()} projectId={projectId?.toString()} />
|
||||
<Breadcrumbs.Item
|
||||
component={
|
||||
<BreadcrumbLink
|
||||
label="Pages"
|
||||
href={`/${workspaceSlug}/projects/${currentProjectDetails?.id}/pages/`}
|
||||
icon={<PageIcon className="h-4 w-4 text-tertiary" />}
|
||||
isLast
|
||||
/>
|
||||
}
|
||||
<ProjectFeatureBreadcrumb
|
||||
workspaceSlug={workspaceSlug?.toString()}
|
||||
projectId={projectId?.toString()}
|
||||
featureKey={EProjectFeatureKey.PAGES}
|
||||
isLast
|
||||
/>
|
||||
</Breadcrumbs>
|
||||
</Header.LeftItem>
|
||||
{canCurrentUserCreatePage && (
|
||||
<Header.RightItem>
|
||||
<Button variant="primary" size="lg" onClick={handleCreatePage} loading={isCreatingPage}>
|
||||
{isCreatingPage ? "Adding" : "Add page"}
|
||||
</Button>
|
||||
<AppHeaderPrimaryActionButton onClick={handleCreatePage} loading={isCreatingPage}>
|
||||
{isCreatingPage ? t("creating") : t("app_header.add_page")}
|
||||
</AppHeaderPrimaryActionButton>
|
||||
</Header.RightItem>
|
||||
)}
|
||||
</Header>
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ function ProjectPagesPage({ params }: Route.ComponentProps) {
|
|||
const { allowPermissions } = useUserPermissions();
|
||||
// derived values
|
||||
const project = getProjectById(projectId);
|
||||
const pageTitle = project?.name ? `${project?.name} - Pages` : undefined;
|
||||
const pageTitle = project?.name ? `${project?.name} - ${t("sidebar.pages")}` : undefined;
|
||||
const canPerformEmptyStateActions = allowPermissions([EUserProjectRoles.ADMIN], EUserPermissionsLevel.PROJECT);
|
||||
const resolvedPath = resolvedTheme === "light" ? lightPagesAsset : darkPagesAsset;
|
||||
const pageType = getPageType(type);
|
||||
|
|
|
|||
|
|
@ -511,6 +511,7 @@ export default {
|
|||
add_work_item: "Add work item",
|
||||
app_header: {
|
||||
add_task: "Add task",
|
||||
add_page: "Add page",
|
||||
},
|
||||
advanced_description_placeholder: "Press '/' for commands",
|
||||
create_work_item: "Create work item",
|
||||
|
|
|
|||
|
|
@ -667,6 +667,7 @@ export default {
|
|||
add_work_item: "Добавить рабочий элемент",
|
||||
app_header: {
|
||||
add_task: "Добавить задачу",
|
||||
add_page: "Добавить страницу",
|
||||
},
|
||||
advanced_description_placeholder: "Нажмите '/' для команд",
|
||||
create_work_item: "Создать рабочий элемент",
|
||||
|
|
|
|||
Loading…
Reference in New Issue