diff --git a/apps/web/api/ius/types.ts b/apps/web/api/ius/types.ts index 023e4f9..3610c8c 100644 --- a/apps/web/api/ius/types.ts +++ b/apps/web/api/ius/types.ts @@ -3,6 +3,8 @@ export type MetaObject = { disabled: boolean; fieldType: 'CHECKBOX' | 'DECIMAL' | 'INT' | 'STRING'; label: string; + max: number; + min: number; required: boolean; visible: boolean; }; diff --git a/apps/web/components/Form.tsx b/apps/web/components/Form.tsx index f797f72..7727a69 100644 --- a/apps/web/components/Form.tsx +++ b/apps/web/components/Form.tsx @@ -12,7 +12,7 @@ export function Form({ data, metaData }: Props) {
{Object.keys(metaData).map((name) => { - const { fieldType, visible } = metaData[name]; + const { fieldType, label, max, min = 0, visible, ...props } = metaData[name]; if (!visible) return false; @@ -26,10 +26,11 @@ export function Form({ data, metaData }: Props) { > ); diff --git a/apps/web/config/elements.ts b/apps/web/config/elements.ts index cbd9771..b3c45ac 100644 --- a/apps/web/config/elements.ts +++ b/apps/web/config/elements.ts @@ -1,5 +1,5 @@ import type { MetaObject } from '@/api/ius/types'; -import { Checkbox, Input } from 'ui'; +import { Checkbox, Input, InputNumber } from 'ui'; function wrapMap>(arg: T) { return arg; @@ -7,7 +7,7 @@ function wrapMap>(arg: T) { export const mapFieldTypeElement = wrapMap({ CHECKBOX: Checkbox, - DECIMAL: Input, - INT: Input, + DECIMAL: InputNumber, + INT: InputNumber, STRING: Input, }); diff --git a/packages/ui/input.tsx b/packages/ui/input.tsx index d6e0e79..e24856a 100644 --- a/packages/ui/input.tsx +++ b/packages/ui/input.tsx @@ -4,12 +4,16 @@ import { cva } from 'class-variance-authority'; import { forwardRef } from 'react'; const variants = cva( - 'hover:border-primary-500 focus:border-primary-500 block w-full rounded-sm border disabled:hover:border-gray-300 border-gray-300 h-9 p-2 px-3 text-sm text-gray-900 outline-none transition-all ease-linear hover:transition-all focus:transition-all disabled:cursor-not-allowed disabled:text-opacity-30' + '[&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none hover:border-primary-500 focus:border-primary-500 block w-full rounded-sm border disabled:hover:border-gray-300 border-gray-300 h-9 p-2 px-3 text-sm text-gray-900 outline-none transition-all ease-linear hover:transition-all focus:transition-all disabled:cursor-not-allowed disabled:text-opacity-30' ); export type InputProps = React.InputHTMLAttributes & VariantProps; export const Input = forwardRef(({ className, ...props }, ref) => ( - + +)); + +export const InputNumber = forwardRef((props, ref) => ( + ));