diff --git a/apps/admin.saladeaula.digital/app/app.css b/apps/admin.saladeaula.digital/app/app.css index 0836ac0..fa287bc 100644 --- a/apps/admin.saladeaula.digital/app/app.css +++ b/apps/admin.saladeaula.digital/app/app.css @@ -9,3 +9,17 @@ * https://github.com/tailwindlabs/tailwindcss/issues/16733 */ @source '../../../packages/ui'; + +@layer utilities { + /* Chrome, Safari, Edge, Opera */ + .no-spinner::-webkit-outer-spin-button, + .no-spinner::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } + + /* Firefox */ + .no-spinner { + -moz-appearance: textfield; + } +} diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.checkout/assigned.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.checkout/assigned.tsx index e931e77..c1f95f0 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.checkout/assigned.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.checkout/assigned.tsx @@ -36,7 +36,7 @@ export function Assigned({ courses }: AssignedProps) { // resolver: zodResolver(formSchema), defaultValues: { enrollments: [emptyRow] } }) - const { formState, control, handleSubmit, getValues, watch } = form + const { formState, control, handleSubmit } = form const { fields, insert, remove, append } = useFieldArray({ control, name: 'enrollments' @@ -53,119 +53,132 @@ export function Assigned({ courses }: AssignedProps) { return hits } + const onSubmit = async (data: any) => { + console.log(data) + } + return (
-
- {/* Header */} - <> - Colaborador - Curso - Matricular em - Valor unit. - {/**/} - + +
+ {/* Header */} + <> + Colaborador + Curso + Matricular em + Valor unit. + {/**/} + - {/* Rows */} - {fields.map((field, index) => { - const course = items?.[index]?.course - return ( - - ( -
- + {/* Rows */} + {fields.map((field, index) => { + const { unit_price } = items?.[index]?.course || { unit_price: 0 } - ( -

{message}

- )} - /> -
- )} - /> + return ( + + {/* Separator only for mobile */} + {index >= 1 &&
} - ( -
- + ( +
+ - ( -

{message}

- )} - /> -
- )} - /> - - ( - - )} - /> - - - {/* - R$ - */} - - ( +

{message}

+ )} + /> +
+ )} /> - - -
- ) - })} -
+ ( +
+ - + ( +

{message}

+ )} + /> +
+ )} + /> - + ( + + )} + /> - + + + + + + + ) + })} +
+ + + + + + + ) } diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.checkout/bulk.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.checkout/bulk.tsx index 1c794c2..0913aff 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.checkout/bulk.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.checkout/bulk.tsx @@ -1,14 +1,18 @@ import { Fragment } from 'react' -import { PlusIcon, Trash2Icon } from 'lucide-react' +import { MinusIcon, PlusIcon, Trash2Icon } from 'lucide-react' import { useForm, useFieldArray, Controller, useWatch } from 'react-hook-form' import { ErrorMessage } from '@hookform/error-message' import { zodResolver } from '@hookform/resolvers/zod' import { z } from 'zod' import { Form } from '@repo/ui/components/ui/form' -import { Input } from '@repo/ui/components/ui/input' import { Button } from '@repo/ui/components/ui/button' -import { InputGroup, InputGroupInput } from '@repo/ui/components/ui/input-group' +import { + InputGroup, + InputGroupAddon, + InputGroupButton, + InputGroupInput +} from '@repo/ui/components/ui/input-group' import { Separator } from '@repo/ui/components/ui/separator' import { Cell } from '../_.$orgid.enrollments.add/route' @@ -36,7 +40,7 @@ const item = z.object({ { error: 'Escolha um curso' } ) .required(), - quantity: z.number() + quantity: z.number().min(1) }) const formSchema = z.object({ @@ -50,7 +54,8 @@ export function Bulk({ courses }: BulkProps) { resolver: zodResolver(formSchema), defaultValues: { items: [emptyRow] } }) - const { formState, control, handleSubmit } = form + const { formState, control, handleSubmit, register, setValue, getValues } = + form const { fields, remove, append } = useFieldArray({ control, name: 'items' @@ -67,21 +72,26 @@ export function Bulk({ courses }: BulkProps) { return (
-
+
{/* Header */} <> Curso Quantidade Valor unit. + Total {/**/} {/* Rows */} {fields.map((field, index) => { - const course = items?.[index]?.course + const item = items?.[index] || { course: {}, quantity: 1 } + const { course, quantity } = item return ( + {/* Separator only for mobile */} + {index >= 1 &&
} + - - {/* - R$ - */} + { + const value = Number(e.target.value) + if (!value || value < 1) { + setValue(`items.${index}.quantity`, 1) + } + } + })} + /> + + + { + const quantity = + getValues(`items.${index}.quantity`) || 1 + setValue( + `items.${index}.quantity`, + Math.max(1, quantity - 1) + ) + }} + > + + + + + + { + const quantity = + getValues(`items.${index}.quantity`) || 1 + setValue(`items.${index}.quantity`, quantity + 1) + }} + > + + + + + + + + 0 + ? quantity + : 1) + )} + /> + +