From 23918f7cf109379b34bb1e176e3fde9b65d037fd Mon Sep 17 00:00:00 2001 From: Jason Chuang Date: Sun, 8 Mar 2026 02:03:50 +0800 Subject: [PATCH] update all aria-label --- src/layout/MainLayout/Drawer/index.js | 4 +++- .../Header/HeaderContent/Profile/index.js | 4 +++- src/pages/GazetteIssue/index.js | 4 +++- src/pages/Holiday/index.js | 7 ++++--- src/pages/Proof/Create_FromApp/ProofForm.js | 5 +++-- .../Details_GLD/tabTableDetail/TabTable.js | 5 +++-- .../Details_Public/tabTableDetail/TabTable.js | 2 +- src/pages/PublicNotice/ListPanel/index.js | 4 ++-- src/pages/User/ChangePasswordPage/index.js | 2 +- src/pages/User/DetailPage/index.js | 2 +- .../UserInformationCard_Individual.js | 4 ++-- .../UserInformationCard_Individual_Pub.js | 4 ++-- src/pages/User/DetailsPage_Individual/index.js | 2 +- src/pages/User/DetailsPage_Organization/index.js | 2 +- src/pages/authentication/AuthWrapper.js | 4 ++-- .../auth-forms/BusCustomFormWizard.js | 2 +- .../authentication/auth-forms/CustomFormWizard.js | 4 ++-- .../auth-forms/IAmSmartFormWizard.js | 6 +++--- src/pages/extra-pages/ErrorPage.js | 5 +++-- src/translations/en.json | 14 +++++++++++++- src/translations/zh-CN.json | 14 +++++++++++++- src/translations/zh-HK.json | 14 +++++++++++++- 22 files changed, 80 insertions(+), 34 deletions(-) diff --git a/src/layout/MainLayout/Drawer/index.js b/src/layout/MainLayout/Drawer/index.js index 5032de6..39898d2 100644 --- a/src/layout/MainLayout/Drawer/index.js +++ b/src/layout/MainLayout/Drawer/index.js @@ -4,6 +4,7 @@ import { useMemo } from 'react'; // material-ui import { useTheme } from '@mui/material/styles'; import { Box, Drawer, useMediaQuery } from '@mui/material'; +import { useIntl } from 'react-intl'; // project import import DrawerHeader from './DrawerHeader'; @@ -15,6 +16,7 @@ import { drawerWidth } from 'config'; const MainDrawer = ({ open, handleDrawerToggle, window }) => { const theme = useTheme(); + const intl = useIntl(); const matchDownMD = useMediaQuery(theme.breakpoints.down('lg')); // responsive drawer container @@ -25,7 +27,7 @@ const MainDrawer = ({ open, handleDrawerToggle, window }) => { const drawerHeader = useMemo(() => , [open]); return ( - + {!matchDownMD ? ( {drawerHeader} diff --git a/src/layout/MainLayout/Header/HeaderContent/Profile/index.js b/src/layout/MainLayout/Header/HeaderContent/Profile/index.js index 5fe8ad9..751bd48 100644 --- a/src/layout/MainLayout/Header/HeaderContent/Profile/index.js +++ b/src/layout/MainLayout/Header/HeaderContent/Profile/index.js @@ -33,6 +33,7 @@ import { LogoutOutlined, import { handleLogoutFunction } from 'auth/index'; import {useNavigate} from "react-router-dom"; import {useDispatch} from "react-redux"; +import { useIntl } from 'react-intl'; import AccountCircleIcon from '@mui/icons-material/AccountCircle'; // tab panel wrapper @@ -61,6 +62,7 @@ TabPanel.propTypes = { const Profile = () => { const theme = useTheme(); + const intl = useIntl(); const navigate = useNavigate() const dispatch = useDispatch() @@ -170,7 +172,7 @@ const Profile = () => { {/* {open && ( <> - + { + const intl = useIntl(); const [comboData, setComboData] = React.useState([]); const [holidayComboData, setHolidayComboData] = React.useState([]); const [onReady, setOnReady] = React.useState(false); @@ -198,7 +200,7 @@ const Index = () => { hidden disabled={waitImport} onChange={readFile} - aria-label="Upload Excel file (.xlsx)" + aria-label={intl.formatMessage({ id: 'ariaUploadExcelFile' })} /> diff --git a/src/pages/Holiday/index.js b/src/pages/Holiday/index.js index 9e3d501..60f9fd4 100644 --- a/src/pages/Holiday/index.js +++ b/src/pages/Holiday/index.js @@ -31,11 +31,12 @@ import { ThemeProvider } from "@emotion/react"; import { dateStr_Year } from "utils/DateUtils"; import { notifySaveSuccess } from 'utils/CommonFunction'; import { isGrantedAny } from "auth/utils"; +import { useIntl } from 'react-intl'; // ==============================|| DASHBOARD - DEFAULT ||============================== // const Index = () => { - + const intl = useIntl(); const [record, setRecord] = React.useState([]); const [comboData, setComboData] = React.useState([]); const [onReady, setOnReady] = React.useState(false); @@ -172,7 +173,7 @@ const Index = () => { size="large" disabled={waitDownload} onClick={doExport} - aria-label="Export holiday template" + aria-label={intl.formatMessage({ id: 'ariaExportHolidayTemplate' })} > Export @@ -194,7 +195,7 @@ const Index = () => { hidden disabled={waitImport} onChange={readFile} - aria-label="Upload Excel file (.xlsx)" + aria-label={intl.formatMessage({ id: 'ariaUploadExcelFile' })} /> diff --git a/src/pages/Proof/Create_FromApp/ProofForm.js b/src/pages/Proof/Create_FromApp/ProofForm.js index 2ad31e4..bda2d6e 100644 --- a/src/pages/Proof/Create_FromApp/ProofForm.js +++ b/src/pages/Proof/Create_FromApp/ProofForm.js @@ -19,12 +19,13 @@ import * as ComboData from "utils/ComboData"; import * as React from "react"; import { useFormik } from 'formik'; import { useNavigate } from "react-router-dom"; +import { useIntl } from 'react-intl'; import Loadable from 'components/Loadable'; import { notifySaveSuccess } from 'utils/CommonFunction'; const UploadFileTable = Loadable(React.lazy(() => import('./UploadFileTable'))); const FormPanel = ({ formData }) => { - + const intl = useIntl(); const [data, setData] = React.useState({}); const [columnPrice, setColumnPrice] = React.useState(ComboData.proofPrice[0]); const [attachments, setAttachments] = React.useState([]); @@ -289,7 +290,7 @@ const FormPanel = ({ formData }) => { hidden disabled={attachments.length >= (formik.values.groupType == "Private Bill" ? 2 : 1)} onChange={readFile} - aria-label="Upload PDF file" + aria-label={intl.formatMessage({ id: 'ariaUploadPdfFile' })} /> diff --git a/src/pages/PublicNotice/Details_GLD/tabTableDetail/TabTable.js b/src/pages/PublicNotice/Details_GLD/tabTableDetail/TabTable.js index cef3ed5..1308cc4 100644 --- a/src/pages/PublicNotice/Details_GLD/tabTableDetail/TabTable.js +++ b/src/pages/PublicNotice/Details_GLD/tabTableDetail/TabTable.js @@ -9,6 +9,7 @@ import { import { TabPanel, TabContext, TabList } from '@mui/lab'; import {useState, useEffect, lazy} from "react"; +import { useIntl } from 'react-intl'; import Loadable from 'components/Loadable'; const LoadingComponent = Loadable(lazy(() => import('../../../extra-pages/LoadingComponent'))); @@ -20,7 +21,7 @@ const StatusHistoryTab = Loadable(lazy(() => import('./StatusHistoryTab'))); // ==============================|| DASHBOARD - DEFAULT ||============================== // const PublicNotice = ({ appId, proofCount, paymentCount, statusHistoryCount, setProofCount, setPaymentCount, setStatusHistoryCount }) => { - + const intl = useIntl(); const [onReady, setOnReady] = useState(false); const [selectedTab, setSelectedTab] = useState("1"); @@ -41,7 +42,7 @@ const PublicNotice = ({ appId, proofCount, paymentCount, statusHistoryCount, set - + diff --git a/src/pages/PublicNotice/Details_Public/tabTableDetail/TabTable.js b/src/pages/PublicNotice/Details_Public/tabTableDetail/TabTable.js index c8f716e..160f4b3 100644 --- a/src/pages/PublicNotice/Details_Public/tabTableDetail/TabTable.js +++ b/src/pages/PublicNotice/Details_Public/tabTableDetail/TabTable.js @@ -43,7 +43,7 @@ const PublicNotice = ({ appId, proofCount, paymentCount, setProofCount, setPayme - + { - + @@ -176,7 +176,7 @@ const PublicNotice = () => { - + diff --git a/src/pages/User/ChangePasswordPage/index.js b/src/pages/User/ChangePasswordPage/index.js index b5c3ebd..38b465b 100644 --- a/src/pages/User/ChangePasswordPage/index.js +++ b/src/pages/User/ChangePasswordPage/index.js @@ -299,7 +299,7 @@ const Index = () => { endAdornment:( { - + diff --git a/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js b/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js index 1e48d10..883320a 100644 --- a/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js +++ b/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js @@ -508,7 +508,7 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { {showId ? formik.values.identification?.slice(4) : "****"}{showId ? formik.values.checkDigit?'(' +formik.values.checkDigit+ ')': "()" : ""} { {showId ? formik.values.identification?.slice(4) : "****"} { {showId ? formik.values.identification?.slice(4) : "****"}{showId ? formik.values.checkDigit?'(' +formik.values.checkDigit+ ')': "()" : ""} { {showId ?formik.values.identification?.slice(4):"****"} { - + diff --git a/src/pages/User/DetailsPage_Organization/index.js b/src/pages/User/DetailsPage_Organization/index.js index c5e4727..8784966 100644 --- a/src/pages/User/DetailsPage_Organization/index.js +++ b/src/pages/User/DetailsPage_Organization/index.js @@ -281,7 +281,7 @@ const UserMaintainPage_Organization = () => { - + diff --git a/src/pages/authentication/AuthWrapper.js b/src/pages/authentication/AuthWrapper.js index 8ec5b56..7ce747b 100644 --- a/src/pages/authentication/AuthWrapper.js +++ b/src/pages/authentication/AuthWrapper.js @@ -103,7 +103,7 @@ const AuthWrapper = ({ children }) => { > { }} > { - { onCaptchaChange() }}> + { onCaptchaChange() }}> diff --git a/src/pages/authentication/auth-forms/CustomFormWizard.js b/src/pages/authentication/auth-forms/CustomFormWizard.js index f63cd57..7d9eddf 100644 --- a/src/pages/authentication/auth-forms/CustomFormWizard.js +++ b/src/pages/authentication/auth-forms/CustomFormWizard.js @@ -1916,7 +1916,7 @@ const CustomFormWizard = (props) => { - { onCaptchaChange() }}> + { onCaptchaChange() }}> @@ -2044,7 +2044,7 @@ const CustomFormWizard = (props) => { { {iAmSmartData?.idNo?.slice(0, 4)}{showId ? iAmSmartData?.idNo?.slice(4) : "****"}{showId ? '(' + iAmSmartData.checkDigit + ')' : null} { - { onCaptchaChange() }}> + { onCaptchaChange() }}> @@ -1120,7 +1120,7 @@ const CustomFormWizard = (props) => { {/* {formik.values.idNo + "(" + formik.values.checkDigit + ")"} */} { + const intl = useIntl(); let navigate = useNavigate(); const handleToHomePage = () =>{ let path = `/`; @@ -30,8 +32,7 @@ const ErrorPage = () => { borderRadius: 30, '&:hover': { bgcolor: 'secondary.lighter' } }} - aria-label="Back to home" - aria-controls={open ? 'profile-grow' : undefined} + aria-label={intl.formatMessage({ id: 'ariaBackToHome' })} aria-haspopup="true" onClick={handleToHomePage}> Back to home diff --git a/src/translations/en.json b/src/translations/en.json index 51b1f83..ccc452c 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -629,5 +629,17 @@ "paginationPrev": "Go to previous page", "paginationNext": "Go to next page", - "sort": "Sort" + "sort": "Sort", + + "ariaToggleNewPasswordVisibility": "Toggle new password visibility", + "ariaToggleIdVisibility": "Toggle ID visibility", + "ariaRefreshCaptcha": "Refresh CAPTCHA", + "ariaRelatedRecords": "Related Records", + "ariaApplicationGroup": "Application Group", + "ariaProfileTabs": "Profile tabs", + "ariaUploadPdfFile": "Upload PDF file", + "ariaExportHolidayTemplate": "Export holiday template", + "ariaUploadExcelFile": "Upload Excel file (.xlsx)", + "ariaBackToHome": "Back to home", + "ariaMailboxFolders": "Mailbox folders" } \ No newline at end of file diff --git a/src/translations/zh-CN.json b/src/translations/zh-CN.json index 10e677a..b784a95 100644 --- a/src/translations/zh-CN.json +++ b/src/translations/zh-CN.json @@ -625,5 +625,17 @@ "paginationPrev": "上一页", "paginationNext": "下一页", - "sort": "排序" + "sort": "排序", + + "ariaToggleNewPasswordVisibility": "切换新密码可见性", + "ariaToggleIdVisibility": "切换身份证明文件可见性", + "ariaRefreshCaptcha": "刷新验证码", + "ariaRelatedRecords": "相关记录", + "ariaApplicationGroup": "申请组别", + "ariaProfileTabs": "个人资料选项卡", + "ariaUploadPdfFile": "上传 PDF 文件", + "ariaExportHolidayTemplate": "导出假期模板", + "ariaUploadExcelFile": "上传 Excel 文件 (.xlsx)", + "ariaBackToHome": "返回主页", + "ariaMailboxFolders": "邮箱文件夹" } \ No newline at end of file diff --git a/src/translations/zh-HK.json b/src/translations/zh-HK.json index 56fa4ca..925eb5d 100644 --- a/src/translations/zh-HK.json +++ b/src/translations/zh-HK.json @@ -626,5 +626,17 @@ "paginationPrev": "上一頁", "paginationNext": "下一頁", - "sort": "排序" + "sort": "排序", + + "ariaToggleNewPasswordVisibility": "切換新密碼可見性", + "ariaToggleIdVisibility": "切換身份證明文件可見性", + "ariaRefreshCaptcha": "重新載入驗證碼", + "ariaRelatedRecords": "相關記錄", + "ariaApplicationGroup": "申請組別", + "ariaProfileTabs": "個人檔案分頁", + "ariaUploadPdfFile": "上載 PDF 檔案", + "ariaExportHolidayTemplate": "匯出假期範本", + "ariaUploadExcelFile": "上載 Excel 檔案 (.xlsx)", + "ariaBackToHome": "返回主頁", + "ariaMailboxFolders": "郵箱資料夾" } \ No newline at end of file