From c29fa0242f7e8e7b3b2daa89c9b05e96867acc83 Mon Sep 17 00:00:00 2001 From: cohitre Date: Wed, 28 Feb 2024 11:39:19 -0800 Subject: [PATCH] Updating images and columns sidebars. Adding width/height to block-image. (#35) --- packages/block-image/package.json | 2 +- packages/block-image/src/index.tsx | 9 +++++ .../ColumnsContainerSidebarPanel.tsx | 40 ++++++++++++++++++- .../input-panels/ImageSidebarPanel.tsx | 16 +++++++- .../helpers/inputs/TextDimensionInput.tsx | 33 +++++++++++++++ 5 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 packages/editor-sample/src/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/TextDimensionInput.tsx diff --git a/packages/block-image/package.json b/packages/block-image/package.json index 608b65e..1f90ffa 100644 --- a/packages/block-image/package.json +++ b/packages/block-image/package.json @@ -1,6 +1,6 @@ { "name": "@usewaypoint/block-image", - "version": "0.0.2", + "version": "0.0.3", "description": "@usewaypoint/document compatible Image component", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/block-image/src/index.tsx b/packages/block-image/src/index.tsx index e0dcbb8..36001ac 100644 --- a/packages/block-image/src/index.tsx +++ b/packages/block-image/src/index.tsx @@ -29,6 +29,8 @@ export const ImagePropsSchema = z.object({ .nullable(), props: z .object({ + width: z.number().optional().nullable(), + height: z.number().optional().nullable(), url: z.string().optional().nullable(), alt: z.string().optional().nullable(), linkHref: z.string().optional().nullable(), @@ -48,11 +50,18 @@ export function Image({ style, props }: ImageProps) { }; const linkHref = props?.linkHref ?? null; + const width = props?.width ?? undefined; + const height = props?.height ?? undefined; + const imageElement = ( {props?.alt { updateData({ ...data, props: { ...data.props, columnsCount: v === '2' ? 2 : 3 } }); }} @@ -38,8 +45,37 @@ export default function ColumnsContainerPanel({ data, setData }: ColumnsContaine 2 3 + } + units="px" + step={4} + marks + min={0} + max={80} + defaultValue={data.props?.columnsGap ?? 0} + onChange={(columnsGap) => updateData({ ...data, props: { ...data.props, columnsGap } })} + /> + { + updateData({ ...data, props: { ...data.props, contentAlignment } }); + }} + > + + + + + + + + + + + updateData({ ...data, style })} /> diff --git a/packages/editor-sample/src/App/InspectorDrawer/ConfigurationPanel/input-panels/ImageSidebarPanel.tsx b/packages/editor-sample/src/App/InspectorDrawer/ConfigurationPanel/input-panels/ImageSidebarPanel.tsx index bdf2259..ff36cbc 100644 --- a/packages/editor-sample/src/App/InspectorDrawer/ConfigurationPanel/input-panels/ImageSidebarPanel.tsx +++ b/packages/editor-sample/src/App/InspectorDrawer/ConfigurationPanel/input-panels/ImageSidebarPanel.tsx @@ -5,11 +5,12 @@ import { VerticalAlignCenterOutlined, VerticalAlignTopOutlined, } from '@mui/icons-material'; -import { ToggleButton } from '@mui/material'; +import { Stack, ToggleButton } from '@mui/material'; import { ImageProps, ImagePropsSchema } from '@usewaypoint/block-image'; import BaseSidebarPanel from './helpers/BaseSidebarPanel'; import RadioGroupInput from './helpers/inputs/RadioGroupInput'; +import TextDimensionInput from './helpers/inputs/TextDimensionInput'; import TextInput from './helpers/inputs/TextInput'; import MultiStylePropertyPanel from './helpers/style-inputs/MultiStylePropertyPanel'; @@ -32,6 +33,19 @@ export default function ImageSidebarPanel({ data, setData }: ImageSidebarPanelPr return ( + + updateData({ ...data, props: { ...data.props, width } })} + /> + updateData({ ...data, props: { ...data.props, height } })} + /> + + void; +}; +export default function TextDimensionInput({ label, defaultValue, onChange }: TextDimensionInputProps) { + const handleChange: React.ChangeEventHandler = (ev) => { + const value = parseInt(ev.target.value); + onChange(isNaN(value) ? null : value); + }; + return ( + + px + + ), + }} + /> + ); +}