.
This commit is contained in:
parent
608169c2b9
commit
bb3ab3dbb4
@ -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'
|
||||
|
||||
@ -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 });
|
||||
},
|
||||
});
|
||||
|
||||
@ -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();
|
||||
},
|
||||
});
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -81,7 +81,7 @@ export const SettingsEditor = () => {
|
||||
//onSettled: () => {},
|
||||
onSuccess: () => {
|
||||
reset(getValues());
|
||||
toast("Ajustes guardados");
|
||||
toast.success("Ajustes guardados");
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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 />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@ -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>) => {
|
||||
|
||||
@ -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>) => {
|
||||
|
||||
@ -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";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user