From b80165e6a4e9935f5bb4ff0cdc7bee9f083cd31d Mon Sep 17 00:00:00 2001 From: Roman Pominov Date: Wed, 9 Nov 2022 13:06:34 +0400 Subject: [PATCH] Pages small improvements (#428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fixes #424 - Fixes #405 - Removed the "pages" feature-flag — enabled it without a flag --- .../features/sidebar-left/lib/header.tsx | 10 +- .../sidebar-left/panels/pages/pages.tsx | 35 +++--- .../sidebar-left/panels/pages/settings.tsx | 109 +++++++++++++----- .../features/sidebar-left/sidebar-left.tsx | 2 - .../app/routes/rest/pages.$projectId.ts | 16 ++- .../app/shared/feature-flags/flags.ts | 1 - packages/design-system/src/index.ts | 1 + packages/project/src/db/build.ts | 2 +- 8 files changed, 125 insertions(+), 51 deletions(-) diff --git a/apps/designer/app/designer/features/sidebar-left/lib/header.tsx b/apps/designer/app/designer/features/sidebar-left/lib/header.tsx index 5bfc9f0e31..48d5b9cdaf 100644 --- a/apps/designer/app/designer/features/sidebar-left/lib/header.tsx +++ b/apps/designer/app/designer/features/sidebar-left/lib/header.tsx @@ -1,4 +1,4 @@ -import { Flex, IconButton, Text } from "@webstudio-is/design-system"; +import { Flex, IconButton, Text, Tooltip } from "@webstudio-is/design-system"; import { Separator } from "@webstudio-is/design-system"; import { CrossIcon } from "@webstudio-is/icons"; @@ -24,7 +24,9 @@ export const Header = ({ title, suffix }: HeaderProps) => { }; export const CloseButton = ({ onClick }: { onClick: () => void }) => ( - - - + + + + + ); diff --git a/apps/designer/app/designer/features/sidebar-left/panels/pages/pages.tsx b/apps/designer/app/designer/features/sidebar-left/panels/pages/pages.tsx index e3c2b9e8e6..2ae389aaae 100644 --- a/apps/designer/app/designer/features/sidebar-left/panels/pages/pages.tsx +++ b/apps/designer/app/designer/features/sidebar-left/panels/pages/pages.tsx @@ -6,6 +6,7 @@ import { type TreeItemRenderProps, styled, Flex, + Tooltip, } from "@webstudio-is/design-system"; import { type Publish } from "~/shared/pubsub"; import { @@ -119,13 +120,19 @@ const PagesPanel = ({ {isEditing ? ( ) : ( - onEdit(props.itemData.id)} + - - + onEdit(props.itemData.id)} + > + + + )} ) @@ -153,13 +160,15 @@ const PagesPanel = ({ suffix={ <> {onCreateNewPage && ( - onCreateNewPage()} - aria-label="New Page" - > - - + + onCreateNewPage()} + aria-label="New page" + > + + + )} {onClose && } diff --git a/apps/designer/app/designer/features/sidebar-left/panels/pages/settings.tsx b/apps/designer/app/designer/features/sidebar-left/panels/pages/settings.tsx index ec91f817ef..bf7cc891cf 100644 --- a/apps/designer/app/designer/features/sidebar-left/panels/pages/settings.tsx +++ b/apps/designer/app/designer/features/sidebar-left/panels/pages/settings.tsx @@ -3,10 +3,12 @@ import { Button, Box, Label, + TextArea, TextField, styled, Flex, InputErrorsTooltip, + Tooltip, } from "@webstudio-is/design-system"; import { useFetcher } from "@remix-run/react"; import { ChevronDoubleLeftIcon, TrashIcon } from "@webstudio-is/icons"; @@ -37,9 +39,20 @@ const Group = styled(Flex, { defaultVariants: { direction: "column" }, }); -const fieldNames = ["name", "path"] as const; +const fieldNames = ["name", "path", "title", "description"] as const; type FieldName = typeof fieldNames[number]; -type EditablePage = Pick; +type FormPage = Pick & { + description: string; +}; + +const toFormPage = (page: Page): FormPage => { + return { + name: page.name, + path: page.path, + title: page.title, + description: page.meta.description ?? "", + }; +}; const FormFields = ({ disabled, @@ -48,10 +61,10 @@ const FormFields = ({ fieldErrors, }: { disabled?: boolean; - values: EditablePage; + values: FormPage; onChange: (event: { field: Name; - value: EditablePage[Name]; + value: FormPage[Name]; }) => void; fieldErrors: ZodError["formErrors"]["fieldErrors"]; }) => { @@ -89,6 +102,36 @@ const FormFields = ({ /> + + + + { + onChange({ field: "title", value: event.target.value }); + }} + /> + + + + + +