| @@ -32,8 +32,8 @@ const AuthFooter = () => { | |||||
| variant="subtitle2" | variant="subtitle2" | ||||
| color="secondary" | color="secondary" | ||||
| component={Link} | component={Link} | ||||
| // href="https://codedthemes.com" | |||||
| href="/testMailPage" | |||||
| href="https://www.gld.gov.hk/zh-hk/privacy-policy/" | |||||
| //href="/testMailPage" | |||||
| target="_blank" | target="_blank" | ||||
| underline="hover" | underline="hover" | ||||
| > | > | ||||
| @@ -52,10 +52,10 @@ const OrganizationCard = ({ userData, loadDataFun, id, setEditModeFun }) => { | |||||
| addressLine1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | addressLine1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | ||||
| addressLine2: yup.string().max(255, displayErrorMsg("length must <= 255")), | addressLine2: yup.string().max(255, displayErrorMsg("length must <= 255")), | ||||
| addressLine3: yup.string().max(255, displayErrorMsg("length must <= 255")), | addressLine3: yup.string().max(255, displayErrorMsg("length must <= 255")), | ||||
| fax_countryCode: yup.string().min(3, displayErrorMsg('請輸入國際區號')).nullable(), | |||||
| tel_countryCode: yup.string().min(3, displayErrorMsg('請輸入國際區號')), | |||||
| phoneNumber: yup.string().min(8, displayErrorMsg('請輸入有效聯絡電話')).required(displayErrorMsg('請輸入聯絡電話')), | |||||
| faxNumber: yup.string().min(8, displayErrorMsg('請輸入8位數字')).nullable(), | |||||
| fax_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))).nullable(), | |||||
| tel_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))), | |||||
| phoneNumber: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'requiredValidNumber'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireContactNumber'}))), | |||||
| faxNumber: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'require8Number'}))).nullable(), | |||||
| brExpiryDate: yup.string().min(8).required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))), | brExpiryDate: yup.string().min(8).required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))), | ||||
| brNo: yup.string().required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertNumber'}))).test('checkBrNoFormat', displayErrorMsg(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInValidBusinessRegCertNumber'}))), function (value) { | brNo: yup.string().required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertNumber'}))).test('checkBrNoFormat', displayErrorMsg(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInValidBusinessRegCertNumber'}))), function (value) { | ||||
| var brNo_pattern = /[0-9]{8}/ | var brNo_pattern = /[0-9]{8}/ | ||||
| @@ -50,9 +50,9 @@ const OrganizationCard_loadFromUser = ({ userData, userId }) => { | |||||
| addressLine1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | addressLine1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | ||||
| addressLine2: yup.string().max(255).nullable(), | addressLine2: yup.string().max(255).nullable(), | ||||
| addressLine3: yup.string().max(255).nullable(), | addressLine3: yup.string().max(255).nullable(), | ||||
| fax_countryCode: yup.string().min(3, displayErrorMsg("請輸入國際區號")).nullable(), | |||||
| tel_countryCode: yup.string().min(3, displayErrorMsg("請輸入國際區號")), | |||||
| phoneNumber: yup.string().min(8, displayErrorMsg('請輸入有效聯絡電話')).required(displayErrorMsg('請輸入聯絡電話')), | |||||
| fax_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))).nullable(), | |||||
| tel_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))), | |||||
| phoneNumber: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'requiredValidNumber'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireContactNumber'}))), | |||||
| faxNumber: yup.string().min(8).nullable(), | faxNumber: yup.string().min(8).nullable(), | ||||
| brExpiryDate: yup.string().min(8).required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))), | brExpiryDate: yup.string().min(8).required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))), | ||||
| brNo: yup.string().max(8).required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertNumber'}))) | brNo: yup.string().max(8).required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertNumber'}))) | ||||
| @@ -53,10 +53,10 @@ const PublicNoticeApplyForm = ({ loadedData, selections }) => { | |||||
| initialValues: loadedData, | initialValues: loadedData, | ||||
| validationSchema: yup.object().shape({ | validationSchema: yup.object().shape({ | ||||
| contactPerson: yup.string().max(40, "不得超過 40 個字符").required('請輸入聯絡人'), | contactPerson: yup.string().max(40, "不得超過 40 個字符").required('請輸入聯絡人'), | ||||
| tel_countryCode: yup.string().min(3, '請輸入3位數字').required('請輸入國際區號'), | |||||
| fax_countryCode: yup.string().min(3, '請輸入3位數字'), | |||||
| phoneNumber: yup.string().min(8, '請輸入8位數字').required('請輸入聯絡電話'), | |||||
| faxNumber: yup.string().min(8, '請輸入8位數字'), | |||||
| tel_countryCode: yup.string().min(3, intl.formatMessage({id: 'require3Number'})).required(intl.formatMessage({id: 'requireDialingCode'})), | |||||
| fax_countryCode: yup.string().min(3, intl.formatMessage({id: 'require3Number'})), | |||||
| phoneNumber: yup.string().min(8, intl.formatMessage({id: 'require8Number'})).required(intl.formatMessage({id: 'requireContactNumber'})), | |||||
| faxNumber: yup.string().min(8, intl.formatMessage({id: 'require8Number'})), | |||||
| remarks: yup.string().max(255, "不得超過 255 個字符").nullable(), | remarks: yup.string().max(255, "不得超過 255 個字符").nullable(), | ||||
| }), | }), | ||||
| onSubmit: values => { | onSubmit: values => { | ||||
| @@ -40,6 +40,7 @@ import DownloadIcon from '@mui/icons-material/Download'; | |||||
| import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | ||||
| import {ThemeProvider} from "@emotion/react"; | import {ThemeProvider} from "@emotion/react"; | ||||
| import * as React from "react"; | import * as React from "react"; | ||||
| import {FormattedMessage} from "react-intl"; | |||||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | // ==============================|| DASHBOARD - DEFAULT ||============================== // | ||||
| const ApplicationDetailCard = ( | const ApplicationDetailCard = ( | ||||
| { applicationDetailData, | { applicationDetailData, | ||||
| @@ -390,7 +391,9 @@ const ApplicationDetailCard = ( | |||||
| <Grid container alignItems={"center"}> | <Grid container alignItems={"center"}> | ||||
| <Grid item xs={12} md={3} lg={3} | <Grid item xs={12} md={3} lg={3} | ||||
| sx={{ display: 'flex', alignItems: 'center' }}> | sx={{ display: 'flex', alignItems: 'center' }}> | ||||
| <FormLabel><Typography variant="h5">聯絡電話:</Typography></FormLabel> | |||||
| <FormLabel><Typography variant="h5"> | |||||
| <FormattedMessage id="userContactNumber"/>: | |||||
| </Typography></FormLabel> | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={9} lg={9}> | <Grid item xs={12} md={9} lg={9}> | ||||
| @@ -454,7 +457,9 @@ const ApplicationDetailCard = ( | |||||
| <Grid container alignItems={"center"}> | <Grid container alignItems={"center"}> | ||||
| <Grid item xs={12} md={3} lg={3} | <Grid item xs={12} md={3} lg={3} | ||||
| sx={{ display: 'flex', alignItems: 'center' }}> | sx={{ display: 'flex', alignItems: 'center' }}> | ||||
| <FormLabel><Typography variant="h5">傳真號碼:</Typography></FormLabel> | |||||
| <FormLabel><Typography variant="h5"> | |||||
| <FormattedMessage id="userFaxNumber"/>: | |||||
| </Typography></FormLabel> | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} sm={12} md={9} lg={9}> | <Grid item xs={12} sm={12} md={9} lg={9}> | ||||
| @@ -38,19 +38,19 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { | |||||
| enableReinitialize: true, | enableReinitialize: true, | ||||
| initialValues: currentUserData, | initialValues: currentUserData, | ||||
| validationSchema: yup.object().shape({ | validationSchema: yup.object().shape({ | ||||
| enName: yup.string().max(255).required('請輸入英文姓名'), | |||||
| chName: yup.string().max(255).required('請輸入中文姓名'), | |||||
| enName: yup.string().max(255).required(intl.formatMessage({id: 'userRequireEnglishName'})), | |||||
| chName: yup.string().max(255).required(intl.formatMessage({id: 'userRequireChineseName'})), | |||||
| addressLine1: yup.string().max(255).required('請輸入第一行地址'), | addressLine1: yup.string().max(255).required('請輸入第一行地址'), | ||||
| addressLine2: yup.string().max(255).nullable(), | addressLine2: yup.string().max(255).nullable(), | ||||
| addressLine3: yup.string().max(255).nullable(), | addressLine3: yup.string().max(255).nullable(), | ||||
| emailAddress: yup.string().email('請輸入電郵格式').max(255).required('請輸入電郵'), | |||||
| emailAddress: yup.string().email(intl.formatMessage({id: 'validEmailFormat'})).max(255).required(intl.formatMessage({id: 'requireEmail'})), | |||||
| identification: yup.string().min(7, "請輸入證件號碼").required('請輸入證件號碼'), | identification: yup.string().min(7, "請輸入證件號碼").required('請輸入證件號碼'), | ||||
| checkDigit: yup.string().max(1).required('請輸入括號內的數字或字母').nullable(), | checkDigit: yup.string().max(1).required('請輸入括號內的數字或字母').nullable(), | ||||
| idDocType: yup.string().max(255).required('請輸入證件類別'), | idDocType: yup.string().max(255).required('請輸入證件類別'), | ||||
| tel_countryCode: yup.string().min(3, '請輸入3位數字').required('請輸入國際區號'), | |||||
| fax_countryCode: yup.string().min(3, '請輸入3位數字'), | |||||
| phoneNumber: yup.string().min(8, '請輸入8位數字').required('請輸入聯絡電話'), | |||||
| faxNumber: yup.string().min(8, '請輸入8位數字').nullable(), | |||||
| tel_countryCode: yup.string().min(3, intl.formatMessage({id: 'require3Number'})).required(intl.formatMessage({id: 'requireDialingCode'})), | |||||
| fax_countryCode: yup.string().min(3, intl.formatMessage({id: 'require3Number'})), | |||||
| phoneNumber: yup.string().min(8, intl.formatMessage({id: 'require8Number'})).required(intl.formatMessage({id: 'requireContactNumber'})), | |||||
| faxNumber: yup.string().min(8, intl.formatMessage({id: 'require8Number'})).nullable(), | |||||
| }), | }), | ||||
| onSubmit: values => { | onSubmit: values => { | ||||
| console.log(values); | console.log(values); | ||||
| @@ -47,17 +47,17 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||||
| enableReinitialize: true, | enableReinitialize: true, | ||||
| initialValues: currentUserData, | initialValues: currentUserData, | ||||
| validationSchema: yup.object().shape({ | validationSchema: yup.object().shape({ | ||||
| contactPerson: yup.string().max(255).required(displayErrorMsg('請輸入姓名')), | |||||
| contactPerson: yup.string().max(255).required(displayErrorMsg(intl.formatMessage({id: 'userRequireName'}))), | |||||
| enCompanyName: yup.string().max(255).required(displayErrorMsg('請輸入英文名稱')), | enCompanyName: yup.string().max(255).required(displayErrorMsg('請輸入英文名稱')), | ||||
| chCompanyName: yup.string().max(255).nullable(), | chCompanyName: yup.string().max(255).nullable(), | ||||
| addressLine1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | addressLine1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | ||||
| addressLine2: yup.string().max(255).nullable(), | addressLine2: yup.string().max(255).nullable(), | ||||
| addressLine3: yup.string().max(255).nullable(), | addressLine3: yup.string().max(255).nullable(), | ||||
| emailBus: yup.string().max(255).required(displayErrorMsg('請輸入電郵')), | |||||
| tel_countryCode: yup.string().min(3, displayErrorMsg('請輸入3位數字')).required(displayErrorMsg('請輸入國際區號')), | |||||
| fax_countryCode: yup.string().min(3, displayErrorMsg('請輸入3位數字')).nullable(), | |||||
| phoneNumber: yup.string().min(8, displayErrorMsg('請輸入8位數字')).required(displayErrorMsg('請輸入聯絡電話')), | |||||
| faxNumber: yup.string().min(8, displayErrorMsg('請輸入8位數字')).nullable(), | |||||
| emailBus: yup.string().max(255).required(displayErrorMsg(intl.formatMessage({id: 'requireEmail'}))), | |||||
| tel_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'require3Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))), | |||||
| fax_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'require3Number'}))).nullable(), | |||||
| phoneNumber: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'require8Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireContactNumber'}))), | |||||
| faxNumber: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'require8Number'}))).nullable(), | |||||
| brExpiryDate: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))), | brExpiryDate: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))), | ||||
| brNo: yup.string().max(8).required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertNumber'}))) | brNo: yup.string().max(8).required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertNumber'}))) | ||||
| .test('checkBrNoFormat', displayErrorMsg(`${intl.formatMessage({id: 'pleaseFillInValidBusinessRegCertNumber'})} (e.g. 12341234)`), function (value) { | .test('checkBrNoFormat', displayErrorMsg(`${intl.formatMessage({id: 'pleaseFillInValidBusinessRegCertNumber'})} (e.g. 12341234)`), function (value) { | ||||
| @@ -89,7 +89,7 @@ const BusCustomFormWizard = (props) => { | |||||
| }; | }; | ||||
| const [selectedAddress4, setSelectedAddress4] = useState(null); | const [selectedAddress4, setSelectedAddress4] = useState(null); | ||||
| const [selectedAddress5, setSelectedAddress5] = useState(ComboData.country[0]); | |||||
| const [selectedAddress5, setSelectedAddress5] = useState(ComboData.country(intl)[0]); | |||||
| const [termsAndConAccept, setTermsAndConAccept] = useState(false); | const [termsAndConAccept, setTermsAndConAccept] = useState(false); | ||||
| const [termsAndConNotAccept, setTermsAndConNotAccept] = useState(false); | const [termsAndConNotAccept, setTermsAndConNotAccept] = useState(false); | ||||
| const [isValid, setisValid] = useState(false); | const [isValid, setisValid] = useState(false); | ||||
| @@ -102,7 +102,7 @@ const BusCustomFormWizard = (props) => { | |||||
| const [checkEmailBlur, setCheckEmailBlur] = useState(false) | const [checkEmailBlur, setCheckEmailBlur] = useState(false) | ||||
| const address4ComboList = ComboData.district; | const address4ComboList = ComboData.district; | ||||
| const address5ComboList = ComboData.country; | |||||
| const address5ComboList = ComboData.country(intl); | |||||
| const termsAndCon = "此網址由香港特別行政區政府物流服務署製作及管理。本署會盡力確保網址上的資料無誤,\n" | const termsAndCon = "此網址由香港特別行政區政府物流服務署製作及管理。本署會盡力確保網址上的資料無誤,\n" | ||||
| + "但有絕對酌情權隨時刪除、暫停登載或編輯各項資料而無須給予任何理由。\n由於任何與網址" | + "但有絕對酌情權隨時刪除、暫停登載或編輯各項資料而無須給予任何理由。\n由於任何與網址" | ||||
| + "內資料有關的理由或原因,而導致出現申索、損失或損害,本署概不負責。\n使用者須自行評" | + "內資料有關的理由或原因,而導致出現申索、損失或損害,本署概不負責。\n使用者須自行評" | ||||
| @@ -506,7 +506,7 @@ const BusCustomFormWizard = (props) => { | |||||
| .matches(/^(?=.*[0-9])/, { message: displayErrorMsg('請包括最少1個數字') }) | .matches(/^(?=.*[0-9])/, { message: displayErrorMsg('請包括最少1個數字') }) | ||||
| .matches(/^(?=.*[!@#%&])/, { message: displayErrorMsg('請包括最少1個特殊字符') }), | .matches(/^(?=.*[!@#%&])/, { message: displayErrorMsg('請包括最少1個特殊字符') }), | ||||
| confirmPassword: yup.string().min(8, displayErrorMsg('請最少輸入8位密碼')).required(displayErrorMsg(intl.formatMessage({id: 'pleaseConfirmPassword'}))).oneOf([yup.ref('password'), null], displayErrorMsg('請輸入相同密碼')), | confirmPassword: yup.string().min(8, displayErrorMsg('請最少輸入8位密碼')).required(displayErrorMsg(intl.formatMessage({id: 'pleaseConfirmPassword'}))).oneOf([yup.ref('password'), null], displayErrorMsg('請輸入相同密碼')), | ||||
| enName: yup.string().max(255).required(displayErrorMsg('請輸入英文姓名')), | |||||
| enName: yup.string().max(255).required(displayErrorMsg(intl.formatMessage({id: 'userRequireEnglishName'}))), | |||||
| enCompanyName: yup.string().matches(/^[^$^*()]+$/, { message: displayErrorMsg('No special characters $/^/*/(/)') }).when('chCompanyName', { | enCompanyName: yup.string().matches(/^[^$^*()]+$/, { message: displayErrorMsg('No special characters $/^/*/(/)') }).when('chCompanyName', { | ||||
| is: (chCompanyName) => !chCompanyName || chCompanyName.length === 0, | is: (chCompanyName) => !chCompanyName || chCompanyName.length === 0, | ||||
| then: yup.string().required(displayErrorMsg('Please enter either English or Chinese name')), | then: yup.string().required(displayErrorMsg('Please enter either English or Chinese name')), | ||||
| @@ -515,16 +515,16 @@ const BusCustomFormWizard = (props) => { | |||||
| is: (enCompanyName) => !enCompanyName || enCompanyName.length === 0, | is: (enCompanyName) => !enCompanyName || enCompanyName.length === 0, | ||||
| then: yup.string().required(displayErrorMsg('請輸入英文或中文名稱')), | then: yup.string().required(displayErrorMsg('請輸入英文或中文名稱')), | ||||
| }), | }), | ||||
| chName: yup.string().max(255).required(displayErrorMsg('請輸入中文姓名')), | |||||
| chName: yup.string().max(255).required(displayErrorMsg(intl.formatMessage({id: 'userRequireChineseName'}))), | |||||
| address1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | address1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | ||||
| address2: yup.string().max(255).required(displayErrorMsg('請輸入第二行地址')), | address2: yup.string().max(255).required(displayErrorMsg('請輸入第二行地址')), | ||||
| address3: yup.string().max(255).required(displayErrorMsg('請輸入第三行地址')), | address3: yup.string().max(255).required(displayErrorMsg('請輸入第三行地址')), | ||||
| email: yup.string().email(displayErrorMsg('請輸入電郵格式')).max(255).required(displayErrorMsg('請輸入電郵')), | |||||
| emailConfirm: yup.string().email(displayErrorMsg('請輸入電郵格式')).max(255).required(displayErrorMsg('請輸入電郵')).oneOf([yup.ref('email'), null], displayErrorMsg('請輸入相同電郵')), | |||||
| phoneCountryCode: yup.string().min(2, displayErrorMsg('請輸入最少2位數字')).required(displayErrorMsg('請輸入國際區號')), | |||||
| faxCountryCode: yup.string().min(2, displayErrorMsg('請輸入最少2位數字')), | |||||
| phone: yup.string().min(8, displayErrorMsg('請輸入最少8位數字')).required(displayErrorMsg('請輸入聯絡電話')), | |||||
| fax: yup.string().min(8, displayErrorMsg('請輸入最少8位數字')), | |||||
| email: yup.string().email(displayErrorMsg(intl.formatMessage({id: 'validEmailFormat'}))).max(255).required(displayErrorMsg(intl.formatMessage({id: 'requireEmail'}))), | |||||
| emailConfirm: yup.string().email(displayErrorMsg(intl.formatMessage({id: 'validEmailFormat'}))).max(255).required(displayErrorMsg(intl.formatMessage({id: 'requireEmail'}))).oneOf([yup.ref('email'), null], displayErrorMsg(intl.formatMessage({id: 'validSameEmail'}))), | |||||
| phoneCountryCode: yup.string().min(2, displayErrorMsg(intl.formatMessage({id: 'requireAtLeast2Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))), | |||||
| faxCountryCode: yup.string().min(2, displayErrorMsg(intl.formatMessage({id: 'requireAtLeast2Number'}))), | |||||
| phone: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'requireAtLeast8Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireContactNumber'}))), | |||||
| fax: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'requireAtLeast8Number'}))), | |||||
| brExpiryDate: yup.date().min(new Date().toISOString().split("T")[0], displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))) | brExpiryDate: yup.date().min(new Date().toISOString().split("T")[0], displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))) | ||||
| .max("2099-12-31", displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))). | .max("2099-12-31", displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))). | ||||
| required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))), | required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))), | ||||
| @@ -539,7 +539,7 @@ const BusCustomFormWizard = (props) => { | |||||
| } | } | ||||
| } | } | ||||
| }), | }), | ||||
| captchaField: yup.string().required(displayErrorMsg('請輸入驗證')),//.oneOf([captcha], displayErrorMsg('請輸入有效驗證')) | |||||
| captchaField: yup.string().required(displayErrorMsg(intl.formatMessage({id: 'requireVerify'}))),//.oneOf([captcha], displayErrorMsg('請輸入有效驗證')) | |||||
| }, ['enCompanyName', 'chCompanyName']), | }, ['enCompanyName', 'chCompanyName']), | ||||
| }); | }); | ||||
| @@ -547,7 +547,7 @@ const BusCustomFormWizard = (props) => { | |||||
| const handleReset = (resetForm) => { | const handleReset = (resetForm) => { | ||||
| resetForm(); | resetForm(); | ||||
| setSelectedAddress4("") | setSelectedAddress4("") | ||||
| setSelectedAddress5(ComboData.country[0]) | |||||
| setSelectedAddress5(ComboData.country(intl)[0]) | |||||
| setCheckCountry(false) | setCheckCountry(false) | ||||
| setFileList([]) | setFileList([]) | ||||
| setFileListData([]) | setFileListData([]) | ||||
| @@ -695,7 +695,7 @@ const BusCustomFormWizard = (props) => { | |||||
| </Grid> | </Grid> | ||||
| <Grid item> | <Grid item> | ||||
| <Typography variant="subtitle1"> | <Typography variant="subtitle1"> | ||||
| {level?.label} | |||||
| <FormattedMessage id={level ? level?.label : "pwWeak" }/> | |||||
| </Typography> | </Typography> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| @@ -976,9 +976,10 @@ const BusCustomFormWizard = (props) => { | |||||
| onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
| setSelectedAddress4(newValue); | setSelectedAddress4(newValue); | ||||
| }} | }} | ||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address4-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| renderInput={(params) => <TextField {...params} | |||||
| placeholder={intl.formatMessage({id: 'region'})} | |||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, | |||||
| "#address4-combo": { padding: "0px 0px 0px 3px" }, | |||||
| "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| renderInput={(params) => <TextField {...params} placeholder={intl.formatMessage({id: 'region'})} | |||||
| />} | />} | ||||
| /> | /> | ||||
| <Autocomplete | <Autocomplete | ||||
| @@ -989,7 +990,7 @@ const BusCustomFormWizard = (props) => { | |||||
| onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
| if (newValue !== null) { | if (newValue !== null) { | ||||
| setSelectedAddress5(newValue); | setSelectedAddress5(newValue); | ||||
| if (newValue === '香港') { | |||||
| if (newValue === intl.formatMessage({id: 'hongKong'})) { | |||||
| setCheckCountry(false) | setCheckCountry(false) | ||||
| } else { | } else { | ||||
| setSelectedAddress4(""); | setSelectedAddress4(""); | ||||
| @@ -1002,7 +1003,7 @@ const BusCustomFormWizard = (props) => { | |||||
| }} | }} | ||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address5-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address5-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | ||||
| renderInput={(params) => <TextField {...params} placeholder="國家/地區" />} | |||||
| renderInput={(params) => <TextField {...params} placeholder={intl.formatMessage({id: 'regionOrCountry'})} />} | |||||
| /> | /> | ||||
| {formik.touched.address1 && formik.errors.address1 && ( | {formik.touched.address1 && formik.errors.address1 && ( | ||||
| <FormHelperText error id="helper-text-address1-signup"> | <FormHelperText error id="helper-text-address1-signup"> | ||||
| @@ -1023,14 +1024,16 @@ const BusCustomFormWizard = (props) => { | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} mt={1} mb={1}> | <Grid item xs={12} mt={1} mb={1}> | ||||
| <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | ||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}>你的聯絡資料</Typography> | |||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}> | |||||
| <FormattedMessage id="yourContact"/> | |||||
| </Typography> | |||||
| </Stack> | </Stack> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12}> | <Grid item xs={12} md={12}> | ||||
| <Stack spacing={1}> | <Stack spacing={1}> | ||||
| <InputLabel htmlFor="enName-signup"> | <InputLabel htmlFor="enName-signup"> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 姓名 | |||||
| <FormattedMessage id="userContactName"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| @@ -1065,7 +1068,7 @@ const BusCustomFormWizard = (props) => { | |||||
| <Stack spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | <Stack spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | ||||
| <InputLabel htmlFor="email-signup"> | <InputLabel htmlFor="email-signup"> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 電郵 | |||||
| <FormattedMessage id="userContactEmail"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| @@ -1077,7 +1080,7 @@ const BusCustomFormWizard = (props) => { | |||||
| value={formik.values.email.trim()} | value={formik.values.email.trim()} | ||||
| name="email" | name="email" | ||||
| onChange={formik.handleChange} | onChange={formik.handleChange} | ||||
| placeholder="電郵" | |||||
| placeholder={intl.formatMessage({id: 'userContactEmail'})} | |||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -1094,7 +1097,7 @@ const BusCustomFormWizard = (props) => { | |||||
| )} | )} | ||||
| {checkEmail && ( | {checkEmail && ( | ||||
| <FormHelperText error id="helper-text-email-signup"> | <FormHelperText error id="helper-text-email-signup"> | ||||
| 此電郵已被注冊,請使用其他電郵 | |||||
| <FormattedMessage id="emailUsed"/> | |||||
| </FormHelperText> | </FormHelperText> | ||||
| )} | )} | ||||
| </Stack> | </Stack> | ||||
| @@ -1103,7 +1106,7 @@ const BusCustomFormWizard = (props) => { | |||||
| <Stack spacing={1} > | <Stack spacing={1} > | ||||
| <InputLabel htmlFor="emailConfirm-signup"> | <InputLabel htmlFor="emailConfirm-signup"> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 確認電郵 | |||||
| <FormattedMessage id="userContactEmail"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| @@ -1116,7 +1119,7 @@ const BusCustomFormWizard = (props) => { | |||||
| name="emailConfirm" | name="emailConfirm" | ||||
| // onBlur={formik.handleBlur} | // onBlur={formik.handleBlur} | ||||
| onChange={formik.handleChange} | onChange={formik.handleChange} | ||||
| placeholder="確認電郵" | |||||
| placeholder={intl.formatMessage({id: 'confirmEmail'})} | |||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -1143,7 +1146,7 @@ const BusCustomFormWizard = (props) => { | |||||
| <Stack direction="column" spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | <Stack direction="column" spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | ||||
| <InputLabel htmlFor="phone-signup"> | <InputLabel htmlFor="phone-signup"> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 聯絡電話 | |||||
| <FormattedMessage id="userContactNumber"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| @@ -1163,7 +1166,7 @@ const BusCustomFormWizard = (props) => { | |||||
| formik.setFieldValue("phoneCountryCode", value); | formik.setFieldValue("phoneCountryCode", value); | ||||
| }} | }} | ||||
| endAdornment={<InputAdornment position="end">-</InputAdornment>} | endAdornment={<InputAdornment position="end">-</InputAdornment>} | ||||
| placeholder="國際區號" | |||||
| placeholder={intl.formatMessage({id: 'dialingCode'})} | |||||
| error={Boolean(formik.touched.phone && formik.errors.phone)} | error={Boolean(formik.touched.phone && formik.errors.phone)} | ||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| @@ -1190,7 +1193,7 @@ const BusCustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("phone", value); | formik.setFieldValue("phone", value); | ||||
| }} | }} | ||||
| placeholder="聯絡電話" | |||||
| placeholder={intl.formatMessage({id: 'userContactNumber'})} | |||||
| error={Boolean(formik.touched.phone && formik.errors.phone)} | error={Boolean(formik.touched.phone && formik.errors.phone)} | ||||
| inputProps={{ | inputProps={{ | ||||
| maxLength: 11, | maxLength: 11, | ||||
| @@ -1218,7 +1221,7 @@ const BusCustomFormWizard = (props) => { | |||||
| <Stack spacing={1} direction="column"> | <Stack spacing={1} direction="column"> | ||||
| <InputLabel htmlFor="fax-signup"> | <InputLabel htmlFor="fax-signup"> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 傳真號碼 | |||||
| <FormattedMessage id="userFaxNumber"/> | |||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| <Stack direction="row"> | <Stack direction="row"> | ||||
| @@ -1237,7 +1240,7 @@ const BusCustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("faxCountryCode", value); | formik.setFieldValue("faxCountryCode", value); | ||||
| }} | }} | ||||
| placeholder="國際區號" | |||||
| placeholder={intl.formatMessage({id: 'dialingCode'})} | |||||
| endAdornment={<InputAdornment position="end">-</InputAdornment>} | endAdornment={<InputAdornment position="end">-</InputAdornment>} | ||||
| inputProps={{ | inputProps={{ | ||||
| maxLength: 3, | maxLength: 3, | ||||
| @@ -1263,7 +1266,7 @@ const BusCustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("fax", value); | formik.setFieldValue("fax", value); | ||||
| }} | }} | ||||
| placeholder="傳真號碼" | |||||
| placeholder={intl.formatMessage({id: 'userFaxNumber'})} | |||||
| inputProps={{ | inputProps={{ | ||||
| maxLength: 8, | maxLength: 8, | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -1537,7 +1540,7 @@ const BusCustomFormWizard = (props) => { | |||||
| : null} | : null} | ||||
| <Stack direction="row"> | <Stack direction="row"> | ||||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]} id="preview-address5-signup"> | <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]} id="preview-address5-signup"> | ||||
| 國家/地區: | |||||
| <FormattedMessage id="regionOrCountry"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| {selectedAddress5} | {selectedAddress5} | ||||
| @@ -1548,7 +1551,9 @@ const BusCustomFormWizard = (props) => { | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} mt={1} mb={1}> | <Grid item xs={12} mt={1} mb={1}> | ||||
| <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | ||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}>你的聯絡資料</Typography> | |||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}> | |||||
| <FormattedMessage id="yourContact"/> | |||||
| </Typography> | |||||
| </Stack> | </Stack> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12}> | <Grid item xs={12} md={12}> | ||||
| @@ -1564,7 +1569,7 @@ const BusCustomFormWizard = (props) => { | |||||
| <Grid item xs={12} md={12}> | <Grid item xs={12} md={12}> | ||||
| <Stack spacing={1} direction="row"> | <Stack spacing={1} direction="row"> | ||||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | ||||
| 電郵: | |||||
| <FormattedMessage id="userContactEmail"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="pnspsFormHeader" id="preview-email-signup"> | <Typography variant="pnspsFormHeader" id="preview-email-signup"> | ||||
| {formik.values.email} | {formik.values.email} | ||||
| @@ -1574,7 +1579,7 @@ const BusCustomFormWizard = (props) => { | |||||
| <Grid item xs={12} md={6}> | <Grid item xs={12} md={6}> | ||||
| <Stack spacing={1} direction="row"> | <Stack spacing={1} direction="row"> | ||||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | ||||
| 聯絡電話: | |||||
| <FormattedMessage id="userContactNumber"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="pnspsFormHeader" id="preview-phone-signup"> | <Typography variant="pnspsFormHeader" id="preview-phone-signup"> | ||||
| +{formik.values.phoneCountryCode} {formik.values.phone} | +{formik.values.phoneCountryCode} {formik.values.phone} | ||||
| @@ -1584,7 +1589,7 @@ const BusCustomFormWizard = (props) => { | |||||
| <Grid item xs={12} md={6}> | <Grid item xs={12} md={6}> | ||||
| <Stack spacing={1} direction="row"> | <Stack spacing={1} direction="row"> | ||||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | ||||
| 傳真號碼: | |||||
| <FormattedMessage id="userFaxNumber"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="pnspsFormHeader" id="preview-fax-signup"> | <Typography variant="pnspsFormHeader" id="preview-fax-signup"> | ||||
| +{formik.values.faxCountryCode} {formik.values.fax} | +{formik.values.faxCountryCode} {formik.values.fax} | ||||
| @@ -1617,7 +1622,9 @@ const BusCustomFormWizard = (props) => { | |||||
| <Stack mt={1} direction="column" justifyContent="flex-start" alignItems="center" spacing={2}> | <Stack mt={1} direction="column" justifyContent="flex-start" alignItems="center" spacing={2}> | ||||
| <CheckCircleOutlineIcon color="success" sx={{ width: "200px", height: "200px" }} /> | <CheckCircleOutlineIcon color="success" sx={{ width: "200px", height: "200px" }} /> | ||||
| <Typography display="inline" variant="h4">帳戶申請已成功提交。</Typography> | <Typography display="inline" variant="h4">帳戶申請已成功提交。</Typography> | ||||
| <Typography display="inline" variant="h4">驗證電郵將發送到你的電郵地址,請依指示完成驗證及登入系統。</Typography> | |||||
| <Typography display="inline" variant="h4"> | |||||
| <FormattedMessage id="emailSent"/> | |||||
| </Typography> | |||||
| <Button variant="outlined" component={Link} to="/login" sx={{ fontSize: 20, height: '60px' }}><Typography variant="pnspsFormHeader">返回登入頁面</Typography></Button> | <Button variant="outlined" component={Link} to="/login" sx={{ fontSize: 20, height: '60px' }}><Typography variant="pnspsFormHeader">返回登入頁面</Typography></Button> | ||||
| </Stack> | </Stack> | ||||
| : | : | ||||
| @@ -89,7 +89,7 @@ const CustomFormWizard = (props) => { | |||||
| const [selectedIdDocInputType, setSelectedIdDocInputType] = useState(""); | const [selectedIdDocInputType, setSelectedIdDocInputType] = useState(""); | ||||
| // const [selectedIdDocLabel, setSelectedIdDocLabel] = useState(null); | // const [selectedIdDocLabel, setSelectedIdDocLabel] = useState(null); | ||||
| const [selectedAddress4, setSelectedAddress4] = useState(null); | const [selectedAddress4, setSelectedAddress4] = useState(null); | ||||
| const [selectedAddress5, setSelectedAddress5] = useState(ComboData.country[0]); | |||||
| const [selectedAddress5, setSelectedAddress5] = useState(ComboData.country(intl)[0]); | |||||
| const [termsAndConAccept, setTermsAndConAccept] = useState(false); | const [termsAndConAccept, setTermsAndConAccept] = useState(false); | ||||
| const [termsAndConNotAccept, setTermsAndConNotAccept] = useState(false); | const [termsAndConNotAccept, setTermsAndConNotAccept] = useState(false); | ||||
| const [isValid, setisValid] = useState(false); | const [isValid, setisValid] = useState(false); | ||||
| @@ -103,7 +103,7 @@ const CustomFormWizard = (props) => { | |||||
| const idDocTypeComboList = ComboData.idDocType; | const idDocTypeComboList = ComboData.idDocType; | ||||
| const address4ComboList = ComboData.district; | const address4ComboList = ComboData.district; | ||||
| const address5ComboList = ComboData.country; | |||||
| const address5ComboList = ComboData.country(intl); | |||||
| const termsAndCon = "此網址由香港特別行政區政府物流服務署製作及管理。本署會盡力確保網址上的資料無誤,\n" | const termsAndCon = "此網址由香港特別行政區政府物流服務署製作及管理。本署會盡力確保網址上的資料無誤,\n" | ||||
| + "但有絕對酌情權隨時刪除、暫停登載或編輯各項資料而無須給予任何理由。\n由於任何與網址" | + "但有絕對酌情權隨時刪除、暫停登載或編輯各項資料而無須給予任何理由。\n由於任何與網址" | ||||
| + "內資料有關的理由或原因,而導致出現申索、損失或損害,本署概不負責。\n使用者須自行評" | + "內資料有關的理由或原因,而導致出現申索、損失或損害,本署概不負責。\n使用者須自行評" | ||||
| @@ -564,13 +564,13 @@ const CustomFormWizard = (props) => { | |||||
| .matches(/^(?=.*[0-9])/, { message: displayErrorMsg('請包括最少1個數字') }) | .matches(/^(?=.*[0-9])/, { message: displayErrorMsg('請包括最少1個數字') }) | ||||
| .matches(/^(?=.*[!@#%&])/, { message: displayErrorMsg('請包括最少1個特殊字符') }), | .matches(/^(?=.*[!@#%&])/, { message: displayErrorMsg('請包括最少1個特殊字符') }), | ||||
| confirmPassword: yup.string().min(8, displayErrorMsg('請最少輸入8位密碼')).required(displayErrorMsg(intl.formatMessage({id: 'pleaseConfirmPassword'}))).oneOf([yup.ref('password'), null], displayErrorMsg('請輸入相同密碼')), | confirmPassword: yup.string().min(8, displayErrorMsg('請最少輸入8位密碼')).required(displayErrorMsg(intl.formatMessage({id: 'pleaseConfirmPassword'}))).oneOf([yup.ref('password'), null], displayErrorMsg('請輸入相同密碼')), | ||||
| enName: yup.string().max(255).required(displayErrorMsg('請輸入英文姓名')), | |||||
| chName: yup.string().max(6).required(displayErrorMsg('請輸入中文姓名')), | |||||
| enName: yup.string().max(255).required(displayErrorMsg(intl.formatMessage({id: 'userRequireEnglishName'}))), | |||||
| chName: yup.string().max(6).required(displayErrorMsg(intl.formatMessage({id: 'userRequireChineseName'}))), | |||||
| address1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | address1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | ||||
| address2: yup.string().max(255).required(displayErrorMsg('請輸入第二行地址')), | address2: yup.string().max(255).required(displayErrorMsg('請輸入第二行地址')), | ||||
| address3: yup.string().max(255).required(displayErrorMsg('請輸入第三行地址')), | address3: yup.string().max(255).required(displayErrorMsg('請輸入第三行地址')), | ||||
| email: yup.string().email(displayErrorMsg('請輸入電郵格式')).max(255).required(displayErrorMsg('請輸入電郵')), | |||||
| emailConfirm: yup.string().email(displayErrorMsg('請輸入電郵格式')).max(255).required(displayErrorMsg('請輸入電郵')).oneOf([yup.ref('email'), null], displayErrorMsg('請輸入相同電郵')), | |||||
| email: yup.string().email(displayErrorMsg(intl.formatMessage({id: 'validEmailFormat'}))).max(255).required(displayErrorMsg(intl.formatMessage({id: 'requireEmail'}))), | |||||
| emailConfirm: yup.string().email(displayErrorMsg(intl.formatMessage({id: 'validEmailFormat'}))).max(255).required(displayErrorMsg(intl.formatMessage({id: 'requireEmail'}))).oneOf([yup.ref('email'), null], displayErrorMsg(intl.formatMessage({id: 'validSameEmail'}))), | |||||
| idNo: yup.string().required(displayErrorMsg(`請輸入${selectedIdDocInputType}號碼`)) | idNo: yup.string().required(displayErrorMsg(`請輸入${selectedIdDocInputType}號碼`)) | ||||
| .matches(/^[aA-zZ0-9\s]+$/, { message: displayErrorMsg(`${selectedIdDocInputType}號碼不包含特殊字符`) }) | .matches(/^[aA-zZ0-9\s]+$/, { message: displayErrorMsg(`${selectedIdDocInputType}號碼不包含特殊字符`) }) | ||||
| .matches(/^\S*$/, { message: displayErrorMsg(`${selectedIdDocInputType}號碼不包含空格`) }) | .matches(/^\S*$/, { message: displayErrorMsg(`${selectedIdDocInputType}號碼不包含空格`) }) | ||||
| @@ -627,18 +627,18 @@ const CustomFormWizard = (props) => { | |||||
| }), | }), | ||||
| checkDigit: yup.string().max(1).required(displayErrorMsg('請輸入括號內的數字或字母')), | checkDigit: yup.string().max(1).required(displayErrorMsg('請輸入括號內的數字或字母')), | ||||
| idDocType: yup.string().max(255).required(displayErrorMsg('請輸入證件類別')), | idDocType: yup.string().max(255).required(displayErrorMsg('請輸入證件類別')), | ||||
| phoneCountryCode: yup.string().min(2, displayErrorMsg('請輸入最少2位數字')).required(displayErrorMsg('請輸入國際區號')), | |||||
| phoneCountryCode: yup.string().min(2, displayErrorMsg(intl.formatMessage({id: 'requireAtLeast2Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))), | |||||
| // faxCountryCode: yup.string().min(3,'請輸入3位數字'), | // faxCountryCode: yup.string().min(3,'請輸入3位數字'), | ||||
| phone: yup.string().min(8, displayErrorMsg('請輸入最少8位數字')).required(displayErrorMsg('請輸入聯絡電話')), | |||||
| phone: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'requireAtLeast8Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireContactNumber'}))), | |||||
| // fax: yup.string().min(8,'請輸入8位數字'), | // fax: yup.string().min(8,'請輸入8位數字'), | ||||
| captchaField: yup.string().required(displayErrorMsg('請輸入驗證')),//.oneOf([captcha], displayErrorMsg('請輸入有效驗證')), | |||||
| captchaField: yup.string().required(displayErrorMsg(intl.formatMessage({id: 'requireVerify'}))),//.oneOf([captcha], displayErrorMsg('請輸入有效驗證')), | |||||
| }), | }), | ||||
| }); | }); | ||||
| const handleReset = (resetForm) => { | const handleReset = (resetForm) => { | ||||
| resetForm(); | resetForm(); | ||||
| setSelectedAddress4("") | setSelectedAddress4("") | ||||
| setSelectedAddress5(ComboData.country[0]) | |||||
| setSelectedAddress5(ComboData.country(intl)[0]) | |||||
| setCheckCountry(false) | setCheckCountry(false) | ||||
| setSelectedIdDocType({}) | setSelectedIdDocType({}) | ||||
| setSelectedIdDocInputType(""); | setSelectedIdDocInputType(""); | ||||
| @@ -1181,7 +1181,9 @@ const CustomFormWizard = (props) => { | |||||
| onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
| setSelectedAddress4(newValue); | setSelectedAddress4(newValue); | ||||
| }} | }} | ||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address4-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, | |||||
| "#address4-combo": { padding: "0px 0px 0px 3px" }, | |||||
| "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| renderInput={(params) => <TextField {...params} placeholder={intl.formatMessage({id: 'region'})} | renderInput={(params) => <TextField {...params} placeholder={intl.formatMessage({id: 'region'})} | ||||
| />} | />} | ||||
| /> | /> | ||||
| @@ -1193,7 +1195,7 @@ const CustomFormWizard = (props) => { | |||||
| onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
| if (newValue !== null) { | if (newValue !== null) { | ||||
| setSelectedAddress5(newValue); | setSelectedAddress5(newValue); | ||||
| if (newValue === '香港') { | |||||
| if (newValue === intl.formatMessage({id: 'hongKong'})) { | |||||
| setCheckCountry(false) | setCheckCountry(false) | ||||
| } else { | } else { | ||||
| setSelectedAddress4(""); | setSelectedAddress4(""); | ||||
| @@ -1206,7 +1208,7 @@ const CustomFormWizard = (props) => { | |||||
| }} | }} | ||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address5-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address5-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | ||||
| renderInput={(params) => <TextField {...params} placeholder="國家/地區" />} | |||||
| renderInput={(params) => <TextField {...params} placeholder={intl.formatMessage({id: 'regionOrCountry'})} />} | |||||
| /> | /> | ||||
| {formik.touched.address1 && formik.errors.address1 && ( | {formik.touched.address1 && formik.errors.address1 && ( | ||||
| <FormHelperText error id="helper-text-address1-signup"> | <FormHelperText error id="helper-text-address1-signup"> | ||||
| @@ -1227,7 +1229,9 @@ const CustomFormWizard = (props) => { | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} mt={1} mb={1}> | <Grid item xs={12} mt={1} mb={1}> | ||||
| <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | ||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}>你的聯絡資料</Typography> | |||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}> | |||||
| <FormattedMessage id="yourContact"/> | |||||
| </Typography> | |||||
| </Stack> | </Stack> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12}> | <Grid item xs={12} md={12}> | ||||
| @@ -1236,7 +1240,7 @@ const CustomFormWizard = (props) => { | |||||
| <Stack spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | <Stack spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | ||||
| <InputLabel htmlFor="email-signup"> | <InputLabel htmlFor="email-signup"> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 電郵 | |||||
| <FormattedMessage id="userContactEmail"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| @@ -1248,7 +1252,7 @@ const CustomFormWizard = (props) => { | |||||
| value={formik.values.email.trim()} | value={formik.values.email.trim()} | ||||
| name="email" | name="email" | ||||
| onChange={formik.handleChange} | onChange={formik.handleChange} | ||||
| placeholder="電郵" | |||||
| placeholder={intl.formatMessage({id: 'userContactEmail'})} | |||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -1265,7 +1269,7 @@ const CustomFormWizard = (props) => { | |||||
| )} | )} | ||||
| {checkEmail && ( | {checkEmail && ( | ||||
| <FormHelperText error id="helper-text-email-signup"> | <FormHelperText error id="helper-text-email-signup"> | ||||
| 此電郵已被注冊,請使用其他電郵 | |||||
| <FormattedMessage id="emailUsed"/> | |||||
| </FormHelperText> | </FormHelperText> | ||||
| )} | )} | ||||
| </Stack> | </Stack> | ||||
| @@ -1274,7 +1278,7 @@ const CustomFormWizard = (props) => { | |||||
| <Stack spacing={1} > | <Stack spacing={1} > | ||||
| <InputLabel htmlFor="emailConfirm-signup"> | <InputLabel htmlFor="emailConfirm-signup"> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 確認電郵 | |||||
| <FormattedMessage id="userContactEmail"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| @@ -1287,7 +1291,7 @@ const CustomFormWizard = (props) => { | |||||
| name="emailConfirm" | name="emailConfirm" | ||||
| // onBlur={formik.handleBlur} | // onBlur={formik.handleBlur} | ||||
| onChange={formik.handleChange} | onChange={formik.handleChange} | ||||
| placeholder="確認電郵" | |||||
| placeholder={intl.formatMessage({id: 'confirmEmail'})} | |||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -1314,7 +1318,7 @@ const CustomFormWizard = (props) => { | |||||
| <Stack direction="column" spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | <Stack direction="column" spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | ||||
| <InputLabel htmlFor="phone-signup"> | <InputLabel htmlFor="phone-signup"> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 聯絡電話 | |||||
| <FormattedMessage id="userContactNumber"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| @@ -1333,7 +1337,7 @@ const CustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("phoneCountryCode", value); | formik.setFieldValue("phoneCountryCode", value); | ||||
| }} | }} | ||||
| placeholder="國際區號" | |||||
| placeholder={intl.formatMessage({id: 'dialingCode'})} | |||||
| error={Boolean(formik.touched.phone && formik.errors.phone)} | error={Boolean(formik.touched.phone && formik.errors.phone)} | ||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| endAdornment={<InputAdornment position="end">-</InputAdornment>} | endAdornment={<InputAdornment position="end">-</InputAdornment>} | ||||
| @@ -1361,7 +1365,7 @@ const CustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("phone", value); | formik.setFieldValue("phone", value); | ||||
| }} | }} | ||||
| placeholder="聯絡電話" | |||||
| placeholder={intl.formatMessage({id: 'userContactNumber'})} | |||||
| error={Boolean(formik.touched.phone && formik.errors.phone)} | error={Boolean(formik.touched.phone && formik.errors.phone)} | ||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| @@ -1390,7 +1394,7 @@ const CustomFormWizard = (props) => { | |||||
| <Stack spacing={1} direction="column"> | <Stack spacing={1} direction="column"> | ||||
| <InputLabel htmlFor="fax-signup"> | <InputLabel htmlFor="fax-signup"> | ||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 傳真號碼 | |||||
| <FormattedMessage id="userFaxNumber"/> | |||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| <Stack direction="row"> | <Stack direction="row"> | ||||
| @@ -1408,7 +1412,7 @@ const CustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("faxCountryCode", value); | formik.setFieldValue("faxCountryCode", value); | ||||
| }} | }} | ||||
| placeholder="國際區號" | |||||
| placeholder={intl.formatMessage({id: 'dialingCode'})} | |||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| endAdornment={<InputAdornment position="end">-</InputAdornment>} | endAdornment={<InputAdornment position="end">-</InputAdornment>} | ||||
| inputProps={{ | inputProps={{ | ||||
| @@ -1435,7 +1439,7 @@ const CustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("fax", value); | formik.setFieldValue("fax", value); | ||||
| }} | }} | ||||
| placeholder="傳真號碼" | |||||
| placeholder={intl.formatMessage({id: 'userFaxNumber'})} | |||||
| inputProps={{ | inputProps={{ | ||||
| maxLength: 8, | maxLength: 8, | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -1703,7 +1707,7 @@ const CustomFormWizard = (props) => { | |||||
| : null} | : null} | ||||
| <Stack direction="row"> | <Stack direction="row"> | ||||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]} id="preview-address5-signup"> | <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]} id="preview-address5-signup"> | ||||
| 國家/地區: | |||||
| <FormattedMessage id="regionOrCountry"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="pnspsFormHeader">{selectedAddress5}</Typography> | <Typography variant="pnspsFormHeader">{selectedAddress5}</Typography> | ||||
| </Stack> | </Stack> | ||||
| @@ -1712,13 +1716,15 @@ const CustomFormWizard = (props) => { | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} mt={1} mb={1}> | <Grid item xs={12} mt={1} mb={1}> | ||||
| <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | ||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}>你的聯絡資料</Typography> | |||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}> | |||||
| <FormattedMessage id="yourContact"/> | |||||
| </Typography> | |||||
| </Stack> | </Stack> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12}> | <Grid item xs={12} md={12}> | ||||
| <Stack spacing={1} direction="row"> | <Stack spacing={1} direction="row"> | ||||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | ||||
| 電郵: | |||||
| <FormattedMessage id="userContactEmail"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="pnspsFormHeader" id="preview-email-signup"> | <Typography variant="pnspsFormHeader" id="preview-email-signup"> | ||||
| {formik.values.email} | {formik.values.email} | ||||
| @@ -1728,7 +1734,7 @@ const CustomFormWizard = (props) => { | |||||
| <Grid item xs={12} md={6}> | <Grid item xs={12} md={6}> | ||||
| <Stack spacing={1} direction="row"> | <Stack spacing={1} direction="row"> | ||||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | ||||
| 聯絡電話: | |||||
| <FormattedMessage id="userContactNumber"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="pnspsFormHeader" id="preview-phone-signup"> | <Typography variant="pnspsFormHeader" id="preview-phone-signup"> | ||||
| +{formik.values.phoneCountryCode} {formik.values.phone} | +{formik.values.phoneCountryCode} {formik.values.phone} | ||||
| @@ -1739,7 +1745,7 @@ const CustomFormWizard = (props) => { | |||||
| <Grid item xs={12} md={6}> | <Grid item xs={12} md={6}> | ||||
| <Stack spacing={1} direction="row"> | <Stack spacing={1} direction="row"> | ||||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]}> | ||||
| 傳真號碼: | |||||
| <FormattedMessage id="userFaxNumber"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="pnspsFormHeader" id="preview-fax-signup"> | <Typography variant="pnspsFormHeader" id="preview-fax-signup"> | ||||
| +{formik.values.faxCountryCode} {formik.values.fax} | +{formik.values.faxCountryCode} {formik.values.fax} | ||||
| @@ -1773,7 +1779,9 @@ const CustomFormWizard = (props) => { | |||||
| <Stack mt={1} direction="column" justifyContent="flex-start" alignItems="center" spacing={2}> | <Stack mt={1} direction="column" justifyContent="flex-start" alignItems="center" spacing={2}> | ||||
| <CheckCircleOutlineIcon color="success" sx={{ width: "200px", height: "200px" }} /> | <CheckCircleOutlineIcon color="success" sx={{ width: "200px", height: "200px" }} /> | ||||
| <Typography display="inline" variant="h4">帳戶申請已成功提交。</Typography> | <Typography display="inline" variant="h4">帳戶申請已成功提交。</Typography> | ||||
| <Typography display="inline" variant="h4">驗證電郵將發送到你的電郵地址,請依指示完成驗證及登入系統。</Typography> | |||||
| <Typography display="inline" variant="h4"> | |||||
| <FormattedMessage id="emailSent"/> | |||||
| </Typography> | |||||
| <Button variant="outlined" component={Link} to="/login" sx={{ fontSize: 20, height: '60px' }}><Typography variant="pnspsFormHeader">返回登入頁面</Typography></Button> | <Button variant="outlined" component={Link} to="/login" sx={{ fontSize: 20, height: '60px' }}><Typography variant="pnspsFormHeader">返回登入頁面</Typography></Button> | ||||
| </Stack> | </Stack> | ||||
| : | : | ||||
| @@ -366,11 +366,11 @@ const CustomFormWizard = (props) => { | |||||
| address1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | address1: yup.string().max(255).required(displayErrorMsg('請輸入第一行地址')), | ||||
| address2: yup.string().max(255).required(displayErrorMsg('請輸入第二行地址')), | address2: yup.string().max(255).required(displayErrorMsg('請輸入第二行地址')), | ||||
| address3: yup.string().max(255).required(displayErrorMsg('請輸入第三行地址')), | address3: yup.string().max(255).required(displayErrorMsg('請輸入第三行地址')), | ||||
| email: yup.string().email(displayErrorMsg('請輸入電郵格式')).max(255).required(displayErrorMsg('請輸入電郵')), | |||||
| emailConfirm: yup.string().email(displayErrorMsg('請輸入電郵格式')).max(255).required(displayErrorMsg('請輸入電郵')).oneOf([yup.ref('email'), null], displayErrorMsg('請輸入相同電郵')), | |||||
| phoneCountryCode: yup.string().min(2, displayErrorMsg('請輸入最少2位數字')).required(displayErrorMsg('請輸入國際區號')), | |||||
| phone: yup.string().min(8, displayErrorMsg('請輸入最少8位數字')).required(displayErrorMsg('請輸入聯絡電話')), | |||||
| captchaField: yup.string().required(displayErrorMsg('請輸入驗證')),//.oneOf([captcha], displayErrorMsg('請輸入有效驗證')), | |||||
| email: yup.string().email(displayErrorMsg(intl.formatMessage({id: 'validEmailFormat'}))).max(255).required(displayErrorMsg(intl.formatMessage({id: 'requireEmail'}))), | |||||
| emailConfirm: yup.string().email(displayErrorMsg(intl.formatMessage({id: 'validEmailFormat'}))).max(255).required(displayErrorMsg(intl.formatMessage({id: 'requireEmail'}))).oneOf([yup.ref('email'), null], displayErrorMsg(intl.formatMessage({id: 'validSameEmail'}))), | |||||
| phoneCountryCode: yup.string().min(2, displayErrorMsg(intl.formatMessage({id: 'requireAtLeast2Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))), | |||||
| phone: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'requireAtLeast8Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireContactNumber'}))), | |||||
| captchaField: yup.string().required(displayErrorMsg(intl.formatMessage({id: 'requireVerify'}))),//.oneOf([captcha], displayErrorMsg('請輸入有效驗證')), | |||||
| }), | }), | ||||
| }); | }); | ||||
| @@ -522,7 +522,7 @@ const CustomFormWizard = (props) => { | |||||
| onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
| if (newValue !== null) { | if (newValue !== null) { | ||||
| setSelectedAddress5(newValue); | setSelectedAddress5(newValue); | ||||
| if (newValue == '香港') { | |||||
| if (newValue === intl.formatMessage({id: 'hongKong'})) { | |||||
| setCheckCountry(false) | setCheckCountry(false) | ||||
| } else { | } else { | ||||
| setSelectedAddress4(""); | setSelectedAddress4(""); | ||||
| @@ -535,7 +535,7 @@ const CustomFormWizard = (props) => { | |||||
| }} | }} | ||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address5-combo": { padding: "0px 0px 0px 0px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address5-combo": { padding: "0px 0px 0px 0px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | ||||
| renderInput={(params) => <TextField {...params} placeholder="國家/地區" />} | |||||
| renderInput={(params) => <TextField {...params} placeholder={intl.formatMessage({id: 'regionOrCountry'})} />} | |||||
| /> | /> | ||||
| {formik.touched.address1 && formik.errors.address1 && ( | {formik.touched.address1 && formik.errors.address1 && ( | ||||
| <FormHelperText error id="helper-text-address1-signup"> | <FormHelperText error id="helper-text-address1-signup"> | ||||
| @@ -556,7 +556,9 @@ const CustomFormWizard = (props) => { | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} mt={1} mb={1}> | <Grid item xs={12} mt={1} mb={1}> | ||||
| <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | ||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}>你的聯絡資料</Typography> | |||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}> | |||||
| <FormattedMessage id="yourContact"/> | |||||
| </Typography> | |||||
| </Stack> | </Stack> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12}> | <Grid item xs={12} md={12}> | ||||
| @@ -565,7 +567,7 @@ const CustomFormWizard = (props) => { | |||||
| <Stack spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | <Stack spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | ||||
| <InputLabel htmlFor="email-signup"> | <InputLabel htmlFor="email-signup"> | ||||
| <Typography variant="h5"> | <Typography variant="h5"> | ||||
| 電郵 | |||||
| <FormattedMessage id="userContactEmail"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| {iAmSmartData.email?<img src={iAmSmartICon} alt="iAM Smart" width="25" />:null} | {iAmSmartData.email?<img src={iAmSmartICon} alt="iAM Smart" width="25" />:null} | ||||
| </Typography> | </Typography> | ||||
| @@ -578,7 +580,7 @@ const CustomFormWizard = (props) => { | |||||
| value={formik.values.email.trim()} | value={formik.values.email.trim()} | ||||
| name="email" | name="email" | ||||
| onChange={formik.handleChange} | onChange={formik.handleChange} | ||||
| placeholder="電郵" | |||||
| placeholder={intl.formatMessage({id: 'userContactEmail'})} | |||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -595,7 +597,7 @@ const CustomFormWizard = (props) => { | |||||
| )} | )} | ||||
| {checkEmail && ( | {checkEmail && ( | ||||
| <FormHelperText error id="helper-text-email-signup"> | <FormHelperText error id="helper-text-email-signup"> | ||||
| 此電郵已被注冊,請使用其他電郵 | |||||
| <FormattedMessage id="emailUsed"/> | |||||
| </FormHelperText> | </FormHelperText> | ||||
| )} | )} | ||||
| </Stack> | </Stack> | ||||
| @@ -604,7 +606,7 @@ const CustomFormWizard = (props) => { | |||||
| <Stack spacing={1} > | <Stack spacing={1} > | ||||
| <InputLabel htmlFor="emailConfirm-signup"> | <InputLabel htmlFor="emailConfirm-signup"> | ||||
| <Typography variant="h5"> | <Typography variant="h5"> | ||||
| 確認電郵 | |||||
| <FormattedMessage id="userContactEmail"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| @@ -617,7 +619,7 @@ const CustomFormWizard = (props) => { | |||||
| name="emailConfirm" | name="emailConfirm" | ||||
| // onBlur={formik.handleBlur} | // onBlur={formik.handleBlur} | ||||
| onChange={formik.handleChange} | onChange={formik.handleChange} | ||||
| placeholder="確認電郵" | |||||
| placeholder={intl.formatMessage({id: 'confirmEmail'})} | |||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -644,7 +646,7 @@ const CustomFormWizard = (props) => { | |||||
| <Stack direction="column" spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | <Stack direction="column" spacing={1} sx={{ mr: { md: 1 }, mb: 1 }}> | ||||
| <InputLabel htmlFor="phone-signup"> | <InputLabel htmlFor="phone-signup"> | ||||
| <Typography variant="h5"> | <Typography variant="h5"> | ||||
| 聯絡電話 | |||||
| <FormattedMessage id="userContactNumber"/> | |||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| {iAmSmartData.phone?<img src={iAmSmartICon} alt="iAM Smart" width="25" />:null} | {iAmSmartData.phone?<img src={iAmSmartICon} alt="iAM Smart" width="25" />:null} | ||||
| </Typography> | </Typography> | ||||
| @@ -664,7 +666,7 @@ const CustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("phoneCountryCode", value); | formik.setFieldValue("phoneCountryCode", value); | ||||
| }} | }} | ||||
| placeholder="國際區號" | |||||
| placeholder={intl.formatMessage({id: 'dialingCode'})} | |||||
| error={Boolean(formik.touched.phone && formik.errors.phone)} | error={Boolean(formik.touched.phone && formik.errors.phone)} | ||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| @@ -691,7 +693,7 @@ const CustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("phone", value); | formik.setFieldValue("phone", value); | ||||
| }} | }} | ||||
| placeholder="聯絡電話" | |||||
| placeholder={intl.formatMessage({id: 'userContactNumber'})} | |||||
| error={Boolean(formik.touched.phone && formik.errors.phone)} | error={Boolean(formik.touched.phone && formik.errors.phone)} | ||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| @@ -720,7 +722,7 @@ const CustomFormWizard = (props) => { | |||||
| <Stack spacing={1} direction="column"> | <Stack spacing={1} direction="column"> | ||||
| <InputLabel htmlFor="fax-signup"> | <InputLabel htmlFor="fax-signup"> | ||||
| <Typography variant="h5"> | <Typography variant="h5"> | ||||
| 傳真號碼 | |||||
| <FormattedMessage id="userFaxNumber"/> | |||||
| </Typography> | </Typography> | ||||
| </InputLabel> | </InputLabel> | ||||
| <Stack direction="row"> | <Stack direction="row"> | ||||
| @@ -738,7 +740,7 @@ const CustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("faxCountryCode", value); | formik.setFieldValue("faxCountryCode", value); | ||||
| }} | }} | ||||
| placeholder="國際區號" | |||||
| placeholder={intl.formatMessage({id: 'dialingCode'})} | |||||
| onBlur={formik.handleBlur} | onBlur={formik.handleBlur} | ||||
| inputProps={{ | inputProps={{ | ||||
| maxLength: 3, | maxLength: 3, | ||||
| @@ -764,7 +766,7 @@ const CustomFormWizard = (props) => { | |||||
| } | } | ||||
| formik.setFieldValue("fax", value); | formik.setFieldValue("fax", value); | ||||
| }} | }} | ||||
| placeholder="傳真號碼" | |||||
| placeholder={intl.formatMessage({id: 'userFaxNumber'})} | |||||
| inputProps={{ | inputProps={{ | ||||
| maxLength: 8, | maxLength: 8, | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -963,7 +965,7 @@ const CustomFormWizard = (props) => { | |||||
| : null} | : null} | ||||
| <Stack direction="row"> | <Stack direction="row"> | ||||
| <Typography variant="h5" color={theme.palette.grey[600]} id="preview-address5-signup"> | <Typography variant="h5" color={theme.palette.grey[600]} id="preview-address5-signup"> | ||||
| 國家/地區: | |||||
| <FormattedMessage id="regionOrCountry"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="h5">{selectedAddress5}</Typography> | <Typography variant="h5">{selectedAddress5}</Typography> | ||||
| </Stack> | </Stack> | ||||
| @@ -972,13 +974,15 @@ const CustomFormWizard = (props) => { | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} mt={1} mb={1}> | <Grid item xs={12} mt={1} mb={1}> | ||||
| <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | <Stack direction="column" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}> | ||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}>你的聯絡資料</Typography> | |||||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary' }}> | |||||
| <FormattedMessage id="yourContact"/> | |||||
| </Typography> | |||||
| </Stack> | </Stack> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12}> | <Grid item xs={12} md={12}> | ||||
| <Stack spacing={1} direction="row"> | <Stack spacing={1} direction="row"> | ||||
| <Typography variant="h5" color={theme.palette.grey[600]}> | <Typography variant="h5" color={theme.palette.grey[600]}> | ||||
| 電郵: | |||||
| <FormattedMessage id="userContactEmail"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="h5" id="preview-email-signup"> | <Typography variant="h5" id="preview-email-signup"> | ||||
| {formik.values.email} | {formik.values.email} | ||||
| @@ -988,7 +992,7 @@ const CustomFormWizard = (props) => { | |||||
| <Grid item xs={12} md={6}> | <Grid item xs={12} md={6}> | ||||
| <Stack spacing={1} direction="row"> | <Stack spacing={1} direction="row"> | ||||
| <Typography variant="h5" color={theme.palette.grey[600]}> | <Typography variant="h5" color={theme.palette.grey[600]}> | ||||
| 聯絡電話: | |||||
| <FormattedMessage id="userContactNumber"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="h5" id="preview-phone-signup"> | <Typography variant="h5" id="preview-phone-signup"> | ||||
| +{formik.values.phoneCountryCode} {formik.values.phone} | +{formik.values.phoneCountryCode} {formik.values.phone} | ||||
| @@ -999,7 +1003,7 @@ const CustomFormWizard = (props) => { | |||||
| <Grid item xs={12} md={6}> | <Grid item xs={12} md={6}> | ||||
| <Stack spacing={1} direction="row"> | <Stack spacing={1} direction="row"> | ||||
| <Typography variant="h5" color={theme.palette.grey[600]}> | <Typography variant="h5" color={theme.palette.grey[600]}> | ||||
| 傳真號碼: | |||||
| <FormattedMessage id="userFaxNumber"/>: | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="h5" id="preview-fax-signup"> | <Typography variant="h5" id="preview-fax-signup"> | ||||
| +{formik.values.faxCountryCode} {formik.values.fax} | +{formik.values.faxCountryCode} {formik.values.fax} | ||||
| @@ -1022,7 +1026,9 @@ const CustomFormWizard = (props) => { | |||||
| <Stack mt={1} direction="column" justifyContent="flex-start" alignItems="center" spacing={2}> | <Stack mt={1} direction="column" justifyContent="flex-start" alignItems="center" spacing={2}> | ||||
| <CheckCircleOutlineIcon color="success" sx={{ width: "200px", height: "200px" }} /> | <CheckCircleOutlineIcon color="success" sx={{ width: "200px", height: "200px" }} /> | ||||
| <Typography display="inline" variant="h4">帳戶申請已成功提交。</Typography> | <Typography display="inline" variant="h4">帳戶申請已成功提交。</Typography> | ||||
| <Typography display="inline" variant="h4">驗證電郵將發送到你的電郵地址,請依指示完成驗證及登入系統。</Typography> | |||||
| <Typography display="inline" variant="h4"> | |||||
| <FormattedMessage id="emailSent"/> | |||||
| </Typography> | |||||
| <Button variant="outlined" component={Link} to="/login" sx={{ fontSize: 20, height: '60px' }}><Typography variant="h5">返回登入頁面</Typography></Button> | <Button variant="outlined" component={Link} to="/login" sx={{ fontSize: 20, height: '60px' }}><Typography variant="h5">返回登入頁面</Typography></Button> | ||||
| </Stack> | </Stack> | ||||
| : | : | ||||
| @@ -64,16 +64,16 @@ export const PNSPS_BUTTON_THEME = createTheme({ | |||||
| fontSize: '1.2rem', | fontSize: '1.2rem', | ||||
| fontWeight: '600', | fontWeight: '600', | ||||
| height: '45px', | height: '45px', | ||||
| width: '35' + | |||||
| minWidth: '35' + | |||||
| 'vw', // Default width for xs screen sizes | 'vw', // Default width for xs screen sizes | ||||
| '@media (min-width: 600px)': { // sm breakpoint | '@media (min-width: 600px)': { // sm breakpoint | ||||
| width: '20vw', | |||||
| minWidth: '20vw', | |||||
| }, | }, | ||||
| '@media (min-width: 960px)': { // md breakpoint | '@media (min-width: 960px)': { // md breakpoint | ||||
| width: '15vw', | |||||
| minWidth: '15vw', | |||||
| }, | }, | ||||
| '@media (min-width: 1280px)': { // lg breakpoint | '@media (min-width: 1280px)': { // lg breakpoint | ||||
| width: '9vw', | |||||
| minWidth: '9vw', | |||||
| }, | }, | ||||
| textTransform: "none", | textTransform: "none", | ||||
| alignItems: 'normal', | alignItems: 'normal', | ||||
| @@ -147,15 +147,15 @@ export const PNSPS_LONG_BUTTON_THEME = createTheme({ | |||||
| fontSize: '1.2rem', | fontSize: '1.2rem', | ||||
| fontWeight: '600', | fontWeight: '600', | ||||
| height: '45px', | height: '45px', | ||||
| width: '60vw', // Default width for xs screen sizes | |||||
| minWidth: '60vw', // Default width for xs screen sizes | |||||
| '@media (min-width: 600px)': { // sm breakpoint | '@media (min-width: 600px)': { // sm breakpoint | ||||
| width: '33vw', | |||||
| minWidth: '33vw', | |||||
| }, | }, | ||||
| '@media (min-width: 960px)': { // md breakpoint | '@media (min-width: 960px)': { // md breakpoint | ||||
| width: '25vw', | |||||
| minWidth: '25vw', | |||||
| }, | }, | ||||
| '@media (min-width: 1280px)': { // lg breakpoint | '@media (min-width: 1280px)': { // lg breakpoint | ||||
| width: '16vw', | |||||
| minWidth: '16vw', | |||||
| }, | }, | ||||
| textTransform: "none", | textTransform: "none", | ||||
| alignItems: 'normal', | alignItems: 'normal', | ||||
| @@ -235,7 +235,7 @@ export const PNSPS_THEME = createTheme({ | |||||
| minHeight: ROW_HEIGHT, | minHeight: ROW_HEIGHT, | ||||
| maxHeight: ROW_HEIGHT, | maxHeight: ROW_HEIGHT, | ||||
| boxSizing: 'border-box', // Ensure the background shape follows the size of the TextField | boxSizing: 'border-box', // Ensure the background shape follows the size of the TextField | ||||
| padding: '1px', // Adjust the padding as needed | |||||
| //padding: '1px', // Adjust the padding as needed | |||||
| }, | }, | ||||
| '& .MuiInputBase-input:disabled': { | '& .MuiInputBase-input:disabled': { | ||||
| color: 'rgba(0, 0, 0, 0.8)', | color: 'rgba(0, 0, 0, 0.8)', | ||||
| @@ -43,10 +43,32 @@ | |||||
| "userName": "Username", | "userName": "Username", | ||||
| "userChineseName": "Chinese Name", | "userChineseName": "Chinese Name", | ||||
| "userEnglishName": "English Name", | "userEnglishName": "English Name", | ||||
| "userContactName": "Name", | |||||
| "userRequireChineseName": "Please enter your Chinese name", | |||||
| "userRequireEnglishName": "Please enter your English name", | |||||
| "userRequireName": "Please enter your name", | |||||
| "userContactEmail": "Email", | |||||
| "confirmEmail": "Confirm Email", | |||||
| "requireEmail": "Please enter your email", | |||||
| "validEmailFormat": "Please enter a valid email", | |||||
| "validSameEmail": "Please enter same email address", | |||||
| "emailUsed": "This email has been registered, please use another email", | |||||
| "emailSent": "A verification email will be sent to your email address. Please follow the instructions to complete the verification and log in to the system.", | |||||
| "userContactNumber": "Contact Number", | |||||
| "requiredValidNumber": "Please enter a valid contact number", | |||||
| "requireContactNumber": "Please enter your contact number", | |||||
| "require3Number": "Please enter an 3-digit number", | |||||
| "require8Number": "Please enter an 8-digit number", | |||||
| "requireAtLeast8Number": "Please enter at least 8 digits", | |||||
| "requireAtLeast2Number": "Please enter at least 2 digits", | |||||
| "requireDialingCode": "Please enter the international dialing code", | |||||
| "requireVerify": "Please enter verification", | |||||
| "dialingCode": "Global Code", | |||||
| "userFaxNumber": "Fax number", | |||||
| "userIDNo": "ID Card Number", | "userIDNo": "ID Card Number", | ||||
| "userEmailAddress": "Email Address", | "userEmailAddress": "Email Address", | ||||
| "userPhoneNumber": "Mobile Phone Number", | "userPhoneNumber": "Mobile Phone Number", | ||||
| "userAddress": "Residential Address", | |||||
| "userAddress": "Address", | |||||
| "personalInformation": "Personal Information", | "personalInformation": "Personal Information", | ||||
| "yourPersonalInformation": "Your Personal Information", | "yourPersonalInformation": "Your Personal Information", | ||||
| @@ -72,6 +94,16 @@ | |||||
| "addressLine2": "Second line", | "addressLine2": "Second line", | ||||
| "addressLine3": "Third line", | "addressLine3": "Third line", | ||||
| "region": "Region (only applicable to Hong Kong)", | "region": "Region (only applicable to Hong Kong)", | ||||
| "regionOrCountry": "Country/Region", | |||||
| "hongKong": "Hong Kong", | |||||
| "mainland": "Mainland China", | |||||
| "macau": "Macau", | |||||
| "yourContact": "Your Contact Information", | |||||
| "pwWeak": "Weak", | |||||
| "pwNormal": "Normal", | |||||
| "pwGood": "Good", | |||||
| "pwStrong": "Strong", | |||||
| "Dashboard": "Dashboard", | "Dashboard": "Dashboard", | ||||
| "event": "Event" | "event": "Event" | ||||
| @@ -43,6 +43,28 @@ | |||||
| "userName": "用户名称", | "userName": "用户名称", | ||||
| "userChineseName": "中文姓名", | "userChineseName": "中文姓名", | ||||
| "userEnglishName": "英文姓名", | "userEnglishName": "英文姓名", | ||||
| "userContactName": "姓名", | |||||
| "userRequireChineseName": "請輸入中文姓名", | |||||
| "userRequireEnglishName": "請輸入英文姓名", | |||||
| "userRequireName": "請輸入姓名", | |||||
| "userContactEmail": "电邮", | |||||
| "confirmEmail": "确认电邮", | |||||
| "requireEmail": "请输入电邮", | |||||
| "validEmailFormat": "请输入电邮格式", | |||||
| "validSameEmail": "请输入相同电邮", | |||||
| "emailUsed": "此电邮已被注册,请使用其他电邮", | |||||
| "emailSent": "验证电邮将发送到你的电邮地址,请依指示完成验证及登入系统。", | |||||
| "userContactNumber": "联络电话", | |||||
| "requiredValidNumber": "请输入有效联络电话", | |||||
| "requireContactNumber": "请输入联络电话", | |||||
| "require3Number": "请输入3位数字", | |||||
| "require8Number": "请输入8位数字", | |||||
| "requireAtLeast8Number": "请输入最少8位数字", | |||||
| "requireAtLeast2Number": "请输入最少2位数字", | |||||
| "requireDialingCode": "请输入国际区号", | |||||
| "requireVerify": "请输入验证", | |||||
| "dialingCode": "国际区号", | |||||
| "userFaxNumber": "传真号码", | |||||
| "userIDNo": "身份证号码", | "userIDNo": "身份证号码", | ||||
| "userEmailAddress": "电邮地址", | "userEmailAddress": "电邮地址", | ||||
| "userPhoneNumber": "手机号码", | "userPhoneNumber": "手机号码", | ||||
| @@ -72,6 +94,16 @@ | |||||
| "addressLine2": "第二行", | "addressLine2": "第二行", | ||||
| "addressLine3": "第三行", | "addressLine3": "第三行", | ||||
| "region": "区域 (只适用于香港)", | "region": "区域 (只适用于香港)", | ||||
| "region Or Country": "国家/地区", | |||||
| "hong Kong": "香港", | |||||
| "mainland": "内地", | |||||
| "macau": "澳门", | |||||
| "yourContact": "你的联络资料", | |||||
| "pwWeak": "弱", | |||||
| "pwNormal": "普通", | |||||
| "pwGood": "良好", | |||||
| "pwStrong": "强", | |||||
| "Dashboard": "仪表板", | "Dashboard": "仪表板", | ||||
| "event": "活动" | "event": "活动" | ||||
| @@ -43,6 +43,28 @@ | |||||
| "userName": "用戶名稱", | "userName": "用戶名稱", | ||||
| "userChineseName": "中文姓名", | "userChineseName": "中文姓名", | ||||
| "userEnglishName": "英文姓名", | "userEnglishName": "英文姓名", | ||||
| "userContactName": "姓名", | |||||
| "userRequireChineseName": "請輸入中文姓名", | |||||
| "userRequireEnglishName": "請輸入英文姓名", | |||||
| "userRequireName": "請輸入姓名", | |||||
| "userContactEmail": "電郵", | |||||
| "confirmEmail": "確認電郵", | |||||
| "requireEmail": "請輸入電郵", | |||||
| "validEmailFormat": "請輸入電郵格式", | |||||
| "validSameEmail": "請輸入相同電郵", | |||||
| "emailUsed": "此電郵已被注冊,請使用其他電郵", | |||||
| "emailSent": "驗證電郵將發送到你的電郵地址,請依指示完成驗證及登入系統。", | |||||
| "userContactNumber": "聯絡電話", | |||||
| "requiredValidNumber": "請輸入有效聯絡電話", | |||||
| "requireContactNumber": "請輸入聯絡電話", | |||||
| "require3Number": "請輸入3位數字", | |||||
| "require8Number": "請輸入8位數字", | |||||
| "requireAtLeast8Number": "請輸入最少8位數字", | |||||
| "requireAtLeast2Number": "請輸入最少2位數字", | |||||
| "requireDialingCode": "請輸入國際區號", | |||||
| "requireVerify": "請輸入驗證", | |||||
| "dialingCode": "國際區號", | |||||
| "userFaxNumber": "傳真號碼", | |||||
| "userIDNo": "身份證號碼", | "userIDNo": "身份證號碼", | ||||
| "userEmailAddress": "電郵地址", | "userEmailAddress": "電郵地址", | ||||
| "userPhoneNumber": "手機號碼", | "userPhoneNumber": "手機號碼", | ||||
| @@ -72,6 +94,16 @@ | |||||
| "addressLine2": "第二行", | "addressLine2": "第二行", | ||||
| "addressLine3": "第三行", | "addressLine3": "第三行", | ||||
| "region": "區域 (只適用於香港)", | "region": "區域 (只適用於香港)", | ||||
| "regionOrCountry": "國家/地區", | |||||
| "hongKong": "香港", | |||||
| "mainland": "內地", | |||||
| "macau": "澳門", | |||||
| "yourContact": "你的聯絡資料", | |||||
| "pwWeak": "弱", | |||||
| "pwNormal": "普通", | |||||
| "pwGood": "良好", | |||||
| "pwStrong": "強", | |||||
| "Dashboard": "儀表板", | "Dashboard": "儀表板", | ||||
| "event": "活動" | "event": "活動" | ||||
| @@ -7,7 +7,11 @@ export const idDocType = [ | |||||
| export const district = ['北區', '長洲區', '大埔區', '大嶼山區', '東區', '觀塘區', '黃大仙區', '九龍城區', '葵青區', '南區', '南丫島區', | export const district = ['北區', '長洲區', '大埔區', '大嶼山區', '東區', '觀塘區', '黃大仙區', '九龍城區', '葵青區', '南區', '南丫島區', | ||||
| '坪洲區', '荃灣區', '沙田區', '深水埗區', '屯門區', '灣仔區', '西貢區', '油尖旺區', '元朗區', '中西區']; | '坪洲區', '荃灣區', '沙田區', '深水埗區', '屯門區', '灣仔區', '西貢區', '油尖旺區', '元朗區', '中西區']; | ||||
| export const country = ["香港","內地","澳門"]; | |||||
| export const country = (intl) => { | |||||
| return ["hongKong", "mainland", "macau"] | |||||
| .map((country) => intl.formatMessage({ id: country })); | |||||
| }; | |||||
| export const accountFilter = [{ id: 1, key: 1, label: 'Active', type: 'active' }, { id: 2, key: 2, label: 'Locked', type: 'locked' }, { id: 3, key: 3, label: 'Not verified', type: 'notVerified' }]; | export const accountFilter = [{ id: 1, key: 1, label: 'Active', type: 'active' }, { id: 2, key: 2, label: 'Locked', type: 'locked' }, { id: 3, key: 3, label: 'Not verified', type: 'notVerified' }]; | ||||
| @@ -18,11 +18,11 @@ export const strengthColorEng = (count) => { | |||||
| }; | }; | ||||
| export const strengthColorChi = (count) => { | export const strengthColorChi = (count) => { | ||||
| if (count < 3) return { label: '弱', color: 'error.main' }; | |||||
| if (count < 4) return { label: '普通', color: 'warning.main' }; | |||||
| if (count < 5) return { label: '良好', color: 'success.main' }; | |||||
| if (count < 6) return { label: '強', color: 'success.dark' }; | |||||
| return { label: '弱', color: 'error.main' }; | |||||
| if (count < 3) return { label: 'pwWeak', color: 'error.main' }; | |||||
| if (count < 4) return { label: 'pwNormal', color: 'warning.main' }; | |||||
| if (count < 5) return { label: 'pwGood', color: 'success.main' }; | |||||
| if (count < 6) return { label: 'pwStrong', color: 'success.dark' }; | |||||
| return { label: 'pwWeak', color: 'error.main' }; | |||||
| }; | }; | ||||
| // password strength indicator | // password strength indicator | ||||