diff --git a/components/editable/Editable.tsx b/components/editable/BaseEditable.tsx similarity index 83% rename from components/editable/Editable.tsx rename to components/editable/BaseEditable.tsx index 1329718..a7432b9 100644 --- a/components/editable/Editable.tsx +++ b/components/editable/BaseEditable.tsx @@ -8,7 +8,7 @@ type EditableProps = { } -export function Editable({editing, preview}: EditableProps) { +export function BaseEditable({ editing, preview }: EditableProps) { const [isEditing,] = useDefinedContext(EditingContext) return isEditing ? editing : preview diff --git a/components/editable/EditableDateTimeLocal.tsx b/components/editable/EditableDateTimeLocal.tsx index fc117a8..f67de3a 100644 --- a/components/editable/EditableDateTimeLocal.tsx +++ b/components/editable/EditableDateTimeLocal.tsx @@ -1,7 +1,7 @@ import { HTMLProps } from "react"; import { toDatetimeLocal } from "../../utils/dateFields"; import { FestaMoment } from "../extensions/FestaMoment"; -import { Editable } from "./Editable"; +import { BaseEditable } from "./BaseEditable"; export type EditableDateTimeLocalProps = Omit, "value" | "max" | "min"> & { value: Date | null, max?: Date, min?: Date } @@ -9,7 +9,7 @@ export type EditableDateTimeLocalProps = Omit, "valu export function EditableDateTimeLocal(props: EditableDateTimeLocalProps) { return ( - & { value?: undefined }) { return ( - } diff --git a/components/editable/EditableMarkdown.tsx b/components/editable/EditableMarkdown.tsx index 5803170..0096cd0 100644 --- a/components/editable/EditableMarkdown.tsx +++ b/components/editable/EditableMarkdown.tsx @@ -1,13 +1,13 @@ import { HTMLProps } from "react"; import { FestaMarkdown } from "../extensions/FestaMarkdown"; -import { Editable } from "./Editable"; +import { BaseEditable } from "./BaseEditable"; /** * Controlled input component which displays a `textarea` in editing mode, and renders the input in Markdown using {@link FestaMarkdown} in preview mode. */ export function EditableMarkdown(props: HTMLProps & { value: string }) { return ( - } diff --git a/components/editable/EditableText.tsx b/components/editable/EditableText.tsx index 0c8bb2d..3c6a60d 100644 --- a/components/editable/EditableText.tsx +++ b/components/editable/EditableText.tsx @@ -1,5 +1,5 @@ import { HTMLProps } from "react"; -import { Editable } from "./Editable"; +import { BaseEditable } from "./BaseEditable"; /** @@ -7,7 +7,7 @@ import { Editable } from "./Editable"; */ export function EditableText(props: HTMLProps & { value: string }) { return ( - } diff --git a/components/form/FormFromTo.tsx b/components/form/FormFromTo.tsx index 374c4ca..312c25c 100644 --- a/components/form/FormFromTo.tsx +++ b/components/form/FormFromTo.tsx @@ -1,33 +1,37 @@ import classNames from "classnames" -import { ReactNode } from "react" +import { HTMLProps, memo } from "react" -type FormDateRangeProps = { + +export type FormFromToProps = HTMLProps & { preview: boolean, - icon: ReactNode, - start: ReactNode, - connector: ReactNode, - end: ReactNode, } - -export function FormFromTo(props: FormDateRangeProps) { +export const FormFromTo = memo((props: FormFromToProps) => { return ( -
-
- {props.icon} -
-
- {props.start} -
-
- {props.connector} -
-
- {props.end} -
-
+
) -} \ No newline at end of file +}) + + +export type FormFromToPartProps = HTMLProps & { + part: "icon" | "start" | "connector" | "end" +} + +export const FormFromToPart = memo((props: FormFromToPartProps) => { + return ( +
+ ) +})