apps/web: add BIGSTRING metaObject fieldType
This commit is contained in:
parent
dc1c315702
commit
e668f0ded2
@ -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;
|
||||||
|
|||||||
@ -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" />
|
||||||
|
))}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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,
|
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user