Merge pull request 'RC-13: create search and buy page' (#9) from RC-13-rent-and-buy-page into dev
Reviewed-on: #9
This commit was merged in pull request #9.
This commit is contained in:
@@ -6,8 +6,9 @@ import Error404Page from '../main/404/Error404Page';
|
|||||||
import navigationPagesConfigs from '../main/navigationPages/navigationPagesConfig';
|
import navigationPagesConfigs from '../main/navigationPages/navigationPagesConfig';
|
||||||
import authPagesConfigs from '../main/authPages/authPagesConfigs';
|
import authPagesConfigs from '../main/authPages/authPagesConfigs';
|
||||||
import HomeConfig from '../main/home/HomeConfig';
|
import HomeConfig from '../main/home/HomeConfig';
|
||||||
|
import RentAndBuyConfig from '../main/rentAndBuy/RentAndBuyConfig';
|
||||||
|
|
||||||
const routeConfigs = [...navigationPagesConfigs, ...authPagesConfigs, HomeConfig];
|
const routeConfigs = [...navigationPagesConfigs, ...authPagesConfigs, HomeConfig, RentAndBuyConfig];
|
||||||
|
|
||||||
const routes = [
|
const routes = [
|
||||||
...FuseUtils.generateRoutesFromConfigs(routeConfigs, settingsConfig.defaultAuth),
|
...FuseUtils.generateRoutesFromConfigs(routeConfigs, settingsConfig.defaultAuth),
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ function AboutUs({ t }) {
|
|||||||
</div>
|
</div>
|
||||||
<Link
|
<Link
|
||||||
className="w-[220px] py-[17px] text-center text-base text-primary-light font-semibold tracking-widest uppercase rounded-2xl bg-secondary-light shadow hover:shadow-hover hover:shadow-secondary-light ease-in-out duration-300"
|
className="w-[220px] py-[17px] text-center text-base text-primary-light font-semibold tracking-widest uppercase rounded-2xl bg-secondary-light shadow hover:shadow-hover hover:shadow-secondary-light ease-in-out duration-300"
|
||||||
to="/rent-and-buy"
|
to="/rent-and-buy/search"
|
||||||
>
|
>
|
||||||
{t('research_btn')}
|
{t('research_btn')}
|
||||||
</Link>
|
</Link>
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import { memo, useState } from 'react';
|
import { memo, useState } from 'react';
|
||||||
import { withTranslation } from 'react-i18next';
|
import { withTranslation } from 'react-i18next';
|
||||||
|
import { useNavigate } from 'react-router-dom';
|
||||||
import SearchInput from '../../shared-components/SearchInput';
|
import SearchInput from '../../shared-components/SearchInput';
|
||||||
|
|
||||||
function Welcome({ t }) {
|
function Welcome({ t }) {
|
||||||
const [query, setQuery] = useState('');
|
const [query, setQuery] = useState('');
|
||||||
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const onInputType = (event) => {
|
const onInputType = (event) => {
|
||||||
const { target } = event;
|
const { target } = event;
|
||||||
@@ -12,7 +14,12 @@ function Welcome({ t }) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onSearch = () => {
|
const onSearch = () => {
|
||||||
// query
|
const trimmedQuery = query.trim();
|
||||||
|
if (!trimmedQuery) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
navigate(`/rent-and-buy/search?query=${trimmedQuery}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
16
src/app/main/rentAndBuy/RentAndBuy.js
Normal file
16
src/app/main/rentAndBuy/RentAndBuy.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import Typography from '@mui/material/Typography';
|
||||||
|
import { withTranslation } from 'react-i18next';
|
||||||
|
import { Outlet } from 'react-router-dom';
|
||||||
|
|
||||||
|
function RentAndBuy({ t }) {
|
||||||
|
return (
|
||||||
|
<div className="flex flex-col max-w-8xl w-full px-10 py-32 mx-auto">
|
||||||
|
<Typography variant="h1" className="mb-44 text-4xl text-common-layout font-medium">
|
||||||
|
{t('title')}
|
||||||
|
</Typography>
|
||||||
|
<Outlet />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default withTranslation('rentAndBuyPage')(RentAndBuy);
|
||||||
38
src/app/main/rentAndBuy/RentAndBuyConfig.js
Normal file
38
src/app/main/rentAndBuy/RentAndBuyConfig.js
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import { lazy } from 'react';
|
||||||
|
import i18next from 'i18next';
|
||||||
|
|
||||||
|
import RentAndBuy from './RentAndBuy';
|
||||||
|
import en from './i18n/en';
|
||||||
|
|
||||||
|
i18next.addResourceBundle('en', 'rentAndBuyPage', en);
|
||||||
|
|
||||||
|
const SearchAddress = lazy(() => import('./components/SearchAddress/SearchAddress'));
|
||||||
|
const PropertyPreview = lazy(() => import('./components/PropertyPreview/PropertyPreview'));
|
||||||
|
|
||||||
|
const RentAndBuyConfig = {
|
||||||
|
settings: {
|
||||||
|
layout: {
|
||||||
|
config: {},
|
||||||
|
style: 'layout2',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
auth: null,
|
||||||
|
routes: [
|
||||||
|
{
|
||||||
|
path: '/rent-and-buy',
|
||||||
|
element: <RentAndBuy />,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'search',
|
||||||
|
element: <SearchAddress />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'preview',
|
||||||
|
element: <PropertyPreview />,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default RentAndBuyConfig;
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
import Button from '@mui/material/Button';
|
||||||
|
import { useState } from 'react';
|
||||||
|
import { withTranslation } from 'react-i18next';
|
||||||
|
import RegistrationPopup from 'src/app/main/shared-components/popups/RegistrationPopup';
|
||||||
|
|
||||||
|
function PropertyPreview({ t }) {
|
||||||
|
const [isPopupOpen, setIsPopupOpen] = useState(false);
|
||||||
|
|
||||||
|
const openPopup = () => setIsPopupOpen(true);
|
||||||
|
const closePopup = () => setIsPopupOpen(false);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div className="flex flex-col items-center">
|
||||||
|
<Button
|
||||||
|
variant="contained"
|
||||||
|
color="secondary"
|
||||||
|
className="w-384 p-20 text-2xl leading-none rounded-lg"
|
||||||
|
aria-label={t('see_more_btn')}
|
||||||
|
type="button"
|
||||||
|
size="large"
|
||||||
|
onClick={openPopup}
|
||||||
|
>
|
||||||
|
{t('see_more_btn')}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
<RegistrationPopup open={isPopupOpen} onClose={closePopup} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default withTranslation('rentAndBuyPage')(PropertyPreview);
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import { withTranslation } from 'react-i18next';
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
function SearchAddress({ t }) {
|
||||||
|
return (
|
||||||
|
<div className="flex flex-col items-center gap-68">
|
||||||
|
<span>How are you?</span>
|
||||||
|
<Link
|
||||||
|
to="/rent-and-buy/preview"
|
||||||
|
className="inline-block w-[182px] py-[17px] text-center text-base text-primary-light font-semibold tracking-widest uppercase rounded-lg bg-secondary-light shadow hover:shadow-hover hover:shadow-secondary-light ease-in-out duration-300"
|
||||||
|
>
|
||||||
|
{t('show_btn')}
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default withTranslation('rentAndBuyPage')(SearchAddress);
|
||||||
8
src/app/main/rentAndBuy/i18n/en.js
Normal file
8
src/app/main/rentAndBuy/i18n/en.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
const locale = {
|
||||||
|
title: 'Rent&Buy Analysis',
|
||||||
|
show_btn: 'show',
|
||||||
|
see_more_btn: 'See more',
|
||||||
|
view: 'View the Calculation',
|
||||||
|
};
|
||||||
|
|
||||||
|
export default locale;
|
||||||
11
src/app/main/shared-components/PropertyAnalysisHeader.js
Normal file
11
src/app/main/shared-components/PropertyAnalysisHeader.js
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import Paper from '@mui/material/Paper';
|
||||||
|
|
||||||
|
function PropertyAnalysisHeader() {
|
||||||
|
return (
|
||||||
|
<Paper>
|
||||||
|
<div></div>
|
||||||
|
</Paper>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default PropertyAnalysisHeader;
|
||||||
@@ -7,7 +7,7 @@ function NavLinks({ className }) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Link className={className} to="/rent-and-buy">
|
<Link className={className} to="/rent-and-buy/search">
|
||||||
{t('rent_and_buy')}
|
{t('rent_and_buy')}
|
||||||
</Link>
|
</Link>
|
||||||
<Link className={className} to={{ hash: 'about-us' }}>
|
<Link className={className} to={{ hash: 'about-us' }}>
|
||||||
|
|||||||
Reference in New Issue
Block a user