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 */
export type MetaObject = {
disabled: boolean;
fieldType: 'CHECKBOX' | 'DECIMAL' | 'INT' | 'STRING' | 'TEXTAREA';
fieldType: 'CHECKBOX' | 'DECIMAL' | 'INT' | 'STRING' | 'BIGSTRING';
label: string;
max: number;
min: number;

View File

@ -3,7 +3,7 @@ import type { MetaObject } from '@/api/ius/types';
import { mapFieldTypeElement } from '@/config/elements';
import { useFormStore } from '@/store/ius/form';
import { ElementContainer } from '@repo/ui';
import { get, omit } from 'radash';
import { get } from 'radash';
import { useEffect } from 'react';
function RenderElement({
@ -56,14 +56,24 @@ export function Elements({ data, metaData }: FormComponentProps) {
init(data);
}, [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 (
<>
<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} />
))}
</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({
BIGSTRING: Textarea,
CHECKBOX: Checkbox,
DECIMAL: InputNumber,
INT: InputNumber,
STRING: Input,
TEXTAREA: Textarea,
});