Bladeren bron

Merge branch 'New_Enhancement' into test_HKID

CR003
Alex Cheung 1 jaar geleden
bovenliggende
commit
51e3209acc
57 gewijzigde bestanden met toevoegingen van 2564 en 2116 verwijderingen
  1. +1371
    -1569
      package-lock.json
  2. +1
    -1
      package.json
  3. BIN
      public/apple-touch-icon.png
  4. BIN
      public/favicon-16x16.png
  5. BIN
      public/favicon-32x32.png
  6. +9
    -38
      public/index.html
  7. +54
    -0
      public/safari-pinned-tab.svg
  8. +0
    -13
      src/auth/utils.js
  9. +1
    -1
      src/components/cards/AuthFooter.js
  10. +10
    -2
      src/layout/MainLayout/Header/index.js
  11. +126
    -0
      src/pages/AboutUs/AboutUs_cn.js
  12. +125
    -0
      src/pages/AboutUs/AboutUs_en.js
  13. +126
    -0
      src/pages/AboutUs/AboutUs_zh.js
  14. +69
    -0
      src/pages/AboutUs/index.js
  15. +8
    -2
      src/pages/DemandNote/Export/DataGrid.js
  16. +40
    -32
      src/pages/Payment/FPS/FPS.js
  17. +1
    -1
      src/pages/Payment/FPS/FPSTest.js
  18. +1
    -1
      src/pages/Payment/MultiPaymentWindow.js
  19. +16
    -1
      src/pages/Proof/Create_FromApp/ProofForm.js
  20. +1
    -1
      src/pages/Proof/Reply_GLD/ApplicationDetails.js
  21. +1
    -1
      src/pages/Proof/Reply_GLD/ProofForm.js
  22. +2
    -2
      src/pages/Proof/Reply_Public/ApplicationDetails.js
  23. +24
    -14
      src/pages/Proof/Reply_Public/ProofForm.js
  24. +2
    -1
      src/pages/Proof/Search_GLD/SearchForm.js
  25. +1
    -1
      src/pages/Proof/Search_Public/DataGrid.js
  26. +6
    -6
      src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js
  27. +2
    -2
      src/pages/User/DetailPage/LoginGrid.js
  28. +2
    -2
      src/pages/User/DetailPage/index.js
  29. +2
    -2
      src/pages/User/DetailsPage_Individual/LoginGrid.js
  30. +8
    -2
      src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js
  31. +5
    -2
      src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js
  32. +1
    -1
      src/pages/User/DetailsPage_Individual/index.js
  33. +2
    -2
      src/pages/User/DetailsPage_Organization/LoginGrid.js
  34. +1
    -1
      src/pages/User/DetailsPage_Organization/index.js
  35. +3
    -0
      src/pages/authentication/AuthWrapper.js
  36. +3
    -5
      src/pages/authentication/BusRegister.js
  37. +5
    -56
      src/pages/authentication/ForgotUsername/AfterForgotUsernamePage.js
  38. +2
    -5
      src/pages/authentication/ForgotUsername/ForgotUsernameApplyForm.js
  39. +1
    -4
      src/pages/authentication/ForgotUsername/index.js
  40. +3
    -5
      src/pages/authentication/Register.js
  41. +39
    -21
      src/pages/authentication/RegisterCustom.js
  42. +38
    -22
      src/pages/authentication/auth-forms/AuthLoginCustom.js
  43. +26
    -9
      src/pages/authentication/auth-forms/BusCustomFormWizard.js
  44. +27
    -9
      src/pages/authentication/auth-forms/CustomFormWizard.js
  45. +3
    -5
      src/pages/authentication/auth-forms/IAmSmartFormWizard.js
  46. +78
    -0
      src/pages/extra-pages/PrivacyPolicy.js
  47. +2
    -2
      src/pages/iAmSmart/AuthCallback/index.js
  48. +2
    -2
      src/pages/iAmSmart/DirectLoginCallback/index.js
  49. +1
    -2
      src/pages/pnspsUserGroupDetailPage/index.js
  50. +11
    -1
      src/routes/LoginRoutes.js
  51. +32
    -28
      src/translations/en.json
  52. +73
    -65
      src/translations/zh-CN.json
  53. +72
    -67
      src/translations/zh-HK.json
  54. +6
    -2
      src/utils/ApiPathConst.js
  55. +3
    -3
      src/utils/ComboData.js
  56. +4
    -4
      src/utils/statusUtils/ProofStatus.js
  57. +112
    -98
      yarn.lock

+ 1371
- 1569
package-lock.json
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 1
- 1
package.json Bestand weergeven

@@ -22,7 +22,7 @@
"@testing-library/user-event": "^14.4.3",
"@types/react-input-mask": "^3.0.2",
"apexcharts": "^3.35.5",
"axios": "^1.4.0",
"axios": "^1.7.1",
"date-fns": "^3.0.6",
"dayjs": "^1.11.9",
"formik": "^2.2.9",


BIN
public/apple-touch-icon.png Bestand weergeven

Voor Na
Breedte: 180  |  Hoogte: 180  |  Grootte: 6.4 KiB

BIN
public/favicon-16x16.png Bestand weergeven

Voor Na
Breedte: 16  |  Hoogte: 16  |  Grootte: 1.1 KiB

BIN
public/favicon-32x32.png Bestand weergeven

Voor Na
Breedte: 32  |  Hoogte: 32  |  Grootte: 1.7 KiB

+ 9
- 38
public/index.html Bestand weergeven

@@ -2,52 +2,23 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.svg" />
<link rel="icon" type="image/png" sizes="32x32" href="%PUBLIC_URL%/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="%PUBLIC_URL%/favicon-16x16.png">
<link rel="mask-icon" href="%PUBLIC_URL%/safari-pinned-tab.svg" color="#5bbad5">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#1f1f1f" />
<meta name="theme-color" content="#ffffff" />
<meta name="msapplication-TileColor" content="#da532c">
<meta name="title" content="PNSPS" />
<meta
name="description"
content="Mantis is a free, super flexible and customizable react redux dashboard template built using MUI React components with open source MIT license."
content="The Government of the Hong Kong Special Administrative Region Gazette Public Notice Submission and Payment System."
/>
<meta
name="keywords"
content="react dashboard, react admin, react redux dashboard, ant design template, saas admin, free react dashboard"
content="PNSPS, GLD, react redux dashboard, Gazette, Public Notice"
/>
<meta name="author" content="CodedThemes" />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!-- Open Graph / Facebook -->
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mantisdashboard.io/" />
<meta property="og:site_name" content="mantisdashboard.io" />
<meta property="article:publisher" content="https://www.facebook.com/codedthemes" />
<meta property="og:title" content="PNSPS" />
<meta
property="og:description"
content="Mantis is a free, super flexible and customizable react redux dashboard template built using MUI React components with open source MIT license."
/>
<meta property="og:image" content="https://mantisdashboard.io/adv-banner-images/og-social.png" />
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:url" content="https://mantisdashboard.io" />
<meta property="twitter:title" content="PNSPS" />
<meta
property="twitter:description"
content="Mantis is a free, super flexible and customizable react redux dashboard template built using MUI React components with open source MIT license."
/>
<meta property="twitter:image" content="https://mantisdashboard.io/adv-banner-images/og-social.png" />
<meta name="twitter:creator" content="@codedthemes" />

<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.

Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<meta name="author" content="Government Logistics Department" />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/apple-touch-icon.png" />
<title>PNSPS</title>
<link rel="preconnect" href="https://fonts.gstatic.com" />
<link


+ 54
- 0
public/safari-pinned-tab.svg Bestand weergeven

@@ -0,0 +1,54 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="680.000000pt" height="680.000000pt" viewBox="0 0 680.000000 680.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,680.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M2270 4555 l0 -1345 912 2 913 3 0 340 0 340 -195 2 c-107 1 -322 2
-476 3 l-282 0 -1 928 c0 510 -1 960 -1 1000 l0 72 -435 0 -435 0 0 -1345z"/>
<path d="M4627 5044 c-1 -1 -45 -5 -97 -8 -85 -5 -126 -9 -210 -20 -56 -8
-159 -28 -215 -43 -33 -8 -68 -17 -78 -19 -47 -9 -204 -72 -307 -124 -170 -85
-180 -91 -181 -120 0 -14 -1 -151 -2 -306 l-2 -280 280 0 280 1 0 112 0 112
49 22 c86 37 195 69 286 84 19 3 46 7 60 10 21 4 175 17 205 17 24 1 212 -13
235 -16 14 -2 43 -7 65 -10 48 -7 203 -48 264 -71 76 -28 203 -95 291 -153 99
-66 288 -250 345 -337 22 -33 43 -62 46 -65 9 -7 98 -173 100 -185 0 -5 9 -26
19 -45 44 -86 102 -303 117 -435 13 -114 5 -428 -12 -454 -2 -4 -6 -26 -9 -49
-9 -79 -78 -288 -132 -401 -113 -237 -256 -417 -449 -561 -64 -47 -103 -70
-255 -144 -14 -7 -45 -18 -70 -25 -25 -8 -52 -15 -60 -18 -8 -2 -16 -4 -17 -4
-2 0 -16 -4 -33 -9 -87 -25 -340 -34 -472 -17 -32 4 -84 10 -115 13 -63 6
-116 13 -148 19 -11 2 -41 6 -67 10 l-47 8 -1 -260 c0 -200 2 -262 12 -270 7
-6 36 -16 63 -22 28 -7 57 -14 65 -17 186 -45 213 -49 420 -48 221 0 307 11
517 64 100 25 340 113 353 129 3 3 31 19 63 35 32 16 97 55 145 87 300 198
551 508 697 859 35 86 102 291 110 336 3 20 7 39 9 43 2 3 7 22 10 41 10 60
16 94 20 115 28 130 28 570 1 700 -3 11 -7 36 -10 55 -19 133 -79 336 -137
470 -79 181 -210 395 -312 508 -185 207 -395 366 -631 478 -103 49 -316 126
-381 138 -16 2 -40 7 -54 11 -24 5 -89 18 -155 30 -46 8 -155 19 -197 19 -21
1 -38 3 -38 6 0 4 -229 8 -233 4z"/>
<path d="M1958 5035 c-2 -1 -30 -5 -63 -8 -114 -11 -231 -31 -320 -54 -33 -8
-67 -17 -75 -18 -8 -2 -15 -4 -15 -5 0 -2 -14 -5 -53 -14 -12 -3 -27 -8 -32
-11 -5 -3 -18 -8 -27 -10 -122 -25 -529 -238 -603 -315 -3 -3 -30 -25 -60 -50
-184 -148 -367 -375 -487 -605 -77 -148 -171 -436 -188 -575 -4 -30 -9 -58
-11 -61 -17 -29 -26 -431 -11 -564 9 -86 20 -157 31 -205 3 -14 8 -36 11 -50
8 -44 42 -167 49 -179 4 -6 9 -21 11 -33 15 -78 144 -348 212 -445 13 -17 23
-36 23 -41 0 -5 9 -17 20 -27 11 -10 20 -22 20 -26 0 -10 0 -10 96 -124 178
-213 410 -391 664 -512 181 -86 425 -159 595 -179 22 -2 54 -7 70 -10 17 -3
109 -7 205 -9 200 -5 254 3 420 56 3 1 19 6 35 12 17 6 30 10 30 8 0 -1 45 21
100 49 185 96 342 213 510 384 104 105 185 194 185 202 0 3 9 15 21 27 31 33
126 159 179 237 8 12 20 29 27 38 8 13 11 -62 10 -317 -1 -210 2 -339 8 -347
8 -10 285 -111 355 -129 17 -5 97 -33 120 -42 23 -9 33 -12 55 -15 20 -3 20 5
20 947 l0 950 -910 0 -910 -1 -3 -277 -2 -277 287 -1 c159 0 372 -1 475 -2
204 -1 198 1 146 -58 -13 -15 -36 -44 -53 -65 -133 -169 -383 -441 -491 -534
-282 -242 -401 -288 -684 -266 -78 6 -97 8 -167 20 -24 4 -44 7 -45 6 -2 -1
-16 3 -31 9 -15 6 -42 13 -60 16 -76 13 -364 140 -397 175 -3 3 -30 23 -60 45
-30 22 -60 44 -66 50 -82 75 -126 120 -159 161 -21 27 -42 51 -45 54 -3 3 -27
38 -53 78 -79 118 -176 337 -201 452 -8 35 -25 120 -31 150 -26 135 -26 428 0
550 3 14 8 36 10 50 24 152 133 412 226 544 16 22 37 52 47 65 45 65 157 182
237 250 167 141 481 282 685 307 19 2 46 7 59 10 14 3 57 7 95 10 39 3 76 6
81 8 6 2 10 102 10 272 l-1 269 -62 1 c-34 1 -63 0 -64 -1z"/>
</g>
</svg>

+ 0
- 13
src/auth/utils.js Bestand weergeven

@@ -14,19 +14,6 @@ export const paymentPath = window.location.href.match("localhost:3000") ? `${hos

export const delBugMode = true;

/**
* Testing:
* Domain: apigw-isit.staging-eid.gov.hk
* URL: hk.gov.iamsmart.testapp://
*
* Production
* Domain: apigw.iamsmart.gov.hk
* URL: hk.gov.iamsmart://
*/
export const iAmSmartPath = `https://apigw-isit.staging-eid.gov.hk`;
export const iAmSmartAppPath = `hk.gov.iamsmart.testapp://`;
export const clientId = "cf61fa7c121e4869966f69c8694b1cd2";

export const iAmSmartCallbackPath = () => {
let hostname = window.location.hostname;
if (hostname.match("pnspsuat")) {


+ 1
- 1
src/components/cards/AuthFooter.js Bestand weergeven

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


+ 10
- 2
src/layout/MainLayout/Header/index.js Bestand weergeven

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

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

await navigate('/login');
};

const loginContent = (
@@ -496,6 +497,13 @@ function Header(props) {

const logoutContent = (
<div>
<li>
<Link className="login" to={'/aboutUs'}>
<Typography style={{ opacity: 0.9 }} variant={"pnspsHeaderTitle"} sx={{ ml: 2 }}>
<FormattedMessage id="aboutUs" />
</Typography>
</Link>
</li>
<li>
<Link className="login" to='/login'>
<Typography style={{ opacity: 0.9 }} variant={"pnspsHeaderTitle"} sx={{ ml: 2 }}>


+ 126
- 0
src/pages/AboutUs/AboutUs_cn.js Bestand weergeven

@@ -0,0 +1,126 @@

const AboutUs = () => {

const content =`
<div style="text-align: justify; text-justify: inter-word; font-style: normal;">
<h1>公共启事提交及缴费系统(系统)</h1>
<h2>透过系统于宪报刊登公共启事须知</h2>


<p>香港特别行政区政府宪报一般在星期五出版。 在宪报上刊登公共启事,透过系统提交的申请,必须在该星期的星期二上午八时前提交。 如星期一至星期五的其中一天为公众假期,则申请须于该星期的星期一上午八时前透过系统提出申请。 如遇两天或以上的公众假期,截稿时间将于假期前三星期在宪报第6号副刊及<a target="_brank" href="https://www.gld.gov.hk/egazette/tc_chi/index.html">宪报网页</a>内公佈。 </p>

<p>印务科会依照宪报的印刷格式排版,并会以电邮通知申请人登入系统检视校对稿。 如在预计刊登公共启事日期前四天的中午仍未收到通知,申请人可致电 2564 9570 查询。 </p>

<p>申请人应仔细校对印刷稿,然后透过系统确定校对稿可以付印及签署作实;并根据系统指示,在指定限期前将所需费用交回政府物流服务署。 稿件祇供校对一次。 </p>

<p>如申请人未能在指定限期前透过系统确定校对稿可以付印,将视作撤销刊登公共启事处理,惟申请人仍须缴交全部有关费用。 </p>

<p>如欲取消刊登公共启事申请,申请人必须透过系统,并于指定截稿时间当日下午二时前取消申请,逾时通知概不受理。 如于校对稿送出后始要求取消刊登公共启事,不论原因为何,申请人仍须缴付全部费用。 </p>

<p>出版人刊登各界交来的公共启事,并不表示该等公共启事的内容已获政府或政府的代表认可。 </p>

<p>政府物流服务署署长有权拒收不适宜刊登的公共启事稿件。 </p>

<p>如申请人就同一公共启事以任何方式将超过一份稿件送交印务科排版,则每份稿件将视作独立申请处理。 不论公共启事最终是否刊登,申请人须缴付全部费用。 </p>

<h2>公共启事</h2>

<p>递交的稿件必须正确,并且是最后的版本。 </p>

<p>在宪报刊登公告一般是为了符合香港法律或法庭命令的规定如下:</p>

<p>
<style>
table.aboutus {
font - family: arial, sans-serif;
border-collapse: collapse;
width: 100%;

td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
}
</style>
<table class="aboutus">
<tr>
<th>群组</th>
<th>分类</th>
</tr>

<tr>
<td>私人条例草案<br />《公司条例》(第32章)(股额、股份)</td>
<td>第一次通知<br />第二次通知<br />第三次通知<br />取消及补发</td>
</tr>

<tr>
<td>《公司条例》</td>
<td>特别决议<br />给予债权人的通知书<br />最终会议<br />关于委任债权人的通知书<br />周年最终会议</td>
</tr>

<tr>
<td>高等法院</td>
<td>公司清盘<br />破产<br />遗嘱认证方面的审判权<br />杂项法律程序等</td>
</tr>

<tr>
<td>通知</td>
<td>业务转让<br />拆伙<br />拟出售物业会议通知<br />辞职通知<br />《保险公司条例》</td>
</tr>

<tr>
<td>杂项事宜</td>
<td>最新出版刊物<br />商标註册条例</td>
</tr>

<table>
</p>

<p>根据《商标条例》(第 559 章) 第 42 条所接纳的商标註册申请无须刊登于宪报。 但根据被废除的《商标规则》(第 43A 章) 第 22(5) 条,商标註册申请的公共启事须于宪报刊登;申请表格需夹附知识产权署所发出的表格IP185正本,而商标图示(需为照片或印在白纸上的线条绘图) 亦应一併递交。 申请人可于公共启事刊登后一个月内取回照片或线条绘图,否则将予毁弃而不再另行通知。 </p>

<h2>公共启事费用</h2>

<p>
<table class="aboutus">

<tr>
<th>公共启事按长度收费</th>
<th>每一厘米为</th>
</tr>

<tr>
<td>一格位 (6 厘米阔)</td>
<td>182 元</td>
</tr>

<tr>
<td>两格位 (12.5 厘米阔)</td>
<td>364 元</td>
</tr>

</table>

公共启事的长度包括标准的上下边位。 长度不足一厘米者,亦作一厘米计算。
</p>

<p>收费表刊载于宪报第6号副刊的封面内页及政府物流服务署<a target="_blank" href="https://www.gld.gov.hk/zh-cn/home/">网页</a>内。 费用并不包括知识产权署或公司註册处等其他政府部门的收费。 </p>


<h2>联络我们</h2>

<p>政府物流服务署印务科<br />
地址:香港柴湾创富道11号政府物料营运中心10楼<br />
电话:2564 9570、2564 9565<br />
电邮:<a href="mailto:[email protected]">[email protected]<a />
</p>

</div>
`
;

return (<div style={{ padding: 12 }} dangerouslySetInnerHTML={{ __html: content }} />);

}

export default AboutUs;

+ 125
- 0
src/pages/AboutUs/AboutUs_en.js Bestand weergeven

@@ -0,0 +1,125 @@

const AboutUs = () => {

const content =`
<div style="text-align: justify; text-justify: inter-word; font-style: normal;">
<h1>Public Notice Submission and Payment System (PNSPS)</h1>
<h2>Notes on Publishing Public Notices in the Gazette through PNSPS</h2>


<p>The Government of the Hong Kong Special Administrative Region Gazette is normally published on Friday. For publication of a public notice in the Gazette, the application submitted through PNSPS must be made not later than 8:00 a.m. on Tuesday in the same week. If any one day from Monday to Friday of the week is a general holiday, the application must be made not later than 8:00 a.m. on Monday in the same week. If there are two or more general holidays in the week, the closing date will be announced in Gazette Supplement No. 6 and on the <a target="_brank" href="https://www.gld.gov.hk/egazette/english/index.html">Gazette website</a> three weeks prior to the holidays.</p>

<p>The Printing Division will typeset the public notice in accordance with the house style of the Gazette, and notify the applicant by email to check the proof from PNSPS. Should there be no receipt of any notification by noon four days before the expected publication date, applicant is advised to contact the Printing Division at 2564 9570.</p>

<p>Applicant should check the proof carefully and sign the proof for approval through PNSPS; and by following the instructions in the PNSPS, pay the necessary fee to the Government Logistics Department before the specified deadline. Only one proof will be provided for proofreading.</p>

<p>Any confirm proof not returned by PNSPS before the deadline as specified will be treated as withdrawal of application, but applicant will still be required to pay the full fee. </p>

<p>Notification for cancellation of application for publication of public notice must be submitted through PNSPS not later than 2:00 p.m. on the closing date of application. Any late notification will not be entertained. If notification for cancellation is submitted after the proof has been issued, applicant must pay the full fee irrespective of the reason for cancellation.</p>

<p>The fact that any notice from a member of the public is published does not imply approbation by or on behalf of the Government of the contents of such notice. </p>

<p>The Director of Government Logistics reserves the right to reject public notices which are considered not suitable for publication.</p>

<p>If more than one copies of the same public notice are submitted by any means to the Printing Division for typesetting, each one will be treated as a separate application and applicant will be required to pay the full fees irrespective whether the public notice will eventually be published or not.</p>

<h2>Public Notices</h2>

<p>The public notice submitted for publication in the Gazette must be accurate and is in its final form. </p>

<p>The publication of a public notice in the Gazette is normally for the compliance of the provisions of Hong Kong Laws or Court Orders as below:</p>

<p>
<style>
table.aboutus {
font - family: arial, sans-serif;
border-collapse: collapse;
width: 100%;

td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
}
</style>
<table class="aboutus">
<tr>
<th>Group</th>
<th>Classification</th>
</tr>

<tr>
<td>Private Bill<br />Companies Ordinance (Stock Shares)</td>
<td>1st Notice<br />2nd Notice<br />3rd Notice<br />Cancellation and Replacement</td>
</tr>

<tr>
<td>Companies Ordinance</td>
<td>Special Resolutions<br />Notice to Creditors<br />Final Meetings<br />Notice of appointment of Liquidator<br />Annual Final Meeting</td>
</tr>

<tr>
<td>High Court</td>
<td>Companies Winding-up<br />Bankruptcy<br />Probate Jurisdiction<br />Miscellaneous Proceeding etc</td>
</tr>

<tr>
<td>Notices</td>
<td>Transfer of Business<br />Dissolution of Partnership<br />Intention of Selling Properties<br />Notice of Resignation<br />Insurance Companies Ordinance<br /></td>
</tr>

<tr>
<td>Miscellaneous</td>
<td>Latest Publications<br />Trade Marks Ordinance</td>
</tr>

<table>
</p>

<p>Trade mark applications which are accepted under section 42 of the Trade Marks Ordinance (Cap. 559) are not required to be advertised in the Gazette. However, notices of trade mark applications are required to be advertised in the Gazette pursuant to rule 22(5) of the repealed Trade Marks Rules (Cap. 43A); and the application form should attach form IP185 issued by the Intellectual Property Department and the trade mark representations (either photographs or line drawings on plain paper) should be submitted with the application. Photographs or line drawings submitted along with the application should be collected by applicant within one month from the date of publication, otherwise they will be disposed of without further notice.</p>

<h2>Public Notice Charges</h2>

<p>
<table class="aboutus">

<tr>
<th>Rates for each insertion</th>
<th>Per cm of length of notice</th>
</tr>

<tr>
<td>Single column Width 6 cm</td>
<td>$182</td>
</tr>

<tr>
<td>Double column Width 12.5 cm</td>
<td>$364</td>
</tr>

</table>

Measurement of the length of the notice will include standard head and foot margins. Fractions of 1 cm will be charged as 1 cm.
</p>

<p>Fees for publication of public notices are listed on the inside front cover of Gazette Supplement No. 6 and on the Government Logistics Department <a target="_blank" href="https://www.gld.gov.hk/en/home/">website</a>. Payment does not include any fee charged by other Government departments including the Intellectual Property Department and the Companies Registry.</p>


<h2>Contact Us</h2>

<p>Printing Division, Government Logistics Department<br />
Address: 10th Floor, Government Logistics Centre, 11 Chong Fu Road, Chai Wan, Hong Kong.<br />
Telephone: 2564 9570, 2564 9565<br />
Email: <a href="mailto:[email protected]">[email protected]<a />
</p>

</div>`
;

return (<div style={{ padding: 12 }} dangerouslySetInnerHTML={{ __html: content }} />);

}

export default AboutUs;

+ 126
- 0
src/pages/AboutUs/AboutUs_zh.js Bestand weergeven

@@ -0,0 +1,126 @@

const AboutUs = () => {

const content =`
<div style="text-align: justify; text-justify: inter-word; font-style: normal;">
<h1>公共啟事提交及繳費系統(系統)</h1>
<h2>透過系統於憲報刊登公共啟事須知</h2>


<p>香港特別行政區政府憲報一般在星期五出版。在憲報上刊登公共啟事,透過系統提交的申請,必須在該星期的星期二上午八時前提交。如星期一至星期五的其中一天為公眾假期,則申請須於該星期的星期一上午八時前透過系統提出申請。如遇兩天或以上的公眾假期,截稿時間將於假期前三星期在憲報第6號副刊及<a target="_brank" href="https://www.gld.gov.hk/egazette/tc_chi/index.html">憲報網頁</a>內公佈。</p>

<p>印務科會依照憲報的印刷格式排版,並會以電郵通知申請人登入系統檢視校對稿。如在預計刊登公共啟事日期前四天的中午仍未收到通知,申請人可致電 2564 9570 查詢。</p>

<p>申請人應仔細校對印刷稿,然後透過系統確定校對稿可以付印及簽署作實;並根據系統指示,在指定限期前將所需費用交回政府物流服務署。稿件祇供校對一次。</p>

<p>如申請人未能在指定限期前透過系統確定校對稿可以付印,將視作撤銷刊登公共啟事處理,惟申請人仍須繳交全部有關費用。</p>

<p>如欲取消刊登公共啟事申請,申請人必須透過系統,並於指定截稿時間當日下午二時前取消申請,逾時通知概不受理。如於校對稿送出後始要求取消刊登公共啟事,不論原因為何,申請人仍須繳付全部費用。</p>

<p>出版人刊登各界交來的公共啟事,並不表示該等公共啟事的內容已獲政府或政府的代表認可。</p>

<p>政府物流服務署署長有權拒收不適宜刊登的公共啟事稿件。</p>

<p>如申請人就同一公共啟事以任何方式將超過一份稿件送交印務科排版,則每份稿件將視作獨立申請處理。不論公共啟事最終是否刊登,申請人須繳付全部費用。</p>

<h2>公共啟事</h2>

<p>遞交的稿件必須正確,並且是最後的版本。</p>

<p>在憲報刊登公告一般是為了符合香港法律或法庭命令的規定如下:</p>

<p>
<style>
table.aboutus {
font - family: arial, sans-serif;
border-collapse: collapse;
width: 100%;

td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
}
</style>
<table class="aboutus">
<tr>
<th>群組</th>
<th>分類</th>
</tr>

<tr>
<td>私人條例草案<br />《公司條例》(第32章)(股額、股份)</td>
<td>第一次通知<br />第二次通知<br />第三次通知<br />取消及補發</td>
</tr>

<tr>
<td>《公司條例》</td>
<td>特別決議<br />給予債權人的通知書<br />最終會議<br />關於委任債權人的通知書<br />周年最終會議</td>
</tr>

<tr>
<td>高等法院</td>
<td>公司清盤<br />破產<br />遺囑認證方面的審判權<br />雜項法律程序等</td>
</tr>

<tr>
<td>通知</td>
<td>業務轉讓<br />拆夥<br />擬出售物業會議通知<br />辭職通知<br />《保險公司條例》</td>
</tr>

<tr>
<td>雜項事宜</td>
<td>最新出版刊物<br />商標註冊條例</td>
</tr>

<table>
</p>

<p>根據《商標條例》(第 559 章) 第 42 條所接納的商標註冊申請無須刊登於憲報。但根據被廢除的《商標規則》(第 43A 章) 第 22(5) 條,商標註冊申請的公共啟事須於憲報刊登;申請表格需夾附知識產權署所發出的表格IP185正本,而商標圖示(需為照片或印在白紙上的線條繪圖) 亦應一併遞交。申請人可於公共啟事刊登後一個月內取回照片或線條繪圖,否則將予毀棄而不再另行通知。</p>

<h2>公共啟事費用</h2>

<p>
<table class="aboutus">

<tr>
<th>公共啟事按長度收費</th>
<th>每一厘米為</th>
</tr>

<tr>
<td>一格位 (6 厘米闊)</td>
<td>182 元</td>
</tr>

<tr>
<td>兩格位 (12.5 厘米闊)</td>
<td>364 元</td>
</tr>

</table>

公共啟事的長度包括標準的上下邊位。長度不足一厘米者,亦作一厘米計算。
</p>

<p>收費表刊載於憲報第6號副刊的封面內頁及政府物流服務署<a target="_blank" href="https://www.gld.gov.hk/zh-hk/home/">網頁</a>內。費用並不包括知識產權署或公司註冊處等其他政府部門的收費。</p>


<h2>聯絡我們</h2>

<p>政府物流服務署印務科<br />
地址:香港柴灣創富道11號政府物料營運中心10樓<br />
電話:2564 9570、2564 9565<br />
電郵:<a href="mailto:[email protected]">[email protected]<a />
</p>

</div>
`
;

return (<div style={{ padding: 12 }} dangerouslySetInnerHTML={{ __html: content }} />);

}

export default AboutUs;

+ 69
- 0
src/pages/AboutUs/index.js Bestand weergeven

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

import Loadable from 'components/Loadable';
import { useIntl, FormattedMessage } from "react-intl";

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

const LoadingComponent = Loadable(lazy(() => import('pages/extra-pages/LoadingComponent')));
const AboutUs_en = Loadable(lazy(() => import('pages/AboutUs/AboutUs_en')));
const AboutUs_zh = Loadable(lazy(() => import('pages/AboutUs/AboutUs_zh')));
const AboutUs_cn = Loadable(lazy(() => import('pages/AboutUs/AboutUs_cn')));

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

useEffect(() => {
setOnReady(true);
if (locale === 'zh-CN') {
setContent(<><AboutUs_cn /></>);
} else if (locale === 'zh-HK') {
setContent(<><AboutUs_zh /></>);
} else {
setContent(<><AboutUs_en /></>);
}
}, [locale]);


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

}

export default PrivacyPolicy;

+ 8
- 2
src/pages/DemandNote/Export/DataGrid.js Bestand weergeven

@@ -95,7 +95,7 @@ export default function SearchPublicNoticeTable({ searchCriteria,}) {
let company = params.row.enCompanyName != null ? params.row.enCompanyName : params.row.chCompanyName;
company = company != null ? company : "";
if (params.row.sysType != null && params.row.sysType == "dummy"){
company = params.row.contactPerson
company = params.row.careOf
}
return <div>
{company}
@@ -109,7 +109,13 @@ export default function SearchPublicNoticeTable({ searchCriteria,}) {
flex: 2,
minWidth: 200,
renderCell: (params) => {
return <>{(params?.value)}</>;
let careOf = params.row.careOf
if (params.row.sysType != null && params.row.sysType == "dummy"){
careOf = ''
}
return <div>
{careOf}
</div>;
}
},
{


+ 40
- 32
src/pages/Payment/FPS/FPS.js Bestand weergeven

@@ -49,6 +49,7 @@ const Index = () => {
const [fpsqrcodeurlPrd, setFpsqrcodeurlPrd] = React.useState("");
const [fpsqrcodeurlFps, setFpsqrcodeurlFps] = React.useState("");
const [browserType, setBrowserType] = React.useState("");
const [sysEnv, setSysEnv] = React.useState("");
const mobileBrowser = "Mobile";
const desktopBrowser = "Desktop";
@@ -159,6 +160,7 @@ const Index = () => {
*/
setResponeDataData(responseData)
const timeoutdatetime = responseData.fpsmerchanttimeoutdatetime
setSysEnv(responseData.sysEnv)
const searchString = "[UTC]";
let convertedDateString = "";
if ( timeoutdatetime.toString().includes(searchString) ){
@@ -175,9 +177,9 @@ const Index = () => {
console.log(fpsqrcodeurl)
console.log(fpsqrcodeurlwithFps)
const openPASGUrl = pasgPath + '?pay_req_obj=' + encodeURIComponent(fpsqrcodeurl) + '&callback='
const openPASGUrl = pasgPath + '?pay_req_obj=' + encodeURIComponent(fpsqrcodeurlwithFps) + '&callback='
+ encodeURIComponent("https://"+window.location.hostname+ '/paymentPage/fps/fpscallback?TRANSACTION_ID='+transactionid+"&WEB_TOKEN="+webtoken+"&PAYMENT_ID="+localStorage.getItem("paymentId"));
const openPASGUrlPrd = pasgPathPrd + '?pay_req_obj=' + encodeURIComponent(fpsqrcodeurl) + '&callback='
const openPASGUrlPrd = pasgPathPrd + '?pay_req_obj=' + encodeURIComponent(fpsqrcodeurlwithFps) + '&callback='
+ encodeURIComponent("https://"+window.location.hostname+ '/paymentPage/fps/fpscallback?TRANSACTION_ID='+transactionid+"&WEB_TOKEN="+webtoken+"&PAYMENT_ID="+localStorage.getItem("paymentId"));
const openPASGUrlPrdFps = pasgPath + '?pay_req_obj=' + encodeURIComponent(fpsqrcodeurlwithFps) + '&callback='
+ encodeURIComponent("https://"+window.location.hostname+ '/paymentPage/fps/fpscallback?TRANSACTION_ID='+transactionid+"&WEB_TOKEN="+webtoken+"&PAYMENT_ID="+localStorage.getItem("paymentId"));
@@ -338,36 +340,42 @@ const Index = () => {
</Typography>
{browserType==mobileBrowser?
<Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}>
<Button
component="span"
variant="contained"
size="large"
color="primary"
onClick={()=>{
mobliePayment();
}}
sx={{ m: 4 }}
>請選擇支付程式付款-Testing</Button>
<Button
component="span"
variant="contained"
size="large"
color="primary"
onClick={()=>{
mobliePaymentPrd();
}}
sx={{ m: 4 }}
>請選擇支付程式付款-PRD</Button>
<Button
component="span"
variant="contained"
size="large"
color="primary"
onClick={()=>{
mobliePaymentFps();
}}
sx={{ m: 4 }}
>請選擇支付程式付款-fps prefix</Button>
{
sysEnv=="prod"?
<Button
component="span"
variant="contained"
size="large"
color="primary"
onClick={()=>{
mobliePaymentPrd();
}}
sx={{ m: 4 }}
>請選擇支付程式付款</Button>
:
<>
<Button
component="span"
variant="contained"
size="large"
color="primary"
onClick={()=>{
mobliePayment();
}}
sx={{ m: 4 }}
>請選擇支付程式付款-Testing</Button>
<Button
component="span"
variant="contained"
size="large"
color="primary"
onClick={()=>{
mobliePaymentFps();
}}
sx={{ m: 4 }}
>請選擇支付程式付款-fps prefix</Button>
</>
}
</Typography>
:
<Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}>


+ 1
- 1
src/pages/Payment/FPS/FPSTest.js Bestand weergeven

@@ -312,7 +312,7 @@ const Index = () => {
<br/>
二維碼有效期限3分鐘
<br />
請在規定時間內完成付款流程
請在規定時間內完成付款流程
<br />
{"剩餘時間:"+timeDownCount}
</Typography>


+ 1
- 1
src/pages/Payment/MultiPaymentWindow.js Bestand weergeven

@@ -304,7 +304,7 @@ const MultiPaymentWindow = (props) => {
</Typography>

{/* <Typography variant="h5" sx={{ textAlign: "left" }}>
付金額: HK$ {FormatUtils.currencyFormat(props.totalAmount)}
金額: HK$ {FormatUtils.currencyFormat(props.totalAmount)}
</Typography> */}
{!props.onReady ?
<LoadingComponent />


+ 16
- 1
src/pages/Proof/Create_FromApp/ProofForm.js Bestand weergeven

@@ -131,6 +131,21 @@ const FormPanel = ({ formData }) => {
setSaving(false);
return;
}

if (!values.length|| values.length <= 0) {
setWarningText("Column should > 0");
setIsWarningPopUp(true);
setSaving(false);
return;
}
if(formik.values.groupType == "Private Bill" ){
if (!values.noOfPages || values.noOfPages <= 0) {
setWarningText("Page should > 0");
setIsWarningPopUp(true);
setSaving(false);
return;
}
}
// console.log(values);
HttpUtils.postWithFiles({
url: UrlUtils.CREATE_PROOF,
@@ -208,7 +223,7 @@ const FormPanel = ({ formData }) => {
<Grid item xs={12} md={12}>
<Stack direction="row" sx={{ display: 'flex', alignItems: 'center' }}>
<FormLabel sx={{ paddingRight: 2, textAlign: "center" }}>
<Typography variant="h5">Deadline for online proof with revision:</Typography>
<Typography variant="h5">Deadline for online manuscript revision:</Typography>
</FormLabel>
<TextField
fullWidth


+ 1
- 1
src/pages/Proof/Reply_GLD/ApplicationDetails.js Bestand weergeven

@@ -270,7 +270,7 @@ const ApplicationDetailCard = ({
</Grid>
<Grid item xs={12} md={12} lg={12}
sx={{ display: 'flex', alignItems: 'center' }}>
<Typography variant="h5">Deadline for confirm proof and payment</Typography>
<Typography variant="h5">Deadline for confirm proof and payment</Typography>
</Grid>
<Grid item xs={12} md={12} lg={12} sx={{ mb: 4, display: 'flex', alignItems: 'center' }}>
<Typography variant="h5">Before {DateUtils.datetimeStr(data.proofPaymentDeadline)}</Typography>


+ 1
- 1
src/pages/Proof/Reply_GLD/ProofForm.js Bestand weergeven

@@ -76,7 +76,7 @@ const FormPanel = ({ formData, isOverTime }) => {
isOverTime ?
<Grid container direction="column" sx={{ paddingLeft: 4, paddingRight: 4 }} spacing={1}>
<Grid item xs={12} md={12} textAlign="left">
<Typography variant="h5">The response timed out, please apply again.</Typography>
<Typography variant="h5">Proofing timed out. Please apply again.</Typography>
</Grid>
</Grid>
:


+ 2
- 2
src/pages/Proof/Reply_Public/ApplicationDetails.js Bestand weergeven

@@ -242,7 +242,7 @@ const ApplicationDetailCard = ({ formData, }) => {
{locale === 'en' ?
`${intl.formatMessage({ id: 'before' })} ${DateUtils.dateFormat(data?.reviseDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} `
:
`${DateUtils.dateFormat(data?.reviseDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} ${intl.formatMessage({ id: 'before' })}`
`${DateUtils.dateFormat(data?.reviseDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "上午")?.replace("pm", "下午")}${intl.formatMessage({ id: 'before' })}`
}
</Typography>
</Grid>
@@ -258,7 +258,7 @@ const ApplicationDetailCard = ({ formData, }) => {
{locale === 'en' ?
`${intl.formatMessage({ id: 'before' })} ${DateUtils.dateFormat(data?.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} `
:
`${DateUtils.dateFormat(data?.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} ${intl.formatMessage({ id: 'before' })}`
`${DateUtils.dateFormat(data?.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "上午")?.replace("pm", "下午")}${intl.formatMessage({ id: 'before' })}`
}
</Typography>
</Grid>


+ 24
- 14
src/pages/Proof/Reply_Public/ProofForm.js Bestand weergeven

@@ -336,11 +336,11 @@ const FormPanel = ({ formData }) => {
/>
</td>
<td style={tabelStyle}>
<FormattedMessage id="payDn" />
<FormattedMessage id="paymentMeans" />: <FormattedMessage id="payDn" />
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => {
setWarningTitle(intl.formatMessage({ id: "payDn" }))
setWarningTitle(intl.formatMessage({ id: "paymentMeans" }) + ": " + intl.formatMessage({ id: "payDn" }))
setWarningText(
<><FormattedMessage id="paymentMethodMeans" />
<><FormattedMessage id="paymentMethodMeans" />:
<ul>
<li><FormattedMessage id="atm" /></li>
<li><FormattedMessage id="pps" /></li>
@@ -379,9 +379,9 @@ const FormPanel = ({ formData }) => {
<td style={tabelStyle}>
<FormattedMessage id="payNPGO" />
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => {
setWarningTitle(intl.formatMessage({ id: "payNPGOPopUpTitle" }))
setWarningTitle(intl.formatMessage({ id: "paymentMeans" }) + ": " + intl.formatMessage({ id: "payNPGOPopUpTitle" }))
setWarningText(
<><FormattedMessage id="paymentMethodMeans" />
<><FormattedMessage id="paymentMethodMeans" />:
<ul>
<li><FormattedMessage id="cheque" /></li>
<li><FormattedMessage id="drafts" /></li>
@@ -425,9 +425,9 @@ const FormPanel = ({ formData }) => {
<td style={tabelStyle}>
<FormattedMessage id="payOnline" />
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => {
setWarningTitle(intl.formatMessage({ id: "payOnline" }))
setWarningTitle(intl.formatMessage({ id: "paymentMeans" }) + ": " + intl.formatMessage({ id: "payOnline" }))
setWarningText(
<><FormattedMessage id="paymentMethodMeans" />
<><FormattedMessage id="paymentMethodMeans" />:
<ul>
<li><FormattedMessage id="fps" /></li>
<li><FormattedMessage id="card" /></li>
@@ -438,10 +438,20 @@ const FormPanel = ({ formData }) => {
setIsWarningPopUp(true);
}}><FormattedMessage id="viewDetail" /></a>
</td>
<td style={tabelStyle}>{DateUtils.dateFormat(formData.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}</td>
<td style={tabelStyle}>{
locale === 'en' ?
`${DateUtils.dateFormat(formData.proofPaymentDeadline, intl.formatMessage({ id: "datetimeFormate" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}`
:
`${DateUtils.dateFormat(formData.proofPaymentDeadline, intl.formatMessage({ id: "datetimeFormate" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}`
}</td>
<td style={tabelStyle}>
<FormattedMessage id="payOnlineRemark" values={{
date: DateUtils.dateFormat(formData.expiryDate, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")
date: (
locale === 'en' ?
`${DateUtils.dateFormat(formData.expiryDate, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}`
:
`${DateUtils.dateFormat(formData.expiryDate, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "上午")?.replace("pm", "下午")}`
)
}} />
{/* {DateUtils.dateFormat(formData.expiryDate, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} */}
</td>
@@ -461,9 +471,9 @@ const FormPanel = ({ formData }) => {
<td style={tabelStyle}>
<FormattedMessage id="payDn" />
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => {
setWarningTitle(intl.formatMessage({ id: "payDn" }))
setWarningTitle(intl.formatMessage({ id: "paymentMeans" }) + ": " + intl.formatMessage({ id: "payDn" }))
setWarningText(
<><FormattedMessage id="paymentMethodMeans" />
<><FormattedMessage id="paymentMethodMeans" />:
<ul>
<li><FormattedMessage id="atm" /></li>
<li><FormattedMessage id="pps" /></li>
@@ -477,7 +487,7 @@ const FormPanel = ({ formData }) => {
</ul>
<Typography variant="h6">
<div style={{ padding: 12 }} dangerouslySetInnerHTML={{ __html: intl.formatMessage({ id: "proofNote" }) }} />
</Typography>
</Typography>
</>
);
setIsWarningPopUp(true);
@@ -508,9 +518,9 @@ const FormPanel = ({ formData }) => {
<td style={tabelStyle}>
<FormattedMessage id="payNPGO" />
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => {
setWarningTitle(intl.formatMessage({ id: "payNPGOPopUpTitle" }))
setWarningTitle(intl.formatMessage({ id: "paymentMeans" }) + ": " + intl.formatMessage({ id: "payNPGOPopUpTitle" }))
setWarningText(
<><FormattedMessage id="paymentMethodMeans" />
<><FormattedMessage id="paymentMethodMeans" /> :
<ul>
<li><FormattedMessage id="cheque" /></li>
<li><FormattedMessage id="drafts" /></li>


+ 2
- 1
src/pages/Proof/Search_GLD/SearchForm.js Bestand weergeven

@@ -324,7 +324,8 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss
filterOptions={(options) => options}
options={ComboData.proofStatus_GLD}
value={status}
inputValue={status?.label ? status?.label : ""}
getOptionLabel={(option) => option.type? intl.formatMessage({ id: option.i18nLabel }) : ""}
inputValue={status? intl.formatMessage({id: status.i18nLabel}):""}
onChange={(event, newValue) => {
if (newValue !== null) {
setStatus(newValue);


+ 1
- 1
src/pages/Proof/Search_Public/DataGrid.js Bestand weergeven

@@ -119,7 +119,7 @@ export default function SearchPublicNoticeTable({ searchCriteria }) {
},
{
id: 'created',
field: 'created',
field: 'reviseDeadline',
headerName: intl.formatMessage({id: 'proofDate'}),
width: isMdOrLg ? 'auto' : 200,
flex: isMdOrLg ? 1.5 : undefined,


+ 6
- 6
src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js Bestand weergeven

@@ -340,9 +340,9 @@ const PublicNoticeApplyForm = ({ loadedData, _selections, gazetteIssueList }) =>
<td style={tabelStyle}>
<FormattedMessage id="payOnline" />
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => {
setWarningTitle(intl.formatMessage({ id: "payOnline" }))
setWarningTitle(intl.formatMessage({ id: "paymentMeans" }) + ": " + intl.formatMessage({ id: "payOnline" }))
setWarningText(
<><FormattedMessage id="paymentMethodMeans" />
<><FormattedMessage id="paymentMethodMeans" />:
<ul>
<li><FormattedMessage id="fps" /></li>
<li><FormattedMessage id="card" /></li>
@@ -363,9 +363,9 @@ const PublicNoticeApplyForm = ({ loadedData, _selections, gazetteIssueList }) =>
<tr>
<td style={tabelStyle}><FormattedMessage id="payDn" />
<br /><a href="#payDnDetails" onClick={() => {
setWarningTitle(intl.formatMessage({ id: "payDn" }))
setWarningTitle(intl.formatMessage({ id: "paymentMeans" }) + ": " + intl.formatMessage({ id: "payDn" }))
setWarningText(
<><FormattedMessage id="paymentMethodMeans" />
<><FormattedMessage id="paymentMethodMeans" />:
<ul>
<li><FormattedMessage id="atm" /></li>
<li><FormattedMessage id="pps" /></li>
@@ -395,9 +395,9 @@ const PublicNoticeApplyForm = ({ loadedData, _selections, gazetteIssueList }) =>
<tr>
<td style={tabelStyle}><FormattedMessage id="payNPGO" />
<br /><a href="#payNPGODetails" onClick={() => {
setWarningTitle(intl.formatMessage({ id: "payNPGOPopUpTitle" }))
setWarningTitle(intl.formatMessage({ id: "paymentMeans" }) + ": " + intl.formatMessage({ id: "payNPGOPopUpTitle" }))
setWarningText(
<><FormattedMessage id="paymentMethodMeans" />
<><FormattedMessage id="paymentMethodMeans" />:
<ul>
<li><FormattedMessage id="cheque" /></li>
<li><FormattedMessage id="drafts" /></li>


+ 2
- 2
src/pages/User/DetailPage/LoginGrid.js Bestand weergeven

@@ -12,7 +12,7 @@ import {useTheme} from "@emotion/react";

// ==============================|| EVENT TABLE ||============================== //

export default function LoginGrid({userId}) {
export default function LoginGrid({u1}) {
// const navigate = useNavigate()
const theme = useTheme();
const isMdOrLg = useMediaQuery(theme.breakpoints.up('md'));
@@ -64,7 +64,7 @@ export default function LoginGrid({userId}) {
getRowHeight={() => 'auto'}
doLoad={{
url:GET_LOGIN_LOG_LIST,
params:{userId:userId}
params:{u1:u1}
}}
/>
</div>


+ 2
- 2
src/pages/User/DetailPage/index.js Bestand weergeven

@@ -230,7 +230,7 @@ const UserMaintainPage = () => {
HttpUtils.get({
url: `${GET_LOGIN_LOG_LIST}`,
params: {
userId: params.id
u1: params.id
},
onSuccess: function (response) {
// console.log(response)
@@ -408,7 +408,7 @@ const UserMaintainPage = () => {
</Box>
<TabPanel value="1">
<LoginGrid
userId = {params.id}
u1 = {params.id}
/>
</TabPanel>
</TabContext>


+ 2
- 2
src/pages/User/DetailsPage_Individual/LoginGrid.js Bestand weergeven

@@ -10,7 +10,7 @@ import {useTheme} from "@emotion/react";

// ==============================|| EVENT TABLE ||============================== //

export default function LoginGrid({userId}) {
export default function LoginGrid({u1}) {
// const navigate = useNavigate()
const theme = useTheme();
const isMdOrLg = useMediaQuery(theme.breakpoints.up('md'));
@@ -61,7 +61,7 @@ export default function LoginGrid({userId}) {
getRowHeight={() => 'auto'}
doLoad={{
url:GET_LOGIN_LOG_LIST,
params:{userId:userId}
params:{u1:u1}
}}
/>
</div>


+ 8
- 2
src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js Bestand weergeven

@@ -60,8 +60,11 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => {
enableReinitialize: true,
initialValues: currentUserData,
validationSchema: yup.object().shape({
enName: yup.string().max(40, getMaxErrStr(40)).required(intl.formatMessage({ id: 'userRequireEnglishName' })),
chName: yup.string().max(6, getMaxErrStr(6)).required(intl.formatMessage({ id: 'userRequireChineseName' })),
enName: yup.string().max(40, getMaxErrStr(40)).when('chName', {
is: (chName) => chName?false:true,
then: yup.string().required(intl.formatMessage({ id: 'userRequireEnglishName' }))
}).nullable(),
chName: yup.string().max(6, getMaxErrStr(6)).nullable(),
addressLine1: yup.string().max(40, getMaxErrStr(40)).required(intl.formatMessage({ id: 'validateAddressLine1' })),
addressLine2: yup.string().max(40, getMaxErrStr(40)).nullable(),
addressLine3: yup.string().max(40, getMaxErrStr(40)).nullable(),
@@ -310,6 +313,9 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => {
return;
}
formik.setFieldValue("idDocType", newValue.type);
if (newValue.type !== "HKID") {
formik.setFieldValue("checkDigit", "")
}
},
form: formik
})}


+ 5
- 2
src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js Bestand weergeven

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


+ 1
- 1
src/pages/User/DetailsPage_Individual/index.js Bestand weergeven

@@ -192,7 +192,7 @@ const UserMaintainPage_Individual = () => {
</TabPanel>
<TabPanel value="2">
<LoginGrid
userId = {params.id}
u1 = {params.id}
/>
</TabPanel>
</TabContext>


+ 2
- 2
src/pages/User/DetailsPage_Organization/LoginGrid.js Bestand weergeven

@@ -12,7 +12,7 @@ import {GET_LOGIN_LOG_LIST } from "utils/ApiPathConst";

// ==============================|| EVENT TABLE ||============================== //

export default function LoginGrid({userId}) {
export default function LoginGrid({u1}) {
// const navigate = useNavigate()
const theme = useTheme();
const isMdOrLg = useMediaQuery(theme.breakpoints.up('md'));
@@ -63,7 +63,7 @@ export default function LoginGrid({userId}) {
getRowHeight={() => 'auto'}
doLoad={{
url:GET_LOGIN_LOG_LIST,
params:{userId:userId}
params:{u1:u1}
}}
/>
</div>


+ 1
- 1
src/pages/User/DetailsPage_Organization/index.js Bestand weergeven

@@ -261,7 +261,7 @@ const UserMaintainPage_Organization = () => {
</TabPanel>
<TabPanel value="2">
<LoginGrid
userId = {params.id}
u1 = {params.id}
/>
</TabPanel>
</TabContext>


+ 3
- 0
src/pages/authentication/AuthWrapper.js Bestand weergeven

@@ -51,6 +51,9 @@ const AuthWrapper = ({ children }) => (
<Typography style={{textAlign: "center",fontSize: "1.8rem"}}>
<FormattedMessage id="Gazette"/>
</Typography>
<Typography style={{textAlign: "center",fontSize: "1.8rem"}}>
<FormattedMessage id="PNSPS_fullname"/>
</Typography>
</Grid>
<Grid
item


+ 3
- 5
src/pages/authentication/BusRegister.js Bestand weergeven

@@ -21,7 +21,7 @@ import { notifyActionError } from 'utils/CommonFunction';
const CustomFormWizard = Loadable(lazy(() => import('./auth-forms/BusCustomFormWizard')));
const AuthWrapper = Loadable(lazy(() => import('./AuthWrapperCustom')));
import axios from "axios";
import { GET_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst";
import { POST_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst";
import {FormattedMessage, useIntl} from "react-intl";
// import CustomFormWizard from './auth-forms/BusCustomFormWizard';
// import AuthWrapper from './AuthWrapperCustom';
@@ -83,10 +83,8 @@ const BusRegister = () => {
};

const handleCheckUsername = async () => {
const response = await axios.get(`${GET_USERNAME}`, {
params: {
username: username,
}
const response = await axios.post(`${POST_USERNAME}`, {
u1: username,
})
return Number(response.data[0]) === 1
}


src/pages/authentication/ForgotUsername/AfterForgotPasswordPage.js → src/pages/authentication/ForgotUsername/AfterForgotUsernamePage.js Bestand weergeven

@@ -21,7 +21,7 @@ import {FormattedMessage, useIntl} from "react-intl";

// ==============================|| DASHBOARD - DEFAULT ||============================== //

const AfterForgotPasswordPage = () => {
const AfterForgotUsernamePage = () => {
const intl = useIntl();
const navigate = useNavigate();

@@ -46,23 +46,11 @@ const AfterForgotPasswordPage = () => {
<div style={BackgroundHead}>
<Stack direction="row" height='70px' justifyContent="flex-start" alignItems="center">
<Typography ml={15} color='#FFF' variant="h4" sx={{display: { xs: 'none', sm: 'none', md: 'block' }}}>
<FormattedMessage id="forgotUserPassword"/>
<FormattedMessage id="forgotUsername"/>
</Typography>
</Stack>
</div>
</Grid>
{/* <Grid item xs={12} width={{xs:"90%", sm:"90%", md:"60%", lg:"60%"}}>
<Button
aria-label={intl.formatMessage({id: 'back'})}
title={intl.formatMessage({id: 'back'})}
sx={{ ml: 0, mt: 2.5 }} style={{ border: '2px solid' }} variant="outlined" onClick={() => { navigate(-1) }}
>
<ForwardIcon style={{ height: 30, width: 50, transform: "rotate(180deg)" }} />
</Button>
</Grid> */}
{/* <Grid item xs={12}>
<Typography variant="pnspsFormParagraphBold">申請公共啟事</Typography>
</Grid> */}
<Grid item xs={12} md={12} width={{ sx:"90%", sm:"90%",md: "60%", xs: "90%" }}>
<MainCard
sx={{
@@ -83,56 +71,17 @@ const AfterForgotPasswordPage = () => {
<Grid item xs={12} md={12} lg={12} >
<InputLabel htmlFor="email-login-title1">
<Typography variant="h5" >
<FormattedMessage id="sentSecurityCode1"/>
<FormattedMessage id="sendUsernameSuccess"/>
</Typography>
</InputLabel>
</Grid>
<Grid item xs={12} md={12} lg={12} >
<InputLabel htmlFor="email-login-title2">
<Typography variant="h5" >
<FormattedMessage id="sentSecurityCode2"/>
</Typography>
</InputLabel>
</Grid>
{/* <Grid item xs={12} md={12} lg={12} sx={{mt:3}}>
<InputLabel htmlFor="email-login-title3">
<Typography variant="h5" >
<FormattedMessage id="requireSecurityCode"/>
</Typography>
</InputLabel>
</Grid> */}
</Grid>
</Grid>
<Grid item xs={12} md={12} lg={12} sx={{ mb: 1, mt:5, display: { md: 'none', xl: 'none', lg: 'none' } }}>
<Grid container direction="column" alignItems="center">
<Grid item xs={12} md={12} lg={12} >
<InputLabel htmlFor="email-login-title1">
<Typography variant="h5" >
<FormattedMessage id="sentSecurityCode1"/>
<FormattedMessage id="sendUsernameSuccess2"/>
</Typography>
</InputLabel>
</Grid>
<Grid item xs={12} md={12} lg={12} >
<InputLabel htmlFor="email-login-title2">
<Typography variant="h5" >
<FormattedMessage id="sentSecurityCode3"/>
</Typography>
</InputLabel>
</Grid>
<Grid item xs={12} md={12} lg={12} >
<InputLabel htmlFor="email-login-title4">
<Typography variant="h5" >
<FormattedMessage id="sentSecurityCode4"/>
</Typography>
</InputLabel>
</Grid>
{/* <Grid item xs={12} md={12} lg={12} sx={{mt:3}}>
<InputLabel htmlFor="email-login-title3">
<Typography variant="h5" >
<FormattedMessage id="requireSecurityCode"/>
</Typography>
</InputLabel>
</Grid> */}
</Grid>
</Grid>
<Grid item xs={12} md={12} lg={12} mt={1} sx={{mb:3}}>
@@ -156,4 +105,4 @@ const AfterForgotPasswordPage = () => {
};


export default AfterForgotPasswordPage;
export default AfterForgotUsernamePage;

+ 2
- 5
src/pages/authentication/ForgotUsername/ForgotUsernameApplyForm.js Bestand weergeven

@@ -70,11 +70,11 @@ const ForgotUsernameApplyForm = () => {
// files: [attachment],
onSuccess: function () {
// notifyActionSuccess(intl.formatMessage({id: 'submissionSuccess'}) + '!')
navigate('/forgot/password/sent');
navigate('/forgot/username/sent');
// location.reload();
},
onError:function () {
navigate('/forgot/password/sent');
navigate('/forgot/username/sent');
}
});
}
@@ -100,9 +100,6 @@ const ForgotUsernameApplyForm = () => {
<ForwardIcon style={{ height: 30, width: 50, transform: "rotate(180deg)" }} />
</Button>
</Grid>
{/* <Grid item xs={12}>
<Typography variant="pnspsFormParagraphBold">申請公共啟事</Typography>
</Grid> */}
<Grid item xs={12} md={12} width={{ md: "60%", xs: "90%" }}>
<MainCard
sx={{


+ 1
- 4
src/pages/authentication/ForgotUsername/index.js Bestand weergeven

@@ -38,10 +38,7 @@ const ApplyForm = () => {
</Grid>
</Grid>
:
<ForgotUsernameApplyForm
// loadedData={userData}
// selections={selections}
/>
<ForgotUsernameApplyForm />
);
};



+ 3
- 5
src/pages/authentication/Register.js Bestand weergeven

@@ -15,7 +15,7 @@ import {
Button, StepLabel,
} from '@mui/material';
import VisibilityIcon from '@mui/icons-material/Visibility';
import { GET_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst";
import { POST_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst";

// project import
import Loadable from 'components/Loadable';
@@ -83,10 +83,8 @@ const Register = () => {
};

const handleCheckUsername = async () => {
const response = await axios.get(`${GET_USERNAME}`, {
params: {
username: username,
}
const response = await axios.post(`${POST_USERNAME}`, {
u1: username,
})
return Number(response.data[0]) === 1
}


+ 39
- 21
src/pages/authentication/RegisterCustom.js Bestand weergeven

@@ -8,9 +8,12 @@ import {
import Typography from '@mui/material/Typography';
import banner from 'assets/images/bg_ml.jpg';
import { Stack } from '../../../node_modules/@mui/material/index';
import { iAmSmartPath, clientId, getBowserType, isAppBowser, iAmSmartCallbackPath } from 'auth/utils'
import { getBowserType, isAppBowser, iAmSmartCallbackPath } from 'auth/utils'
import { IAmSmartButton } from "components/iAmSmartButton";

import * as HttpUtils from "utils/HttpUtils";
import { I_AM_SMART_PATH } from "utils/ApiPathConst";

import * as React from 'react';
import { FormattedMessage, useIntl } from "react-intl";

@@ -36,30 +39,45 @@ const RegisterCustom = () => {

const openQR = () => {
let callbackUrl = "https://" + iAmSmartCallbackPath() + "/iamsmart/registrycallback";
let url = iAmSmartPath + "/api/v1/auth/getQR"
+ "?clientID=" + clientId
+ "&responseType=code"
+ "&source=" + getBowserType()
+ "&redirectURI=" + encodeURIComponent(callbackUrl)
+ "&scope=" + encodeURIComponent("eidapi_auth eidapi_profiles")
+ "&lang=" + (locale === 'en' ? "en-US" : locale === 'zh-HK' ? "zh-HK" : "zh-CN")
//+"&state="
+ "&brokerPage=false"
window.location.assign(url);

HttpUtils.get({
url: I_AM_SMART_PATH,
onSuccess: (responseData) => {
let url = responseData.iAmSmartPath + "/api/v1/auth/getQR"
+ "?clientID=" + responseData.ci
+ "&responseType=code"
+ "&source=" + getBowserType()
+ "&redirectURI=" + encodeURIComponent(callbackUrl)
+ "&scope=" + encodeURIComponent("eidapi_auth eidapi_profiles")
+ "&lang=" + (locale === 'en' ? "en-US" : locale === 'zh-HK' ? "zh-HK" : "zh-CN")
//+"&state="
+ "&brokerPage=false"
window.location.assign(url);
}
});


}

const openApp = () => {
//not support open app, just call QR link
let callbackUrl = "https://" + iAmSmartCallbackPath() + "/iamsmart/registrycallback";
let url = iAmSmartPath + "/api/v1/auth/getQR"
+ "?clientID=" + clientId
+ "&responseType=code"
+ "&source=" + getBowserType()
+ "&redirectURI=" + encodeURIComponent(callbackUrl)
+ "&scope=" + encodeURIComponent("eidapi_auth eidapi_profiles")
+ "&lang=" + (locale === 'en' ? "en-US" : locale === 'zh-HK' ? "zh-HK" : "zh-CN")
//+"&state="
+ "&brokerPage=true"
window.location.assign(url);
HttpUtils.get({
url: I_AM_SMART_PATH,
onSuccess: (responseData) => {
let url = responseData.iAmSmartPath + "/api/v1/auth/getQR"
+ "?clientID=" + responseData.ci
+ "&responseType=code"
+ "&source=" + getBowserType()
+ "&redirectURI=" + encodeURIComponent(callbackUrl)
+ "&scope=" + encodeURIComponent("eidapi_auth eidapi_profiles")
+ "&lang=" + (locale === 'en' ? "en-US" : locale === 'zh-HK' ? "zh-HK" : "zh-CN")
//+"&state="
+ "&brokerPage=false"
window.location.assign(url);
}
});
}

return (


+ 38
- 22
src/pages/authentication/auth-forms/AuthLoginCustom.js Bestand weergeven

@@ -7,7 +7,11 @@ import {
import { Link as RouterLink } from 'react-router-dom';
import { useNavigate } from 'react-router-dom';
import { useForm, } from 'react-hook-form'
import { iAmSmartPath, clientId, getBowserType, isAppBowser, iAmSmartCallbackPath } from 'auth/utils'
import { getBowserType, isAppBowser, iAmSmartCallbackPath } from 'auth/utils'

import * as HttpUtils from "utils/HttpUtils";
import { I_AM_SMART_PATH } from "utils/ApiPathConst";

//iAmSmartAppPath

// material-ui
@@ -123,7 +127,7 @@ const AuthLoginCustom = () => {
// setSumitting(false)
})
.catch((error) => {
console.log(error)
// console.log(error.response)
// setSuccess(false)
setOnLogin(false)
if (error.response != undefined) {
@@ -214,16 +218,23 @@ const AuthLoginCustom = () => {

const openQR = () => {
let callbackUrl = "https://" + iAmSmartCallbackPath() + "/iamsmart/authcallback";
let url = iAmSmartPath + "/api/v1/auth/getQR"
+ "?clientID=" + clientId
+ "&responseType=code"
+ "&source=" + getBowserType()
+ "&redirectURI=" + encodeURIComponent(callbackUrl)
+ "&scope=" + encodeURIComponent("eidapi_auth eidapi_profiles")
+ "&lang=" + (locale === 'en' ? "en-US" : locale === 'zh-HK' ? "zh-HK" : "zh-CN")
//+"&state="
+ "&brokerPage=false"
window.location = url;

HttpUtils.get({
url: I_AM_SMART_PATH,
onSuccess: (responseData) => {
let url = responseData.iAmSmartPath + "/api/v1/auth/getQR"
+ "?clientID=" + responseData.ci
+ "&responseType=code"
+ "&source=" + getBowserType()
+ "&redirectURI=" + encodeURIComponent(callbackUrl)
+ "&scope=" + encodeURIComponent("eidapi_auth eidapi_profiles")
+ "&lang=" + (locale === 'en' ? "en-US" : locale === 'zh-HK' ? "zh-HK" : "zh-CN")
//+"&state="
+ "&brokerPage=false"
window.location = url;
}
});
}

const openApp = () => {
@@ -246,16 +257,21 @@ const AuthLoginCustom = () => {
// window.location=url;

let callbackUrl = "https://" + iAmSmartCallbackPath() + "/iamsmart/authcallback";
let url = iAmSmartPath + "/api/v1/auth/getQR"
+ "?clientID=" + clientId
+ "&responseType=code"
+ "&source=" + getBowserType()
+ "&redirectURI=" + encodeURIComponent(callbackUrl)
+ "&scope=" + encodeURIComponent("eidapi_auth eidapi_profiles")
+ "&lang=" + (locale === 'en' ? "en-US" : locale === 'zh-HK' ? "zh-HK" : "zh-CN")
//+"&state="
+ "&brokerPage=true"
window.location = url;
HttpUtils.get({
url: I_AM_SMART_PATH,
onSuccess: (responseData) => {
let url = responseData.iAmSmartPath + "/api/v1/auth/getQR"
+ "?clientID=" + responseData.ci
+ "&responseType=code"
+ "&source=" + getBowserType()
+ "&redirectURI=" + encodeURIComponent(callbackUrl)
+ "&scope=" + encodeURIComponent("eidapi_auth eidapi_profiles")
+ "&lang=" + (locale === 'en' ? "en-US" : locale === 'zh-HK' ? "zh-HK" : "zh-CN")
//+"&state="
+ "&brokerPage=false"
window.location = url;
}
});

}



+ 26
- 9
src/pages/authentication/auth-forms/BusCustomFormWizard.js Bestand weergeven

@@ -30,7 +30,7 @@ import * as yup from 'yup';
import { strengthColorChi, strengthIndicator } from 'utils/password-strength';
// import {apiPath} from "auth/utils";
import axios from "axios";
import { POST_PUBLIC_USER_REGISTER, POST_CAPTCHA, GET_USERNAME, GET_USER_EMAIL } from "utils/ApiPathConst";
import { POST_PUBLIC_USER_REGISTER, POST_CAPTCHA, POST_USERNAME, POST_USER_EMAIL } from "utils/ApiPathConst";
// import * as HttpUtils from 'utils/HttpUtils';
import * as ComboData from "utils/ComboData";

@@ -116,10 +116,8 @@ const BusCustomFormWizard = (props) => {

const handleCheckUsername = async () => {
if (values?.username) {
const response = await axios.get(`${GET_USERNAME}`, {
params: {
username: values.username,
}
const response = await axios.post(`${POST_USERNAME}`, {
u1: values.username,
})
setCheckUsername((Number(response.data[0]) === 1))
return Number(response.data[0]) === 1
@@ -128,10 +126,8 @@ const BusCustomFormWizard = (props) => {

const handleCheckEmail = async () => {
if (values?.email) {
const response = await axios.get(`${GET_USER_EMAIL}`, {
params: {
email: values.email,
}
const response = await axios.post(`${POST_USER_EMAIL}`, {
e1: values.email,
})
setCheckEmail((Number(response.data[0]) === 1))
return Number(response.data[0]) === 1
@@ -1030,7 +1026,28 @@ const BusCustomFormWizard = (props) => {
setSelectedAddress5(newValue);
if (newValue.type === 'hongKong') {
setCheckCountry(false)
if(formik.values.phone==""){
formik.values.phoneCountryCode = "852";
}
if(formik.values.fax==""){
formik.values.faxCountryCode = "852";
}
} else {
if (newValue.type === 'mainland'){
if(formik.values.phone==""){
formik.values.phoneCountryCode = "86";
}
if(formik.values.fax==""){
formik.values.faxCountryCode = "86";
}
}else if(newValue.type === 'macau'){
if(formik.values.phone==""){
formik.values.phoneCountryCode = "853";
}
if(formik.values.fax==""){
formik.values.faxCountryCode = "853";
}
}
setSelectedAddress4("");
setCheckCountry(true)
}


+ 27
- 9
src/pages/authentication/auth-forms/CustomFormWizard.js Bestand weergeven

@@ -25,7 +25,7 @@ import * as yup from 'yup';
import { strengthColorChi, strengthIndicator } from 'utils/password-strength';
// import {apiPath} from "auth/utils";
import axios from "axios";
import { GET_USERNAME, GET_USER_EMAIL, POST_CAPTCHA, POST_PUBLIC_USER_REGISTER } from "utils/ApiPathConst";
import { POST_USERNAME, POST_USER_EMAIL, POST_CAPTCHA, POST_PUBLIC_USER_REGISTER } from "utils/ApiPathConst";
// import * as HttpUtils from 'utils/HttpUtils';
import * as ComboData from "utils/ComboData";

@@ -123,10 +123,8 @@ const CustomFormWizard = (props) => {

const handleCheckUsername = async () => {
if (values?.username) {
const response = await axios.get(`${GET_USERNAME}`, {
params: {
username: values.username,
}
const response = await axios.post(`${POST_USERNAME}`, {
u1: values.username,
})
setCheckUsername((Number(response.data[0]) === 1))
return Number(response.data[0]) === 1
@@ -135,10 +133,8 @@ const CustomFormWizard = (props) => {

const handleCheckEmail = async () => {
if (values?.email) {
const response = await axios.get(`${GET_USER_EMAIL}`, {
params: {
email: values.email,
}
const response = await axios.post(`${POST_USER_EMAIL}`, {
e1: values.email,
})
setCheckEmail((Number(response.data[0]) === 1))
return Number(response.data[0]) === 1
@@ -1273,7 +1269,29 @@ const CustomFormWizard = (props) => {
setSelectedAddress5(newValue);
if (newValue.type === 'hongKong') {
setCheckCountry(false)
if(formik.values.phone==""){
formik.values.phoneCountryCode = "852";
}
if(formik.values.fax==""){
formik.values.faxCountryCode = "852";
}
} else {
if (newValue.type === 'mainland'){
if(formik.values.phone==""){
formik.values.phoneCountryCode = "86";
}
if(formik.values.fax==""){
formik.values.faxCountryCode = "86";
}
}else if(newValue.type === 'macau'){
if(formik.values.phone==""){
formik.values.phoneCountryCode = "853";
}
if(formik.values.fax==""){
formik.values.faxCountryCode = "853";
}
}

setSelectedAddress4("");
setCheckCountry(true)
}


+ 3
- 5
src/pages/authentication/auth-forms/IAmSmartFormWizard.js Bestand weergeven

@@ -21,7 +21,7 @@ import { useFormik, FormikProvider } from 'formik';
import * as yup from 'yup';

import axios from "axios";
import { POST_IAMSMART_USER_REGISTER, POST_CAPTCHA, GET_USER_EMAIL } from "utils/ApiPathConst";
import { POST_IAMSMART_USER_REGISTER, POST_CAPTCHA, POST_USER_EMAIL } from "utils/ApiPathConst";

import * as ComboData from "utils/ComboData";

@@ -185,10 +185,8 @@ const CustomFormWizard = (props) => {

const handleCheckEmail = async () => {
if (values?.email) {
const response = await axios.get(`${GET_USER_EMAIL}`, {
params: {
email: values.email,
}
const response = await axios.post(`${POST_USER_EMAIL}`, {
e1: values.email,
})
setCheckEmail((Number(response.data[0]) === 1))
return Number(response.data[0]) === 1


+ 78
- 0
src/pages/extra-pages/PrivacyPolicy.js Bestand weergeven

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

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

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

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

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

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

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


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

}

export default PrivacyPolicy;

+ 2
- 2
src/pages/iAmSmart/AuthCallback/index.js Bestand weergeven

@@ -45,8 +45,8 @@ const Index = () => {
role: responseData.role,
abilities: responseData.abilities,
creditor: responseData.creditor,
passwordExpiryDate: response.data.passwordExpiryDate,
orgPaymentRecord: response.data.orgPaymentRecord,
passwordExpiryDate: responseData.passwordExpiryDate,
orgPaymentRecord: responseData.orgPaymentRecord,
//locale: responseData.preferLocale,
//avatar: require('src/assets/images/users/avatar-3.png').default,
}


+ 2
- 2
src/pages/iAmSmart/DirectLoginCallback/index.js Bestand weergeven

@@ -45,8 +45,8 @@ const Index = () => {
role: responseData.role,
abilities: responseData.abilities,
creditor: responseData.creditor,
passwordExpiryDate: response.data.passwordExpiryDate,
orgPaymentRecord: response.data.orgPaymentRecord,
passwordExpiryDate: responseData.passwordExpiryDate,
orgPaymentRecord: responseData.orgPaymentRecord,
//avatar: require('src/assets/images/users/avatar-3.png').default,
}
const data = { ...userData, accessToken: responseData.accessToken, refreshToken: responseData.refreshToken }


+ 1
- 2
src/pages/pnspsUserGroupDetailPage/index.js Bestand weergeven

@@ -5,7 +5,6 @@ import {
} from '@mui/material';
import { useEffect, useState, lazy } from "react";
import axios from "axios";
import { apiPath } from "auth/utils";
import { useParams } from "react-router-dom";
import {
GeneralConfirmWindow,
@@ -64,7 +63,7 @@ const UserMaintainPage = () => {
};

function deleteData() {
axios.delete(`${apiPath}${GET_GROUP_LIST_PATH}/${params.id}`,
axios.delete(`${GET_GROUP_LIST_PATH}/${params.id}`,
)
.then((response) => {
if (response.status === 204) {


+ 11
- 1
src/routes/LoginRoutes.js Bestand weergeven

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

const ForgotPassword = Loadable(lazy(() => import('pages/authentication/ForgotPassword')));
const AfterForgotPasswordPage = Loadable(lazy(() => import('pages/authentication/ForgotPassword/AfterForgotPasswordPage')));
@@ -19,7 +21,7 @@ const ForgotPassword_Callback = Loadable(lazy(() => import('pages/authentication
const ForgotPassword_Success = Loadable(lazy(() => import('pages/authentication/ForgotPassword/AuthCallback/ResetPasswordSuccess')));

const ForgotUsername = Loadable(lazy(() => import('pages/authentication/ForgotUsername')));
const AfterForgotUsernamePage = Loadable(lazy(() => import('pages/authentication/ForgotUsername/AfterForgotPasswordPage')));
const AfterForgotUsernamePage = Loadable(lazy(() => import('pages/authentication/ForgotUsername/AfterForgotUsernamePage')));
const ForgotUsername_Callback = Loadable(lazy(() => import('pages/authentication/ForgotUsername/AuthCallback')));
const ForgotUsername_Success = Loadable(lazy(() => import('pages/authentication/ForgotUsername/AuthCallback/ResetPasswordSuccess')));

@@ -65,6 +67,14 @@ const LoginRoutes = {
path: 'error',
element: <ErrorPage/>
},
{
path: 'privacyPolicy',
element: <PrivacyPolicyPage/>
},
{
path: 'aboutUs',
element: <AboutUsPage/>
},
{
path: 'iamsmart/logincallback',
element: <IAmSmart_DirectLoginCallback/>


+ 32
- 28
src/translations/en.json Bestand weergeven

@@ -7,9 +7,11 @@
"dateStrFormat": "YYYY-MM-DD",
"datetimeStrFormat": "YYYY-MM-DD HH:mm:ss",
"paymentMethodDatetimeStrFormat": "YYYY-MM-DD h:mm a",
"datetimeFormate": "YYYY-MM-DD h:mm a",
"PNSPS": "PNSPS",
"HKSARGOV": "HKSAR Government",
"PNSPS_fullname": "Public Notice Submission and Payment System",
"HKSARGOV": "The Government of the Hong Kong Special Administrative Region",
"HKGLD": "Government Logistics Department",
"importantNotice": "Important Notice",
"privacyPolicy": "Privacy Policy",
@@ -36,10 +38,10 @@
"noMoreThen255Words": "Must not exceed 255 characters",
"noMoreThenNWords": "{fieldname} Must not exceed {num} characters",
"atLeastNCharAccount": "{fieldname} Please enter at least {num} digits",
"applyTickStr":"I ackmowledge and confirm that the information provided above is correct.",
"applyTickStr":"I acknowledge and confirm that the information provided above is correct.",
"applyTickUnderStr1":"1. The public notice submitted for publication in the Gazette must be accurate and is in its final form. The publication of a public notice in the Gazette reject public notices which are considered not suitable for publication. ",
"applyTickUnderStr2":"2. Further details please refer to the `Notes on Publication of Public Notice in the Gazette' published in Supplement No. 6 to the Gazette or on the Government Logistics Department website (<a href='http://www.gld.gov.hk/eng/services_6.htm' target= '_blank'>http://www.gld.gov.hk/eng/services_6.htm</a>)",
"applyTickUnderStr3":"3. The personal data provided by the applicant in this form would be used for application of public notice publication and for assumption of liability. The personal data provided in this form may be disclosed to other bureau / departments. The applicant has a right of access and correction with respect to personal data. Requests for access to or correction of personal data should be addressed to the Personal Data Privacy Officer, Government Logistics Department, 10/F, North Point Government Offices, 333 Java Road, North Point, Hong Kong. ",
"applyTickUnderStr3":"3. The personal data provided by the applicant in this form would be used for application of public notice publication and for assumption of liability. The personal data provided in this form may be disclosed to other bureaux / departments. The applicant has a right of access and correction with respect to personal data. Requests for access to or correction of personal data should be addressed to the Personal Data Privacy Officer, Government Logistics Department, 10/F, North Point Government Offices, 333 Java Road, North Point, Hong Kong. ",
"submitted": "Submitted",

"MSG.registerIAmSmart": "You may click the \"iAM Smart\" button to fill the personal information automatically or enter the information manually to activate the PNSPS account now.<br/>If you want to use \"iAM Smart\" to fill the personal information, please download the \"iAM Smart\" mobile app and register as an \"iAM Smart\" user first.",
@@ -69,20 +71,20 @@
"MSG.paymentFailMsg7": "Attempt to make the payment using an alternative payment method.",
"MSG.paymentFailMsg8": "Check if there are any abnormalities or restrictions in your payment account.",
"MSG.paymentFailMsg9": "Contact our customer service representatives for assistance.",
"MSG.paymentFailMsg10": "If you need further assistance or have any questions, please feel free to contact us. We apologize for any inconvenience caused and will resolve your payment issue as soon as possible. Thank you.",
"MSG.paymentFailMsg10": "If you need further assistance or have any questions, please feel free to contact us. We apologise for any inconvenience caused and will resolve your payment issue as soon as possible. Thank you.",

"MSG.payMsg1": "We have received the manuscript proofreading confirmation and printing instructions for application number: {appNo}.",
"MSG.payMsg2_1": "Please complete the payment before ",
"MSG.payMsg2_2": " and we will process the publication after receiving payment confirmation.",
"MSG.payMsg3": "If you have multiple Public Notice applications within the Year {issueYear}, Volume {issueVolume}, Issue {issueNo} of the Official Gazette, you can choose to merge the payment for all the approved manuscripts within this issue in 'My Public Notice' before the payment deadline.",
"MSG.payMsg3": "If you have multiple Public Notice applications within the Year {issueYear}, Volume {issueVolume}, Issue {issueNo} of the Gazette, you can choose to merge the payment for all the approved manuscripts within this issue in 'My Public Notice' before the payment deadline.",

"MSG.proofOutOfTime": "Response out of time, please apply again.",
"MSG.overReviseDeadline": "Over Revise Deadline",
"MSG.overReviseDeadline": "Deadline for online manuscript revision is over. Please apply again as necessary.",
"MSG.plzSelectPaymentMethod": "Please select payment means",
"MSG.plzSelectApp": "Please select application",
"MSG.actionFail": "Action failed",
"MSG.paymentHolded": "Application number {appNo} is currently in the process of payment. If the payment is unsuccessful, please try again after 30 minutes. We apologise for any inconvenience caused.",
"MSG.pay_credity1": "We have received your confirmed application for proofreading and printing instructions regarding application number {appNo}. We will arrange for its publication with in the Year {year}, Volume {issueVolume}, Issue {issueNo} of the Official Gazette.",
"MSG.pay_credity1": "We have received your confirmed application for proofreading and printing instructions regarding application number {appNo}. We will arrange for its publication with in the Year {year}, Volume {issueVolume}, Issue {issueNo} of the Gazette.",
"MSG.pay_credity2": "A General Demand Note will be issued to you 14 calendar days after the publication of the public notice in the Gazette. Please follow the payment instructions on the Demand Note and settle the payment promptly.",
"MSG.plzonlinePayment": "Please select the payment means with online payment for the application.",

@@ -110,7 +112,7 @@
"publicNoticePaymentCancel": "Public Notice: Payment Canceled",
"publicNoticePaymentFPSPay": "Public Notice: FPS Payment",
"publicNoticePaymentProofDone": "Public Notice: Proofreading completed",
"publicNoticePaymentProofDoneAndPaid": "Public Notice: Proofreading Completed and Payment",
"publicNoticePaymentProofDoneAndPaid": "Public Notice: Proofreading Completed and Payment made",
"publicNoticePaymentProofComment": "Public Notice: Proofreading Reply",
"publicNoticePaymentProofInfo": "Public Notice: Proofreading",

@@ -142,15 +144,15 @@
"welcomeMsg_pm": "Good afternoon! Please select the required service.",
"welcomeMsg_night": "Good evening! Please select the required service.",

"aboutUs": "About Us",
"login": "Login",
"logout": "Logout",
"iAmSmartLogin": "Continue with iAM Smart",
"continueWithIAmSmart": "Continue with iAM Smart",
"authorizeIAmSmartForInfo": "Authorize \"iAM Smart\" to provide personal information",
"iAmSmartSubTitle": "In order to complete the account opening and establish a connection with \"iAM Smart\", please authorize \"iAM Smart\" to provide the following personal information:",
"authorizeIAmSmartForInfo": "Authorise \"iAM Smart\" to provide personal information",
"iAmSmartSubTitle": "In order to complete the account opening and establish a connection with \"iAM Smart\", please authorise \"iAM Smart\" to provide the following personal information:",
"iAmSmartAutoFillIn": "Continue with iAM Smart",
"register": "Register",
"register": "Create Account",
"userLoginName": "Username",
"userPassword": "Password",
@@ -175,8 +177,10 @@
"forgotPasswordSubTitle1": "Please enter your username to receive",
"forgotPasswordSubTitle2": "the code to reset your password",

"forgotUsernameSubTitle": "Please enter your email to receive the code to reset your password",
"forgotUsernameSubTitle": "Please enter your email to receive the userName",
"forgotUsernameSubTitle1": "Please enter your email to receive",
"sendUsernameSuccess": "The username has been emailed to you.",
"sendUsernameSuccess2": "Please check your emails.",
"resetPasswordSuccess": "Password reset successfully.",
"securityCode": "Security Code",
@@ -411,14 +415,14 @@
"gazetteCount2_1" :"Client Remark / Other Remark",
"gazetteCount3" :"Gazette Issue No./ Client Remark / Other Remark",
"careOf":"Client Remark",
"careOfWarning":"You have been selected different Client Remark applications. Are you want to pay?",
"careOfWarning":"You have been selected different Client Remark applications. Do you want to pay?",
"warning":"Warning",
"publishDate": "Publish Date",
"draftFile": "Manuscript File",
"download": "Download",
"paymentHistory": "Payment History",
"proofId": "Proof Code",
"proofDate": "Proof Sent Date",
"proofDate": "Deadline for online manuscript revision",
"proofDateFrom": "Proof Sent Date (From)",
"proofDateTo": "Proof Sent Date (To)",
"replyDate": "Reply Date",
@@ -426,20 +430,20 @@
"payFeeFor": "Pay for",
"payFor": "Pay",
"payFee": "Payment Amount",
"replyBefore": "Reply Before",
"replyBefore": "Deadline for Online Confirm Proof",
"applicationPublishDate": "Publish Date",
"pleaseCheckReminder": "Please download the following printed manuscript file and proofread it carefully",
"payAnd": "Pay and ",
"commentDeadline": "Deadline for online proof with revision",
"commentDeadline": "Deadline for online manuscript revision",
"paymentDeadline": "Deadline for online confirm proof",
"confirmingDealine": "Deadline for Confirming Proof",
"PaymentCoonpletDealine": "Deadline for Payment Completion",
"payOnline":"Online Payment",
"payDn":"Payment Means: Pay by issuance of General Demand Note",
"payOnline":"Pay online via this system",
"payDn":"Pay by issuance of General Demand Note",
"payNPGO":"Pay at NPGO Collection Office",
"payNPGOPopUpTitle":"Payment Means: Pay at North Point Government Offices (NPGO) Collection Office",
"payNPGOPopUpTitle":"Pay at North Point Government Offices (NPGO) Collection Office",
"paymentMeans":"Payment Means",
"paymentMethodMeans":"Available Payment Methods:",
"paymentMethodMeans":"Payment Methods Available Under this Payment Means",
"fps":"Faster Payment System (FPS)",
"card":"Credit Card (Visa, Master, UnionPay, JCB)",
"pps":"PPS",
@@ -466,8 +470,8 @@
"fpsQrcodeTitle5":"s",

"payDnRemark": "Payment proof (e.g. ATM receipt, internet banking record) to be sent to [email protected] by {date}",
"payNPGORemark" :"Payment to be completed at Collection Office by {date}",
"payOnlineRemark" :"Payment to be completed at GPNSPS by {date}",
"payNPGORemark" :"Payment to be completed at NPGO Collection Office by {date}",
"payOnlineRemark" :"Payment to be completed in this system by {date}",

"before": "Before",
"page": "Page",
@@ -475,14 +479,14 @@
"proofReply": "Proof Reply",
"proofErrorFree": "Pass for printing (without correction)",
"proofWithError": "Further proof required (with correction)",
"proofExpired": "Response timed out, please apply again.",
"proofExpired": "Proofing timed out. Please apply again.",
"sign": "Sign",
"requireLoginPassword": "Please enter your login password",
"submitReply": "Submit",
"requiredUploadFix": "Please upload the modified file of the manuscript",
"upload": "Upload",
"actionFail": "Action failed: Please check the content and submit the reply again",
"issueInvalidMsg": "Action failed: The Gazette Issue invalid, please apply again",
"issueInvalidMsg": "Action failed: The Gazette Issue is invalid, please apply again",
"singleCol":"Single Column",
"doubleCol":"Double Column",

@@ -552,10 +556,10 @@
"subject": "Subject",
"other":"Other",

"proofConfirmed":"Confirmed",
"proofConfirmed":"Pass for printing",
"proofReProofing":"Re-proofing",
"proofNoReply":"No Reply",
"proofPendingReply":"Pending Reply",
"proofNoReply":"Proofing timed out. Please apply again.",
"proofPendingReply":"Proofing reply pending",

"Dashboard": "Dashboard",
"event": "Event"

+ 73
- 65
src/translations/zh-CN.json Bestand weergeven

@@ -6,9 +6,11 @@
"iamsmartLink": "https://www.iamsmart.gov.hk/sc/",
"dateStrFormat": "YYYY年MM月DD日",
"datetimeStrFormat": "YYYY年MM月DD日 HH:mm:ss",
"paymentMethodDatetimeStrFormat": "YYYY年MM月DD日 h:mm a",
"paymentMethodDatetimeStrFormat": "YYYY年MM月DD日 ah时mm分",
"datetimeFormate": "YYYY年MM月DD日 h:mm a",

"PNSPS": "公共启事提交及缴费系统",
"PNSPS_fullname": "公共启事提交及缴费系统",
"HKSARGOV": "香港特别行政区政府",
"HKGLD": "政府物流服务署",
"importantNotice": "重要告示",
@@ -42,14 +44,14 @@
"applyTickUnderStr3":"3. 申请人在本申请表格内所提供的个人资料会供申请刊登公共启事及为承担法律责任用途。政府物流服务署可能会向其他政策局/ 部门披露你在此表格内填报的个人资料。申请人有权查阅及改正个人资料。如要查阅或改正个人资料,请向本署个人资料私隐主任提出,地址为香港北角渣华道333号北角政府合署十楼。 " ,
"submitted": "提交成功",

"confirmingDealine": "确认校对截止日期",
"confirmingDealine": "确认校对截止日期",
"PaymentCoonpletDealine": "付款截止日期",
"payOnline":"透过此系统网上付款",
"payDn":"付款方式: 透过发出一般缴款单付款",
"payDn":"透过发出一般缴款单付款",
"payNPGO":"在北角政府合署收款处付款",
"payNPGOPopUpTitle":"付款方式: 在北角政府合署收款处付款",
"payNPGOPopUpTitle":"在北角政府合署收款处付款",
"paymentMeans":"付款方式",
"paymentMethodMeans":"可用的付款方法:",
"paymentMethodMeans":"可用的付款方法",
"fps":"转数快 (FPS)",
"card":"信用卡 (Visa, Master, UnionPay, JCB)",
"pps":"缴费灵 (PPS)",
@@ -65,19 +67,19 @@
"drafts":"汇票",
"cashierOrders":"本票",
"paymentMethodAndDeadLine":"付款方式/期限",
"payOnlineMethod":"网上付",
"payDnMethod":"缴款单付",
"payNPGOMethod":"收款办公室付款",
"payOnlineMethod":"网上付",
"payDnMethod":"缴款单付",
"payNPGOMethod":"在北角政府合署收款处付款",
"payOnlineBtn":"网上付款",
"fpsQrcodeTitle1":"请扫描以下二维码",
"fpsQrcodeTitle2":"二维码有效期限3分钟",
"fpsQrcodeTitle3":"请在规定时间内完成付款流程",
"fpsQrcodeTitle3":"请在规定时间内完成付款流程",
"fpsQrcodeTitle4":"剩余时间:",
"fpsQrcodeTitle5":"秒",
"payDnRemark": "在{date}之前将付款证明(如自动柜员机收据、网上银行记录)电邮寄至 [email protected] ",
"payNPGORemark" :"在{date}之前在收款办公室完成付款",
"payOnlineRemark" :"在{date}之前在 GPNSPS 完成网上付款",
"payDnRemark": "在{date}之前將付款證明(如自動櫃員機收據、網上銀行付款記錄)電郵至[email protected]",
"payNPGORemark" :"在{date}之前在北角政府合署收款处完成付款",
"payOnlineRemark" :"在{date} 2:30 p.m. 之前在此系统完成网上付款。",
"MSG.registerIAmSmart": "你可点击「智方便」按钮,系统会自动输入个人资料,或自行输入个人资料,以即时启动 公共启事提交及缴费系统 帐户。<br/>如欲使用「智方便」提供个人资料,请先下载「智方便」流动应用程式并登记成为「智方便」用户。",
"MSG.registerPersonal": "需上载身份证明文件数码档案以进行网上申请。 <br/>如:香港身份证; 护照; 中国内地身份证; 专业执业证书等",
@@ -89,38 +91,38 @@
"MSG.paymentCancelMsg1": "付款取消讯息:",
"MSG.paymentCancelMsg2": "你的付款已被取消。我们收到了你的付款请求,但由于某些原因,付款无法完成。请注意以下事项:",
"MSG.paymentCancelMsg3": "如果你主动取消了支付,请确认并确保取消是你的意愿。",
"MSG.paymentCancelMsg3": "如果你主动取消付,请确认并确保取消是你的意愿。",
"MSG.paymentCancelMsg4": "如果付款被取消是由于系统问题或其他原因,请你尝试以下解决方法:",
"MSG.paymentCancelMsg5": "检查付帐户是否有任何异常或限制。",
"MSG.paymentCancelMsg5": "检查付帐户是否有任何异常或限制。",
"MSG.paymentCancelMsg6": "确保付款资讯准确无误。",
"MSG.paymentCancelMsg7": "检查网路连线是否正常。",
"MSG.paymentCancelMsg8": "如果需要进一步的协助或有任何疑问,请随时与我们联系,我们将尽快解决你的付款问题。谢谢!",
"MSG.paymentCancelMsg8": "如果需要进一步的协助或有任何疑问,请在办公时间与我们联络,我们将尽快处理你的付款问题。谢谢!",

"MSG.paymentFailMsg1": "付款失败讯息:",
"MSG.paymentFailMsg2": "很遗憾你的付款操作未成功。我们在处理你的付款时遇到了问题。请仔细检查以下事项:",
"MSG.paymentFailMsg3": "付帐户余额是否足够。",
"MSG.paymentFailMsg2": "很遗憾你的付款操作未成功。我们在处理你的付款时遇到了问题。请仔细检查以下事项:",
"MSG.paymentFailMsg3": "付帐户余额是否足够。",
"MSG.paymentFailMsg4": "你提供的付款资讯是否准确无误。",
"MSG.paymentFailMsg5": "请检查网路连线是否正常。",
"MSG.paymentFailMsg6": "如果已确认以上问题无误,但付款失败,请尝试以下解决方法:",
"MSG.paymentFailMsg7": "尝试使用其他付款方式进行付款。",
"MSG.paymentFailMsg8": "检查付帐户是否有异常或限制。",
"MSG.paymentFailMsg8": "检查付帐户是否有异常或限制。",
"MSG.paymentFailMsg9": "联络我们的客服人员寻求协助。",
"MSG.paymentFailMsg10": "如果需要进一步的协助或有任何疑问,请随时与我们联系。非常抱歉给你带来不便,我们将尽快解决你的付款问题。谢谢!",
"MSG.paymentFailMsg10": "如果需要进一步的协助或有任何疑问,请在办公时间与我们联络。我们将尽快处理你的付款问题。谢谢!",

"MSG.payMsg1": "我们已收到申请编号: {appNo} 的稿件校对确定及可付印指示。",
"MSG.payMsg1": "我们已收到申请编号: {appNo} 的稿件校对确定及可付印指示。",
"MSG.payMsg2_1": "请于 " ,
"MSG.payMsg2_2": " 前 完成缴费,我们将于收到缴费确认后处理刊出事宜。" ,
"MSG.payMsg3": "如你在宪报期数{issueYear} 年{issueVolume} 卷, 第{issueNo} 期内有多于一个公共启事的申请,你可选择完成所有此期所有稿件校对确定后,于缴费期限前在「我的公共启事」内合并付款。 ",

"MSG.proofOutOfTime": "回复逾时,请重新申请。",
"MSG.overReviseDeadline": "超过修改期限",
"MSG.overReviseDeadline": "网上俢订稿件最后限期已过,请按情况重新申请。",
"MSG.plzSelectPaymentMethod": "请选择付款方式",
"MSG.plzSelectApp": "请选择公共启事。",
"MSG.actionFail": "行动失败",
"MSG.paymentHolded": "申请编号 {appNo} 已正在付款的流程中,如相关付款没有成功,请于30分钟后再尝试付款,不便之处,请见谅!",
"MSG.pay_credity1": "我们已收到你已确定申请编号: {appNo} 的稿件校对确定及可付印的指示,并将安排刊登于宪报期数{year} 年{issueVolume} 卷第{issueNo } 期内。",
"MSG.pay_credity2": "此公共启事申请的费用将于下期发出的缴费发票时收取,请依时缴费。",
"MSG.plzonlinePayment": "只能选择付款方式是网上付的申请。",
"MSG.paymentHolded": "申请编号 {appNo}的付款正在处理中,如相关付款未能成功,请于30分钟后再尝试付款,不便之处,敬请原谅。",
"MSG.pay_credity1": "我们已收到申请编号{appNo}的稿件校对确认及可付印指示,并将安排刊登于宪报期数{year} 年{issueVolume} 卷第{issueNo } 期内。",
"MSG.pay_credity2": "宪报刊登后第十四个历日,发出「一般缴款单」通知缴款。请按照缴款单上的指示,依时缴费。",
"MSG.plzonlinePayment": "只能选择付款方式是网上付的申请。",
"registerTitle1": "立即成为",
"registerTitle2": "宪报刊登公共启事",
@@ -144,30 +146,30 @@
"publicNoticePaymentFail": "公共启事:付款失败",
"publicNoticePaymentSuccess": "公共启事:付款成功",
"publicNoticePaymentCancel": "公共启事:付款取消",
"publicNoticePaymentFPSPay": "公共启事:FPS付款",
"publicNoticePaymentFPSPay": "公共启事:FPS转数快付款",
"publicNoticePaymentProofDone": "公共启事:校对完成",
"publicNoticePaymentProofDoneAndPaid": "公共启事:校对完成及付款",
"publicNoticePaymentProofComment": "公共启事:校对回复",
"publicNoticePaymentProofInfo": "公共启事:校对",

"proofPaymentHeader_demandNote": "公共启事: 已完成校对并已选择付款方式",
"proofPaymentBody_demandNote": "我们已收到以下申请编号的稿件校对确认和印刷指示。<br/>{appNo}<br/><br/>您已选择以一般缴款单付款。",
"proofPaymentBody_demandNote2": "一般缴款单将在一个工作天内,但不迟于{closingDateOff} 晚上9时前发送至以下电地址: <br/>{email}",
"proofPaymentBody_demandNote3": "请在{paymentDeadline}前缴交费用并将付款证明连同申请编号(例如自动柜员机收据、网上银行记录)发送[email protected]。",
"proofPaymentBody_demandNote4": "我们将在收到付款确认通知后处理刊登事宜。",
"proofPaymentBody_demandNote": "我们已收到以下申请编号的稿件校对确认及可付印指示。<br/>{appNo}<br/><br/>你已选择以一般缴款单付款。",
"proofPaymentBody_demandNote2": "一般缴款单将在一个工作天内,但不迟于{closingDateOff} 晚上9时前发送至以下电邮地址: <br/>{email}",
"proofPaymentBody_demandNote3": "请在{paymentDeadline}前缴付款项并将相关付款证明(例如银行入数纸或网上银行付款记录)连同申请编号电邮[email protected]。",
"proofPaymentBody_demandNote4": "我们将在收到付款后处理刊登事宜。",

"proofPaymentHeader_office": "公共启事: 已完成校对并已选择付款方式",
"proofPaymentBody_office": "我们已收到以下申请编号的稿件校对确认和印刷指示。<br/>{appNo}",
"proofPaymentBody_office2": "已选择在北角政府合署收款处付款:<center><br/>香港北角渣华道333号<br/>北角政府合署10楼<br/>会计部收款处</center>",
"proofPaymentBody_office": "我们已收到以下申请编号的稿件校对确认及可付印指示。<br/>{appNo}",
"proofPaymentBody_office2": "已选择在北角政府合署收款处付款:<center><br/>香港北角渣华道333号<br/>北角政府合署10楼<br/>会计部收款处</center>",
"proofPaymentBody_office3": "收款处的办公时间为星期一至五上午八时三十分至下午一时及下午二时至五时。",
"proofPaymentBody_office4": "凡支票、汇票或本票均须书明支付「香港特别行政区政府」并加划线,抬头人不应为个别职员。客户以支票、汇票或本票方式付款,须待其兑现后方为有效。",
"proofPaymentBody_office5": "请打印此页面或使用电子屏幕设备向收款处职员展示申请详情,并在{paymentDeadline}前完成付款。",
"proofPaymentBody_office6": "我们将在收到付款确认通知后处理刊登事宜。",
"proofPaymentBody_office4": "凡支票、汇票或本票均须书明支付「香港特别行政区政府」并加划线。",
"proofPaymentBody_office5": "请列印此页面或出示电子设备屏幕上所显示的申请资料,以供收款处职员查阅,并在{paymentDeadline}下午12时30分前完成付款。",
"proofPaymentBody_office6": "我们将在收到付款后处理刊登事宜。",

"proofPaymentHeader_online": "公共启事: 已完成校对并已选择付款方式",
"proofPaymentBody_online": "我们已收到以下申请编号的稿件校对确认和印刷指示。<br/>{appNo}",
"proofPaymentBody_online": "我们已收到以下申请编号的稿件校对确认及可付印指示。<br/>{appNo}",
"proofPaymentBody_online2": "请选择即时完成付款,或在{paymentDeadline}前完成付款。",
"proofPaymentBody_online3": "我们将在收到付款确认通知后处理刊登事宜。",
"proofPaymentBody_online3": "我们将在收到付款后处理刊登事宜。",

"proofRecord": "校对记录",
"onlinePaymentHistory": "网上付款记录",
@@ -177,6 +179,7 @@
"welcomeMsg_pm": "午安! 请选择所需服务。",
"welcomeMsg_night": "晚安! 请选择所需服务。",

"aboutUs": "关于我们",
"login": "登录",
"logout": "登出",
"iAmSmartLogin": "以智方便继续",
@@ -184,19 +187,19 @@
"authorizeIAmSmartForInfo": "授权「智方便」提供个人资料",
"iAmSmartSubTitle": "为完成开户并建立与「智方便」的连接,请授权「智方便」提供以下个人资料:",
"iAmSmartAutoFillIn": "以智方便继续",
"register": "申请",
"register": "建立账户",
"userLoginName": "用户登入名称",
"userPassword": "密码",
"loginErrorMessage1":"帐户已被封锁",
"loginErrorMessage2":"由于您的帐户因连续五次登录错误而被锁定,请通过忘记密码来找回您的密码,或联系系统管理员寻求进一步帮助。",
"loginErrorMessage2":"由于你的帐户因连续五次登录错误而被锁定,请通过忘记密码来找回你的密码,或联系系统管理员寻求进一步帮助。",
"loginErrorMessage3":"帐户尚未验证",
"loginErrorMessage4":"系统连接失败",
"loginErrorMessage5":"用户名或密码错误",
"loginErrorMessage6":"找不到用户帐户",

"loginSuccessMessage1":"成功连结现有帐户",
"loginSuccessMessage2":"你是我们的现有户,已成功连结现有帐户。<br/>以后可以透过「智方便」登入。",
"loginSuccessMessage2":"你是我们的现有户,已成功连结现有帐户。<br/>以后可以透过「智方便」登入。",
"loginSuccessMessage3":"继续使用e-Service",

"oldPassword": "旧密码",
@@ -204,15 +207,20 @@
"setNewPassword": "请输入新密码",
"forgotUserPassword": "忘记密码",
"forgotUsername": "忘记用户登入名称",
"forgotPasswordTitle": "寻找你的帐号",
"forgotPasswordSubTitle": "请输入你的用户登入名称以重设密码",
"forgotPasswordSubTitle1": "请输入你的用户登入名称收",
"forgotPasswordSubTitle2": "以重设密码",
"forgotUsernameSubTitle": "请输入你的电邮地址以寻找用户名称",
"forgotUsernameSubTitle1": "请输入你的电邮地址",
"resetPasswordSuccess": "已成功重设密码。",
"sendUsernameSuccess": "我们已将用户名称送至你的电邮地址。",
"sendUsernameSuccess2": "请查看你的电邮信箱。",
"securityCode": "安全验证码",
"sentSecurityCode1": "我们已将验证码送至你的电邮:",
"sentSecurityCode2": "请查看你的电信箱中是否有包含验证码的信件。",
"sentSecurityCode3": "请查看你的电信箱中",
"sentSecurityCode1": "我们已将验证码送至你的电邮地址:",
"sentSecurityCode2": "请查看你的电邮信箱中是否有包含验证码的信件。",
"sentSecurityCode3": "请查看你的电邮信箱中",
"sentSecurityCode4": "是否有包含验证码的信件。",
"requireSecurityCode": "请输入安全验证码",
"learnMore": "了解更多",
@@ -235,13 +243,13 @@
"userRequireChineseName": "請輸入中文姓名",
"userRequireEnglishName": "請輸入英文姓名",
"userRequireName": "請輸入姓名",
"userContactEmail": "电邮",
"confirmEmail": "确认电邮",
"requireEmail": "请输入电邮",
"userContactEmail": "电邮地址",
"confirmEmail": "确认电邮地址",
"requireEmail": "请输入电邮地址",
"validEmailFormat": "请输入电邮格式",
"validSameEmail": "请输入相同电邮",
"emailUsed": "此电邮已被注册,请使用其他电邮",
"emailSent": "验证电邮将发送你的电邮地址,请依指示完成验证及登入系统。",
"validSameEmail": "请输入相同电邮地址",
"emailUsed": "此电邮地址已被注册,请使用其他电邮地址",
"emailSent": "验证电邮将发送你的电邮地址,请依指示完成验证及登入系统。",
"userContactNumber": "联络电话",
"contactFaxNumber": "联络传真",
"requiredValidNumber": "请输入有效联络电话",
@@ -253,7 +261,7 @@
"requireDialingCode": "请输入国际区号",
"requireVerify": "请输入验证",
"verifySuccess": "帐户已成功验证。",
"passwordExpired": "的密码已过期,请立即更改密码以继续使用系统。",
"passwordExpired": "的密码已过期,请立即更改密码以继续使用系统。",
"verifyFail": "验证失败,请联络相关的系统管理员协助。",
"dialingCode": "国际区号",
"userFaxNumber": "传真号码",
@@ -289,7 +297,7 @@
"fileName": "档案名称",
"fileSize": "档案大小",
"fileSizeWarning": "上传档案应不大于 10MB",
"dnOverdueWarning": "请尽快缴付所有逾期未缴交的款。",
"dnOverdueWarning": "请尽快缴付所有逾期未缴交的款。",
"noFile": "没有上传档案",
"termsAndCondition": "条款和条件",
"acceptTerms": "我接受",
@@ -383,7 +391,7 @@
"submitDateFrom": "提交日期 (从)",
"submitDateTo": "提交日期 (到)",
"myRemarks": "其他备注",
"careOfRemark": "如果您想在付款收据上显示客户的名称,您可以在此处输入(例如个人或公司名称)。",
"careOfRemark": "如果你想在付款收据上显示客户的名称,你可以在此处输入(例如个人或公司名称)。",
"uploadApplicationFileRemark": "只接受.docx及.xlsx档案格式 及一个档案只适用于一个申请。",
"status": "状态",
"viewDetail": "查看详情",
@@ -424,7 +432,7 @@
"currencyAmountTitle": "金额 (HK$):",
"transactionRefNo": "交易参考编号",
"selectedPaymentMethod": "已选择付款方法",
"paymentMethodNotAvailable":"付款功能现在不可用",
"paymentMethodNotAvailable":"付款功能现在不可使用",
"paymentLimitPrice1":"只适用于最小金额为 1.00 及最高金额为 9,999,999.99",
"paymentLimitPrice2":"只适用于最小金额为 0.10 及最高金额为 9,999,999.99",
"paymentLimitPPS":"付款不适用于流动装置的浏览器,请使用桌面电脑。",
@@ -439,26 +447,26 @@
"gazetteCount2_1" :"客户备注/ 其他备注",
"gazetteCount3" :"宪报期数/ 客户备注/ 其他备注",
"careOf":"客户备注",
"careOfWarning":"您已选择了不同的客户备注申请。您要付款吗?",
"careOfWarning":"你已选择了不同的客户备注申请。你要付款吗?",
"warning":"警告",
"publishDate": "发布日期",
"draftFile": "稿件档案",
"download": "下载",
"paymentHistory": "付款记录",
"proofId": "校对编号",
"proofDate": "出稿日期",
"proofDate": "网上修订稿件最后限期",
"proofDateFrom": "出稿日期 (从)",
"proofDateTo": "出稿日期 (到)",
"replyDate": "回复日期",
"fee": "金额 ($)",
"payFeeFor": "应缴金额 ($)",
"payFor": "付",
"payFee": "付金额 ($)",
"replyBefore": "此日期前回复",
"payFor": "付",
"payFee": "付金额 ($)",
"replyBefore": "网上确定付印最后限期",
"applicationPublishDate": "刊出日期",
"pleaseCheckReminder": "请下载下列印刷稿档案,并仔细校对",
"payAnd": "缴费及",
"commentDeadline": "网上返稿最后限期",
"commentDeadline": "网上修订稿件最后限期",
"paymentDeadline": "网上确定付印最后限期",
"before": "前",
"page": "页",
@@ -480,10 +488,10 @@
"paymentNo": "付款编号",
"paymentDate": "付款日期",
"paymentTime": "付款时间",
"paymentRefCode": "付款参考号",
"paymentRefCode": "付款参考号",

"paymentInfoRecord": "缴款通知记录",
"paymentRecordId": "缴款单号",
"paymentRecordId": "缴款单号",
"sendDate": "发出日期",
"sendDateTime": "发出时间",
"sendDateFrom": "发出日期 (从)",
@@ -501,7 +509,7 @@
"MSG.revokePrimay": "是否确定要撤销 “{username}” 为主要用户吗?",

"submitApplication": "提交公共启事申请",
"applicationSubheading": "提供你的启事内容作排版,校对及计。",
"applicationSubheading": "提供你的启事内容作排版,校对及计算所需费用。",
"announcement": "通告",
"viewAllAnnouncement": "显示所有通告",
"systemMessage": "系统消息",
@@ -532,7 +540,7 @@
"organizationProfile": "机构资料",
"organizationDetails": "机构详情",
"brNo": "商业登记证号码",
"creditorAccount": "债权人帐户",
"creditorAccount": "已获安排在宪报刊登公共启事后才须缴付款项的用户",
"nameEng": "姓名 (英文)",
"nameChi": "姓名 (中文)",
"expiryDate": "屆滿日期",
@@ -545,8 +553,8 @@

"proofConfirmed":"可以付印",
"proofReProofing":"未能付印",
"proofNoReply":"回复逾时",
"proofPendingReply":"未回复",
"proofNoReply":"校对回复逾时,请重新申请",
"proofPendingReply":"校对待复",

"Dashboard": "仪表板",
"event": "活动"

+ 72
- 67
src/translations/zh-HK.json Bestand weergeven

@@ -6,9 +6,11 @@
"iamsmartLink": "https://www.iamsmart.gov.hk/tc/",
"dateStrFormat": "YYYY年MM月DD日",
"datetimeStrFormat": "YYYY年MM月DD日 HH:mm:ss",
"paymentMethodDatetimeStrFormat": "YYYY年MM月DD日 h:mm a",
"paymentMethodDatetimeStrFormat": "YYYY年MM月DD日 ah時mm分",
"datetimeFormate": "YYYY年MM月DD日 h:mm a",

"PNSPS": "公共啟事提交及繳費系統",
"PNSPS_fullname": "公共啟事提交及繳費系統",
"HKSARGOV": "香港特別行政區政府",
"HKGLD": "政府物流服務署",
"importantNotice": "重要告示",
@@ -42,14 +44,14 @@
"applyTickUnderStr3":"3. 申請人在本申請表格內所提供的個人資料會供申請刊登公共啟事及為承擔法律責任用途。政府物流服務署可能會向其他政策局 / 部門披露你在此表格內填報的個人資料。申請人有權查閱及改正個人資料。如要查閱或改正個人資料,請向本署個人資料私隱主任提出,地址為香港北角渣華道333號北角政府合署十樓。 ",
"submitted": "提交成功",
"confirmingDealine": "確認校對截止日期",
"confirmingDealine": "確認校對截止日期",
"PaymentCoonpletDealine": "付款截止日期",
"payOnline":"透過此系統網上付款",
"payDn":"透過發出一般繳款單付款",
"payNPGO":"在北角政府合署收款處付款",
"payNPGOPopUpTitle":"付款方式: 在北角政府合署收款處付款",
"payNPGOPopUpTitle":"在北角政府合署收款處付款",
"paymentMeans":"付款方式",
"paymentMethodMeans":"可用的付款方法:",
"paymentMethodMeans":"可用的付款方法",
"fps":"轉數快 (FPS)",
"card":"信用卡 (Visa, Master, UnionPay, JCB)",
"pps":"繳費靈 (PPS)",
@@ -65,19 +67,19 @@
"drafts":"匯票",
"cashierOrders":"本票",
"paymentMethodAndDeadLine":"付款方式/期限",
"payOnlineMethod":"網上付",
"payDnMethod":"繳款單付",
"payNPGOMethod":"收款辦公室付款",
"payOnlineMethod":"網上付",
"payDnMethod":"繳款單付",
"payNPGOMethod":"在北角政府合署收款處付款",
"payOnlineBtn":"網上付款",
"fpsQrcodeTitle1":"請掃描以下二維碼",
"fpsQrcodeTitle2":"二維碼有效期限3分鐘",
"fpsQrcodeTitle3":"請在規定時間內完成付款流程",
"fpsQrcodeTitle3":"請在規定時間內完成付款流程",
"fpsQrcodeTitle4":"剩餘時間:",
"fpsQrcodeTitle5":"秒",

"payDnRemark": "在{date}之前將付款證明(如自動櫃員機收據、網上銀行記錄)電郵[email protected] ",
"payNPGORemark" :"在{date}之前在收款辦公室完成付款",
"payOnlineRemark" :"在{date}之前在 GPNSPS 完成網上付款",
"payDnRemark": "在{date}之前將付款證明(如自動櫃員機收據、網上銀行付款記錄)電郵至 [email protected] ",
"payNPGORemark" :"在{date}之前在北角政府合署收款處完成付款",
"payOnlineRemark" :"在{date} 2:30 p.m. 之前在此系統完成網上付款。",

"MSG.registerIAmSmart": "你可點擊「智方便」按鈕,系統會自動輸入個人資料,或自行輸入個人資料,以即時啟動 公共啟事提交及繳費系統 帳戶。<br/>如欲使用「智方便」提供個人資料,請先下載「智方便」流動應用程式並登記成為「智方便」用戶。",
"MSG.registerPersonal": "需上載身份證明文件數碼檔案以進行網上申請。<br/>如:香港身份證; 護照; 中國內地身份證; 專業執業証書等",
@@ -89,38 +91,38 @@

"MSG.paymentCancelMsg1": "付款取消訊息:",
"MSG.paymentCancelMsg2": "你的付款已被取消。我們收到了你的付款請求,但由於某些原因,付款無法完成。請注意以下事項:",
"MSG.paymentCancelMsg3": "如果你主動取消了支付,請確認並確保取消是你的意願。",
"MSG.paymentCancelMsg3": "如果你主動取消付,請確認並確保取消是你的意願。",
"MSG.paymentCancelMsg4": "如果付款被取消是由於系統問題或其他原因,請嘗試以下解決方法:",
"MSG.paymentCancelMsg5": "檢查付帳戶是否有任何異常或限制。",
"MSG.paymentCancelMsg5": "檢查付帳戶是否有任何異常或限制。",
"MSG.paymentCancelMsg6": "確保付款資訊準確無誤。",
"MSG.paymentCancelMsg7": "檢查網路連線是否正常。",
"MSG.paymentCancelMsg8": "如果需要進一步的協助或有任何疑問,請隨時與我們聯繫,我們將盡快解決你的付款問題。謝謝!",
"MSG.paymentCancelMsg8": "如果需要進一步的協助或有任何疑問,請在辦公時間與我們聯絡,我們將盡快處理你的付款問題。謝謝!",

"MSG.paymentFailMsg1": "付款失敗訊息:",
"MSG.paymentFailMsg2": "很遺憾你的付款操作未成功。我們在處理你的付款時遇到了問題。請仔細檢查以下事項:",
"MSG.paymentFailMsg3": "付帳戶餘額是否足夠。",
"MSG.paymentFailMsg2": "很遺憾你的付款操作未成功。我們在處理你的付款時遇到了問題。請仔細檢查以下事項:",
"MSG.paymentFailMsg3": "付帳戶餘額是否足夠。",
"MSG.paymentFailMsg4": "你提供的付款資訊是否準確無誤。",
"MSG.paymentFailMsg5": "請檢查網路連線是否正常。",
"MSG.paymentFailMsg6": "如果已確認以上問題無誤,但付款失敗,請嘗試以下解決方法:",
"MSG.paymentFailMsg7": "嘗試使用其他付款方式進行付款。",
"MSG.paymentFailMsg8": "檢查付帳戶是否有異常或限制。",
"MSG.paymentFailMsg8": "檢查付帳戶是否有異常或限制。",
"MSG.paymentFailMsg9": "聯絡我們的客服人員尋求協助。",
"MSG.paymentFailMsg10": "如果需要進一步的協助或有任何疑問,請隨時與我們聯繫。非常抱歉給你帶來不便,我們將盡快解決你的付款問題。謝謝!",
"MSG.paymentFailMsg10": "如果需要進一步的協助或有任何疑問,請在辦公時間與我們聯絡。我們將盡快處理你的付款問題。謝謝!",

"MSG.payMsg1": "我們已收到申請編號: {appNo} 的稿件校對確定及可付印指示。",
"MSG.payMsg1": "我們已收到申請編號: {appNo} 的稿件校對確定及可付印指示。",
"MSG.payMsg2_1": "請於 ",
"MSG.payMsg2_2": " 前 完成繳費,我們將於收到繳費確認後處理刊出事宜。",
"MSG.payMsg3": "如你在憲報期數 {issueYear} 年 {issueVolume} 卷, 第 {issueNo} 期內有多於一個公共啟事的申請,你可選擇完成所有此期所有稿件校對確定後,於繳費期限前在「我的公共啟事」內合併付款。",

"MSG.proofOutOfTime": "回覆逾時,請重新申請。",
"MSG.overReviseDeadline": "超過修改期限",
"MSG.overReviseDeadline": "網上俢訂稿件最後限期已過,請按情況重新申請。",
"MSG.plzSelectApp": "請選擇公共啟事。",
"MSG.plzSelectPaymentMethod": "請選擇付款方式",
"MSG.actionFail": "行動失敗",
"MSG.paymentHolded": "申請編號 {appNo} 已正在付款的流程中,如相關付款沒有成功,請於30分鐘後再嘗試付款,不便之處,請見諒!",
"MSG.pay_credity1": "我們已收到你已確定申請編號: {appNo} 的稿件校對確定及可付印的指示,並將安排刊登於憲報 期數 {year} 年 {issueVolume} 卷 第 {issueNo} 期內。",
"MSG.paymentHolded": "申請編號 {appNo}的付款正在處理中,如相關付款未能成功,請於30分鐘後再嘗試付款,不便之處,敬請原諒。",
"MSG.pay_credity1": "我們已收到申請編號{appNo}的稿件校對確認及可付印指示,並將安排刊登於憲報 期數 {year} 年 {issueVolume} 卷 第 {issueNo} 期內。",
"MSG.pay_credity2": "此公共啟事申請的費用將於憲報刊登後第十四個曆日,發出「一般繳款單」通知繳款。請按照繳款單上的指示,依時繳費。",
"MSG.plzonlinePayment": "只能選擇付款方式是網上付的申請。",
"MSG.plzonlinePayment": "只能選擇付款方式是網上付的申請。",

"registerTitle1": "立即成為",
"registerTitle2": "憲報刊登公共啟事",
@@ -144,30 +146,30 @@
"publicNoticePaymentFail": "公共啟事:付款失敗",
"publicNoticePaymentSuccess": "公共啟事:付款成功",
"publicNoticePaymentCancel": "公共啟事:付款取消",
"publicNoticePaymentFPSPay": "公共啟事:FPS付款",
"publicNoticePaymentFPSPay": "公共啟事:FPS轉數快付款",
"publicNoticePaymentProofDone": "公共啟事:校對完成",
"publicNoticePaymentProofDoneAndPaid": "公共啟事:校對完成及付款",
"publicNoticePaymentProofComment": "公共啟事:校對回覆",
"publicNoticePaymentProofInfo": "公共啟事:校對",

"proofPaymentHeader_demandNote": "公共啟事: 已完成校對並已選擇付款方式",
"proofPaymentBody_demandNote": "我們已收到以下申請編號的稿件校對確認和印刷指示。<br/>{appNo}<br/>您已選擇以一般繳款單付款。",
"proofPaymentBody_demandNote2": "一般繳款單將在一個工作天內,但不遲於{closingDateOff} 晚上9時前發送至以下電地址: <br/>{email}",
"proofPaymentBody_demandNote3": "請在{paymentDeadline}前繳交費用並將付款證明連同申請編號(例如自動櫃員機收據、網上銀行記錄)發送至[email protected]",
"proofPaymentBody_demandNote4": "我們將在收到付款確認通知後處理刊登事宜。",
"proofPaymentBody_demandNote": "我們已收到以下申請編號的稿件校對確認及可付印指示。<br/>{appNo}<br/>你已選擇以一般繳款單付款。",
"proofPaymentBody_demandNote2": "一般繳款單將在一個工作天內,但不遲於{closingDateOff} 晚上9時前發送至以下電郵地址: <br/>{email}",
"proofPaymentBody_demandNote3": "請在{paymentDeadline}前繳付款項並將相關付款證明(例如銀行入數紙或網上銀行付款記錄)連同申請編號電郵至[email protected]",
"proofPaymentBody_demandNote4": "我們將在收到付款後處理刊登事宜。",

"proofPaymentHeader_office": "公共啟事: 已完成校對並已選擇付款方式",
"proofPaymentBody_office": "我們已收到以下申請編號的稿件校對確認和印刷指示。<br/>{appNo}",
"proofPaymentBody_office2": "已選擇在北角政府合署收款處付款:<center><br/>香港北角渣華道333號<br/>北角政府合署10樓<br/>會計部收款處</center>",
"proofPaymentBody_office": "我們已收到以下申請編號的稿件校對確認及可付印指示。<br/>{appNo}",
"proofPaymentBody_office2": "已選擇在北角政府合署收款處付款:<center><br/>香港北角渣華道333號<br/>北角政府合署10樓<br/>會計部收款處</center>",
"proofPaymentBody_office3": "收款處的辦公時間為星期一至五上午八時三十分至下午一時及下午二時至五時。",
"proofPaymentBody_office4": "凡支票、匯票或本票均須書明支付「香港特別行政區政府」並加劃線,抬頭人不應為個別職員。客戶以支票、匯票或本票方式付款,須待其兌現後方為有效。",
"proofPaymentBody_office5": "請列印此頁面或使用電子屏幕設備向收款處職員展示申請詳情,並在{paymentDeadline}之前完成付款。",
"proofPaymentBody_office6": "我們將在收到付款確認通知後處理刊登事宜。",
"proofPaymentBody_office4": "凡支票、匯票或本票均須書明支付「香港特別行政區政府」並加劃線。",
"proofPaymentBody_office5": "請列印此頁面或出示電子設備屏幕上所顯示的申請資料,以供收款處職員查閱,並在{paymentDeadline}下午12時30分前完成付款。",
"proofPaymentBody_office6": "我們將在收到付款後處理刊登事宜。",

"proofPaymentHeader_online": "公共啟事: 已完成校對並已選擇付款方式",
"proofPaymentBody_online": "我們已收到以下申請編號的稿件校對確認和印刷指示。<br/>{appNo}",
"proofPaymentBody_online": "我們已收到以下申請編號的稿件校對確認及可付印指示。<br/>{appNo}",
"proofPaymentBody_online2": "請選擇即時完成付款,或在{paymentDeadline}前完成付款。",
"proofPaymentBody_online3": "我們將在收到付款確認通知後處理刊登事宜。",
"proofPaymentBody_online3": "我們將在收到付款後處理刊登事宜。",



@@ -179,6 +181,7 @@
"welcomeMsg_pm": "午安! 請選擇所需服務。",
"welcomeMsg_night": "晚安! 請選擇所需服務。",

"aboutUs": "關於我們",
"login": "登入",
"logout": "登出",
"iAmSmartLogin": "以智方便繼續",
@@ -186,19 +189,19 @@
"authorizeIAmSmartForInfo": "授權「智方便」提供個人資料",
"iAmSmartSubTitle": "為完成開戶並建立與「智方便」的連接,請授權「智方便」提供以下個人資料:",
"iAmSmartAutoFillIn": "以智方便繼續",
"register": "申請",
"register": "建立賬戶",
"userLoginName": "用戶登入名稱",
"userPassword": "密碼",
"loginErrorMessage1":"帳戶已被封鎖",
"loginErrorMessage2":"由於的帳號因連續五次登入錯誤而被鎖定,請透過忘記密碼找回密碼或聯絡系統管理員尋求進一步協助。",
"loginErrorMessage2":"由於的帳號因連續五次登入錯誤而被鎖定,請透過忘記密碼找回密碼或聯絡系統管理員尋求進一步協助。",
"loginErrorMessage3":"帳戶尚未驗證",
"loginErrorMessage4":"系統連接失敗",
"loginErrorMessage5":"用戶名或密碼錯誤",
"loginErrorMessage6":"找不到用戶帳戶",

"loginSuccessMessage1":"成功連結現有帳戶",
"loginSuccessMessage2":"你是我們的現有戶,已成功連結現有帳戶。<br/>以後可以透過「智方便」登入。",
"loginSuccessMessage2":"你是我們的現有戶,已成功連結現有帳戶。<br/>以後可以透過「智方便」登入。",
"loginSuccessMessage3":"繼續使用e-Service",

"oldPassword": "舊密碼",
@@ -210,20 +213,22 @@
"forgotPasswordSubTitle": "請輸入你的用戶登入名稱以重設密碼",
"forgotPasswordSubTitle1": "請輸入你的用戶登入名稱",
"forgotPasswordSubTitle2": "以重設密碼",
"forgotUsernameSubTitle": "請輸入你的電郵以重設密碼",
"forgotUsernameSubTitle1": "請輸入你的電郵",
"forgotUsernameSubTitle": "請輸入你的電郵地址以尋找用戶名稱",
"forgotUsernameSubTitle1": "請輸入你的電郵地址",
"sendUsernameSuccess": "我們已將用戶名稱送至你的電郵地址。",
"sendUsernameSuccess2": "請查看你的電郵信箱。",
"resetPasswordSuccess": "已成功重設密碼。",
"securityCode": "安全驗證碼",
"sentSecurityCode1": "我們已將驗證碼送至你的電郵:",
"sentSecurityCode2": "請查看你的電信箱中是否有包含驗證碼的信件。",
"sentSecurityCode3": "請查看你的電信箱中",
"sentSecurityCode1": "我們已將驗證碼送至你的電郵地址:",
"sentSecurityCode2": "請查看你的電郵信箱中是否有包含驗證碼的信件。",
"sentSecurityCode3": "請查看你的電郵信箱中",
"sentSecurityCode4": "是否有包含驗證碼的信件。",
"requireSecurityCode": "請輸入安全驗證碼",
"learnMore": "了解更多",
"createOrReActivate": "建立帳戶",
"usernameTaken": "此用戶登入名稱已被冊,請使用其他用戶登入名稱",
"userRegistered": "此用戶已冊,請返回登入頁面並進行登入流程。",
"usernameTaken": "此用戶登入名稱已被冊,請使用其他用戶登入名稱",
"userRegistered": "此用戶已冊,請返回登入頁面並進行登入流程。",

"user": "用戶",
"personalUser": "個人用戶",
@@ -240,13 +245,13 @@
"userRequireChineseName": "請輸入中文姓名",
"userRequireEnglishName": "請輸入英文姓名",
"userRequireName": "請輸入姓名",
"userContactEmail": "電郵",
"confirmEmail": "確認電郵",
"requireEmail": "請輸入電郵",
"userContactEmail": "電郵地址",
"confirmEmail": "確認電郵地址",
"requireEmail": "請輸入電郵地址",
"validEmailFormat": "請輸入電郵格式",
"validSameEmail": "請輸入相同電郵",
"emailUsed": "此電郵已被注冊,請使用其他電郵",
"emailSent": "驗證電郵將發送你的電郵地址,請依指示完成驗證及登入系統。",
"validSameEmail": "請輸入相同電郵地址",
"emailUsed": "此電郵地址已被注冊,請使用其他電郵地址",
"emailSent": "驗證電郵將發送你的電郵地址,請依指示完成驗證及登入系統。",
"userContactNumber": "聯絡電話",
"contactFaxNumber": "聯絡傳真",
"requiredValidNumber": "請輸入有效聯絡電話",
@@ -291,14 +296,14 @@
"fileName": "檔案名稱",
"fileSize": "檔案大小",
"fileSizeWarning": "上傳檔案應不大於 10MB",
"dnOverdueWarning": "請盡快繳付所有逾期未繳交的款。",
"dnOverdueWarning": "請盡快繳付所有逾期未繳交的款。",
"noFile": "沒有上傳檔案",
"termsAndCondition": "條款和條件",
"acceptTerms": "我接受",
"rejectTerms": "我不接受",
"verify": "驗證",
"verifySuccess": "帳戶已成功驗證。",
"passwordExpired": "的密碼已過期,請立即變更密碼以繼續使用系統。",
"passwordExpired": "的密碼已過期,請立即變更密碼以繼續使用系統。",
"verifyFail": "驗證失敗,請聯絡相關的系統管理員協助。",
"validVerify": "請輸入有效驗證",
"requiredValid": "請輸入有效的",
@@ -388,7 +393,7 @@
"submitDateFrom": "提交日期 (從)",
"submitDateTo": "提交日期 (到)",
"myRemarks": "其他備註",
"careOfRemark": "如果您想在付款收據上顯示客戶的名稱,您可以在此處輸入(例如個人或公司名稱)。",
"careOfRemark": "如果你想在付款收據上顯示客戶的名稱,你可以在此處輸入(例如個人或公司名稱)。",
"uploadApplicationFileRemark": "只接受.docx及.xlsx檔案格式 及一個檔案只適用於一個申請。",
"status": "狀態",
"viewDetail": "查看詳情",
@@ -429,7 +434,7 @@
"currencyAmountTitle": "金額 (HK$):",
"transactionRefNo": "交易參考編號",
"selectedPaymentMethod": "已選擇付款方法",
"paymentMethodNotAvailable":"付款功能現在不可用",
"paymentMethodNotAvailable":"付款功能現在不可使用",
"paymentLimitPrice1":"只適用於最小金額為 1.00 及最高金額為 9,999,999.99",
"paymentLimitPrice2":"只適用於最小金額為 0.10 及最高金額為 9,999,999.99",
"paymentLimitPPS":"付款不適用於流動裝置的瀏覽器,請使用桌面電腦。",
@@ -444,26 +449,26 @@
"gazetteCount2_1" :"客戶備註/ 其他備註",
"gazetteCount3" :"憲報期數/ 客戶備註/ 其他備註",
"careOf":"客戶備註",
"careOfWarning":"您已選擇了不同的客戶備註申請。您要付款嗎?",
"careOfWarning":"你已選擇了不同的客戶備註申請。你要付款嗎?",
"warning":"警告",
"publishDate": "發佈日期",
"draftFile": "稿件檔案",
"download": "下載",
"paymentHistory": "付款記錄",
"proofId": "校對編號",
"proofDate": "出稿日期",
"proofDate": "網上俢訂稿件最後限期",
"proofDateFrom": "出稿日期 (從)",
"proofDateTo": "出稿日期 (到)",
"replyDate": "回覆日期",
"fee": "金額 ($)",
"payFeeFor": "應繳金額 ($)",
"payFor": "付",
"payFee": "付金額 ($)",
"replyBefore": "此日期前回覆",
"payFor": "付",
"payFee": "付金額 ($)",
"replyBefore": "網上確定付印最後限期",
"applicationPublishDate": "刊出日期",
"pleaseCheckReminder": "請下載下列印刷稿檔案,並仔細校對",
"payAnd": "繳費及",
"commentDeadline": "網上返稿最後限期",
"commentDeadline": "網上俢訂稿件最後限期",
"paymentDeadline": "網上確定付印最後限期",
"before": "前",
"page": "頁",
@@ -485,10 +490,10 @@
"paymentNo": "付款編號",
"paymentDate": "付款日期",
"paymentTime": "付款時間",
"paymentRefCode": "付款參考號",
"paymentRefCode": "付款參考號",

"paymentInfoRecord": "繳款通知記錄",
"paymentRecordId": "繳款單號",
"paymentRecordId": "繳款單號",
"sendDate": "發出日期",
"sendDateTime": "發出時間",
"sendDateFrom": "發出日期 (從)",
@@ -506,7 +511,7 @@
"MSG.revokePrimay": "是否確定要撤銷 “{username}” 為主要使用者嗎?",

"submitApplication": "提交公共啟事申請",
"applicationSubheading": "提供你的公共啟事內容作排版,校對及計。",
"applicationSubheading": "提供你的公共啟事內容作排版,校對及計算所需費用。",
"announcement": "通告",
"viewAllAnnouncement": "顯示所有通告",
"systemMessage": "系統消息",
@@ -537,7 +542,7 @@
"organizationProfile": "機構資料",
"organizationDetails": "機構詳情",
"brNo": "商業登記證號碼",
"creditorAccount": "債權人帳戶",
"creditorAccount": "已獲安排在憲報刊登公共啟事後才須繳付款項的用戶",
"nameEng": "姓名 (英文)",
"nameChi": "姓名 (中文)",
"expiryDate": "屆滿日期",
@@ -550,8 +555,8 @@

"proofConfirmed":"可以付印",
"proofReProofing":"未能付印",
"proofNoReply":"回覆逾時",
"proofPendingReply":"未回覆",
"proofNoReply":"校對回覆逾時,請重新申請",
"proofPendingReply":"校對待覆",

"Dashboard": "儀表板",
"event": "活動"

+ 6
- 2
src/utils/ApiPathConst.js Bestand weergeven

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

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

export const I_AM_SMART_PATH = apiPath+'/smart/call/iAmSmart';
export const I_AM_SMART_APP_PATH = apiPath+'/smart/call/app/iAmSmart';

//Group Config
export const GET_GROUP_LIST_PATH = apiPath+'/group';
@@ -88,8 +92,8 @@ export const GET_COMBO = apiPath+'/combo-data';
//register
export const POST_PUBLIC_USER_REGISTER = apiPath+'/user/register';
export const POST_IAMSMART_USER_REGISTER = apiPath+'/user/smart/register';
export const GET_USERNAME = apiPath+'/user/username';
export const GET_USER_EMAIL = apiPath+'/user/email';
export const POST_USERNAME = apiPath+'/user/checkU1';
export const POST_USER_EMAIL = apiPath+'/user/checkE1';
export const GET_ID = apiPath+'/user/verifyID';
export const GET_VERIFY_USER_ACCOUNT = apiPath+'/user/verifyEmail';
export const GET_FORGOT_PASSWORD_VERIFY_USER_ACCOUNT = apiPath+'/user/verifyForgotPasswordEmail';


+ 3
- 3
src/utils/ComboData.js Bestand weergeven

@@ -24,9 +24,9 @@ export const district = [
{ key: 16, type: 'easternCombo' },
{ key: 17, type: 'southernCombo' },
{ key: 18, type: 'wanChaiCombo' },
{ key: 19, type: 'lantauIslandCombo' },
{ key: 20, type: 'lammaIslandCombo' },
{ key: 21, type: 'pengChauCombo' }
// { key: 19, type: 'lantauIslandCombo' },
// { key: 20, type: 'lammaIslandCombo' },
// { key: 21, type: 'pengChauCombo' }
];

export const country = [


+ 4
- 4
src/utils/statusUtils/ProofStatus.js Bestand weergeven

@@ -1,10 +1,10 @@
import {getStatusTag} from "utils/statusUtils/Base";
import * as DateUtils from "utils/DateUtils";

const confirm = {color:"#22a13f", eng:"Confirmed", cht:"可以付印", cn:"可以付印"}
const confirm = {color:"#22a13f", eng:"Pass for printing", cht:"可以付印", cn:"可以付印"}
const unable = {color:"#d9372b", eng:"Re-proofing", cht:"未能付印", cn:"未能付印"}
const timeOut = {color:"#8a8784", eng:"No Reply", cht:"回覆逾時", cn:"回复逾时"}
const pendingReply = {color:"#f5a83d", eng:"Pending Reply", cht:"未回覆", cn:"未回复"}
const timeOut = {color:"#8a8784", eng:"Proofing timed out. Please apply again", cht:"校對回覆逾時,請重新申請", cn:"校对回复逾时,请重新申请"}
const pendingReply = {color:"#f5a83d", eng:"Proofing reply pending", cht:"校對待覆", cn:"校对待复"}
const cancel = {color:"#000", textColor:"#fff", eng:"Cancelled", cht:"已取消", cn:"已取消"}

export function getStatus_Cht(params) {
@@ -14,7 +14,7 @@ export function getStatus_Cht(params) {

export function getStatus_Eng(params) {
let status = getStatus(params);
return getStatusTag({color: status.color, textColor:status.textColor, text:status.eng })
return getStatusTag({color: status.color, textColor:status.textColor, text:status.eng})
}

export function getStatus_Cn(params) {


+ 112
- 98
yarn.lock Bestand weergeven

@@ -3212,12 +3212,7 @@ ajv-formats@^2.1.1:
dependencies:
ajv "^8.0.0"

ajv-keywords@^3.4.1:
version "3.5.2"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==

ajv-keywords@^3.5.2:
ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
version "3.5.2"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
@@ -3229,7 +3224,7 @@ ajv-keywords@^5.1.0:
dependencies:
fast-deep-equal "^3.1.3"

ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1:
ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -3239,17 +3234,27 @@ ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"

ajv@^6.12.4, ajv@^6.9.1:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
ajv@^8.0.0:
version "8.12.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"

ajv@^8.6.0, ajv@>=8:
version "8.12.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"

ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.2, ajv@^8.9.0, ajv@>=8:
ajv@^8.8.2, ajv@^8.9.0:
version "8.12.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -3350,14 +3355,7 @@ argparse@^2.0.1:
resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==

aria-query@^5.0.0, aria-query@^5.1.3:
version "5.3.0"
resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz"
integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
dependencies:
dequal "^2.0.3"

[email protected]:
aria-query@^5.0.0, aria-query@^5.1.3, [email protected]:
version "5.1.3"
resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz"
integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
@@ -3518,12 +3516,12 @@ axe-core@^4.6.2:
resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz"
integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==

axios@^1.4.0:
version "1.5.1"
resolved "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz"
integrity sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==
axios@^1.7.1:
version "1.7.2"
resolved "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz"
integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==
dependencies:
follow-redirects "^1.15.0"
follow-redirects "^1.15.6"
form-data "^4.0.0"
proxy-from-env "^1.1.0"

@@ -4157,7 +4155,22 @@ content-type@~1.0.4:
resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz"
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==

convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
convert-source-map@^1.4.0:
version "1.9.0"
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==

convert-source-map@^1.5.0:
version "1.9.0"
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==

convert-source-map@^1.6.0:
version "1.9.0"
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==

convert-source-map@^1.7.0:
version "1.9.0"
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
@@ -4453,12 +4466,7 @@ csstype@^2.5.2:
resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz"
integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==

csstype@^3.0.2, csstype@^3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz"
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==

csstype@^3.1.3:
csstype@^3.0.2, csstype@^3.1.2, csstype@^3.1.3:
version "3.1.3"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
@@ -4759,16 +4767,7 @@ domutils@^1.7.0:
dom-serializer "0"
domelementtype "1"

domutils@^2.5.2:
version "2.8.0"
resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
dependencies:
dom-serializer "^1.0.1"
domelementtype "^2.2.0"
domhandler "^4.2.0"

domutils@^2.8.0:
domutils@^2.5.2, domutils@^2.8.0:
version "2.8.0"
resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
@@ -5179,7 +5178,7 @@ eslint-plugin-testing-library@^5.0.1:
dependencies:
"@typescript-eslint/utils" "^5.58.0"

eslint-scope@^5.1.1:
eslint-scope@^5.1.1, [email protected]:
version "5.1.1"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
@@ -5195,20 +5194,22 @@ eslint-scope@^7.2.2:
esrecurse "^4.3.0"
estraverse "^5.2.0"

[email protected]:
version "5.1.1"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
dependencies:
esrecurse "^4.3.0"
estraverse "^4.1.1"

eslint-visitor-keys@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==

eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
eslint-visitor-keys@^3.3.0:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==

eslint-visitor-keys@^3.4.1:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==

eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
@@ -5301,22 +5302,17 @@ esrecurse@^4.3.0:
dependencies:
estraverse "^5.2.0"

estraverse@^4.1.1, estraverse@^4.2.0:
estraverse@^4.1.1:
version "4.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==

estraverse@^5.1.0:
version "5.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==

estraverse@^5.2.0:
version "5.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
estraverse@^4.2.0:
version "4.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==

estraverse@^5.3.0:
estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
version "5.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
@@ -5589,10 +5585,10 @@ flatted@^3.2.9:
resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz"
integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==

follow-redirects@^1.0.0, follow-redirects@^1.15.0:
version "1.15.3"
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz"
integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==
follow-redirects@^1.0.0, follow-redirects@^1.15.6:
version "1.15.6"
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz"
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==

for-each@^0.3.3:
version "0.3.3"
@@ -8809,16 +8805,7 @@ pretty-error@^4.0.0:
lodash "^4.17.20"
renderkid "^3.0.0"

pretty-format@^27.0.2:
version "27.5.1"
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz"
integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
dependencies:
ansi-regex "^5.0.1"
ansi-styles "^5.0.0"
react-is "^17.0.1"

pretty-format@^27.5.1:
pretty-format@^27.0.2, pretty-format@^27.5.1:
version "27.5.1"
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz"
integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
@@ -8837,7 +8824,16 @@ pretty-format@^28.1.3:
ansi-styles "^5.0.0"
react-is "^18.0.0"

pretty-format@^29.0.0, pretty-format@^29.7.0:
pretty-format@^29.0.0:
version "29.7.0"
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz"
integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
dependencies:
"@jest/schemas" "^29.6.3"
ansi-styles "^5.0.0"
react-is "^18.0.0"

pretty-format@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz"
integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
@@ -9123,17 +9119,17 @@ react-is@^16.7.0:
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==

"react-is@^16.8.0 || ^17.0.0":
"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.1:
version "17.0.2"
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==

react-is@^17.0.1:
version "17.0.2"
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
react-is@^18.0.0:
version "18.2.0"
resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==

react-is@^18.0.0, react-is@^18.2.0:
react-is@^18.2.0:
version "18.2.0"
resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
@@ -9699,22 +9695,40 @@ selfsigned@^2.1.1:
dependencies:
node-forge "^1"

semver@^6.0.0:
semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
version "6.3.1"
resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==

semver@^6.3.0:
version "6.3.1"
resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.2:
version "7.5.4"
resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
dependencies:
lru-cache "^6.0.0"

semver@^6.3.1:
version "6.3.1"
resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.5:
version "7.5.4"
resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
dependencies:
lru-cache "^6.0.0"

semver@^7.3.7:
version "7.5.4"
resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
dependencies:
lru-cache "^6.0.0"

semver@^7.3.8:
version "7.5.4"
resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
dependencies:
lru-cache "^6.0.0"

semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3:
semver@^7.5.3:
version "7.5.4"
resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
@@ -10574,12 +10588,12 @@ type-fest@^0.16.0:
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz"
integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==

type-fest@^0.20.2, "type-fest@>=0.17.0 <5.0.0":
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==

type-fest@^0.21.3:
type-fest@^0.21.3, "type-fest@>=0.17.0 <5.0.0":
version "0.21.3"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz"
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==


Laden…
Annuleren
Opslaan