UI: init FieldLayout wrapper

This commit is contained in:
Johannes Kirschbauer
2024-12-20 18:11:36 +01:00
parent ee4cdb2b76
commit de5479169c

View File

@@ -0,0 +1,29 @@
import { JSX, splitProps } from "solid-js";
import cx from "classnames";
interface LayoutProps extends JSX.HTMLAttributes<HTMLDivElement> {
field?: JSX.Element;
label?: JSX.Element;
error?: JSX.Element;
}
export const FieldLayout = (props: LayoutProps) => {
const [intern, divProps] = splitProps(props, [
"field",
"label",
"error",
"class",
]);
return (
<div
class={cx("grid grid-cols-12 items-center", intern.class)}
classList={{
"mb-[14.5px]": !props.error,
}}
{...divProps}
>
<label class="col-span-2">{props.label}</label>
<div class="col-span-10">{props.field}</div>
{props.error && <span class="col-span-full">{props.error}</span>}
</div>
);
};