othr
This commit is contained in:
3954
package-lock.json
generated
Normal file
3954
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -9,11 +9,15 @@ export type { OpenAPIConfig } from './core/OpenAPI';
|
|||||||
|
|
||||||
export type { AuthLoginRequest } from './models/AuthLoginRequest';
|
export type { AuthLoginRequest } from './models/AuthLoginRequest';
|
||||||
export type { AuthLoginResponse } from './models/AuthLoginResponse';
|
export type { AuthLoginResponse } from './models/AuthLoginResponse';
|
||||||
|
export type { ClientDetailsSchema } from './models/ClientDetailsSchema';
|
||||||
|
export type { ClientGetAllResponse } from './models/ClientGetAllResponse';
|
||||||
|
export type { ClientSchema } from './models/ClientSchema';
|
||||||
|
export type { ClientUpdateDetailsRequest } from './models/ClientUpdateDetailsRequest';
|
||||||
export type { DealChangeStatusRequest } from './models/DealChangeStatusRequest';
|
export type { DealChangeStatusRequest } from './models/DealChangeStatusRequest';
|
||||||
export type { DealChangeStatusResponse } from './models/DealChangeStatusResponse';
|
export type { DealChangeStatusResponse } from './models/DealChangeStatusResponse';
|
||||||
export type { DealCreateRequest } from './models/DealCreateRequest';
|
export type { DealCreateRequest } from './models/DealCreateRequest';
|
||||||
export type { DealCreateResponse } from './models/DealCreateResponse';
|
|
||||||
export type { DealQuickCreateRequest } from './models/DealQuickCreateRequest';
|
export type { DealQuickCreateRequest } from './models/DealQuickCreateRequest';
|
||||||
|
export type { DealQuickCreateResponse } from './models/DealQuickCreateResponse';
|
||||||
export type { HTTPValidationError } from './models/HTTPValidationError';
|
export type { HTTPValidationError } from './models/HTTPValidationError';
|
||||||
export type { ValidationError } from './models/ValidationError';
|
export type { ValidationError } from './models/ValidationError';
|
||||||
|
|
||||||
|
|||||||
11
src/client/models/ClientDetailsSchema.ts
Normal file
11
src/client/models/ClientDetailsSchema.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/* generated using openapi-typescript-codegen -- do no edit */
|
||||||
|
/* istanbul ignore file */
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
export type ClientDetailsSchema = {
|
||||||
|
address?: (string | null);
|
||||||
|
phone_number?: (string | null);
|
||||||
|
inn?: (number | null);
|
||||||
|
email?: (string | null);
|
||||||
|
};
|
||||||
|
|
||||||
9
src/client/models/ClientGetAllResponse.ts
Normal file
9
src/client/models/ClientGetAllResponse.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/* generated using openapi-typescript-codegen -- do no edit */
|
||||||
|
/* istanbul ignore file */
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
import type { ClientSchema } from './ClientSchema';
|
||||||
|
export type ClientGetAllResponse = {
|
||||||
|
clients: Array<ClientSchema>;
|
||||||
|
};
|
||||||
|
|
||||||
9
src/client/models/ClientSchema.ts
Normal file
9
src/client/models/ClientSchema.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/* generated using openapi-typescript-codegen -- do no edit */
|
||||||
|
/* istanbul ignore file */
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
export type ClientSchema = {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
};
|
||||||
|
|
||||||
10
src/client/models/ClientUpdateDetailsRequest.ts
Normal file
10
src/client/models/ClientUpdateDetailsRequest.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/* generated using openapi-typescript-codegen -- do no edit */
|
||||||
|
/* istanbul ignore file */
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
import type { ClientDetailsSchema } from './ClientDetailsSchema';
|
||||||
|
export type ClientUpdateDetailsRequest = {
|
||||||
|
client_id: number;
|
||||||
|
details: ClientDetailsSchema;
|
||||||
|
};
|
||||||
|
|
||||||
12
src/client/models/DealQuickCreateRequest.ts
Normal file
12
src/client/models/DealQuickCreateRequest.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/* generated using openapi-typescript-codegen -- do no edit */
|
||||||
|
/* istanbul ignore file */
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
export type DealQuickCreateRequest = {
|
||||||
|
name: string;
|
||||||
|
client_name: string;
|
||||||
|
client_address: string;
|
||||||
|
comment: string;
|
||||||
|
acceptance_date: string;
|
||||||
|
};
|
||||||
|
|
||||||
8
src/client/models/DealQuickCreateResponse.ts
Normal file
8
src/client/models/DealQuickCreateResponse.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
/* generated using openapi-typescript-codegen -- do no edit */
|
||||||
|
/* istanbul ignore file */
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
export type DealQuickCreateResponse = {
|
||||||
|
deal_id: number;
|
||||||
|
};
|
||||||
|
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
/* istanbul ignore file */
|
/* istanbul ignore file */
|
||||||
/* tslint:disable */
|
/* tslint:disable */
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
|
import type { ClientGetAllResponse } from '../models/ClientGetAllResponse';
|
||||||
|
import type { ClientUpdateDetailsRequest } from '../models/ClientUpdateDetailsRequest';
|
||||||
import type { CancelablePromise } from '../core/CancelablePromise';
|
import type { CancelablePromise } from '../core/CancelablePromise';
|
||||||
import { OpenAPI } from '../core/OpenAPI';
|
import { OpenAPI } from '../core/OpenAPI';
|
||||||
import { request as __request } from '../core/request';
|
import { request as __request } from '../core/request';
|
||||||
@@ -27,4 +29,35 @@ export class ClientService {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Update Client Details
|
||||||
|
* @returns any Successful Response
|
||||||
|
* @throws ApiError
|
||||||
|
*/
|
||||||
|
public static updateClientDetailsClientUpdateDetailsPost({
|
||||||
|
requestBody,
|
||||||
|
}: {
|
||||||
|
requestBody: ClientUpdateDetailsRequest,
|
||||||
|
}): CancelablePromise<any> {
|
||||||
|
return __request(OpenAPI, {
|
||||||
|
method: 'POST',
|
||||||
|
url: '/client/update-details',
|
||||||
|
body: requestBody,
|
||||||
|
mediaType: 'application/json',
|
||||||
|
errors: {
|
||||||
|
422: `Validation Error`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get All Clients
|
||||||
|
* @returns ClientGetAllResponse Successful Response
|
||||||
|
* @throws ApiError
|
||||||
|
*/
|
||||||
|
public static getAllClients(): CancelablePromise<ClientGetAllResponse> {
|
||||||
|
return __request(OpenAPI, {
|
||||||
|
method: 'GET',
|
||||||
|
url: '/client/get-all',
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
import type { DealChangeStatusRequest } from '../models/DealChangeStatusRequest';
|
import type { DealChangeStatusRequest } from '../models/DealChangeStatusRequest';
|
||||||
import type { DealChangeStatusResponse } from '../models/DealChangeStatusResponse';
|
import type { DealChangeStatusResponse } from '../models/DealChangeStatusResponse';
|
||||||
import type { DealCreateRequest } from '../models/DealCreateRequest';
|
import type { DealCreateRequest } from '../models/DealCreateRequest';
|
||||||
import type { DealCreateResponse } from '../models/DealCreateResponse';
|
|
||||||
import type { DealQuickCreateRequest } from '../models/DealQuickCreateRequest';
|
import type { DealQuickCreateRequest } from '../models/DealQuickCreateRequest';
|
||||||
|
import type { DealQuickCreateResponse } from '../models/DealQuickCreateResponse';
|
||||||
import type { CancelablePromise } from '../core/CancelablePromise';
|
import type { CancelablePromise } from '../core/CancelablePromise';
|
||||||
import { OpenAPI } from '../core/OpenAPI';
|
import { OpenAPI } from '../core/OpenAPI';
|
||||||
import { request as __request } from '../core/request';
|
import { request as __request } from '../core/request';
|
||||||
@@ -33,14 +33,14 @@ export class DealService {
|
|||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Quick Create
|
* Quick Create
|
||||||
* @returns DealCreateResponse Successful Response
|
* @returns DealQuickCreateResponse Successful Response
|
||||||
* @throws ApiError
|
* @throws ApiError
|
||||||
*/
|
*/
|
||||||
public static quickCreateDealQuickCreatePost({
|
public static quickCreateDealQuickCreatePost({
|
||||||
requestBody,
|
requestBody,
|
||||||
}: {
|
}: {
|
||||||
requestBody: DealQuickCreateRequest,
|
requestBody: DealQuickCreateRequest,
|
||||||
}): CancelablePromise<DealCreateResponse> {
|
}): CancelablePromise<DealQuickCreateResponse> {
|
||||||
return __request(OpenAPI, {
|
return __request(OpenAPI, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
url: '/deal/quickCreate',
|
url: '/deal/quickCreate',
|
||||||
|
|||||||
14
src/components/Header/Header.module.css
Normal file
14
src/components/Header/Header.module.css
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
.header {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-input {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-button {
|
||||||
|
height: 100%;
|
||||||
|
width: 10%;
|
||||||
|
min-width: 5rem;
|
||||||
|
}
|
||||||
25
src/components/Header/Header.tsx
Normal file
25
src/components/Header/Header.tsx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import styles from './Header.module.css';
|
||||||
|
import {Button, TextInput} from "@mantine/core";
|
||||||
|
import {FC} from "react";
|
||||||
|
|
||||||
|
const Header: FC = ()=>{
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className={styles['header']}>
|
||||||
|
<TextInput
|
||||||
|
radius={0}
|
||||||
|
placeholder={"Поиск и фильтры"}
|
||||||
|
size={"xl"}
|
||||||
|
className={styles['header-input']}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
radius={0}
|
||||||
|
color={"gray"}
|
||||||
|
variant={'default'}
|
||||||
|
className={styles['header-button']}
|
||||||
|
>Поиск</Button>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Header;
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import {Center, Image, rem, Stack, Tooltip, UnstyledButton, useMantineColorScheme} from '@mantine/core';
|
import {Center, Image, rem, Stack, Tooltip, UnstyledButton, useMantineColorScheme} from '@mantine/core';
|
||||||
import {IconCash, IconHome2, IconLogout, IconMoon, IconSun,} from '@tabler/icons-react';
|
import {IconCash, IconHome2, IconLogout, IconMan, IconMoon, IconSun,} from '@tabler/icons-react';
|
||||||
import classes from './Navbar.module.css';
|
import classes from './Navbar.module.css';
|
||||||
import {useAppDispatch} from "../../redux/store.ts";
|
import {useAppDispatch} from "../../redux/store.ts";
|
||||||
import {logout} from "../../features/authSlice.ts";
|
import {logout} from "../../features/authSlice.ts";
|
||||||
@@ -40,7 +40,11 @@ const mockdata = [
|
|||||||
label: 'Сделки',
|
label: 'Сделки',
|
||||||
href: '/leads'
|
href: '/leads'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
icon: IconMan,
|
||||||
|
label: 'Клиенты',
|
||||||
|
href: '/clients'
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
export function Navbar() {
|
export function Navbar() {
|
||||||
@@ -81,7 +85,8 @@ export function Navbar() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Stack justify="center" gap={0}>
|
<Stack justify="center" gap={0}>
|
||||||
<NavbarLink label={"Сменить тему"} onClick={toggleColorScheme} icon={colorScheme == "dark" ? IconSun : IconMoon} href={"#"} index={-1}/>
|
<NavbarLink label={"Сменить тему"} onClick={toggleColorScheme}
|
||||||
|
icon={colorScheme == "dark" ? IconSun : IconMoon} href={"#"} index={-1}/>
|
||||||
<NavbarLink index={-1} href={"#"} onClick={onLogoutClick} icon={IconLogout} label="Выйти"/>
|
<NavbarLink index={-1} href={"#"} onClick={onLogoutClick} icon={IconLogout} label="Выйти"/>
|
||||||
</Stack>
|
</Stack>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
4
src/pages/ClientsPage/ClientsPage.module.css
Normal file
4
src/pages/ClientsPage/ClientsPage.module.css
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
.container {
|
||||||
|
/*background: rebeccapurple;*/
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
17
src/pages/ClientsPage/ClientsPage.tsx
Normal file
17
src/pages/ClientsPage/ClientsPage.tsx
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import {FC} from "react";
|
||||||
|
import styles from './ClientsPage.module.css';
|
||||||
|
import ClientsTable from "./components/ClientsTable/ClientsTable.tsx";
|
||||||
|
import {ClientService} from "../../client";
|
||||||
|
import {useQuery} from "@tanstack/react-query";
|
||||||
|
|
||||||
|
|
||||||
|
const ClientsPage: FC = () => {
|
||||||
|
const {data} = useQuery({queryKey: ['clients'], queryFn: ClientService.getAllClients})
|
||||||
|
return (
|
||||||
|
<div className={styles['container']}>
|
||||||
|
<ClientsTable data={data?.clients || []}/>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ClientsPage;
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
import {Checkbox, rem, Table} from "@mantine/core";
|
||||||
|
import {columns} from "./columns.tsx";
|
||||||
|
import React, {FC} from "react";
|
||||||
|
import {Client} from "../../../../types/Client.ts";
|
||||||
|
import {IconEdit} from "@tabler/icons-react";
|
||||||
|
import {notifications} from "../../../../shared/lib/notifications.ts";
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
data: Client[];
|
||||||
|
|
||||||
|
}
|
||||||
|
const ClientsTable: FC<Props> = ({data}) => {
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Table.ScrollContainer minWidth={rem(50)}>
|
||||||
|
<Table striped>
|
||||||
|
|
||||||
|
<Table.Thead>
|
||||||
|
<Table.Tr>
|
||||||
|
<Table.Th/>
|
||||||
|
|
||||||
|
{columns.map(column => (
|
||||||
|
<Table.Th>{column.header}</Table.Th>
|
||||||
|
))}
|
||||||
|
</Table.Tr>
|
||||||
|
</Table.Thead>
|
||||||
|
<Table.Tbody>
|
||||||
|
{data.map(client => (
|
||||||
|
<Table.Tr key={client.name}>
|
||||||
|
<Table.Td>
|
||||||
|
|
||||||
|
<IconEdit
|
||||||
|
onClick={() => {
|
||||||
|
notifications.success({message: `Редактирую ${client.id}`})
|
||||||
|
}}
|
||||||
|
style={{cursor: 'pointer'}}
|
||||||
|
/>
|
||||||
|
</Table.Td>
|
||||||
|
|
||||||
|
{columns.map(column => (
|
||||||
|
<Table.Td>{client[column.accessorKey]}</Table.Td>
|
||||||
|
|
||||||
|
))}
|
||||||
|
</Table.Tr>
|
||||||
|
))}
|
||||||
|
</Table.Tbody>
|
||||||
|
</Table>
|
||||||
|
|
||||||
|
</Table.ScrollContainer>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ClientsTable;
|
||||||
12
src/pages/ClientsPage/components/ClientsTable/columns.tsx
Normal file
12
src/pages/ClientsPage/components/ClientsTable/columns.tsx
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import {Client} from "../../../../types/Client.ts";
|
||||||
|
|
||||||
|
type Column = {
|
||||||
|
accessorKey: keyof Client;
|
||||||
|
header: string;
|
||||||
|
}
|
||||||
|
export const columns: Column[] = [
|
||||||
|
{
|
||||||
|
accessorKey: 'name',
|
||||||
|
header: 'Название'
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -4,20 +4,6 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-input {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-button {
|
|
||||||
height: 100%;
|
|
||||||
width: 10%;
|
|
||||||
min-width: 5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-input {
|
.search-input {
|
||||||
|
|
||||||
|
|||||||
@@ -3,33 +3,16 @@ import styles from './LeadsPage.module.css';
|
|||||||
import Board from "../../../components/Dnd/Board/Board.tsx";
|
import Board from "../../../components/Dnd/Board/Board.tsx";
|
||||||
import {Button, TextInput} from "@mantine/core";
|
import {Button, TextInput} from "@mantine/core";
|
||||||
import {DragDropContext} from "@hello-pangea/dnd";
|
import {DragDropContext} from "@hello-pangea/dnd";
|
||||||
import {useAppDispatch} from "../../../redux/store.ts";
|
|
||||||
import {setIsLoading} from "../../../features/uiSlice.ts";
|
|
||||||
|
|
||||||
export const LeadsPage: FC = () => {
|
export const LeadsPage: FC = () => {
|
||||||
const dispatch = useAppDispatch();
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
dispatch(setIsLoading(true));
|
// dispatch(setIsLoading(true));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={styles['container']}>
|
<div className={styles['container']}>
|
||||||
<div className={styles['header']}>
|
|
||||||
<TextInput
|
|
||||||
radius={0}
|
|
||||||
placeholder={"Поиск и фильтры"}
|
|
||||||
size={"xl"}
|
|
||||||
className={styles['header-input']}
|
|
||||||
/>
|
|
||||||
<Button
|
|
||||||
radius={0}
|
|
||||||
color={"gray"}
|
|
||||||
variant={'default'}
|
|
||||||
className={styles['header-button']}
|
|
||||||
>Поиск</Button>
|
|
||||||
</div>
|
|
||||||
<div className={styles['boards']}>
|
<div className={styles['boards']}>
|
||||||
<DragDropContext onDragEnd={() => {
|
<DragDropContext onDragEnd={() => {
|
||||||
}}>
|
}}>
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import {FC, ReactNode} from "react";
|
import {FC, ReactNode} from "react";
|
||||||
import {Flex} from "@mantine/core";
|
import {Flex, rem} from "@mantine/core";
|
||||||
import {Navbar} from "../../components/Navbar/Navbar.tsx";
|
import {Navbar} from "../../components/Navbar/Navbar.tsx";
|
||||||
import {useSelector} from "react-redux";
|
import {useSelector} from "react-redux";
|
||||||
import {RootState} from "../../redux/store.ts";
|
import {RootState} from "../../redux/store.ts";
|
||||||
|
import Header from "../../components/Header/Header.tsx";
|
||||||
|
|
||||||
export type Props = {
|
export type Props = {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
@@ -10,10 +11,20 @@ export type Props = {
|
|||||||
const PageWrapper: FC<Props> = ({children}) => {
|
const PageWrapper: FC<Props> = ({children}) => {
|
||||||
const authState = useSelector((state: RootState) => state.auth);
|
const authState = useSelector((state: RootState) => state.auth);
|
||||||
return (<Flex style={{flex: 1}}>
|
return (<Flex style={{flex: 1}}>
|
||||||
|
|
||||||
{authState.isAuthorized &&
|
{authState.isAuthorized &&
|
||||||
|
|
||||||
<Navbar/>
|
<Navbar/>
|
||||||
}
|
}
|
||||||
{children}
|
<div style={{flex: 1, display: 'flex', flexDirection: 'column'}}>
|
||||||
|
<Header/>
|
||||||
|
<div style={{padding:rem(20), flex:1}}>
|
||||||
|
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</Flex>
|
</Flex>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import { Route as rootRoute } from './routes/__root'
|
|||||||
const TestLazyImport = createFileRoute('/test')()
|
const TestLazyImport = createFileRoute('/test')()
|
||||||
const LoginLazyImport = createFileRoute('/login')()
|
const LoginLazyImport = createFileRoute('/login')()
|
||||||
const LeadsLazyImport = createFileRoute('/leads')()
|
const LeadsLazyImport = createFileRoute('/leads')()
|
||||||
|
const ClientsLazyImport = createFileRoute('/clients')()
|
||||||
const IndexLazyImport = createFileRoute('/')()
|
const IndexLazyImport = createFileRoute('/')()
|
||||||
|
|
||||||
// Create/Update Routes
|
// Create/Update Routes
|
||||||
@@ -38,6 +39,11 @@ const LeadsLazyRoute = LeadsLazyImport.update({
|
|||||||
getParentRoute: () => rootRoute,
|
getParentRoute: () => rootRoute,
|
||||||
} as any).lazy(() => import('./routes/leads.lazy').then((d) => d.Route))
|
} as any).lazy(() => import('./routes/leads.lazy').then((d) => d.Route))
|
||||||
|
|
||||||
|
const ClientsLazyRoute = ClientsLazyImport.update({
|
||||||
|
path: '/clients',
|
||||||
|
getParentRoute: () => rootRoute,
|
||||||
|
} as any).lazy(() => import('./routes/clients.lazy').then((d) => d.Route))
|
||||||
|
|
||||||
const IndexLazyRoute = IndexLazyImport.update({
|
const IndexLazyRoute = IndexLazyImport.update({
|
||||||
path: '/',
|
path: '/',
|
||||||
getParentRoute: () => rootRoute,
|
getParentRoute: () => rootRoute,
|
||||||
@@ -51,6 +57,10 @@ declare module '@tanstack/react-router' {
|
|||||||
preLoaderRoute: typeof IndexLazyImport
|
preLoaderRoute: typeof IndexLazyImport
|
||||||
parentRoute: typeof rootRoute
|
parentRoute: typeof rootRoute
|
||||||
}
|
}
|
||||||
|
'/clients': {
|
||||||
|
preLoaderRoute: typeof ClientsLazyImport
|
||||||
|
parentRoute: typeof rootRoute
|
||||||
|
}
|
||||||
'/leads': {
|
'/leads': {
|
||||||
preLoaderRoute: typeof LeadsLazyImport
|
preLoaderRoute: typeof LeadsLazyImport
|
||||||
parentRoute: typeof rootRoute
|
parentRoute: typeof rootRoute
|
||||||
@@ -70,6 +80,7 @@ declare module '@tanstack/react-router' {
|
|||||||
|
|
||||||
export const routeTree = rootRoute.addChildren([
|
export const routeTree = rootRoute.addChildren([
|
||||||
IndexLazyRoute,
|
IndexLazyRoute,
|
||||||
|
ClientsLazyRoute,
|
||||||
LeadsLazyRoute,
|
LeadsLazyRoute,
|
||||||
LoginLazyRoute,
|
LoginLazyRoute,
|
||||||
TestLazyRoute,
|
TestLazyRoute,
|
||||||
|
|||||||
6
src/routes/clients.lazy.tsx
Normal file
6
src/routes/clients.lazy.tsx
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import {createLazyFileRoute} from "@tanstack/react-router";
|
||||||
|
import ClientsPage from "../pages/ClientsPage/ClientsPage.tsx";
|
||||||
|
|
||||||
|
export const Route = createLazyFileRoute('/clients')({
|
||||||
|
component: ClientsPage
|
||||||
|
})
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
export type Client = {
|
export type Client = {
|
||||||
id?: number;
|
id?: number;
|
||||||
name: string;
|
name: string;
|
||||||
address: string;
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user