Commit c8aa424e by Syed Abdul Rahman

implemented alias component import

parent 046265a1
...@@ -67,19 +67,19 @@ ...@@ -67,19 +67,19 @@
"userid": "42f0", "userid": "42f0",
"selected": [ "selected": [
{ {
"row": 7, "row": 6,
"seat": 1 "seat": 1
}, },
{ {
"row": 7, "row": 6,
"seat": 2 "seat": 2
}, },
{ {
"row": 7, "row": 6,
"seat": 3 "seat": 3
}, },
{ {
"row": 7, "row": 6,
"seat": 4 "seat": 4
} }
] ]
...@@ -119,6 +119,20 @@ ...@@ -119,6 +119,20 @@
"seat": 6 "seat": 6
} }
] ]
},
{
"id": "e770",
"userid": "e770",
"selected": [
{
"row": 7,
"seat": 2
},
{
"row": 7,
"seat": 3
}
]
} }
] ]
} }
\ No newline at end of file
{
"compilerOptions": {
"baseUrl": "src",
"paths": {
"@components/*": ["components/*"]
}
},
"include": ["src"]
}
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import Seat from './Seat'; import Seat from './Seat';
import styles from './styles.module.css'; import styles from './styles.module.css';
import Button from '../../Base/Button/Index';
const BookingWrapper = ({ const BookingWrapper = ({
selectedSeats, selectedSeats,
seatData, seatData,
currentSeats, currentSeats,
onSeatAdd, onSeatAdd,
onSeatRemove onSeatRemove,
onSeatsConfirm,
buttonState
}) => { }) => {
const handleSeatClick = (row, seat, status) => { const handleSeatClick = (row, seat, status) => {
if (status == 'current-selected') { if (status == 'current-selected') {
...@@ -73,6 +76,11 @@ const BookingWrapper = ({ ...@@ -73,6 +76,11 @@ const BookingWrapper = ({
})} })}
</div> </div>
))} ))}
<div className={styles['btn-wrapper']}>
<Button size={'lg'} onClick={onSeatsConfirm} disabled={buttonState}>
Confirm
</Button>
</div>
</div> </div>
</div> </div>
); );
...@@ -99,5 +107,7 @@ BookingWrapper.propTypes = { ...@@ -99,5 +107,7 @@ BookingWrapper.propTypes = {
}) })
), ),
onSeatAdd: PropTypes.func.isRequired, onSeatAdd: PropTypes.func.isRequired,
onSeatRemove: PropTypes.func.isRequired onSeatRemove: PropTypes.func.isRequired,
onSeatsConfirm: PropTypes.func.isRequired,
buttonState: PropTypes.bool.isRequired
}; };
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
align-items: center; align-items: center;
flex-direction: column; flex-direction: column;
gap: 10px; gap: 10px;
background-color: #3444c5;
padding-bottom: 0rem;
} }
.seat-row { .seat-row {
...@@ -45,6 +47,10 @@ ...@@ -45,6 +47,10 @@
width: 100%; width: 100%;
} }
.btn-wrapper {
padding: 1em 0;
}
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
.seat { .seat {
width: 1.8em; width: 1.8em;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
align-items: center; align-items: center;
width: 100%; width: 100%;
gap: 1rem; gap: 1rem;
background-color: #3444c5;
} }
.title { .title {
......
...@@ -5,7 +5,7 @@ export default { ...@@ -5,7 +5,7 @@ export default {
component: LogoutButton, component: LogoutButton,
argTypes: { argTypes: {
onLogout: { onLogout: {
action: 'hello' action: 'Logout'
} }
} }
}; };
......
.LegendWrapper { .LegendWrapper {
display: flex; display: flex;
background-color: #3444c5;
gap: 1rem; gap: 1rem;
justify-content: center; justify-content: center;
padding: 1em 0; background-color: #3444c5;
padding: 1rem 0;
} }
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
align-items: center; align-items: center;
font-family: 'Segoe UI', sans-serif; font-family: 'Segoe UI', sans-serif;
height: 100vh; height: 100vh;
background-color: #3444c5;
} }
.container { .container {
......
...@@ -5,7 +5,7 @@ import Button from '../../Base/Button/Index'; ...@@ -5,7 +5,7 @@ import Button from '../../Base/Button/Index';
import Modal from '../../Shared/Modal/Index'; import Modal from '../../Shared/Modal/Index';
import styles from './styles.module.css'; import styles from './styles.module.css';
const Index = ({ onChange, onConfirm, disabled }) => { const Index = ({ onChange, onConfirm }) => {
const [isDisabled, setIsDisabled] = useState(true); const [isDisabled, setIsDisabled] = useState(true);
const handleInputChange = (e) => { const handleInputChange = (e) => {
......
@import '../src/assets/fonts.css'; @import '../src/assets/fonts.css';
body{ body {
margin: 0; margin: 0;
} }
html,body{ html,
body {
height: 100%; height: 100%;
width: 100%; width: 100%;
} }
#root{ #root {
height: 100%; height: 100%;
width: 100%; width: 100%;
background-color: #3444c5;
} }
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import BookingWrapper from '../../components/Layout/BookingWrapper/Index'; import BookingWrapper from '@components/Layout/BookingWrapper/Index';
import Header from '../../components/Layout/Header/Index'; import Header from '@components/Layout/Header/Index';
import ConfirmSeatContent from '../../components/TopLevel/ConfirmSeatContent/Index'; import ConfirmSeatContent from '@components/TopLevel/ConfirmSeatContent/Index';
import SeatSelectionContent from '../../components/TopLevel/SeatSelectionContent/Index'; import SeatSelectionContent from '@components/TopLevel/SeatSelectionContent/Index';
import SuccessModal from '../../components/TopLevel/SuccessModal/Index'; import SuccessModal from '@components/TopLevel/SuccessModal/Index';
import Button from '../../components/Base/Button/Index'; import LegendWrapper from '@components/TopLevel/LegendWrapper/Index';
import LegendWrapper from '../../components/TopLevel/LegendWrapper/Index'; import LogoutButton from '@components/Shared/LogoutButton/Index';
import LogoutButton from '../../components/Shared/LogoutButton/Index';
import { getItem, reset, setItem } from '../../lib/localStorage'; import { getItem, reset, setItem } from '../../lib/localStorage';
import { appConstants } from '../../lib/AppConstants'; import { appConstants } from '../../lib/AppConstants';
...@@ -18,9 +17,6 @@ import { ...@@ -18,9 +17,6 @@ import {
createSeatApi createSeatApi
} from '../../lib/api'; } from '../../lib/api';
import img from '../../assets/images/power-button_12080802.png';
import styles from './styles.module.css';
const data = [ const data = [
['*', 1, 2, 3, '*', 4, 5, 6, '*'], ['*', 1, 2, 3, '*', 4, 5, 6, '*'],
[1, 2, 3, 4, '*', 5, 6, 7, 8], [1, 2, 3, 4, '*', 5, 6, 7, 8],
...@@ -95,13 +91,13 @@ const BookingPage = () => { ...@@ -95,13 +91,13 @@ const BookingPage = () => {
} }
}; };
const modalClose = () => { const handleSeatSelectionConfirm = () => {
setItem('modal', false); setItem('modal', false);
fetchSelectedSeats(); fetchSelectedSeats();
setShowSeatsModal(false); setShowSeatsModal(false);
}; };
const finalCancel = () => { const handleModalCancel = () => {
setShowSeatsConfirmationModal(false); setShowSeatsConfirmationModal(false);
}; };
...@@ -145,7 +141,7 @@ const BookingPage = () => { ...@@ -145,7 +141,7 @@ const BookingPage = () => {
setShowSeatsConfirmationModal(true); setShowSeatsConfirmationModal(true);
}; };
const seatsFinal = async () => { const handleSeatBooking = async () => {
try { try {
const data = await getSelectedSeatsApi(); const data = await getSelectedSeatsApi();
const existingUserSeatMap = data?.find((ele) => ele.id == userId); const existingUserSeatMap = data?.find((ele) => ele.id == userId);
...@@ -173,16 +169,8 @@ const BookingPage = () => { ...@@ -173,16 +169,8 @@ const BookingPage = () => {
}; };
return ( return (
<div className={styles['seat-booking-wrapper']}> <>
{/* <img <LogoutButton onLogout={logout} />
src={img}
className={styles['logout']}
width={30}
onClick={() => logout()}
title="Logout"
/> */}
<LogoutButton />
<div className={styles['screen-wrapper']}>
<Header>Choose Seats</Header> <Header>Choose Seats</Header>
<BookingWrapper <BookingWrapper
seatData={data} seatData={data}
...@@ -190,28 +178,27 @@ const BookingPage = () => { ...@@ -190,28 +178,27 @@ const BookingPage = () => {
currentSeats={currentSeats} currentSeats={currentSeats}
onSeatRemove={handleSeatRemove} onSeatRemove={handleSeatRemove}
onSeatAdd={handleSeatAdd} onSeatAdd={handleSeatAdd}
onSeatsConfirm={handleSeatsConfirm}
buttonState={buttonState}
/> />
</div>
<div className={styles['btn-wrapper']}>
<Button size={'lg'} onClick={handleSeatsConfirm} disabled={buttonState}>
Confirm
</Button>
</div>
<LegendWrapper /> <LegendWrapper />
{showSeatsModal && ( {showSeatsModal && (
<SeatSelectionContent <SeatSelectionContent
onChange={onModalChange} onChange={onModalChange}
onConfirm={modalClose} onConfirm={handleSeatSelectionConfirm}
disabled={modalButtonState} disabled={modalButtonState}
/> />
)} )}
{showSeatsConfirmationModal && ( {showSeatsConfirmationModal && (
<ConfirmSeatContent onConfirm={seatsFinal} onCancel={finalCancel} /> <ConfirmSeatContent
onConfirm={handleSeatBooking}
onCancel={handleModalCancel}
/>
)} )}
{showSuccessModal && ( {showSuccessModal && (
<SuccessModal onConfirm={handleSuccessModalConfirm} /> <SuccessModal onConfirm={handleSuccessModalConfirm} />
)} )}
</div> </>
); );
}; };
......
.seat-booking-wrapper {
box-sizing: border-box;
flex-direction: column;
display: flex;
justify-content: space-evenly;
background-color: #3444c5;
height: 100%;
overflow-y: auto;
width: 100%;
}
.screen-wrapper {
padding: 0.5em 0;
}
.btn-wrapper {
display: flex;
justify-content: center;
align-items: center;
padding: 1em 0;
}
.logout {
position: absolute;
right: 10px;
top: 10px;
cursor: pointer;
}
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import Login from '../../components/TopLevel/Login/Index'; import Login from '@components/TopLevel/Login/Index';
import { login, createUser, getSelectedSeatsApi } from '../../lib/api'; import { login, createUser, getSelectedSeatsApi } from '../../lib/api';
import { setItem } from '../../lib/localStorage'; import { setItem } from '../../lib/localStorage';
......
import { defineConfig } from 'vite' import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react' import react from '@vitejs/plugin-react';
import path from 'path';
// https://vite.dev/config/ // https://vite.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [react()],
}) resolve: {
alias: {
'@components': path.resolve(__dirname, 'src/components')
// Add more aliases as needed
}
}
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment