Browse Source

Merge branch 'New_Enhancement' of https://git.2fi-solutions.com/alex/PNSPS-frontend-MaterialUI into New_Enhancement

CR003
Jason Chuang 1 year ago
parent
commit
e70b0cbf05
7 changed files with 98 additions and 7 deletions
  1. +1
    -1
      src/components/cards/AuthFooter.js
  2. +3
    -2
      src/layout/MainLayout/Header/index.js
  3. +5
    -2
      src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js
  4. +5
    -2
      src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js
  5. +78
    -0
      src/pages/extra-pages/PrivacyPolicy.js
  6. +5
    -0
      src/routes/LoginRoutes.js
  7. +1
    -0
      src/utils/ApiPathConst.js

+ 1
- 1
src/components/cards/AuthFooter.js View File

@@ -36,7 +36,7 @@ const AuthFooter = () => {
variant="subtitle2"
color="secondary"
component={Link}
href="https://www.gld.gov.hk/zh-hk/privacy-policy/"
href="/privacyPolicy"
//href="/testMailPage"
target="_blank"
underline="hover"


+ 3
- 2
src/layout/MainLayout/Header/index.js View File

@@ -78,9 +78,10 @@ function Header(props) {
};

const handleLogout = async () => {
dispatch(handleLogoutFunction());
await dispatch(handleLogoutFunction());
//await handleLogoutFunction();
navigate('/login');

await navigate('/login');
};

const loginContent = (


+ 5
- 2
src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js View File

@@ -60,8 +60,11 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => {
enableReinitialize: true,
initialValues: currentUserData,
validationSchema: yup.object().shape({
enName: yup.string().max(40, getMaxErrStr(40)).required(intl.formatMessage({ id: 'userRequireEnglishName' })),
chName: yup.string().max(6, getMaxErrStr(6)).required(intl.formatMessage({ id: 'userRequireChineseName' })),
enName: yup.string().max(40, getMaxErrStr(40)).when('chName', {
is: (chName) => chName?false:true,
then: yup.string().required(intl.formatMessage({ id: 'userRequireEnglishName' }))
}).nullable(),
chName: yup.string().max(6, getMaxErrStr(6)).nullable(),
addressLine1: yup.string().max(40, getMaxErrStr(40)).required(intl.formatMessage({ id: 'validateAddressLine1' })),
addressLine2: yup.string().max(40, getMaxErrStr(40)).nullable(),
addressLine3: yup.string().max(40, getMaxErrStr(40)).nullable(),


+ 5
- 2
src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js View File

@@ -66,8 +66,11 @@ const UserInformationCard_Individual_Pub = ({ formData, loadDataFun }) => {
enableReinitialize: true,
initialValues: currentUserData,
validationSchema: yup.object().shape({
enName: yup.string().max(40, getMaxErrStr(40)).required(intl.formatMessage({id: 'userRequireEnglishName'})),
chName: yup.string().max(6, getMaxErrStr(6)).required(intl.formatMessage({id: 'userRequireChineseName'})),
enName: yup.string().max(40, getMaxErrStr(40)).when('chName', {
is: (chName) => chName?false:true,
then: yup.string().required(intl.formatMessage({ id: 'userRequireEnglishName' }))
}).nullable(),
chName: yup.string().max(6, getMaxErrStr(6)).nullable(),
addressLine1: yup.string().max(40).required(intl.formatMessage({id: 'validateAddressLine1'})),
addressLine2: yup.string().max(40).nullable(),
addressLine3: yup.string().max(40).nullable(),


+ 78
- 0
src/pages/extra-pages/PrivacyPolicy.js View File

@@ -0,0 +1,78 @@
import { Grid,Typography, Stack, } from '@mui/material';
import { useState, useEffect, lazy } from "react";

import * as HttpUtils from "utils/HttpUtils";
import { PRIVACY_POLICY_PATH } from "utils/ApiPathConst";
import Loadable from 'components/Loadable';
import { useIntl, FormattedMessage } from "react-intl";

import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png'
const BackgroundHead = {
backgroundImage: `url(${titleBackgroundImg})`,
width: '100%',
height: '100%',
backgroundSize: 'contain',
backgroundRepeat: 'no-repeat',
backgroundColor: '#0C489E',
backgroundPosition: 'right'
}

const LoadingComponent = Loadable(lazy(() => import('pages/extra-pages/LoadingComponent')));

const PrivacyPolicy = () => {
const intl = useIntl();
const { locale } = intl;
const [onReady, setOnReady] = useState(false);
const [record, setRecord] = useState({});
const [content, setContent] = useState("");

useEffect(() => {
setOnReady(true);
HttpUtils.get({
url: PRIVACY_POLICY_PATH,
onSuccess: (responseData) => {
setRecord(responseData);
}
});
}, []);

useEffect(() => {
if (locale === 'zh-CN') {
setContent(record.cn);
} else if (locale === 'zh-HK') {
setContent(record.zh);
} else {
setContent(record.en);
}
}, [locale, record]);


return (
!onReady ?
<Grid container sx={{ minHeight: '87vh', mb: 3 }} direction="column" justifyContent="center" alignItems="center">
<Grid item>
<LoadingComponent />
</Grid>
</Grid>
:
(
<Grid container justifyContent="center" alignItems="center" >
<Grid item xs={12}>
<div style={BackgroundHead}>
<Stack direction="row" height='70px' justifyContent="flex-start" alignItems="center">
<Typography ml={15} color='#FFF' variant="h4" sx={{ display: { xs: 'none', sm: 'none', md: 'block', pt: 2 } }}>
<FormattedMessage id="privacyPolicy" />
</Typography>
</Stack>
</div>
</Grid>
<Grid item xs={10} md={5}>
<div style={{ padding: 12 }} dangerouslySetInnerHTML={{ __html: content }} />
</Grid>
</Grid>
)
);

}

export default PrivacyPolicy;

+ 5
- 0
src/routes/LoginRoutes.js View File

@@ -12,6 +12,7 @@ const RegisterForm = Loadable(lazy(() => import('pages/authentication/Register')
const BusRegisterForm = Loadable(lazy(() => import('pages/authentication/BusRegister')));
const IAmSmartRegister = Loadable(lazy(() => import('pages/authentication/IAmSmartRegister')));
const ErrorPage = Loadable(lazy(() => import('pages/extra-pages/ErrorPage')));
const PrivacyPolicyPage = Loadable(lazy(() => import('pages/extra-pages/PrivacyPolicy')));

const ForgotPassword = Loadable(lazy(() => import('pages/authentication/ForgotPassword')));
const AfterForgotPasswordPage = Loadable(lazy(() => import('pages/authentication/ForgotPassword/AfterForgotPasswordPage')));
@@ -65,6 +66,10 @@ const LoginRoutes = {
path: 'error',
element: <ErrorPage/>
},
{
path: 'privacyPolicy',
element: <PrivacyPolicyPage/>
},
{
path: 'iamsmart/logincallback',
element: <IAmSmart_DirectLoginCallback/>


+ 1
- 0
src/utils/ApiPathConst.js View File

@@ -8,6 +8,7 @@ export const REFRESH_TOKEN = "/refresh-token"
export const CHANGE_PASSWORD_PATH = "/user/change-password"

export const GET_SYS_PARAMS = apiPath+'/settings';
export const PRIVACY_POLICY_PATH = apiPath+'/privacyPolicy';

//Group Config
export const GET_GROUP_LIST_PATH = apiPath+'/group';


Loading…
Cancel
Save