This commit is contained in:
David Arranz 2024-08-12 13:26:10 +02:00
parent 608169c2b9
commit bb3ab3dbb4
10 changed files with 46 additions and 21 deletions

View File

@ -8,6 +8,7 @@ import { DataTableProvider } from "@/lib/hooks";
import { cn } from "@/lib/utils";
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/ui";
import { CurrencyData, Language, Quantity } from "@shared/contexts";
import { ColumnDef } from "@tanstack/react-table";
import { t } from "i18next";
import { useCallback, useState } from "react";
import { useFieldArray, useFormContext } from "react-hook-form";
@ -30,7 +31,7 @@ export const QuoteDetailsCardEditor = ({
name: "items",
});
const columns = useDetailColumns(
const columns: ColumnDef<unknown, unknown>[] = useDetailColumns(
[
/*{
id: "row_id" as const,
@ -82,7 +83,7 @@ export const QuoteDetailsCardEditor = ({
header: () => (
<div className='text-right'>{t("quotes.form_fields.items.unit_price.label")}</div>
),
cell: ({ row: { index }, column: { id } }) => {
cell: ({ row: { index } }) => {
return (
<FormCurrencyField
variant='outline'
@ -102,7 +103,7 @@ export const QuoteDetailsCardEditor = ({
<div className='text-right'>{t("quotes.form_fields.items.subtotal_price.label")}</div>
),
size: 12,
cell: ({ row: { index }, column: { id } }) => {
cell: ({ row: { index } }) => {
return (
<FormCurrencyField
variant='outline'
@ -141,7 +142,7 @@ export const QuoteDetailsCardEditor = ({
<div className='text-right'>{t("quotes.form_fields.items.total_price.label")}</div>
),
size: 12,
cell: ({ row: { index }, column: { id } }) => {
cell: ({ row: { index } }) => {
return (
<FormCurrencyField
variant='outline'

View File

@ -48,7 +48,7 @@ export const QuoteCreate = () => {
},
onSuccess: (data) => {
reset(getValues());
toast("Cotización guardada");
toast.success("Cotización guardada");
navigate(`/quotes/edit/${data.id}`, { relative: "path", replace: true });
},
});

View File

@ -15,6 +15,7 @@ import { useEffect, useMemo, useState } from "react";
import { SubmitHandler, useForm } from "react-hook-form";
import { useNavigate } from "react-router-dom";
import { toast } from "react-toastify";
import { QuotePricesResume } from "./components";
import { QuoteDetailsCardEditor, QuoteGeneralCardEditor } from "./components/editors";
import { useQuotes } from "./hooks";
@ -140,7 +141,7 @@ export const QuoteEdit = () => {
//onSettled: () => {},
onSuccess: () => {
reset(getValues());
toast("Cotización guardada");
toast.success("Cotización guardada");
//clear();
},
});

View File

@ -9,7 +9,7 @@ import { ColumnDef, Row, Table } from "@tanstack/react-table";
import { useMemo } from "react";
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function useDetailColumns<TData, TValue = unknown>(
export function useDetailColumns<TData = unknown, TValue = unknown>(
columns: ColumnDef<TData>[],
options: {
enableDragHandleColumn?: boolean;
@ -17,7 +17,7 @@ export function useDetailColumns<TData, TValue = unknown>(
enableActionsColumn?: boolean;
rowActionFn?: DataTablaRowActionFunction<TData>;
} = {}
): ColumnDef<TData>[] {
): ColumnDef<TData, TValue>[] {
const {
enableDragHandleColumn = false,
enableSelectionColumn = false,

View File

@ -81,7 +81,7 @@ export const SettingsEditor = () => {
//onSettled: () => {},
onSuccess: () => {
reset(getValues());
toast("Ajustes guardados");
toast.success("Ajustes guardados");
},
});
};

View File

@ -9,6 +9,7 @@ import {
} from "@/ui";
import * as React from "react";
import { cva, type VariantProps } from "class-variance-authority";
import {
FieldErrors,
FieldPath,
@ -19,6 +20,19 @@ import {
import { FormErrorMessage } from "./FormErrorMessage";
import { FormLabel, FormLabelProps } from "./FormLabel";
const formTextAreaFieldVariants = cva("", {
variants: {
variant: {
default: "",
outline:
"border-0 focus-visible:border focus-visible:border-input focus-visible:ring-0 focus-visible:ring-offset-0 ",
},
},
defaultVariants: {
variant: "default",
},
});
export type FormTextAreaFieldProps<
TFieldValues extends FieldValues = FieldValues,
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>
@ -30,7 +44,7 @@ export type FormTextAreaFieldProps<
} & Partial<FormLabelProps> &
UseControllerProps<TFieldValues, TName> & {
errors?: FieldErrors<TFieldValues>;
};
} & VariantProps<typeof formTextAreaFieldVariants>;
export const FormTextAreaField = React.forwardRef<
HTMLDivElement,
@ -48,6 +62,7 @@ export const FormTextAreaField = React.forwardRef<
className,
autoSize,
variant,
...props
},
@ -69,7 +84,8 @@ export const FormTextAreaField = React.forwardRef<
placeholder={placeholder}
className={cn(
fieldState.error ? "border-destructive focus-visible:ring-destructive" : "",
"resize-y"
"resize-y",
formTextAreaFieldVariants({ variant, className })
)}
{...props}
{...field}
@ -79,7 +95,8 @@ export const FormTextAreaField = React.forwardRef<
placeholder={placeholder}
className={cn(
fieldState.error ? "border-destructive focus-visible:ring-destructive" : "",
"resize-y"
"resize-y",
formTextAreaFieldVariants({ variant, className })
)}
{...props}
{...field}

View File

@ -1,4 +1,5 @@
import { cn } from "@/lib/utils";
import { Toaster } from "@/ui";
import { PropsWithChildren } from "react";
export const LayoutContent = ({
@ -8,14 +9,17 @@ export const LayoutContent = ({
className?: string;
}>) => {
return (
<main
className={cn(
"flex min-h-[calc(100vh_-_theme(spacing.36))] flex-1 flex-col gap-4 bg-muted/40 p-4 md:gap-8 md:p-10",
className
)}
>
{children}
</main>
<>
<main
className={cn(
"flex min-h-[calc(100vh_-_theme(spacing.36))] flex-1 flex-col gap-4 bg-muted/40 p-4 md:gap-8 md:p-10",
className
)}
>
{children}
</main>
<Toaster />
</>
);
};

View File

@ -3,6 +3,7 @@ import { ILogin_DTO } from "@shared/contexts";
import { UseMutationOptions, useMutation } from "@tanstack/react-query";
import { useNavigate } from "react-router-dom";
import { toast } from "react-toastify";
import { useQueryKey } from "../useQueryKey";
export const useLogin = (params?: UseMutationOptions<AuthActionResponse, Error, ILogin_DTO>) => {

View File

@ -2,6 +2,7 @@ import { AuthActionResponse, useAuth } from "@/lib/hooks";
import { UseMutationOptions, useMutation } from "@tanstack/react-query";
import { useNavigate } from "react-router-dom";
import { toast } from "react-toastify";
import { useQueryKey } from "../useQueryKey";
export const useLogout = (params?: UseMutationOptions<AuthActionResponse, Error>) => {

View File

@ -1,5 +1,5 @@
import * as React from "react";
import { toast } from "sonner";
import { toast } from "react-toastify";
import { type OurFileRouter } from "@/app/api/uploadthing/core";
import { getErrorMessage } from "@/lib/handle-error";