Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
4de5645
Перенесла вертску таблицы из папки pages в featuers, обновила роут, …
marikarik Aug 6, 2025
6648da6
добавила работу с апи(получение данных о пассажирах) + настроена паги…
marikarik Aug 6, 2025
067df79
поправила стили
marikarik Aug 6, 2025
10afd03
добавлены кнопки для редактирования
marikarik Aug 6, 2025
29e9fe6
добавила инпуты при нажатии на кнопку корректировки
marikarik Aug 6, 2025
1cbaf35
добавлены компоненты из андт
marikarik Aug 8, 2025
df41677
Merge branch 'dev' into FELL02-35
marikarik Aug 8, 2025
4468e3d
реализована корректировка номера телефона
marikarik Aug 9, 2025
e9bd6d5
Настроила корректный ввод данных
Ildus186 Aug 13, 2025
be3c89d
Настроила валидацию
Ildus186 Aug 14, 2025
3368b77
1 мерж с дев
Ildus186 Aug 14, 2025
73df284
Merge branch 'dev' into FELL02-35
marikarik Aug 14, 2025
2d61c98
поправил дев
Ildus186 Aug 19, 2025
80c511c
изменения из дев
Ildus186 Aug 19, 2025
8deda76
изменения импорта
Ildus186 Aug 19, 2025
e3d325a
изменения импорта
Ildus186 Aug 19, 2025
3ac6dca
актуализация данных из дев
Ildus186 Aug 19, 2025
6d76554
актуализация данных из дев
Ildus186 Aug 19, 2025
f803b12
актуализация данных из дев
Ildus186 Aug 21, 2025
0532813
актуализация данных из дев
Ildus186 Aug 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"@ant-design/icons": "^5.6.1",
"@tailwindcss/vite": "^4.1.11",
"@reduxjs/toolkit": "^2.8.2",
"dayjs": "^1.11.13",
"antd": "^5.26.4",
"clsx": "^2.1.1",
"lucide-react": "^0.526.0",
Expand Down
4 changes: 2 additions & 2 deletions src/app/routes/navRoutes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { PrivacyPolicy } from '@pages/privacyPolicy';
import { SignIn } from '@pages/signIn';
import { SignUp } from '@pages/signUp';
import { TicketsPage } from '@pages/ticketsPage';
import { PassengersPage } from '@pages/passengersPage';
import { TablePassengersPage } from '@pages/admin/tablePassengers';
import { TableSeatsPage } from '@pages/admin/tableSeats';


Expand Down Expand Up @@ -56,7 +56,7 @@ export const navRoutes: RoutesProps = [
{ path: ROUTES.TABLE_BOARDING, element: <TableFlightSeatsPage /> },
{ path: ROUTES.NOT_FOUND, element: <NotFoundPage /> },
{ path: ROUTES.TABLE_TIMEZONES, element: <TableTimeZonesPage /> },
{ path: ROUTES.TABLE_PASSENGERS, element: <PassengersPage /> },
{ path: ROUTES.TABLE_PASSENGERS, element: <TablePassengersPage /> },
{ path: ROUTES.TABLE_TICKETS, element: <TicketsPage /> },
{ path: ROUTES.TABLE_BOOKINGS, element: <TableBooking /> },
{ path: ROUTES.TABLE_SEATS, element: <TableSeatsPage /> },
Expand Down
6 changes: 4 additions & 2 deletions src/features/tableAircraft/ui/TableAircraft.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@ import { Input, Space, Button, Spin, type TablePaginationConfig } from 'antd';
import { type FC, useCallback, useEffect, useState } from 'react';
import { MoreHorizontal, Pencil, X } from 'lucide-react';
import { EditOutlined, SaveOutlined, CloseOutlined, HolderOutlined } from '@ant-design/icons';

import { showNotification } from '@shared/lib/notification';
import {
ContextMenu,
useContextMenu,
} from '@shared/ui/contexMenu';
import styles from './TableAircraft.module.scss';
import { useUpdateAircraftMutation, useGetAircraftListQuery } from '@features/tableAircraft/models/aircraftApi.ts';

import { useUpdateAircraftMutation, useGetAircraftListQuery } from '@features/tableAircraft/models/aircraftApi'
import { AddButton } from '@shared/ui/AddButton';

const validateAircraft = (data: Partial<IContentAircraftTable>): ValidationResult => {
Expand Down Expand Up @@ -318,4 +320,4 @@ export const TableAircraft: FC = () => {
)}
</div>
) : null;
};
};
1 change: 1 addition & 0 deletions src/features/tableDestination/ui/TableDestination.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import { HolderOutlined, EditOutlined, SaveOutlined, CloseOutlined } from '@ant-design/icons';

import { TableHeader } from '@entities/tableHeader';
import { AddButton } from '@shared/ui/AddButton';
import { DEFAULT_PAGE_LIMIT } from '@shared/config/pagination';
import type { IColumnTableAntd } from '@shared/types';
import type { IContentDestinationTable } from '@shared/types';
Expand Down
191 changes: 191 additions & 0 deletions src/features/tablePassengers/constants/countries.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
export const COUNTRIES_LIST = [
{ value: 'Россия', label: 'Россия' },
{ value: 'Австралия', label: 'Австралия' },
{ value: 'Австрия', label: 'Австрия' },
{ value: 'Азербайджан', label: 'Азербайджан' },
{ value: 'Албания', label: 'Албания' },
{ value: 'Алжир', label: 'Алжир' },
{ value: 'Ангола', label: 'Ангола' },
{ value: 'Андорра', label: 'Андорра' },
{ value: 'Аргентина', label: 'Аргентина' },
{ value: 'Армения', label: 'Армения' },
{ value: 'Афганистан', label: 'Афганистан' },
{ value: 'Багамы', label: 'Багамы' },
{ value: 'Бангладеш', label: 'Бангладеш' },
{ value: 'Барбадос', label: 'Барбадос' },
{ value: 'Бахрейн', label: 'Бахрейн' },
{ value: 'Беларусь', label: 'Беларусь' },
{ value: 'Белиз', label: 'Белиз' },
{ value: 'Бельгия', label: 'Бельгия' },
{ value: 'Бенин', label: 'Бенин' },
{ value: 'Болгария', label: 'Болгария' },
{ value: 'Боливия', label: 'Боливия' },
{ value: 'Босния и Герцеговина', label: 'Босния и Герцеговина' },
{ value: 'Ботсвана', label: 'Ботсвана' },
{ value: 'Бразилия', label: 'Бразилия' },
{ value: 'Бруней', label: 'Бруней' },
{ value: 'Буркина-Фасо', label: 'Буркина-Фасо' },
{ value: 'Бурунди', label: 'Бурунди' },
{ value: 'Бутан', label: 'Бутан' },
{ value: 'Вануату', label: 'Вануату' },
{ value: 'Великобритания', label: 'Великобритания' },
{ value: 'Венгрия', label: 'Венгрия' },
{ value: 'Венесуэла', label: 'Венесуэла' },
{ value: 'Восточный Тимор', label: 'Восточный Тимор' },
{ value: 'Вьетнам', label: 'Вьетнам' },
{ value: 'Габон', label: 'Габон' },
{ value: 'Гаити', label: 'Гаити' },
{ value: 'Гайана', label: 'Гайана' },
{ value: 'Гамбия', label: 'Гамбия' },
{ value: 'Гана', label: 'Гана' },
{ value: 'Гватемала', label: 'Гватемала' },
{ value: 'Гвинея', label: 'Гвинея' },
{ value: 'Гвинея-Бисау', label: 'Гвинея-Бисау' },
{ value: 'Германия', label: 'Германия' },
{ value: 'Гондурас', label: 'Гондурас' },
{ value: 'Гренада', label: 'Гренада' },
{ value: 'Греция', label: 'Греция' },
{ value: 'Грузия', label: 'Грузия' },
{ value: 'Дания', label: 'Дания' },
{ value: 'Джибути', label: 'Джибути' },
{ value: 'Доминика', label: 'Доминика' },
{ value: 'Доминикана', label: 'Доминикана' },
{ value: 'Египет', label: 'Египет' },
{ value: 'Замбия', label: 'Замбия' },
{ value: 'Зимбабве', label: 'Зимбабве' },
{ value: 'Израиль', label: 'Израиль' },
{ value: 'Индия', label: 'Индия' },
{ value: 'Индонезия', label: 'Индонезия' },
{ value: 'Иордания', label: 'Иордания' },
{ value: 'Ирак', label: 'Ирак' },
{ value: 'Иран', label: 'Иран' },
{ value: 'Ирландия', label: 'Ирландия' },
{ value: 'Исландия', label: 'Исландия' },
{ value: 'Испания', label: 'Испания' },
{ value: 'Италия', label: 'Италия' },
{ value: 'Йемен', label: 'Йемен' },
{ value: 'Кабо-Верде', label: 'Кабо-Верде' },
{ value: 'Казахстан', label: 'Казахстан' },
{ value: 'Камбоджа', label: 'Камбоджа' },
{ value: 'Камерун', label: 'Камерун' },
{ value: 'Канада', label: 'Канада' },
{ value: 'Катар', label: 'Катар' },
{ value: 'Кения', label: 'Кения' },
{ value: 'Кипр', label: 'Кипр' },
{ value: 'Киргизия', label: 'Киргизия' },
{ value: 'Кирибати', label: 'Кирибати' },
{ value: 'Китай', label: 'Китай' },
{ value: 'Колумбия', label: 'Колумбия' },
{ value: 'Коморы', label: 'Коморы' },
{ value: 'Конго', label: 'Конго' },
{ value: 'Коста-Рика', label: 'Коста-Рика' },
{ value: 'Куба', label: 'Куба' },
{ value: 'Кувейт', label: 'Кувейт' },
{ value: 'Лаос', label: 'Лаос' },
{ value: 'Латвия', label: 'Латвия' },
{ value: 'Лесото', label: 'Лесото' },
{ value: 'Либерия', label: 'Либерия' },
{ value: 'Ливан', label: 'Ливан' },
{ value: 'Ливия', label: 'Ливия' },
{ value: 'Литва', label: 'Литва' },
{ value: 'Лихтенштейн', label: 'Лихтенштейн' },
{ value: 'Люксембург', label: 'Люксембург' },
{ value: 'Маврикий', label: 'Маврикий' },
{ value: 'Мавритания', label: 'Мавритания' },
{ value: 'Мадагаскар', label: 'Мадагаскар' },
{ value: 'Малави', label: 'Малави' },
{ value: 'Малайзия', label: 'Малайзия' },
{ value: 'Мали', label: 'Мали' },
{ value: 'Мальдивы', label: 'Мальдивы' },
{ value: 'Мальта', label: 'Мальта' },
{ value: 'Марокко', label: 'Марокко' },
{ value: 'Маршалловы Острова', label: 'Маршалловы Острова' },
{ value: 'Мексика', label: 'Мексика' },
{ value: 'Мозамбик', label: 'Мозамбик' },
{ value: 'Молдова', label: 'Молдова' },
{ value: 'Монако', label: 'Монако' },
{ value: 'Монголия', label: 'Монголия' },
{ value: 'Мьянма', label: 'Мьянма' },
{ value: 'Намибия', label: 'Намибия' },
{ value: 'Науру', label: 'Науру' },
{ value: 'Непал', label: 'Непал' },
{ value: 'Нигер', label: 'Нигер' },
{ value: 'Нигерия', label: 'Нигерия' },
{ value: 'Нидерланды', label: 'Нидерланды' },
{ value: 'Никарагуа', label: 'Никарагуа' },
{ value: 'Новая Зеландия', label: 'Новая Зеландия' },
{ value: 'Норвегия', label: 'Норвегия' },
{ value: 'ОАЭ', label: 'ОАЭ' },
{ value: 'Оман', label: 'Оман' },
{ value: 'Пакистан', label: 'Пакистан' },
{ value: 'Палау', label: 'Палау' },
{ value: 'Панама', label: 'Панама' },
{ value: 'Папуа — Новая Гвинея', label: 'Папуа — Новая Гвинея' },
{ value: 'Парагвай', label: 'Парагвай' },
{ value: 'Перу', label: 'Перу' },
{ value: 'Польша', label: 'Польша' },
{ value: 'Португалия', label: 'Португалия' },
{ value: 'Республика Корея', label: 'Республика Корея' },
{ value: 'Руанда', label: 'Руанда' },
{ value: 'Румыния', label: 'Румыния' },
{ value: 'Сальвадор', label: 'Сальвадор' },
{ value: 'Самоа', label: 'Самоа' },
{ value: 'Сан-Марино', label: 'Сан-Марино' },
{ value: 'Сан-Томе и Принсипи', label: 'Сан-Томе и Принсипи' },
{ value: 'Саудовская Аравия', label: 'Саудовская Аравия' },
{ value: 'Северная Корея', label: 'Северная Корея' },
{ value: 'Северная Македония', label: 'Северная Македония' },
{ value: 'Сейшелы', label: 'Сейшелы' },
{ value: 'Сенегал', label: 'Сенегал' },
{ value: 'Сент-Винсент и Гренадины', label: 'Сент-Винсент и Гренадины' },
{ value: 'Сент-Китс и Невис', label: 'Сент-Китс и Невис' },
{ value: 'Сент-Люсия', label: 'Сент-Люсия' },
{ value: 'Сербия', label: 'Сербия' },
{ value: 'Сингапур', label: 'Сингапур' },
{ value: 'Сирия', label: 'Сирия' },
{ value: 'Словакия', label: 'Словакия' },
{ value: 'Словения', label: 'Словения' },
{ value: 'Соломоновы Острова', label: 'Соломоновы Острова' },
{ value: 'Сомали', label: 'Сомали' },
{ value: 'Судан', label: 'Судан' },
{ value: 'Суринам', label: 'Суринам' },
{ value: 'США', label: 'США' },
{ value: 'Сьерра-Леоне', label: 'Сьерра-Леоне' },
{ value: 'Таджикистан', label: 'Таджикистан' },
{ value: 'Таиланд', label: 'Таиланд' },
{ value: 'Танзания', label: 'Танзания' },
{ value: 'Того', label: 'Того' },
{ value: 'Тонга', label: 'Тонга' },
{ value: 'Тринидад и Тобаго', label: 'Тринидад и Тобаго' },
{ value: 'Тувалу', label: 'Тувалу' },
{ value: 'Тунис', label: 'Тунис' },
{ value: 'Туркменистан', label: 'Туркменистан' },
{ value: 'Турция', label: 'Турция' },
{ value: 'Уганда', label: 'Уганда' },
{ value: 'Узбекистан', label: 'Узбекистан' },
{ value: 'Украина', label: 'Украина' },
{ value: 'Уругвай', label: 'Уругвай' },
{ value: 'Фиджи', label: 'Фиджи' },
{ value: 'Филиппины', label: 'Филиппины' },
{ value: 'Финляндия', label: 'Финляндия' },
{ value: 'Франция', label: 'Франция' },
{ value: 'Хорватия', label: 'Хорватия' },
{ value: 'ЦАР', label: 'ЦАР' },
{ value: 'Чад', label: 'Чад' },
{ value: 'Черногория', label: 'Черногория' },
{ value: 'Чехия', label: 'Чехия' },
{ value: 'Чили', label: 'Чили' },
{ value: 'Швейцария', label: 'Швейцария' },
{ value: 'Швеция', label: 'Швеция' },
{ value: 'Шри-Ланка', label: 'Шри-Ланка' },
{ value: 'Эквадор', label: 'Эквадор' },
{ value: 'Экваториальная Гвинея', label: 'Экваториальная Гвинея' },
{ value: 'Эритрея', label: 'Эритрея' },
{ value: 'Эсватини', label: 'Эсватини' },
{ value: 'Эстония', label: 'Эстония' },
{ value: 'Эфиопия', label: 'Эфиопия' },
{ value: 'ЮАР', label: 'ЮАР' },
{ value: 'Южный Судан', label: 'Южный Судан' },
{ value: 'Ямайка', label: 'Ямайка' },
{ value: 'Япония', label: 'Япония' },
];
39 changes: 39 additions & 0 deletions src/features/tablePassengers/constants/validationRules.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { type RegisterOptions } from 'react-hook-form';

export interface IValidationRules {
required: RegisterOptions['required'];
minLength?: RegisterOptions['minLength'];
pattern?: RegisterOptions['pattern'];
}

export const nameValidationRules: IValidationRules = {
required: 'Обязательное поле',
minLength: {
value: 2,
message: 'Минимум 2 буквы',
},
pattern: {
value: /^[a-zA-Zа-яА-ЯёЁ]+$/,
message: 'Только буквы',
},
};

export const phoneValidationRules: IValidationRules = {
required: 'Обязательное поле',
minLength: {
value: 6,
message: 'Минимум 6 цифр',
},
pattern: {
value: /^[0-9]+$/,
message: 'Только цифры',
},
};

export const serialNumberValidationRules: IValidationRules = {
required: 'Обязательное поле',
pattern: {
value: /^\d{4}\s\d{6}$/,
message: 'Введите данные в формате: 1234 567890',
},
};
23 changes: 23 additions & 0 deletions src/features/tablePassengers/model/tablePassengersApi.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { baseAPI } from '@shared/api/baseAPI';
import { DEFAULT_PAGE_LIMIT } from '@shared/config/pagination';
import type { IContentPassengerTable, IDataSource } from '@shared/types';
import type { PaginationParams } from '@shared/types/pagination';

const tablePassangersApi = baseAPI.injectEndpoints({
endpoints: (build) => ({
getPassengerList: build.query<IDataSource<IContentPassengerTable>, PaginationParams>({
query: ({ page = 1, size = DEFAULT_PAGE_LIMIT }) => `passengers?size=${size}&page=${page}`,
providesTags: ['Passenger'],
}),
updatePassenger: build.mutation({
query: ({ id, ...patch }) => ({
url: `passengers/${id}`,
method: 'PATCH',
body: { id, ...patch },
}),
invalidatesTags: ['Passenger'],
}),
}),
});

export const { useGetPassengerListQuery, useUpdatePassengerMutation } = tablePassangersApi;
Loading