From 9e7039ff836710a4ee0aad27e5c13ce5efc429fd Mon Sep 17 00:00:00 2001 From: rlazarini <remi.lazarini@cea.fr> Date: Thu, 22 Feb 2024 11:20:26 +0100 Subject: [PATCH] [ivette] style for field block --- ivette/src/dome/renderer/layout/forms.tsx | 20 +++++++++------ ivette/src/dome/renderer/layout/style.css | 31 +++++++++++++++++++++++ 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/ivette/src/dome/renderer/layout/forms.tsx b/ivette/src/dome/renderer/layout/forms.tsx index f165a54e23f..0b3baaf2123 100644 --- a/ivette/src/dome/renderer/layout/forms.tsx +++ b/ivette/src/dome/renderer/layout/forms.tsx @@ -637,6 +637,7 @@ export function useIndex<A>( /* --- Form Filter Context ---*/ /* --------------------------------------------------------------------------*/ +type modeForm = "grid" | "block"; export interface FilterProps { /** default is false. */ hidden?: boolean; @@ -653,7 +654,7 @@ export interface Children { children?: React.ReactNode } interface FormContext { disabled: boolean; hidden: boolean; - mode?: modeForm; + mode: modeForm; } const CONTEXT = React.createContext<FormContext | undefined>(undefined); @@ -666,12 +667,14 @@ const DISABLED = ({ disabled = false, enabled = true }: FilterProps): boolean => disabled || !enabled; +const DEFAULT_MODE = "grid"; + function useContext(props?: FilterProps): FormContext { const Parent = React.useContext(CONTEXT); return { hidden: (props && HIDDEN(props)) || (Parent?.hidden ?? false), disabled: (props && DISABLED(props)) || (Parent?.disabled ?? false), - mode: Parent?.mode, + mode: Parent?.mode ?? DEFAULT_MODE, }; } @@ -693,8 +696,6 @@ export function FormFilter(props: FilterProps & Children): JSX.Element | null { /* --- Main Form Container ---*/ /* --------------------------------------------------------------------------*/ -type modeForm = "grid" | "block"; - /** @category Form Containers */ export interface PageProps extends FilterProps, Children { /** Additional container class. */ @@ -710,9 +711,9 @@ export interface PageProps extends FilterProps, Children { @category Form Containers */ export function Page(props: PageProps): JSX.Element | null { - const { className, style, children, mode, ...filter } = props; + const { className, style, children, mode = DEFAULT_MODE, ...filter } = props; const { hidden, disabled } = useContext(filter); - const css = Utils.classes(className ?? 'dome-xForm-grid'); + const css = Utils.classes('dome-xForm-grid', className); if (hidden) return null; return ( <div className={css} style={style}> @@ -972,8 +973,11 @@ export function Field(props: GenericFieldProps): JSX.Element | null { switch(mode) { case "block": return ( - <Hbox className={disabled ? 'dome-disabled' : ""}> - <div className='dome-field-label-actions'> + <Hbox className={Utils.classes( + "dome-xForm-field-block", + disabled ? 'dome-disabled' : "" + )}> + <div className='dome-xForm-label-actions'> {labelField} {actionsComponent} </div> diff --git a/ivette/src/dome/renderer/layout/style.css b/ivette/src/dome/renderer/layout/style.css index a83d879a014..f5575d649ff 100644 --- a/ivette/src/dome/renderer/layout/style.css +++ b/ivette/src/dome/renderer/layout/style.css @@ -364,6 +364,37 @@ opacity: 0.9 ; } +/* -------------------------------------------------------------------------- */ +/* --- Field block --- */ +/* -------------------------------------------------------------------------- */ + +.dome-xForm-field-block, +.dome-xForm-field-block .dome-xForm-label-actions, +.dome-xForm-field-block > .dome-xForm-field { + display:flex; + flex-wrap: wrap; +} + +.dome-xForm-field-block .dome-xForm-label{ + margin-right: 15px; +} + +.dome-xForm-field-block .dome-xForm-field-actions { + margin: auto 0; +} + +.dome-xForm-field-block, +.dome-xForm-field-block > .dome-xForm-field { + max-width: 100%; + align-items: center; + margin: 2px 0; +} + +.dome-xForm-field-block { + justify-content: space-between; + margin-top: 4px; +} + /* -------------------------------------------------------------------------- */ /* --- Errors --- */ /* -------------------------------------------------------------------------- */ -- GitLab