apps/web: add BIGSTRING metaObject fieldType

This commit is contained in:
vchikalkin 2024-03-27 14:45:03 +03:00
parent dc1c315702
commit e668f0ded2
3 changed files with 15 additions and 5 deletions

View File

@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-explicit-any */
export type MetaObject = { export type MetaObject = {
disabled: boolean; disabled: boolean;
fieldType: 'CHECKBOX' | 'DECIMAL' | 'INT' | 'STRING' | 'TEXTAREA'; fieldType: 'CHECKBOX' | 'DECIMAL' | 'INT' | 'STRING' | 'BIGSTRING';
label: string; label: string;
max: number; max: number;
min: number; min: number;

View File

@ -3,7 +3,7 @@ import type { MetaObject } from '@/api/ius/types';
import { mapFieldTypeElement } from '@/config/elements'; import { mapFieldTypeElement } from '@/config/elements';
import { useFormStore } from '@/store/ius/form'; import { useFormStore } from '@/store/ius/form';
import { ElementContainer } from '@repo/ui'; import { ElementContainer } from '@repo/ui';
import { get, omit } from 'radash'; import { get } from 'radash';
import { useEffect } from 'react'; import { useEffect } from 'react';
function RenderElement({ function RenderElement({
@ -56,14 +56,24 @@ export function Elements({ data, metaData }: FormComponentProps) {
init(data); init(data);
}, [data, init]); }, [data, init]);
const defaultElements = Object.keys(metaData).filter(
(x) => metaData[x]?.fieldType !== 'BIGSTRING'
);
const bigStringElements = Object.keys(metaData).filter(
(x) => metaData[x]?.fieldType === 'BIGSTRING'
);
return ( return (
<> <>
<div className="mt-2 grid gap-2 gap-x-4 md:grid md:grid-cols-2 lg:grid-cols-3"> <div className="mt-2 grid gap-2 gap-x-4 md:grid md:grid-cols-2 lg:grid-cols-3">
{(Object.keys(omit(metaData, ['comment'])) as Array<keyof MetaObject>).map((name) => ( {defaultElements.map((name) => (
<RenderElement key={name} {...get(metaData, name)} name={name} /> <RenderElement key={name} {...get(metaData, name)} name={name} />
))} ))}
</div> </div>
<RenderElement {...get(metaData, 'comment')} fieldType="TEXTAREA" name="comment" /> {bigStringElements.map((name) => (
<RenderElement key={name} {...get(metaData, name)} name={name} fieldType="BIGSTRING" />
))}
</> </>
); );
} }

View File

@ -6,9 +6,9 @@ function wrapMap<C, T extends Record<MetaObject['fieldType'], C>>(arg: T) {
} }
export const mapFieldTypeElement = wrapMap({ export const mapFieldTypeElement = wrapMap({
BIGSTRING: Textarea,
CHECKBOX: Checkbox, CHECKBOX: Checkbox,
DECIMAL: InputNumber, DECIMAL: InputNumber,
INT: InputNumber, INT: InputNumber,
STRING: Input, STRING: Input,
TEXTAREA: Textarea,
}); });